npm_microservice 1.0.10 → 1.0.12

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 (102) hide show
  1. package/dist/config.js +4 -0
  2. package/dist/service.js +121 -2
  3. package/dist/services/BaseService.js +4 -1
  4. package/dist/services/SettingService.js +4 -1
  5. package/dist/services/app/AppTestService.js +355 -0
  6. package/dist/services/app/CategoryService.js +4 -1
  7. package/dist/services/app/NewService.js +4 -1
  8. package/dist/services/app/RecommendedCourseService.js +4 -1
  9. package/dist/services/app/SettingAppService.js +4 -1
  10. package/dist/services/app/TargetService.js +4 -1
  11. package/dist/services/call_center/CategoryService.js +4 -1
  12. package/dist/services/call_center/TicketActivityService.js +4 -1
  13. package/dist/services/call_center/TicketService.js +4 -1
  14. package/dist/services/call_center/TicketTemplateService.js +4 -1
  15. package/dist/services/call_center/TicketTopicService.js +4 -1
  16. package/dist/services/crm/ContactsService.js +4 -1
  17. package/dist/services/crm/DeviceService.js +4 -1
  18. package/dist/services/finance/InvoicesCancelService.js +4 -1
  19. package/dist/services/finance/InvoicesDetailService.js +4 -1
  20. package/dist/services/finance/InvoicesLogsAssignService.js +4 -1
  21. package/dist/services/finance/InvoicesService.js +4 -1
  22. package/dist/services/finance/PaymentRequestService.js +4 -1
  23. package/dist/services/finance/PaymentService.js +4 -1
  24. package/dist/services/finance/VouchersCategoryService.js +4 -1
  25. package/dist/services/finance/VouchersService.js +4 -1
  26. package/dist/services/finance/WalletTransactionService.js +4 -1
  27. package/dist/services/finance/WalletsService.js +4 -1
  28. package/dist/services/hr/AllowanceService.js +4 -1
  29. package/dist/services/hr/AnnualLeaveService.js +4 -1
  30. package/dist/services/hr/CategoryService.js +4 -1
  31. package/dist/services/hr/DepartmentService.js +4 -1
  32. package/dist/services/hr/DeviceService.js +4 -1
  33. package/dist/services/hr/DocumentService.js +4 -1
  34. package/dist/services/hr/EmployeeExtendService.js +4 -1
  35. package/dist/services/hr/EmployeeExtendTempService.js +4 -1
  36. package/dist/services/hr/EmployeeLeaveService.js +4 -1
  37. package/dist/services/hr/EmployeeQuitService.js +4 -1
  38. package/dist/services/hr/EmployeeService.js +4 -1
  39. package/dist/services/hr/EmployeeShiftService.js +4 -1
  40. package/dist/services/hr/HolidayService.js +4 -1
  41. package/dist/services/hr/JobTitleService.js +4 -1
  42. package/dist/services/hr/PositionService.js +4 -1
  43. package/dist/services/hr/ReasonTypeService.js +4 -1
  44. package/dist/services/hr/ResignationService.js +4 -1
  45. package/dist/services/hr/SalaryService.js +4 -1
  46. package/dist/services/hr/ScheduleOnlineService.js +4 -1
  47. package/dist/services/hr/ScheduleService.js +4 -1
  48. package/dist/services/hr/SettingDocumentService.js +4 -1
  49. package/dist/services/hr/ShiftService.js +4 -1
  50. package/dist/services/hr/ShiftsCustomerCareService.js +4 -1
  51. package/dist/services/hr/TicketExtendService.js +4 -1
  52. package/dist/services/hr/TicketService.js +4 -1
  53. package/dist/services/hr/TicketTypeService.js +4 -1
  54. package/dist/services/hr/TrackingConfirmService.js +4 -1
  55. package/dist/services/hr/TrackingErrorService.js +4 -1
  56. package/dist/services/inventory/InventoryService.js +4 -1
  57. package/dist/services/inventory/LogService.js +4 -1
  58. package/dist/services/inventory/ProductService.js +4 -1
  59. package/dist/services/inventory/ProductShipmentService.js +4 -1
  60. package/dist/services/inventory/StoreService.js +4 -1
  61. package/dist/services/inventory/SupplierService.js +4 -1
  62. package/dist/services/inventory/TransactionDetailService.js +4 -1
  63. package/dist/services/inventory/TransactionService.js +4 -1
  64. package/dist/services/lms/AlbumCategoryService.js +4 -1
  65. package/dist/services/lms/AlbumFileService.js +4 -1
  66. package/dist/services/lms/AlbumService.js +4 -1
  67. package/dist/services/lms/ClassScheduleService.js +4 -1
  68. package/dist/services/lms/ClassesService.js +4 -1
  69. package/dist/services/lms/CourseLessonService.js +4 -1
  70. package/dist/services/lms/CoursePriceService.js +4 -1
  71. package/dist/services/lms/CourseProductService.js +4 -1
  72. package/dist/services/lms/CourseService.js +4 -1
  73. package/dist/services/lms/DocumentCategoryService.js +4 -1
  74. package/dist/services/lms/DocumentService.js +8 -1
  75. package/dist/services/lms/LicenseService.js +4 -1
  76. package/dist/services/lms/PracticeResultService.js +4 -1
  77. package/dist/services/lms/PracticeService.js +4 -1
  78. package/dist/services/lms/StudentAgainService.js +4 -1
  79. package/dist/services/lms/StudentDocumentService.js +4 -1
  80. package/dist/services/lms/StudentExamTimeService.js +4 -1
  81. package/dist/services/lms/StudentReviewService.js +4 -1
  82. package/dist/services/lms/StudentScoreService.js +4 -1
  83. package/dist/services/lms/StudentService.js +4 -1
  84. package/dist/services/lms/StudentSettingReviewService.js +4 -1
  85. package/dist/services/lms/StudentTrackingService.js +4 -1
  86. package/dist/services/lms/StudentTrialService.js +4 -1
  87. package/dist/services/notification/AppService.js +4 -1
  88. package/dist/services/notification/NotificationService.js +4 -1
  89. package/dist/services/online/CourseLessonService.js +4 -1
  90. package/dist/services/online/CourseService.js +4 -1
  91. package/dist/services/online/StudentService.js +4 -1
  92. package/dist/services/org/BranchRequestService.js +4 -1
  93. package/dist/services/org/BranchService.js +4 -1
  94. package/dist/services/org/BranchToMacsService.js +4 -1
  95. package/dist/services/org/BrandService.js +4 -1
  96. package/dist/services/org/CitiesService.js +4 -1
  97. package/dist/services/org/LegalEntityService.js +4 -1
  98. package/dist/services/pm/NoteService.js +4 -1
  99. package/dist/services/pm/TaskService.js +4 -1
  100. package/dist/services/support/CommentService.js +357 -0
  101. package/dist/services/test/EduTestService.js +4 -1
  102. package/package.json +1 -1
