attendance methods
Three WebPortal methods plus the models in src/attendance.js. Models: Data models.
Call chain#
flowchart TD L[student_login] --> M[get_attendance_meta] M --> AM[AttendanceMeta] AM --> H[latest_header] AM --> S[latest_semester] H --> G[get_attendance] S --> G G --> R[studentattendancelist] R --> D[get_subject_daily_attendance]
get_attendance_meta#
async get_attendance_meta()
POST /StudentClassAttendance/getstudentInforegistrationforattendence
Plain JSON:
{
clientid: this.session.clientid,
instituteid: this.session.instituteid,
membertype: this.session.membertype,
}
Returns new AttendanceMeta(resp.response).
sequenceDiagram participant App participant WP as WebPortal participant API as StudentPortalAPI App->>WP: get_attendance_meta WP->>API: POST getstudentInforegistrationforattendence API-->>WP: headerlist plus semlist WP-->>App: AttendanceMeta
AttendanceMeta maps headerlist → AttendanceHeader and semlist → Semester. latest_header() / latest_semester() return index 0.
classDiagram
class AttendanceMeta {
raw_response
headers
semesters
latest_header()
latest_semester()
}
class AttendanceHeader {
branchdesc
name
programdesc
stynumber
}
class Semester {
registration_code
registration_id
}
AttendanceMeta --> AttendanceHeader
AttendanceMeta --> SemesterAttendanceHeader.from_json reads branchdesc, name, programdesc, stynumber.
Semester.from_json reads registrationcode and registrationid.
get_attendance#
async get_attendance(header, semester)
POST /StudentClassAttendance/getstudentattendancedetail
Body is serialize_payload of:
{
clientid,
instituteid,
registrationcode: semester.registration_code,
registrationid: semester.registration_id,
stynumber: header.stynumber,
}
That encrypted string is passed as options.json. Returns resp.response (raw). Typical key: studentattendancelist.
sequenceDiagram participant App participant WP as WebPortal participant Enc as serialize_payload participant API as StudentPortalAPI App->>WP: get_attendance(header, semester) WP->>Enc: payload WP->>API: POST getstudentattendancedetail API-->>App: response
get_subject_daily_attendance#
async get_subject_daily_attendance(semester, subjectid, individualsubjectcode, subjectcomponentids)
POST /StudentClassAttendance/getstudentsubjectpersentage (portal spelling).
Encrypted payload:
{
cmpidkey: subjectcomponentids.map((id) => ({ subjectcomponentid: id })),
clientid,
instituteid,
registrationcode: semester.registration_code,
registrationid: semester.registration_id,
subjectcode: individualsubjectcode,
subjectid,
}
Component ids usually come from Lsubjectcomponentid, Psubjectcomponentid, Tsubjectcomponentid on a row of studentattendancelist. See Quick start guide.
flowchart LR row[attendance row] --> ids[L P T component ids] ids --> daily[get_subject_daily_attendance] sem[Semester] --> daily
Auth#
All three names are in authenticatedMethods. Call them only after student_login.
flowchart TB meta[AttendanceMeta] --> list[get_attendance] list --> rows[studentattendancelist] rows --> L[Lsubjectcomponentid] rows --> P[Psubjectcomponentid] rows --> T[Tsubjectcomponentid] L --> daily P --> daily T --> daily[get_subject_daily_attendance]