nazar-salary 2.8.2 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +95 -0
- package/index.js +51 -0
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1106,6 +1106,96 @@ declare module 'nazar-salary' {
|
|
|
1106
1106
|
total_purchase_amount: number;
|
|
1107
1107
|
}
|
|
1108
1108
|
|
|
1109
|
+
export type StudentStatus = 'active' | 'waiting' | 'cancelled';
|
|
1110
|
+
|
|
1111
|
+
export interface CreateWaitingStudentData {
|
|
1112
|
+
first_name: string;
|
|
1113
|
+
last_name: string;
|
|
1114
|
+
phone: string;
|
|
1115
|
+
age?: number;
|
|
1116
|
+
main_course: string;
|
|
1117
|
+
price_id: number;
|
|
1118
|
+
enrollment_months: number;
|
|
1119
|
+
purchase_amount: number;
|
|
1120
|
+
operation_number: string;
|
|
1121
|
+
bonus_languages?: string[];
|
|
1122
|
+
manager_id?: number;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
export interface CreateWaitingStudentResponse {
|
|
1126
|
+
id: number;
|
|
1127
|
+
status: 'waiting';
|
|
1128
|
+
first_name: string;
|
|
1129
|
+
last_name: string;
|
|
1130
|
+
phone: string;
|
|
1131
|
+
age: number | null;
|
|
1132
|
+
main_course: string;
|
|
1133
|
+
price_id: number;
|
|
1134
|
+
enrollment_months: number;
|
|
1135
|
+
total_lessons: number;
|
|
1136
|
+
purchase_amount: number;
|
|
1137
|
+
operation_number: string;
|
|
1138
|
+
owned_by: number;
|
|
1139
|
+
created_at: number;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
export interface WaitingStudentItem {
|
|
1143
|
+
id: number;
|
|
1144
|
+
first_name: string;
|
|
1145
|
+
last_name: string;
|
|
1146
|
+
phone: string;
|
|
1147
|
+
age: number | null;
|
|
1148
|
+
status: StudentStatus;
|
|
1149
|
+
main_course: string;
|
|
1150
|
+
bonus_languages: string[];
|
|
1151
|
+
price_id: number;
|
|
1152
|
+
group_type: GroupType;
|
|
1153
|
+
lessons_per_month: number;
|
|
1154
|
+
rate_per_lesson: number;
|
|
1155
|
+
enrollment_months: number;
|
|
1156
|
+
total_lessons: number;
|
|
1157
|
+
purchase_amount: number;
|
|
1158
|
+
operation_number: string;
|
|
1159
|
+
owned_by: number;
|
|
1160
|
+
manager_name: string;
|
|
1161
|
+
created_at: number;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
export interface WaitingStudentsParams {
|
|
1165
|
+
main_course?: string;
|
|
1166
|
+
created_from?: string;
|
|
1167
|
+
created_to?: string;
|
|
1168
|
+
page?: number;
|
|
1169
|
+
limit?: number;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
export interface WaitingStudentsResponse {
|
|
1173
|
+
total_students: number;
|
|
1174
|
+
current_page: number;
|
|
1175
|
+
total_pages: number;
|
|
1176
|
+
students: WaitingStudentItem[];
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
export interface ActivateWaitingStudentData {
|
|
1180
|
+
teacher_id: number;
|
|
1181
|
+
group_name: string;
|
|
1182
|
+
lesson_group_id?: number;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
export interface ActivateWaitingStudentResponse {
|
|
1186
|
+
id: number;
|
|
1187
|
+
status: 'active';
|
|
1188
|
+
teacher_id: number;
|
|
1189
|
+
group_name: string;
|
|
1190
|
+
group_type: GroupType;
|
|
1191
|
+
lesson_group: {
|
|
1192
|
+
lesson_group_id: number;
|
|
1193
|
+
students_in_group: Array<{ id: number; name: string }>;
|
|
1194
|
+
group_capacity: string;
|
|
1195
|
+
} | null;
|
|
1196
|
+
activated_at: number;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1109
1199
|
export interface DeleteStudentResponse {
|
|
1110
1200
|
message: string;
|
|
1111
1201
|
student_id: number;
|
|
@@ -1224,6 +1314,11 @@ declare module 'nazar-salary' {
|
|
|
1224
1314
|
getAllStudents(params?: AllStudentsParams): Promise<AllStudentsResponse>;
|
|
1225
1315
|
deleteStudentPurchase(studentId: number, purchaseId: number): Promise<DeleteStudentPurchaseResponse>;
|
|
1226
1316
|
|
|
1317
|
+
// Waiting list endpoints
|
|
1318
|
+
createWaitingStudent(data: CreateWaitingStudentData): Promise<CreateWaitingStudentResponse>;
|
|
1319
|
+
getWaitingStudents(params?: WaitingStudentsParams): Promise<WaitingStudentsResponse>;
|
|
1320
|
+
activateWaitingStudent(studentId: number, data: ActivateWaitingStudentData): Promise<ActivateWaitingStudentResponse>;
|
|
1321
|
+
|
|
1227
1322
|
// Custom request
|
|
1228
1323
|
request(method: string, path: string, data?: any): Promise<any>;
|
|
1229
1324
|
}
|
package/index.js
CHANGED
|
@@ -692,6 +692,57 @@ class SalaryAPI {
|
|
|
692
692
|
return await this.client.get("/api/v1/student/list/lite", { params });
|
|
693
693
|
}
|
|
694
694
|
|
|
695
|
+
// ===== WAITING LIST ENDPOINTS =====
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Create student in waiting status (requireAuth)
|
|
699
|
+
* Teacher and group are NOT assigned at this stage
|
|
700
|
+
* @param {object} data - Student data
|
|
701
|
+
* @param {string} data.first_name - First name
|
|
702
|
+
* @param {string} data.last_name - Last name
|
|
703
|
+
* @param {string} data.phone - Phone number (11 digits)
|
|
704
|
+
* @param {number} [data.age] - Age (optional)
|
|
705
|
+
* @param {string} data.main_course - Main course
|
|
706
|
+
* @param {number} data.price_id - Price/tariff ID
|
|
707
|
+
* @param {number} data.enrollment_months - Enrollment months (1-12)
|
|
708
|
+
* @param {number} data.purchase_amount - Purchase amount > 0
|
|
709
|
+
* @param {string} data.operation_number - Unique operation number
|
|
710
|
+
* @param {string[]} [data.bonus_languages] - Bonus languages array
|
|
711
|
+
* @param {number} [data.manager_id] - Manager ID (Admin only)
|
|
712
|
+
* @returns {Promise<object>}
|
|
713
|
+
*/
|
|
714
|
+
async createWaitingStudent(data) {
|
|
715
|
+
return await this.client.post("/api/v1/students/waiting/new", data);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Get list of waiting students (requireAuth)
|
|
720
|
+
* Managers see only their own students, admins see all
|
|
721
|
+
* @param {object} [params] - Query parameters
|
|
722
|
+
* @param {string} [params.main_course] - Filter by main course
|
|
723
|
+
* @param {string} [params.created_from] - Filter by created date from (ISO 8601)
|
|
724
|
+
* @param {string} [params.created_to] - Filter by created date to (ISO 8601)
|
|
725
|
+
* @param {number} [params.page=1] - Page number
|
|
726
|
+
* @param {number} [params.limit=30] - Items per page (max 30)
|
|
727
|
+
* @returns {Promise<object>}
|
|
728
|
+
*/
|
|
729
|
+
async getWaitingStudents(params = {}) {
|
|
730
|
+
return await this.client.get("/api/v1/students/waiting", { params });
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* Activate waiting student — assign teacher and group (requireAuth)
|
|
735
|
+
* @param {number} studentId - Student ID
|
|
736
|
+
* @param {object} data - Activation data
|
|
737
|
+
* @param {number} data.teacher_id - Teacher ID (required)
|
|
738
|
+
* @param {string} data.group_name - Group/chat name (required)
|
|
739
|
+
* @param {number} [data.lesson_group_id] - Existing lesson group ID (for duet/trio)
|
|
740
|
+
* @returns {Promise<object>}
|
|
741
|
+
*/
|
|
742
|
+
async activateWaitingStudent(studentId, data) {
|
|
743
|
+
return await this.client.post(`/api/v1/students/${studentId}/activate`, data);
|
|
744
|
+
}
|
|
745
|
+
|
|
695
746
|
/**
|
|
696
747
|
* Delete student (soft delete, requireAuth)
|
|
697
748
|
* Managers can only delete their own students
|