nazar-salary 2.1.1 → 2.3.0
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 +103 -3
- package/index.js +52 -5
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -472,6 +472,85 @@ declare module 'nazar-salary' {
|
|
|
472
472
|
transfer_date: number;
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
+
export interface LessonGroup {
|
|
476
|
+
lesson_group_id: number;
|
|
477
|
+
lesson_group_name: string;
|
|
478
|
+
students_in_group: number;
|
|
479
|
+
group_capacity: number;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
export interface LessonGroupsResponse {
|
|
483
|
+
available_groups: LessonGroup[];
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
export interface StudentCourse {
|
|
487
|
+
price_id: number;
|
|
488
|
+
teacher_id: number;
|
|
489
|
+
enrollment_months: number;
|
|
490
|
+
total_lessons: number;
|
|
491
|
+
main_course: string;
|
|
492
|
+
group_type: GroupType;
|
|
493
|
+
lessons_per_month: number;
|
|
494
|
+
rate_per_lesson: number;
|
|
495
|
+
lesson_group_id: number | null;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
export interface CreateStudentResponse {
|
|
499
|
+
id: number;
|
|
500
|
+
first_name: string;
|
|
501
|
+
last_name: string;
|
|
502
|
+
phone: string;
|
|
503
|
+
age: number;
|
|
504
|
+
created_at: number;
|
|
505
|
+
purchase_amount: number;
|
|
506
|
+
operation_number: string;
|
|
507
|
+
is_verified: boolean;
|
|
508
|
+
verified_at: number | null;
|
|
509
|
+
prepayment: boolean;
|
|
510
|
+
completed_lessons: number;
|
|
511
|
+
owned_by: number;
|
|
512
|
+
group_name: string;
|
|
513
|
+
bonus_languages: string[] | null;
|
|
514
|
+
course: StudentCourse;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
export interface UpdateStudentResponse {
|
|
518
|
+
student: {
|
|
519
|
+
id: number;
|
|
520
|
+
first_name: string;
|
|
521
|
+
last_name: string;
|
|
522
|
+
phone: string;
|
|
523
|
+
age: number;
|
|
524
|
+
operation_numbers: string[];
|
|
525
|
+
purchase_amounts: number[];
|
|
526
|
+
prepayment: boolean;
|
|
527
|
+
group_name: string;
|
|
528
|
+
main_course: string;
|
|
529
|
+
bonus_languages: string[] | null;
|
|
530
|
+
group_type: GroupType;
|
|
531
|
+
lessons_per_month: number;
|
|
532
|
+
duration_minutes: number;
|
|
533
|
+
rate_per_lesson: number;
|
|
534
|
+
updated_at: number;
|
|
535
|
+
};
|
|
536
|
+
current_course: {
|
|
537
|
+
price_id: number;
|
|
538
|
+
teacher_id: number;
|
|
539
|
+
enrollment_months: number;
|
|
540
|
+
total_lessons: number;
|
|
541
|
+
completed_lessons: number;
|
|
542
|
+
};
|
|
543
|
+
payments: {
|
|
544
|
+
id: number;
|
|
545
|
+
operation_number: string;
|
|
546
|
+
purchase_amount: number;
|
|
547
|
+
is_verified: boolean;
|
|
548
|
+
verified_at: number | null;
|
|
549
|
+
created_at: number;
|
|
550
|
+
}[];
|
|
551
|
+
total_purchase_amount: number;
|
|
552
|
+
}
|
|
553
|
+
|
|
475
554
|
export interface CreateStudentData {
|
|
476
555
|
first_name: string;
|
|
477
556
|
last_name: string;
|
|
@@ -486,6 +565,7 @@ declare module 'nazar-salary' {
|
|
|
486
565
|
main_course: string;
|
|
487
566
|
prepayment: boolean;
|
|
488
567
|
bonus_languages?: string[];
|
|
568
|
+
lesson_group_id?: number;
|
|
489
569
|
}
|
|
490
570
|
|
|
491
571
|
export interface UpdateStudentData {
|
|
@@ -505,6 +585,23 @@ declare module 'nazar-salary' {
|
|
|
505
585
|
main_course?: string;
|
|
506
586
|
}
|
|
507
587
|
|
|
588
|
+
export interface ChangeStudentManagerData {
|
|
589
|
+
new_manager_id: number;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
export interface ChangeStudentManagerResponse {
|
|
593
|
+
student_id: number;
|
|
594
|
+
old_manager: {
|
|
595
|
+
id: number;
|
|
596
|
+
name: string;
|
|
597
|
+
};
|
|
598
|
+
new_manager: {
|
|
599
|
+
id: number;
|
|
600
|
+
name: string;
|
|
601
|
+
};
|
|
602
|
+
reassigned_at: number;
|
|
603
|
+
}
|
|
604
|
+
|
|
508
605
|
export interface StudentBasicInfo {
|
|
509
606
|
id: number;
|
|
510
607
|
first_name: string;
|
|
@@ -649,7 +746,7 @@ declare module 'nazar-salary' {
|
|
|
649
746
|
}
|
|
650
747
|
|
|
651
748
|
/** @deprecated Use StudentsListParams instead */
|
|
652
|
-
export interface ManagerStudentsParams extends Omit<StudentsListParams, 'manager_id'> {}
|
|
749
|
+
export interface ManagerStudentsParams extends Omit<StudentsListParams, 'manager_id'> { }
|
|
653
750
|
|
|
654
751
|
/** @deprecated Use StudentsListResponse instead */
|
|
655
752
|
export interface ManagerStudentsResponse extends StudentsListResponse {
|
|
@@ -709,6 +806,7 @@ declare module 'nazar-salary' {
|
|
|
709
806
|
addManualPayment(data: ManualPaymentData): Promise<ManualPaymentResponse>;
|
|
710
807
|
getOrphanPayments(params?: { page?: number; limit?: number }): Promise<OrphanPaymentsResponse>;
|
|
711
808
|
getBanksConfig(): Promise<BanksConfigResponse>;
|
|
809
|
+
getManagerStudentsAdmin(managerId: number, params?: StudentsListParams): Promise<StudentsListResponse>;
|
|
712
810
|
|
|
713
811
|
// Teacher endpoints
|
|
714
812
|
getTeacherLanguages(): Promise<TeacherLanguagesResponse>;
|
|
@@ -727,9 +825,11 @@ declare module 'nazar-salary' {
|
|
|
727
825
|
getPricesList(): Promise<PricesResponse>;
|
|
728
826
|
|
|
729
827
|
// Student endpoints
|
|
730
|
-
createStudent(data: CreateStudentData): Promise<
|
|
731
|
-
|
|
828
|
+
createStudent(data: CreateStudentData): Promise<CreateStudentResponse>;
|
|
829
|
+
getLessonGroups(): Promise<LessonGroupsResponse>;
|
|
830
|
+
updateStudent(studentId: number, data: UpdateStudentData): Promise<UpdateStudentResponse>;
|
|
732
831
|
transferStudent(studentId: number, data: TransferStudentData): Promise<TransferResponse>;
|
|
832
|
+
changeStudentManager(studentId: number, data: ChangeStudentManagerData): Promise<ChangeStudentManagerResponse>;
|
|
733
833
|
getStudent(studentId: number): Promise<StudentDetail>;
|
|
734
834
|
searchStudents(params: SearchStudentsParams): Promise<SearchStudentsResponse>;
|
|
735
835
|
getStudentsList(params?: StudentsListParams): Promise<StudentsListResponse>;
|
package/index.js
CHANGED
|
@@ -189,13 +189,14 @@ class SalaryAPI {
|
|
|
189
189
|
*/
|
|
190
190
|
async uploadKaspiReceipt(file, options = {}) {
|
|
191
191
|
const formData = new FormData();
|
|
192
|
-
formData.append(
|
|
193
|
-
if (options.period_from)
|
|
194
|
-
|
|
192
|
+
formData.append("file", file);
|
|
193
|
+
if (options.period_from)
|
|
194
|
+
formData.append("period_from", options.period_from);
|
|
195
|
+
if (options.period_to) formData.append("period_to", options.period_to);
|
|
195
196
|
|
|
196
197
|
return await this.client.post("/api/v1/admin/receipts/upload", formData, {
|
|
197
198
|
headers: {
|
|
198
|
-
|
|
199
|
+
"Content-Type": "multipart/form-data",
|
|
199
200
|
},
|
|
200
201
|
});
|
|
201
202
|
}
|
|
@@ -256,6 +257,26 @@ class SalaryAPI {
|
|
|
256
257
|
return await this.client.get("/api/v1/admin/receipts/banks");
|
|
257
258
|
}
|
|
258
259
|
|
|
260
|
+
/**
|
|
261
|
+
* Get students of specific manager (Admin only)
|
|
262
|
+
* @param {number} managerId - Manager ID
|
|
263
|
+
* @param {object} [params] - Filter parameters
|
|
264
|
+
* @param {boolean} [params.prepayment] - Filter by prepayment status
|
|
265
|
+
* @param {boolean} [params.is_verified] - Filter by verification status
|
|
266
|
+
* @param {number} [params.teacher_id] - Filter by teacher ID
|
|
267
|
+
* @param {number} [params.price_id] - Filter by price ID
|
|
268
|
+
* @param {boolean} [params.is_deleted] - Filter by deletion status
|
|
269
|
+
* @param {string} [params.created_from] - Filter by created date from (ISO 8601)
|
|
270
|
+
* @param {string} [params.created_to] - Filter by created date to (ISO 8601)
|
|
271
|
+
* @param {string} [params.main_course] - Filter by main course
|
|
272
|
+
* @param {number} [params.page=1] - Page number
|
|
273
|
+
* @param {number} [params.limit=30] - Items per page (max 30)
|
|
274
|
+
* @returns {Promise<{manager: object, total_students: number, current_page: number, total_pages: number, students: array}>}
|
|
275
|
+
*/
|
|
276
|
+
async getManagerStudentsAdmin(managerId, params = {}) {
|
|
277
|
+
return await this.client.get(`/api/v1/admin/managers/${managerId}/students`, { params });
|
|
278
|
+
}
|
|
279
|
+
|
|
259
280
|
// ===== TEACHER ENDPOINTS =====
|
|
260
281
|
|
|
261
282
|
/**
|
|
@@ -418,12 +439,21 @@ class SalaryAPI {
|
|
|
418
439
|
* @param {string} data.main_course - Main course
|
|
419
440
|
* @param {boolean} data.prepayment - Prepayment flag
|
|
420
441
|
* @param {string[]} [data.bonus_languages] - Bonus languages array
|
|
442
|
+
* @param {number} [data.lesson_group_id] - Lesson group ID for duet/trio (optional)
|
|
421
443
|
* @returns {Promise<object>}
|
|
422
444
|
*/
|
|
423
445
|
async createStudent(data) {
|
|
424
446
|
return await this.client.post("/api/v1/student/new", data);
|
|
425
447
|
}
|
|
426
448
|
|
|
449
|
+
/**
|
|
450
|
+
* Get available lesson groups for duet/trio (requireAuth)
|
|
451
|
+
* @returns {Promise<{available_groups: Array<{lesson_group_id: number, lesson_group_name: string, students_in_group: number, group_capacity: number}>}>}
|
|
452
|
+
*/
|
|
453
|
+
async getLessonGroups() {
|
|
454
|
+
return await this.client.get("/api/v1/student/lesson-groups");
|
|
455
|
+
}
|
|
456
|
+
|
|
427
457
|
/**
|
|
428
458
|
* Update student (requireAuth)
|
|
429
459
|
* @param {number} studentId - Student ID
|
|
@@ -452,7 +482,24 @@ class SalaryAPI {
|
|
|
452
482
|
* @returns {Promise<object>}
|
|
453
483
|
*/
|
|
454
484
|
async transferStudent(studentId, data) {
|
|
455
|
-
return await this.client.post(
|
|
485
|
+
return await this.client.post(
|
|
486
|
+
`/api/v1/student/${studentId}/transfer`,
|
|
487
|
+
data,
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Change student manager (Admin only)
|
|
493
|
+
* @param {number} studentId - Student ID
|
|
494
|
+
* @param {object} data - Change manager data
|
|
495
|
+
* @param {number} data.new_manager_id - New manager user ID
|
|
496
|
+
* @returns {Promise<{student_id: number, old_manager: object, new_manager: object, reassigned_at: number}>}
|
|
497
|
+
*/
|
|
498
|
+
async changeStudentManager(studentId, data) {
|
|
499
|
+
return await this.client.post(
|
|
500
|
+
`/api/v1/student/${studentId}/change-manager`,
|
|
501
|
+
data,
|
|
502
|
+
);
|
|
456
503
|
}
|
|
457
504
|
|
|
458
505
|
/**
|