nazar-salary 2.2.0 → 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.
Files changed (3) hide show
  1. package/index.d.ts +84 -2
  2. package/index.js +29 -0
  3. 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 {
@@ -726,6 +806,7 @@ declare module 'nazar-salary' {
726
806
  addManualPayment(data: ManualPaymentData): Promise<ManualPaymentResponse>;
727
807
  getOrphanPayments(params?: { page?: number; limit?: number }): Promise<OrphanPaymentsResponse>;
728
808
  getBanksConfig(): Promise<BanksConfigResponse>;
809
+ getManagerStudentsAdmin(managerId: number, params?: StudentsListParams): Promise<StudentsListResponse>;
729
810
 
730
811
  // Teacher endpoints
731
812
  getTeacherLanguages(): Promise<TeacherLanguagesResponse>;
@@ -744,8 +825,9 @@ declare module 'nazar-salary' {
744
825
  getPricesList(): Promise<PricesResponse>;
745
826
 
746
827
  // Student endpoints
747
- createStudent(data: CreateStudentData): Promise<Student>;
748
- updateStudent(studentId: number, data: UpdateStudentData): Promise<UpdatedStudent>;
828
+ createStudent(data: CreateStudentData): Promise<CreateStudentResponse>;
829
+ getLessonGroups(): Promise<LessonGroupsResponse>;
830
+ updateStudent(studentId: number, data: UpdateStudentData): Promise<UpdateStudentResponse>;
749
831
  transferStudent(studentId: number, data: TransferStudentData): Promise<TransferResponse>;
750
832
  changeStudentManager(studentId: number, data: ChangeStudentManagerData): Promise<ChangeStudentManagerResponse>;
751
833
  getStudent(studentId: number): Promise<StudentDetail>;
package/index.js CHANGED
@@ -257,6 +257,26 @@ class SalaryAPI {
257
257
  return await this.client.get("/api/v1/admin/receipts/banks");
258
258
  }
259
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
+
260
280
  // ===== TEACHER ENDPOINTS =====
261
281
 
262
282
  /**
@@ -419,12 +439,21 @@ class SalaryAPI {
419
439
  * @param {string} data.main_course - Main course
420
440
  * @param {boolean} data.prepayment - Prepayment flag
421
441
  * @param {string[]} [data.bonus_languages] - Bonus languages array
442
+ * @param {number} [data.lesson_group_id] - Lesson group ID for duet/trio (optional)
422
443
  * @returns {Promise<object>}
423
444
  */
424
445
  async createStudent(data) {
425
446
  return await this.client.post("/api/v1/student/new", data);
426
447
  }
427
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
+
428
457
  /**
429
458
  * Update student (requireAuth)
430
459
  * @param {number} studentId - Student ID
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nazar-salary",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "Frontend library for Nazar Salary API",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",