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.
Files changed (3) hide show
  1. package/index.d.ts +95 -0
  2. package/index.js +51 -0
  3. 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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nazar-salary",
3
- "version": "2.8.2",
3
+ "version": "2.8.3",
4
4
  "description": "Frontend library for Nazar Salary API",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",