package/dist/config.js CHANGED
@@ -42,6 +42,7 @@ var configRouteService = {
42
42
  App: {
43
43
  CategoryService: `${baseUrl}/app/category`,
44
44
  NewService: `${baseUrl}/app/news`,
45
+ AppTestService: `${baseUrl}/app/test`,
45
46
  RecommendedCourseService: `${baseUrl}/app/recommended_level`,
46
47
  SettingAppService: `${baseUrl}/app/setting`,
47
48
  TargetAppService: `${baseUrl}/app/target`
@@ -156,6 +157,9 @@ var configRouteService = {
156
157
  TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
157
158
  TrackingErrorService: `${baseUrl}/hr/tracking-error`,
158
159
  SettingDocumentService: `${baseUrl}/hr/setting/profile`
160
+ },
161
+ Support: {
162
+ CommentService: `${baseUrl}/support/comment`
159
163
  }
160
164
  };
161
165
  module.exports = {
package/dist/service.js CHANGED
@@ -49,6 +49,7 @@ var require_config = __commonJS({
49
49
  App: {
50
50
  CategoryService: `${baseUrl}/app/category`,
51
51
  NewService: `${baseUrl}/app/news`,
52
+ AppTestService: `${baseUrl}/app/test`,
52
53
  RecommendedCourseService: `${baseUrl}/app/recommended_level`,
53
54
  SettingAppService: `${baseUrl}/app/setting`,
54
55
  TargetAppService: `${baseUrl}/app/target`
@@ -163,6 +164,9 @@ var require_config = __commonJS({
163
164
  TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
164
165
  TrackingErrorService: `${baseUrl}/hr/tracking-error`,
165
166
  SettingDocumentService: `${baseUrl}/hr/setting/profile`
167
+ },
168
+ Support: {
169
+ CommentService: `${baseUrl}/support/comment`
166
170
  }
167
171
  };
168
172
  module2.exports = {
@@ -202,7 +206,6 @@ var require_BaseService = __commonJS({
202
206
  setHeader(headers = {}) {
203
207
  var Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
204
208
  if (headers && headers.Authorization) Authorization = headers.Authorization;
205
- if (headers && headers.authorization) Authorization = headers.authorization;
206
209
  this.headers = {
207
210
  ...this.headers || {},
208
211
  Authorization
@@ -329,6 +332,60 @@ var require_BaseService = __commonJS({
329
332
  }
330
333
  });
331
334
 
335
+ // src/services/SettingService.js
336
+ var require_SettingService = __commonJS({
337
+ "src/services/SettingService.js"(exports2, module2) {
338
+ var BaseService = require_BaseService();
339
+ var { CONFIG_ROUTER_SERVICE, API_MICROSERVICE_TOKEN } = require_config();
340
+ var SettingService = class extends BaseService {
341
+ constructor() {
342
+ super("", {
343
+ Authorization: `Bearer ${API_MICROSERVICE_TOKEN}`
344
+ });
345
+ this.isCache = true;
346
+ }
347
+ async getBranches(filter = {}) {
348
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/org/branch";
349
+ this.service = "branches";
350
+ this.timeCache = 24 * 60 * 60;
351
+ return this.request("get", url, { params: filter });
352
+ }
353
+ async getBrands(filter = {}) {
354
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/org/brand";
355
+ this.service = "brands";
356
+ this.timeCache = 24 * 60 * 60;
357
+ return this.request("get", url, { params: filter });
358
+ }
359
+ async getCities(filter = {}) {
360
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/org/city";
361
+ this.service = "cities";
362
+ this.timeCache = 24 * 60 * 60;
363
+ return this.request("get", url, { params: filter });
364
+ }
365
+ async getShifts(filter = {}) {
366
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/setting-shifts";
367
+ this.service = "setting_shifts";
368
+ this.timeCache = 24 * 60 * 60;
369
+ return this.request("get", url, { params: filter });
370
+ }
371
+ async getShift(id) {
372
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/setting-shifts/" + id;
373
+ this.service = "setting_shifts";
374
+ this.timeCache = 24 * 60 * 60;
375
+ return this.request("get", url);
376
+ }
377
+ async getLevels(filter = {}) {
378
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/course-levels";
379
+ this.service = "course_levels";
380
+ this.timeCache = 24 * 60 * 60;
381
+ return this.request("get", url, { params: filter });
382
+ }
383
+ // có thể thêm method riêng cho user nếu cần
384
+ };
385
+ module2.exports = SettingService;
386
+ }
387
+ });
388
+
332
389
  // src/services/app/CategoryService.js
333
390
  var require_CategoryService = __commonJS({
334
391
  "src/services/app/CategoryService.js"(exports2, module2) {
@@ -426,6 +483,32 @@ var require_TargetService = __commonJS({
426
483
  }
427
484
  });
428
485
 
486
+ // src/services/app/AppTestService.js
487
+ var require_AppTestService = __commonJS({
488
+ "src/services/app/AppTestService.js"(exports2, module2) {
489
+ var BaseService = require_BaseService();
490
+ var { CONFIG_ROUTER_SERVICE } = require_config();
491
+ var AppTestService = class extends BaseService {
492
+ constructor() {
493
+ super(CONFIG_ROUTER_SERVICE.App.AppTestService);
494
+ this.service = "app_test";
495
+ }
496
+ async category(filter = {}) {
497
+ this.service = "app_category";
498
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/app/category";
499
+ return this.request("get", url, { params: filter });
500
+ }
501
+ async count(filter = {}) {
502
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/app/tests/count";
503
+ this.service = "app_tests";
504
+ return this.request("get", url, { params: filter });
505
+ }
506
+ // có thể thêm method riêng cho user nếu cần
507
+ };
508
+ module2.exports = AppTestService;
509
+ }
510
+ });
511
+
429
512
  // src/services/call_center/CategoryService.js
430
513
  var require_CategoryService2 = __commonJS({
431
514
  "src/services/call_center/CategoryService.js"(exports2, module2) {
@@ -1685,6 +1768,10 @@ var require_DocumentService2 = __commonJS({
1685
1768
  this.service = "student_documents";
1686
1769
  return this.request("post", url, { params: filter });
1687
1770
  }
1771
+ async view(id, params) {
1772
+ const url = `${CONFIG_ROUTER_SERVICE.BASE_URL}/lms/documents/${id}/view`;
1773
+ return this.request("post", url, params);
1774
+ }
1688
1775
  async count(filter = {}) {
1689
1776
  let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/documents/count";
1690
1777
  this.service = "student_documents";
@@ -2142,14 +2229,44 @@ var require_EduTestService = __commonJS({
2142
2229
  }
2143
2230
  });
2144
2231
 
2232
+ // src/services/support/CommentService.js
2233
+ var require_CommentService = __commonJS({
2234
+ "src/services/support/CommentService.js"(exports2, module2) {
2235
+ var BaseService = require_BaseService();
2236
+ var { CONFIG_ROUTER_SERVICE } = require_config();
2237
+ var CommentService = class extends BaseService {
2238
+ constructor() {
2239
+ super(CONFIG_ROUTER_SERVICE.Support.CommentService);
2240
+ this.service = "comment";
2241
+ }
2242
+ async countLikes(filter = {}) {
2243
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/support/likes/count";
2244
+ return this.request("get", url, { params: filter });
2245
+ }
2246
+ async likes(params) {
2247
+ const url = `${CONFIG_ROUTER_SERVICE.BASE_URL}/support/likes`;
2248
+ return this.request("post", url, { data: params });
2249
+ }
2250
+ async getComment(filter = {}) {
2251
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/support/comment/render_comment";
2252
+ return this.request("get", url, { params: filter });
2253
+ }
2254
+ // có thể thêm method riêng cho user nếu cần
2255
+ };
2256
+ module2.exports = CommentService;
2257
+ }
2258
+ });
2259
+
2145
2260
  // src/service.js
2146
2261
  module.exports = {
2262
+ settingService: new (require_SettingService())(),
2147
2263
  // app
2148
2264
  appCategoryService: new (require_CategoryService())(),
2149
2265
  appNewService: new (require_NewService())(),
2150
2266
  recommendedCourseService: new (require_RecommendedCourseService())(),
2151
2267
  settingAppService: new (require_SettingAppService())(),
2152
2268
  targetService: new (require_TargetService())(),
2269
+ appTestService: new (require_AppTestService())(),
2153
2270
  // call_center
2154
2271
  callCenterCategoryService: new (require_CategoryService2())(),
2155
2272
  ticketActivityService: new (require_TicketActivityService())(),
@@ -2245,5 +2362,7 @@ module.exports = {
2245
2362
  noteService: new (require_NoteService())(),
2246
2363
  taskService: new (require_TaskService())(),
2247
2364
  // test
2248
- eduTestService: new (require_EduTestService())()
2365
+ eduTestService: new (require_EduTestService())(),
2366
+ // support
2367
+ commentService: new (require_CommentService())()
2249
2368
  };
@@ -49,6 +49,7 @@ var require_config = __commonJS({
49
49
  App: {
50
50
  CategoryService: `${baseUrl}/app/category`,
51
51
  NewService: `${baseUrl}/app/news`,
52
+ AppTestService: `${baseUrl}/app/test`,
52
53
  RecommendedCourseService: `${baseUrl}/app/recommended_level`,
53
54
  SettingAppService: `${baseUrl}/app/setting`,
54
55
  TargetAppService: `${baseUrl}/app/target`
@@ -163,6 +164,9 @@ var require_config = __commonJS({
163
164
  TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
164
165
  TrackingErrorService: `${baseUrl}/hr/tracking-error`,
165
166
  SettingDocumentService: `${baseUrl}/hr/setting/profile`
167
+ },
168
+ Support: {
169
+ CommentService: `${baseUrl}/support/comment`
166
170
  }
167
171
  };
168
172
  module2.exports = {
@@ -200,7 +204,6 @@ var BaseService = class {
200
204
  setHeader(headers = {}) {
201
205
  var Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
202
206
  if (headers && headers.Authorization) Authorization = headers.Authorization;
203
- if (headers && headers.authorization) Authorization = headers.authorization;
204
207
  this.headers = {
205
208
  ...this.headers || {},
206
209
  Authorization
@@ -49,6 +49,7 @@ var require_config = __commonJS({
49
49
  App: {
50
50
  CategoryService: `${baseUrl}/app/category`,
51
51
  NewService: `${baseUrl}/app/news`,
52
+ AppTestService: `${baseUrl}/app/test`,
52
53
  RecommendedCourseService: `${baseUrl}/app/recommended_level`,
53
54
  SettingAppService: `${baseUrl}/app/setting`,
54
55
  TargetAppService: `${baseUrl}/app/target`
@@ -163,6 +164,9 @@ var require_config = __commonJS({
163
164
  TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
164
165
  TrackingErrorService: `${baseUrl}/hr/tracking-error`,
165
166
  SettingDocumentService: `${baseUrl}/hr/setting/profile`
167
+ },
168
+ Support: {
169
+ CommentService: `${baseUrl}/support/comment`
166
170
  }
167
171
  };
168
172
  module2.exports = {
@@ -202,7 +206,6 @@ var require_BaseService = __commonJS({
202
206
  setHeader(headers = {}) {
203
207
  var Authorization = `Bearer ${API_MICROSERVICE_TOKEN2}`;
204
208
  if (headers && headers.Authorization) Authorization = headers.Authorization;
205
- if (headers && headers.authorization) Authorization = headers.authorization;
206
209
  this.headers = {
207
210
  ...this.headers || {},
208
211
  Authorization
@@ -0,0 +1,355 @@
1
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
+ var __commonJS = (cb, mod) => function __require() {
3
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
4
+ };
5
+
6
+ // src/config.js
7
+ var require_config = __commonJS({
8
+ "src/config.js"(exports2, module2) {
9
+ require("dotenv").config({ quiet: true, override: true });
10
+ var Redis = require("ioredis");
11
+ var redis = new Redis({
12
+ host: process.env.REDIS_HOST || "128.199.195.180",
13
+ port: process.env.REDIS_PORT || 6379,
14
+ password: process.env.REDIS_PASSWORD || "WZyB5Z7BRRgvrzuGzRwB"
15
+ });
16
+ var baseUrl = process.env.API_MICROSERVICE_URL;
17
+ var configRouteService = {
18
+ BASE_URL: baseUrl,
19
+ Finance: {
20
+ InvoicesService: `${baseUrl}/finance/invoices`,
21
+ InvoicesCancelService: `${baseUrl}/finance/invoice_detail_cancel`,
22
+ InvoicesDetailService: `${baseUrl}/finance/invoices-detail`,
23
+ InvoicesLogsAssignService: `${baseUrl}/finance/invoices-logs-assign`,
24
+ PaymentService: `${baseUrl}/finance/payments`,
25
+ PaymentRequestService: `${baseUrl}/finance/payments-request`,
26
+ VouchersService: `${baseUrl}/finance/vouchers`,
27
+ VouchersCategoryService: `${baseUrl}/finance/vouchers-category`,
28
+ WalletsService: `${baseUrl}/finance/wallets`,
29
+ WalletTransactionService: `${baseUrl}/finance/wallet-transaction`
30
+ },
31
+ CallCenter: {
32
+ CategoryService: `${baseUrl}/call-center/ticket-categories`,
33
+ TicketService: `${baseUrl}/call-center/ticket`,
34
+ TicketActivityService: `${baseUrl}/call-center/ticket-activities`,
35
+ TicketTemplateService: `${baseUrl}/call-center/ticket-template`,
36
+ TicketTopicService: `${baseUrl}/call-center/ticket-topics`,
37
+ CallService: `${baseUrl}/call-center/calls`
38
+ },
39
+ Inventory: {
40
+ InventoryService: `${baseUrl}/inventory/inventory-products`,
41
+ LogService: `${baseUrl}/inventory/logs`,
42
+ ProductService: `${baseUrl}/inventory/products`,
43
+ ProductShipmentService: `${baseUrl}/inventory/products_shipment`,
44
+ StoreService: `${baseUrl}/inventory/stores`,
45
+ SupplierService: `${baseUrl}/inventory/supplier`,
46
+ TransactionService: `${baseUrl}/inventory/transaction`,
47
+ TransactionDetailService: `${baseUrl}/inventory/transaction_detail`
48
+ },
49
+ App: {
50
+ CategoryService: `${baseUrl}/app/category`,
51
+ NewService: `${baseUrl}/app/news`,
52
+ AppTestService: `${baseUrl}/app/test`,
53
+ RecommendedCourseService: `${baseUrl}/app/recommended_level`,
54
+ SettingAppService: `${baseUrl}/app/setting`,
55
+ TargetAppService: `${baseUrl}/app/target`
56
+ },
57
+ Asset: {
58
+ AllocationDetailService: `${baseUrl}/asset/asset-allocation-detail`,
59
+ BroadcastService: `${baseUrl}/asset/broadcast`,
60
+ EntityAssetService: `${baseUrl}/asset/entity-asset`,
61
+ SubAssetService: `${baseUrl}/asset/sub-asset`
62
+ },
63
+ Course: {
64
+ CategoryService: `${baseUrl}/course/category`,
65
+ ClassesService: `${baseUrl}/course/classes`,
66
+ ClassesScheduleService: `${baseUrl}/course/classes_schedule`,
67
+ CourseService: `${baseUrl}/course/course`,
68
+ CourseScheduleService: `${baseUrl}/course/course_schedule`,
69
+ StudentsService: `${baseUrl}/course/students`
70
+ },
71
+ Test: {
72
+ TestService: `${baseUrl}/tests/tests`
73
+ },
74
+ Pm: {
75
+ NoteService: `${baseUrl}/pm/notes`,
76
+ TaskService: `${baseUrl}/pm/tasks`
77
+ },
78
+ Crm: {
79
+ ContactService: `${baseUrl}/crm/contacts`,
80
+ AccountsService: `${baseUrl}/crm/accounts`,
81
+ CalendarContactService: `${baseUrl}/crm/calendar-contact`,
82
+ CalendarsService: `${baseUrl}/crm/calendars`,
83
+ CampaignService: `${baseUrl}/crm/campaigns`,
84
+ CompanyService: `${baseUrl}/crm/company`,
85
+ ContactDocumentService: `${baseUrl}/crm/contact-document`,
86
+ ContactToCampaignService: `${baseUrl}/crm/contacts-campaign`,
87
+ DeviceService: `${baseUrl}/crm/devices`,
88
+ LeadsService: `${baseUrl}/crm/leads`,
89
+ NotificationService: `${baseUrl}/crm/notifications`,
90
+ NotificationContactService: `${baseUrl}/crm/notification-to-contact`,
91
+ OpportunitiesService: `${baseUrl}/crm/opportunities`,
92
+ SegmentsService: `${baseUrl}/crm/segments`
93
+ },
94
+ Notification: {
95
+ AppService: `${baseUrl}/notification/type/app`,
96
+ MailService: `${baseUrl}/notification/type/mail`,
97
+ SmsService: `${baseUrl}/notification/type/sms`,
98
+ ZnsService: `${baseUrl}/notification/type/zns`,
99
+ NotificationContactService: `${baseUrl}/notification/notification_contact`,
100
+ NotificationEmployeeService: `${baseUrl}/notification/notification_employee`,
101
+ NotificationService: `${baseUrl}/notification`,
102
+ TemplateService: `${baseUrl}/notification/template`
103
+ },
104
+ Org: {
105
+ BranchService: `${baseUrl}/org/branch`,
106
+ BranchRequestService: `${baseUrl}/org/branch_request`,
107
+ BranchToMacsService: `${baseUrl}/org/branch_to_mac`,
108
+ BrandService: `${baseUrl}/org/brand`,
109
+ CitiesService: `${baseUrl}/org/city`,
110
+ LegalEntityService: `${baseUrl}/org/legal_entities`
111
+ },
112
+ Lms: {
113
+ AlbumService: `${baseUrl}/lms/album`,
114
+ AlbumCategoryService: `${baseUrl}/lms/cate_album`,
115
+ AlbumFileService: `${baseUrl}/lms/album_file`,
116
+ ClassesService: `${baseUrl}/lms/classes`,
117
+ ClassScheduleService: `${baseUrl}/lms/class-schedules`,
118
+ CourseLessonService: `${baseUrl}/lms/course-lessons`,
119
+ CoursePriceService: `${baseUrl}/lms/course-prices`,
120
+ CourseProductService: `${baseUrl}/lms/course-product`,
121
+ CourseService: `${baseUrl}/lms/courses`,
122
+ DocumentService: `${baseUrl}/lms/documents`,
123
+ DocumentCategoryService: `${baseUrl}/lms/document-categories`,
124
+ LicenseService: `${baseUrl}/lms/license`,
125
+ PracticeResultService: `${baseUrl}/lms/practices-result`,
126
+ PracticeService: `${baseUrl}/lms/practices`,
127
+ StudentAgainService: `${baseUrl}/lms/students-agains`,
128
+ StudentDocumentService: `${baseUrl}/lms/students-documents`,
129
+ StudentExamTimeService: `${baseUrl}/lms/student-exam-time`,
130
+ StudentReviewService: `${baseUrl}/lms/students-reviews`,
131
+ StudentService: `${baseUrl}/lms/students`,
132
+ StudentScoreService: `${baseUrl}/lms/students-scores`,
133
+ StudentSettingReviewService: `${baseUrl}/lms/setting-reviews`,
134
+ StudentTrackingService: `${baseUrl}/lms/students-tracking`,
135
+ StudentTrialService: `${baseUrl}/lms/students-trial`
136
+ },
137
+ Hr: {
138
+ AllowanceService: `${baseUrl}/hr/allowance`,
139
+ CategoryService: `${baseUrl}/hr/setting/category`,
140
+ AnnualLeaveService: `${baseUrl}/hr/annual_leave`,
141
+ EmployeeService: `${baseUrl}/hr/employees`,
142
+ JobTitleService: `${baseUrl}/hr/setting/job_title`,
143
+ DepartmentService: `${baseUrl}/hr/departments`,
144
+ DeviceService: `${baseUrl}/hr/device`,
145
+ DocumentService: `${baseUrl}/hr/documents`,
146
+ EmployeeExtendService: `${baseUrl}/hr/employees/extend`,
147
+ EmployeeExtendTempService: `${baseUrl}/hr/employees/extend/temp`,
148
+ EmployeeLeaveService: `${baseUrl}/hr/employee_leave`,
149
+ EmployeeNotificationService: `${baseUrl}/hr/notification-employee`,
150
+ EmployeeQuitService: `${baseUrl}/hr/employee_quit`,
151
+ EmployeeShiftService: `${baseUrl}/hr/employee_shift`,
152
+ HolidayService: `${baseUrl}/hr/holidays`,
153
+ PositionService: `${baseUrl}/hr/positions`,
154
+ ReasonTypeService: `${baseUrl}/hr/setting/reason_type`,
155
+ ResignationService: `${baseUrl}/hr/resignations`,
156
+ SalaryService: `${baseUrl}/hr/employee_salary`,
157
+ ScheduleService: `${baseUrl}/hr/schedule`,
158
+ ScheduleOnlineService: `${baseUrl}/hr/schedule_online`,
159
+ ShiftService: `${baseUrl}/hr/setting/shifts`,
160
+ ShiftsCustomerCareService: `${baseUrl}/hr/setting/shifts-customer-care`,
161
+ TicketService: `${baseUrl}/hr/ticket`,
162
+ TicketExtendService: `${baseUrl}/hr/ticket/extend`,
163
+ TicketTypeService: `${baseUrl}/hr/ticket-type`,
164
+ TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
165
+ TrackingErrorService: `${baseUrl}/hr/tracking-error`,
166
+ SettingDocumentService: `${baseUrl}/hr/setting/profile`
167
+ },
168
+ Support: {
169
+ CommentService: `${baseUrl}/support/comment`
170
+ }
171
+ };
172
+ module2.exports = {
173
+ AUTHENTICATOR_PUBLIC_KEY: process.env.AUTHENTICATOR_PUBLIC_KEY || "",
174
+ API_MICROSERVICE_URL: process.env.API_MICROSERVICE_URL || "",
175
+ API_MICROSERVICE_TOKEN: process.env.API_MICROSERVICE_TOKEN || "",
176
+ CONFIG_ROUTER_SERVICE: configRouteService,
177
+ CONFIG_REDIS: redis
178
+ };
179
+ }
180
+ });
181
+
182
+ // src/services/BaseService.js
183
+ var require_BaseService = __commonJS({
184
+ "src/services/BaseService.js"(exports2, module2) {
185
+ var axios = require("axios");
186
+ var qs = require("qs");
187
+ var { API_MICROSERVICE_TOKEN, CONFIG_REDIS } = require_config();
188
+ var BaseService2 = class {
189
+ baseUrl = "";
190
+ headers = {};
191
+ isCache = false;
192
+ service = null;
193
+ // nhớ set ở subclass
194
+ timeCache = 300;
195
+ // 300s = 5 phút
196
+ constructor(baseUrl = "", defaultHeaders = {}) {
197
+ this.baseUrl = baseUrl;
198
+ this.setHeader();
199
+ this.http = axios.create({
200
+ baseURL: this.baseUrl,
201
+ headers: this.headers,
202
+ paramsSerializer: (params) => qs.stringify(params, { arrayFormat: "brackets", encode: true })
203
+ });
204
+ }
205
+ // Nhận: object headers, hoặc trực tiếp token string ("Bearer x"), hoặc không truyền gì (auto từ ENV)
206
+ setHeader(headers = {}) {
207
+ var Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
208
+ if (headers && headers.Authorization) Authorization = headers.Authorization;
209
+ this.headers = {
210
+ ...this.headers || {},
211
+ Authorization
212
+ };
213
+ return this;
214
+ }
215
+ buildCacheKey(path, params = {}) {
216
+ const q = qs.stringify(params, { arrayFormat: "brackets", encode: true });
217
+ const full = `${path}${q ? "?" + q : ""}`;
218
+ const service = this.service || "unknown";
219
+ return `gateway.${service}.urls:${full}`;
220
+ }
221
+ async request(method, url, options = {}, cacheKey = null) {
222
+ var _a, _b, _c;
223
+ const isGet = method.toLowerCase() === "get";
224
+ if (isGet && this.isCache) {
225
+ cacheKey = cacheKey ? cacheKey : this.buildCacheKey(url, options.params);
226
+ const cached = await CONFIG_REDIS.get(cacheKey);
227
+ if (cached) {
228
+ console.log(`[CACHE HIT] ${cacheKey}`);
229
+ return JSON.parse(cached);
230
+ }
231
+ }
232
+ try {
233
+ if (method.toLowerCase() === "get") {
234
+ console.log(
235
+ `[HTTP ${method.toUpperCase()}] ${this.buildGET(
236
+ url,
237
+ options.params || {}
238
+ )} `
239
+ );
240
+ }
241
+ let startTime = Date.now();
242
+ const res = await this.http.request({
243
+ method,
244
+ url,
245
+ // dùng path vì đã set baseURL
246
+ headers: this.headers,
247
+ ...options
248
+ });
249
+ const data = res.data;
250
+ let duration = (Date.now() - startTime) / 1e3;
251
+ if (duration > 5) {
252
+ if (method.toLowerCase() === "get") {
253
+ let q = qs.stringify(options.params || {}, {
254
+ arrayFormat: "brackets",
255
+ encode: true
256
+ });
257
+ console.log(
258
+ `[HTTP GET] ${url}${q ? "?" + q : ""} - took ${duration.toFixed(
259
+ 2
260
+ )}s`
261
+ );
262
+ } else {
263
+ console.log(
264
+ `[HTTP ${method.toUpperCase()}] ${url} - took ${duration.toFixed(
265
+ 2
266
+ )}s`
267
+ );
268
+ }
269
+ if (options.params) console.log("Query:", options.params);
270
+ if (options.data) console.log("Body:", options.data);
271
+ }
272
+ return data;
273
+ } catch (error) {
274
+ var safeError = {
275
+ // message: error.message || "Request failed",
276
+ statusCode: ((_a = error.response) == null ? void 0 : _a.status) || 500,
277
+ ...(_b = error.response) == null ? void 0 : _b.data
278
+ };
279
+ if (safeError.statusCode == 404) {
280
+ let q = qs.stringify(options.params || {}, {
281
+ arrayFormat: "brackets",
282
+ encode: true
283
+ });
284
+ return {
285
+ statusCode: 404,
286
+ status: "error",
287
+ messag: `[HTTP ${method.toUpperCase()}] ${url}${q ? "?" + q : ""} not found`
288
+ };
289
+ }
290
+ console.error(
291
+ `[${method.toUpperCase()}] ${url} failed:`,
292
+ safeError,
293
+ (_c = error.response) == null ? void 0 : _c.data
294
+ );
295
+ return {
296
+ error: true,
297
+ ...safeError
298
+ };
299
+ }
300
+ }
301
+ buildGET(url, params = {}) {
302
+ let queryString = qs.stringify(params, {
303
+ arrayFormat: "brackets",
304
+ encode: true
305
+ });
306
+ return `${url}${queryString ? "?" + queryString : ""}`;
307
+ }
308
+ async all(query = {}) {
309
+ if (query.order_by && Array.isArray(query.order_by)) {
310
+ query.order_by = query.order_by.slice(0, 2);
311
+ if (query.order_by[1] && !["asc", "desc"].includes(query.order_by[1])) {
312
+ query.order_by[1] = "asc";
313
+ }
314
+ }
315
+ return this.request("get", this.baseUrl, { params: query });
316
+ }
317
+ async detail(id) {
318
+ const cacheKey = this.isCache ? `gateway.${this.service}.${id}` : null;
319
+ return this.request("get", `${this.baseUrl}/${id}`);
320
+ }
321
+ async create(data) {
322
+ return this.request("post", this.baseUrl, { data });
323
+ }
324
+ async update(id, data) {
325
+ return this.request("put", `${this.baseUrl}/${id}`, { data });
326
+ }
327
+ async delete(id) {
328
+ return this.request("delete", `${this.baseUrl}/${id}`);
329
+ }
330
+ };
331
+ module2.exports = BaseService2;
332
+ }
333
+ });
334
+
335
+ // src/services/app/AppTestService.js
336
+ var BaseService = require_BaseService();
337
+ var { CONFIG_ROUTER_SERVICE } = require_config();
338
+ var AppTestService = class extends BaseService {
339
+ constructor() {
340
+ super(CONFIG_ROUTER_SERVICE.App.AppTestService);
341
+ this.service = "app_test";
342
+ }
343
+ async category(filter = {}) {
344
+ this.service = "app_category";
345
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/app/category";
346
+ return this.request("get", url, { params: filter });
347
+ }
348
+ async count(filter = {}) {
349
+ let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/app/tests/count";
350
+ this.service = "app_tests";
351
+ return this.request("get", url, { params: filter });
352
+ }
353
+ // có thể thêm method riêng cho user nếu cần
354
+ };
355
+ module.exports = AppTestService;
@@ -49,6 +49,7 @@ var require_config = __commonJS({
49
49
  App: {
50
50
  CategoryService: `${baseUrl}/app/category`,
51
51
  NewService: `${baseUrl}/app/news`,
52
+ AppTestService: `${baseUrl}/app/test`,
52
53
  RecommendedCourseService: `${baseUrl}/app/recommended_level`,
53
54
  SettingAppService: `${baseUrl}/app/setting`,
54
55
  TargetAppService: `${baseUrl}/app/target`
@@ -163,6 +164,9 @@ var require_config = __commonJS({
163
164
  TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
164
165
  TrackingErrorService: `${baseUrl}/hr/tracking-error`,
165
166
  SettingDocumentService: `${baseUrl}/hr/setting/profile`
167
+ },
168
+ Support: {
169
+ CommentService: `${baseUrl}/support/comment`
166
170
  }
167
171
  };
168
172
  module2.exports = {
@@ -202,7 +206,6 @@ var require_BaseService = __commonJS({
202
206
  setHeader(headers = {}) {
203
207
  var Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
204
208
  if (headers && headers.Authorization) Authorization = headers.Authorization;
205
- if (headers && headers.authorization) Authorization = headers.authorization;
206
209
  this.headers = {
207
210
  ...this.headers || {},
208
211
  Authorization
@@ -49,6 +49,7 @@ var require_config = __commonJS({
49
49
  App: {
50
50
  CategoryService: `${baseUrl}/app/category`,
51
51
  NewService: `${baseUrl}/app/news`,
52
+ AppTestService: `${baseUrl}/app/test`,
52
53
  RecommendedCourseService: `${baseUrl}/app/recommended_level`,
53
54
  SettingAppService: `${baseUrl}/app/setting`,
54
55
  TargetAppService: `${baseUrl}/app/target`
@@ -163,6 +164,9 @@ var require_config = __commonJS({
163
164
  TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
164
165
  TrackingErrorService: `${baseUrl}/hr/tracking-error`,
165
166
  SettingDocumentService: `${baseUrl}/hr/setting/profile`
167
+ },
168
+ Support: {
169
+ CommentService: `${baseUrl}/support/comment`
166
170
  }
167
171
  };
168
172
  module2.exports = {
@@ -202,7 +206,6 @@ var require_BaseService = __commonJS({
202
206
  setHeader(headers = {}) {
203
207
  var Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
204
208
  if (headers && headers.Authorization) Authorization = headers.Authorization;
205
- if (headers && headers.authorization) Authorization = headers.authorization;
206
209
  this.headers = {
207
210
  ...this.headers || {},
208
211
  Authorization