gemcap-be-common 1.2.140 → 1.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 (303) hide show
  1. package/classes/bank-transaction-item.d.ts +17 -0
  2. package/classes/bank-transaction-item.js +64 -0
  3. package/classes/bank-transaction-item.ts +66 -0
  4. package/classes/bank-uploaded-transaction.d.ts +17 -0
  5. package/classes/bank-uploaded-transaction.js +35 -0
  6. package/classes/bank-uploaded-transaction.ts +35 -0
  7. package/classes/inventory-item.d.ts +41 -0
  8. package/classes/inventory-item.js +44 -0
  9. package/classes/inventory-item.ts +63 -0
  10. package/classes/payable-account-item.d.ts +22 -0
  11. package/classes/payable-account-item.js +27 -0
  12. package/classes/payable-account-item.ts +35 -0
  13. package/classes/quickbook-item.d.ts +37 -0
  14. package/classes/quickbook-item.js +51 -0
  15. package/classes/quickbook-item.ts +59 -0
  16. package/classes/receivable-item.d.ts +26 -0
  17. package/classes/receivable-item.js +28 -0
  18. package/classes/receivable-item.ts +38 -0
  19. package/constants/date-formats.contsants.d.ts +1 -0
  20. package/constants/date-formats.contsants.js +4 -0
  21. package/constants/date-formats.contsants.ts +1 -0
  22. package/db/brokers.db.d.ts +185 -0
  23. package/db/brokers.db.js +35 -2
  24. package/db/brokers.db.ts +34 -1
  25. package/db/collateral-adjustments.db.d.ts +34 -0
  26. package/db/collateral-adjustments.db.js +52 -0
  27. package/db/collateral-adjustments.db.ts +54 -0
  28. package/db/collaterals.db.d.ts +1 -1
  29. package/db/equipment.db.d.ts +40 -0
  30. package/db/equipment.db.js +55 -0
  31. package/db/equipment.db.ts +56 -0
  32. package/db/financial-spreading.db.ts +2 -1
  33. package/db/groups.d.ts +5 -0
  34. package/db/groups.js +57 -0
  35. package/db/groups.ts +52 -0
  36. package/db/inventories.d.ts +91 -0
  37. package/db/inventories.js +449 -0
  38. package/db/inventories.ts +481 -0
  39. package/db/inventory-availability.d.ts +3 -0
  40. package/db/inventory-availability.js +103 -0
  41. package/db/inventory-availability.ts +113 -0
  42. package/db/new-summary.d.ts +31 -0
  43. package/db/new-summary.js +1295 -0
  44. package/db/new-summary.ts +1509 -0
  45. package/db/payable-accounts.d.ts +30 -0
  46. package/db/payable-accounts.js +55 -0
  47. package/db/payable-accounts.ts +50 -0
  48. package/db/reserve.db.d.ts +34 -0
  49. package/db/reserve.db.js +52 -0
  50. package/db/reserve.db.ts +48 -0
  51. package/db/uploads.db.d.ts +2 -0
  52. package/db/uploads.db.js +29 -0
  53. package/db/uploads.db.ts +24 -0
  54. package/helpers/main.helper.d.ts +31 -0
  55. package/helpers/main.helper.js +63 -0
  56. package/helpers/main.helper.ts +63 -0
  57. package/models/AccountPayableItem.model.d.ts +6 -6
  58. package/models/AllocatedBankTransaction.model.d.ts +54 -0
  59. package/models/AllocatedBankTransaction.model.js +70 -0
  60. package/models/AllocatedBankTransaction.model.ts +94 -0
  61. package/models/AllocatedData.model.d.ts +33 -0
  62. package/models/AllocatedData.model.js +19 -0
  63. package/models/AllocatedData.model.ts +24 -0
  64. package/models/BBCDate.model.d.ts +3 -3
  65. package/models/BBCSheet.model.d.ts +3 -3
  66. package/models/Banks.model.d.ts +3 -3
  67. package/models/Borrower.model.d.ts +3 -3
  68. package/models/BorrowerData.model.d.ts +3 -3
  69. package/models/BorrowerDataInsurance.model.d.ts +3 -3
  70. package/models/BorrowerDataTerm.model.d.ts +3 -3
  71. package/models/BorrowerSummary.model.js +1 -1
  72. package/models/BorrowerSummary.model.ts +1 -1
  73. package/models/CalandarDay.model.d.ts +40 -0
  74. package/models/CalandarDay.model.js +47 -0
  75. package/models/CalandarDay.model.ts +61 -0
  76. package/models/CashAllocationProduct.model.d.ts +119 -0
  77. package/models/CashAllocationProduct.model.js +102 -0
  78. package/models/CashAllocationProduct.model.ts +112 -0
  79. package/models/CashAllocationReference.model.d.ts +37 -0
  80. package/models/CashAllocationReference.model.js +27 -0
  81. package/models/CashAllocationReference.model.ts +40 -0
  82. package/models/CollateralAdjustment.model.d.ts +51 -0
  83. package/models/CollateralAdjustment.model.js +61 -0
  84. package/models/CollateralAdjustment.model.ts +98 -0
  85. package/models/Company.model.d.ts +35 -0
  86. package/models/Company.model.js +18 -0
  87. package/models/Company.model.ts +29 -0
  88. package/models/CustomerAPGroup.model.d.ts +32 -0
  89. package/models/CustomerAPGroup.model.js +24 -0
  90. package/models/CustomerAPGroup.model.ts +31 -0
  91. package/models/Equipment.model.d.ts +53 -0
  92. package/models/Equipment.model.js +140 -0
  93. package/models/Equipment.model.ts +172 -0
  94. package/models/FinancialCompliance.model.d.ts +39 -0
  95. package/models/FinancialCompliance.model.js +64 -0
  96. package/models/FinancialCompliance.model.ts +78 -0
  97. package/models/FinancialComplianceBorrower.model.d.ts +58 -0
  98. package/models/FinancialComplianceBorrower.model.js +82 -0
  99. package/models/FinancialComplianceBorrower.model.ts +118 -0
  100. package/models/FinancialIndexes.model.d.ts +36 -0
  101. package/models/FinancialIndexes.model.js +27 -0
  102. package/models/FinancialIndexes.model.ts +37 -0
  103. package/models/Inventory.model.d.ts +18 -18
  104. package/models/InventoryAvailability.model.d.ts +21 -21
  105. package/models/InventoryAvailabilityItem.model.d.ts +6 -6
  106. package/models/InventoryItem.model.d.ts +24 -24
  107. package/models/InventoryManualEntry.model.d.ts +9 -9
  108. package/models/InventorySeasonalRates.model.d.ts +3 -3
  109. package/models/LoanBroker.model.d.ts +3 -3
  110. package/models/LoanCharges.model.d.ts +12 -12
  111. package/models/LoanProducts.model.d.ts +9 -9
  112. package/models/LoanStatementStatus.model.d.ts +35 -0
  113. package/models/LoanStatementStatus.model.js +34 -0
  114. package/models/LoanStatementStatus.model.ts +45 -0
  115. package/models/LoanStatementTransaction.model.d.ts +9 -9
  116. package/models/LoanTransactionFile.model.d.ts +41 -0
  117. package/models/LoanTransactionFile.model.js +44 -0
  118. package/models/LoanTransactionFile.model.ts +61 -0
  119. package/models/MappedGroup.model.d.ts +37 -0
  120. package/models/MappedGroup.model.js +33 -0
  121. package/models/MappedGroup.model.ts +46 -0
  122. package/models/MonthEndData.Model.d.ts +41 -0
  123. package/models/MonthEndData.Model.js +42 -0
  124. package/models/MonthEndData.Model.ts +53 -0
  125. package/models/OrganizationEmails.model.d.ts +44 -0
  126. package/models/OrganizationEmails.model.js +40 -0
  127. package/models/OrganizationEmails.model.ts +54 -0
  128. package/models/ProductBroker.model.d.ts +9 -9
  129. package/models/QuickbooksAccount.model.d.ts +39 -0
  130. package/models/QuickbooksAccount.model.js +43 -0
  131. package/models/QuickbooksAccount.model.ts +57 -0
  132. package/models/Receivable.model.d.ts +12 -12
  133. package/models/ReceivableAvailability.model.d.ts +54 -54
  134. package/models/ReceivableAvailabilityItem.model.d.ts +57 -57
  135. package/models/ReceivableItem.model.d.ts +6 -6
  136. package/models/Reserve.model.d.ts +51 -0
  137. package/models/Reserve.model.js +96 -0
  138. package/models/Reserve.model.ts +125 -0
  139. package/models/TermLoan.model.d.ts +3 -3
  140. package/models/TermLoanCalculated.model.d.ts +6 -6
  141. package/models/TransactionAttachedFile.Model.d.ts +35 -0
  142. package/models/TransactionAttachedFile.Model.js +37 -0
  143. package/models/TransactionAttachedFile.Model.ts +48 -0
  144. package/models/UploadedBankTransaction.model.d.ts +56 -0
  145. package/models/UploadedBankTransaction.model.js +78 -0
  146. package/models/UploadedBankTransaction.model.ts +110 -0
  147. package/models/UploadedData.model.d.ts +36 -0
  148. package/models/UploadedData.model.js +23 -0
  149. package/models/UploadedData.model.ts +35 -0
  150. package/models/UploadedFile.model.d.ts +40 -0
  151. package/models/UploadedFile.model.js +41 -0
  152. package/models/UploadedFile.model.ts +57 -0
  153. package/models/UploadedSheet.model.d.ts +46 -0
  154. package/models/UploadedSheet.model.js +27 -0
  155. package/models/UploadedSheet.model.ts +51 -0
  156. package/package.json +10 -1
  157. package/repositories/globals.repository.d.ts +8 -0
  158. package/repositories/globals.repository.js +24 -0
  159. package/repositories/globals.repository.ts +21 -0
  160. package/services/attached-files.service.d.ts +57 -0
  161. package/services/attached-files.service.js +103 -0
  162. package/services/attached-files.service.ts +123 -0
  163. package/services/availability.service.d.ts +77 -0
  164. package/services/availability.service.js +897 -0
  165. package/services/availability.service.ts +1034 -0
  166. package/services/bank-uploaded-transactions.service.d.ts +33 -0
  167. package/services/bank-uploaded-transactions.service.js +430 -0
  168. package/services/bank-uploaded-transactions.service.ts +475 -0
  169. package/services/banks.service.d.ts +36 -0
  170. package/services/banks.service.js +91 -0
  171. package/services/banks.service.ts +95 -0
  172. package/services/borrower-summary.service.d.ts +35 -0
  173. package/services/borrower-summary.service.js +310 -0
  174. package/services/borrower-summary.service.ts +334 -0
  175. package/services/borrowers.service.d.ts +103 -0
  176. package/services/borrowers.service.js +268 -0
  177. package/services/borrowers.service.ts +302 -0
  178. package/services/brokers.service.d.ts +212 -0
  179. package/services/brokers.service.js +160 -0
  180. package/services/brokers.service.ts +200 -0
  181. package/services/calendar.service.d.ts +53 -0
  182. package/services/calendar.service.js +108 -0
  183. package/services/calendar.service.ts +128 -0
  184. package/services/cash-allocation.service.d.ts +40 -0
  185. package/services/cash-allocation.service.js +92 -0
  186. package/services/cash-allocation.service.ts +105 -0
  187. package/services/collateral-adjustments.service.d.ts +38 -0
  188. package/services/collateral-adjustments.service.js +82 -0
  189. package/services/collateral-adjustments.service.ts +95 -0
  190. package/services/collaterals.service.d.ts +69 -0
  191. package/services/collaterals.service.js +279 -0
  192. package/services/collaterals.service.ts +319 -0
  193. package/services/companies.service.d.ts +5 -0
  194. package/services/companies.service.js +21 -0
  195. package/services/companies.service.ts +23 -0
  196. package/services/compliance-borrowers.service.d.ts +152 -0
  197. package/services/compliance-borrowers.service.js +569 -0
  198. package/services/compliance-borrowers.service.ts +617 -0
  199. package/services/equipment.service.d.ts +42 -0
  200. package/services/equipment.service.js +120 -0
  201. package/services/equipment.service.ts +149 -0
  202. package/services/file-manager.service.d.ts +44 -0
  203. package/services/file-manager.service.js +120 -0
  204. package/services/file-manager.service.ts +146 -0
  205. package/services/financial-compliance.service.d.ts +58 -0
  206. package/services/financial-compliance.service.js +281 -0
  207. package/services/financial-compliance.service.ts +309 -0
  208. package/services/financial-indexes.service.d.ts +20 -0
  209. package/services/financial-indexes.service.js +241 -0
  210. package/services/financial-indexes.service.ts +257 -0
  211. package/services/financial-spreading.service.d.ts +74 -0
  212. package/services/financial-spreading.service.js +450 -0
  213. package/services/financial-spreading.service.ts +517 -0
  214. package/services/globals.service.d.ts +5 -0
  215. package/services/globals.service.js +11 -0
  216. package/services/globals.service.ts +8 -0
  217. package/services/groups.service.d.ts +39 -0
  218. package/services/groups.service.js +65 -0
  219. package/services/groups.service.ts +64 -0
  220. package/services/inventory-availability.service.d.ts +13 -0
  221. package/services/inventory-availability.service.js +170 -0
  222. package/services/inventory-availability.service.ts +187 -0
  223. package/services/inventory.service.d.ts +118 -0
  224. package/services/inventory.service.js +239 -0
  225. package/services/inventory.service.ts +276 -0
  226. package/services/loan-charges.service.d.ts +83 -0
  227. package/services/loan-charges.service.js +343 -0
  228. package/services/loan-charges.service.ts +396 -0
  229. package/services/loan-payments.service.d.ts +94 -0
  230. package/services/loan-payments.service.js +485 -0
  231. package/services/loan-payments.service.ts +541 -0
  232. package/services/loan-products.service.d.ts +12 -0
  233. package/services/loan-products.service.js +55 -0
  234. package/services/loan-products.service.ts +58 -0
  235. package/services/loan-statement-balance.service.d.ts +16 -0
  236. package/services/loan-statement-balance.service.js +106 -0
  237. package/services/loan-statement-balance.service.ts +113 -0
  238. package/services/loan-statement-effects.service.d.ts +8 -0
  239. package/services/loan-statement-effects.service.js +42 -0
  240. package/services/loan-statement-effects.service.ts +41 -0
  241. package/services/loan-statement-status.service.d.ts +208 -0
  242. package/services/loan-statement-status.service.js +159 -0
  243. package/services/loan-statement-status.service.ts +177 -0
  244. package/services/loan-statement.service.d.ts +186 -0
  245. package/services/loan-statement.service.js +935 -0
  246. package/services/loan-statement.service.ts +1040 -0
  247. package/services/loan-transactions.service.d.ts +169 -0
  248. package/services/loan-transactions.service.js +941 -0
  249. package/services/loan-transactions.service.ts +1042 -0
  250. package/services/lock.service.d.ts +6 -0
  251. package/services/lock.service.js +45 -0
  252. package/services/lock.service.ts +45 -0
  253. package/services/manual-entry.service.d.ts +20 -0
  254. package/services/manual-entry.service.js +186 -0
  255. package/services/manual-entry.service.ts +201 -0
  256. package/services/month-end-data.service.d.ts +34 -0
  257. package/services/month-end-data.service.js +30 -0
  258. package/services/month-end-data.service.ts +35 -0
  259. package/services/nodemailer.service.d.ts +96 -0
  260. package/services/nodemailer.service.js +689 -0
  261. package/services/nodemailer.service.ts +774 -0
  262. package/services/organization-emails.service.d.ts +31 -0
  263. package/services/organization-emails.service.js +10 -0
  264. package/services/organization-emails.service.ts +7 -0
  265. package/services/organizations.service.d.ts +34 -0
  266. package/services/organizations.service.js +74 -0
  267. package/services/organizations.service.ts +84 -0
  268. package/services/pdf.service.d.ts +61 -0
  269. package/services/pdf.service.js +547 -0
  270. package/services/pdf.service.ts +642 -0
  271. package/services/quickbooks.service.d.ts +99 -0
  272. package/services/quickbooks.service.js +640 -0
  273. package/services/quickbooks.service.ts +734 -0
  274. package/services/reports/investor-summary.service.d.ts +28 -0
  275. package/services/reports/investor-summary.service.js +136 -0
  276. package/services/reports/investor-summary.service.ts +159 -0
  277. package/services/reports.service.d.ts +126 -0
  278. package/services/reports.service.js +584 -0
  279. package/services/reports.service.ts +702 -0
  280. package/services/reserve.service.d.ts +37 -0
  281. package/services/reserve.service.js +76 -0
  282. package/services/reserve.service.ts +79 -0
  283. package/services/sentry.service.d.ts +11 -0
  284. package/services/sentry.service.js +49 -0
  285. package/services/sentry.service.ts +33 -0
  286. package/services/signs.service.d.ts +69 -0
  287. package/services/signs.service.js +230 -0
  288. package/services/signs.service.ts +260 -0
  289. package/services/term-loan.service.d.ts +30 -0
  290. package/services/term-loan.service.js +614 -0
  291. package/services/term-loan.service.ts +696 -0
  292. package/services/uploads.service.d.ts +134 -0
  293. package/services/uploads.service.js +587 -0
  294. package/services/uploads.service.ts +643 -0
  295. package/services/user-logs.service.d.ts +23 -0
  296. package/services/user-logs.service.js +160 -0
  297. package/services/user-logs.service.ts +177 -0
  298. package/services/users.service.d.ts +4 -4
  299. package/services/yield.service.d.ts +46 -0
  300. package/services/yield.service.js +42 -12
  301. package/services/yield.service.ts +38 -8
  302. package/tsconfig.json +5 -5
  303. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,212 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose" />
25
+ /// <reference types="mongoose/types/inferschematype" />
26
+ import { IProductBrokerView } from '../models/ProductBroker.model';
27
+ import { ILoanBrokerEmail, ILoanBrokerView } from '../models/LoanBroker.model';
28
+ import { LoanChargesService } from './loan-charges.service';
29
+ type BrokerView = Omit<IProductBrokerView, '_id'> & {
30
+ _id: string;
31
+ };
32
+ type BrokerTotalView = Omit<IProductBrokerView, 'productId'> & {
33
+ productId: string;
34
+ };
35
+ type ShareType = 'adminShare' | 'interestShare' | 'otherShare';
36
+ type ShareValue = {
37
+ [_ in ShareType]: number;
38
+ };
39
+ type ProductTotal = {
40
+ [product_id: string]: ShareValue;
41
+ };
42
+ export declare class BrokersService {
43
+ private readonly loanChargesService;
44
+ constructor(loanChargesService: LoanChargesService);
45
+ normalizeObjects(): Promise<void>;
46
+ getAllProductBrokers(): Promise<(import("mongoose").FlattenMaps<import("../models/ProductBroker.model").IProductBrokerDoc> & {
47
+ _id: import("mongoose").Types.ObjectId;
48
+ })[]>;
49
+ getBorrowerBrokers(borrowerId: string): Promise<BrokerView[] | (import("mongoose").FlattenMaps<import("../models/ProductBroker.model").IProductBrokerDoc> & {
50
+ _id: import("mongoose").Types.ObjectId;
51
+ })[]>;
52
+ getProductBrokers(productId: string): Promise<import("../models/ProductBroker.model").IProductBrokerDocWithBroker[]>;
53
+ getTotalShares(borrowerId: string, brokers: IProductBrokerView[], replaceNames?: boolean): Promise<ProductTotal>;
54
+ getTotals(borrowerId: string): Promise<BrokerTotalView[]>;
55
+ checkTotalShares(borrowerId: string, brokers: IProductBrokerView[]): Promise<boolean>;
56
+ saveProductBrokers(borrowerId: string, brokers: IProductBrokerView[]): Promise<import("mongodb").BulkWriteResult>;
57
+ getAllLoanBrokers(): Promise<{
58
+ emails: import("mongoose").FlattenMaps<ILoanBrokerEmail>[];
59
+ order: number;
60
+ active: boolean;
61
+ name: string;
62
+ _id: any;
63
+ __v?: any;
64
+ $assertPopulated: <Paths = {}>(path: string | string[], values?: Partial<Paths>) => Omit<import("../models/LoanBroker.model").ILoanBrokerDoc, keyof Paths> & Paths;
65
+ $clone: () => import("../models/LoanBroker.model").ILoanBrokerDoc;
66
+ $getAllSubdocs: () => import("mongoose").Document<any, any, any>[];
67
+ $ignore: (path: string) => void;
68
+ $isDefault: (path: string) => boolean;
69
+ $isDeleted: (val?: boolean) => boolean;
70
+ $getPopulatedDocs: () => import("mongoose").Document<any, any, any>[];
71
+ $inc: (path: string | string[], val?: number) => import("../models/LoanBroker.model").ILoanBrokerDoc;
72
+ $isEmpty: (path: string) => boolean;
73
+ $isValid: (path: string) => boolean;
74
+ $locals: import("mongoose").FlattenMaps<Record<string, unknown>>;
75
+ $markValid: (path: string) => void;
76
+ $model: {
77
+ <ModelType = import("mongoose").Model<unknown, {}, {}, {}, import("mongoose").Document<unknown, {}, unknown> & Required<{
78
+ _id: unknown;
79
+ }>, any>>(name: string): ModelType;
80
+ <ModelType_1 = import("mongoose").Model<any, {}, {}, {}, any, any>>(): ModelType_1;
81
+ };
82
+ $op: "save" | "validate" | "remove";
83
+ $session: (session?: import("mongodb").ClientSession) => import("mongodb").ClientSession;
84
+ $set: {
85
+ (path: string | Record<string, any>, val: any, type: any, options?: import("mongoose").DocumentSetOptions): import("../models/LoanBroker.model").ILoanBrokerDoc;
86
+ (path: string | Record<string, any>, val: any, options?: import("mongoose").DocumentSetOptions): import("../models/LoanBroker.model").ILoanBrokerDoc;
87
+ (value: string | Record<string, any>): import("../models/LoanBroker.model").ILoanBrokerDoc;
88
+ };
89
+ $where: import("mongoose").FlattenMaps<Record<string, unknown>>;
90
+ baseModelName?: string;
91
+ collection: import("mongoose").Collection<import("bson").Document>;
92
+ db: import("mongoose").FlattenMaps<import("mongoose").Connection>;
93
+ deleteOne: (options?: import("mongoose").QueryOptions<unknown>) => any;
94
+ depopulate: (path?: string | string[]) => import("../models/LoanBroker.model").ILoanBrokerDoc;
95
+ directModifiedPaths: () => string[];
96
+ equals: (doc: import("mongoose").Document<any, any, any>) => boolean;
97
+ errors?: import("mongoose").Error.ValidationError;
98
+ get: {
99
+ <T extends string | number | symbol>(path: T, type?: any, options?: any): any;
100
+ (path: string, type?: any, options?: any): any;
101
+ };
102
+ getChanges: () => import("mongoose").UpdateQuery<import("../models/LoanBroker.model").ILoanBrokerDoc>;
103
+ id?: any;
104
+ increment: () => import("../models/LoanBroker.model").ILoanBrokerDoc;
105
+ init: (obj: import("mongoose").AnyObject, opts?: import("mongoose").AnyObject) => import("../models/LoanBroker.model").ILoanBrokerDoc;
106
+ invalidate: {
107
+ <T_1 extends string | number | symbol>(path: T_1, errorMsg: string | NativeError, value?: any, kind?: string): NativeError;
108
+ (path: string, errorMsg: string | NativeError, value?: any, kind?: string): NativeError;
109
+ };
110
+ isDirectModified: {
111
+ <T_2 extends string | number | symbol>(path: T_2 | T_2[]): boolean;
112
+ (path: string | string[]): boolean;
113
+ };
114
+ isDirectSelected: {
115
+ <T_3 extends string | number | symbol>(path: T_3): boolean;
116
+ (path: string): boolean;
117
+ };
118
+ isInit: {
119
+ <T_4 extends string | number | symbol>(path: T_4): boolean;
120
+ (path: string): boolean;
121
+ };
122
+ isModified: {
123
+ <T_5 extends string | number | symbol>(path?: T_5 | T_5[], options?: {
124
+ ignoreAtomics?: boolean;
125
+ }): boolean;
126
+ (path?: string | string[], options?: {
127
+ ignoreAtomics?: boolean;
128
+ }): boolean;
129
+ };
130
+ isNew: boolean;
131
+ isSelected: {
132
+ <T_6 extends string | number | symbol>(path: T_6): boolean;
133
+ (path: string): boolean;
134
+ };
135
+ markModified: {
136
+ <T_7 extends string | number | symbol>(path: T_7, scope?: any): void;
137
+ (path: string, scope?: any): void;
138
+ };
139
+ model: {
140
+ <ModelType_2 = import("mongoose").Model<unknown, {}, {}, {}, import("mongoose").Document<unknown, {}, unknown> & Required<{
141
+ _id: unknown;
142
+ }>, any>>(name: string): ModelType_2;
143
+ <ModelType_3 = import("mongoose").Model<any, {}, {}, {}, any, any>>(): ModelType_3;
144
+ };
145
+ modifiedPaths: (options?: {
146
+ includeChildren?: boolean;
147
+ }) => string[];
148
+ overwrite: (obj: import("mongoose").AnyObject) => import("../models/LoanBroker.model").ILoanBrokerDoc;
149
+ $parent: () => import("mongoose").Document<any, any, any>;
150
+ populate: {
151
+ <Paths_1 = {}>(path: string | import("mongoose").PopulateOptions | (string | import("mongoose").PopulateOptions)[]): Promise<import("mongoose").MergeType<import("../models/LoanBroker.model").ILoanBrokerDoc, Paths_1>>;
152
+ <Paths_2 = {}>(path: string, select?: string | import("mongoose").AnyObject, model?: import("mongoose").Model<any, {}, {}, {}, any, any>, match?: import("mongoose").AnyObject, options?: import("mongoose").PopulateOptions): Promise<import("mongoose").MergeType<import("../models/LoanBroker.model").ILoanBrokerDoc, Paths_2>>;
153
+ };
154
+ populated: (path: string) => any;
155
+ replaceOne: (replacement?: import("mongoose").AnyObject, options?: import("mongoose").QueryOptions<unknown>) => import("mongoose").Query<any, import("../models/LoanBroker.model").ILoanBrokerDoc, {}, import("../models/LoanBroker.model").ILoanBrokerDoc, "find">;
156
+ save: (options?: import("mongoose").SaveOptions) => Promise<import("../models/LoanBroker.model").ILoanBrokerDoc>;
157
+ schema: import("mongoose").FlattenMaps<import("mongoose").Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
158
+ [x: string]: unknown;
159
+ }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
160
+ [x: string]: unknown;
161
+ }>> & import("mongoose").FlatRecord<{
162
+ [x: string]: unknown;
163
+ }> & Required<{
164
+ _id: unknown;
165
+ }>>>;
166
+ set: {
167
+ <T_8 extends string | number | symbol>(path: T_8, val: any, type: any, options?: import("mongoose").DocumentSetOptions): import("../models/LoanBroker.model").ILoanBrokerDoc;
168
+ (path: string | Record<string, any>, val: any, type: any, options?: import("mongoose").DocumentSetOptions): import("../models/LoanBroker.model").ILoanBrokerDoc;
169
+ (path: string | Record<string, any>, val: any, options?: import("mongoose").DocumentSetOptions): import("../models/LoanBroker.model").ILoanBrokerDoc;
170
+ (value: string | Record<string, any>): import("../models/LoanBroker.model").ILoanBrokerDoc;
171
+ };
172
+ toJSON: {
173
+ <T_9 = any>(options?: import("mongoose").ToObjectOptions<import("mongoose").Document<unknown, {}, unknown> & Required<{
174
+ _id: unknown;
175
+ }>> & {
176
+ flattenMaps?: true;
177
+ }): import("mongoose").FlattenMaps<T_9>;
178
+ <T_10 = any>(options: import("mongoose").ToObjectOptions<import("mongoose").Document<unknown, {}, unknown> & Required<{
179
+ _id: unknown;
180
+ }>> & {
181
+ flattenMaps: false;
182
+ }): T_10;
183
+ };
184
+ toObject: <T_11 = any>(options?: import("mongoose").ToObjectOptions<import("mongoose").Document<unknown, {}, unknown> & Required<{
185
+ _id: unknown;
186
+ }>>) => import("mongoose").Require_id<T_11>;
187
+ unmarkModified: {
188
+ <T_12 extends string | number | symbol>(path: T_12): void;
189
+ (path: string): void;
190
+ };
191
+ updateOne: (update?: import("mongoose").UpdateWithAggregationPipeline | import("mongoose").UpdateQuery<import("../models/LoanBroker.model").ILoanBrokerDoc>, options?: import("mongoose").QueryOptions<unknown>) => import("mongoose").Query<any, import("../models/LoanBroker.model").ILoanBrokerDoc, {}, import("../models/LoanBroker.model").ILoanBrokerDoc, "find">;
192
+ validate: {
193
+ <T_13 extends string | number | symbol>(pathsToValidate?: T_13 | T_13[], options?: import("mongoose").AnyObject): Promise<void>;
194
+ (pathsToValidate?: import("mongoose").PathsToValidate, options?: import("mongoose").AnyObject): Promise<void>;
195
+ (options: {
196
+ pathsToSkip?: import("mongoose").pathsToSkip;
197
+ }): Promise<void>;
198
+ };
199
+ validateSync: {
200
+ (options: {
201
+ [k: string]: any;
202
+ pathsToSkip?: import("mongoose").pathsToSkip;
203
+ }): import("mongoose").Error.ValidationError;
204
+ <T_14 extends string | number | symbol>(pathsToValidate?: T_14 | T_14[], options?: import("mongoose").AnyObject): import("mongoose").Error.ValidationError;
205
+ (pathsToValidate?: import("mongoose").PathsToValidate, options?: import("mongoose").AnyObject): import("mongoose").Error.ValidationError;
206
+ };
207
+ }[]>;
208
+ saveLoanBrokers(brokers: ILoanBrokerView[]): Promise<void>;
209
+ saveLoanBroker(broker: Partial<ILoanBrokerView>, order: number): Promise<void>;
210
+ saveLoanBrokerEmails(loanBrokerId: string, emails: ILoanBrokerEmail[]): Promise<void>;
211
+ }
212
+ export {};
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BrokersService = void 0;
7
+ const uuid_1 = require("uuid");
8
+ const decimal_js_1 = __importDefault(require("decimal.js"));
9
+ const ProductBroker_model_1 = require("../models/ProductBroker.model");
10
+ const LoanBroker_model_1 = require("../models/LoanBroker.model");
11
+ const brokers_db_1 = require("../db/brokers.db");
12
+ const brokers_db_2 = require("../db/brokers.db");
13
+ const defaultBrokerList = [
14
+ {
15
+ _id: `new_${(0, uuid_1.v4)()}`,
16
+ active: true,
17
+ BSCode: '',
18
+ PLCode: '',
19
+ productId: null,
20
+ loanBrokerId: null,
21
+ adminShare: 0,
22
+ interestShare: 0,
23
+ otherShare: 0,
24
+ },
25
+ ];
26
+ class BrokersService {
27
+ loanChargesService;
28
+ constructor(loanChargesService) {
29
+ this.loanChargesService = loanChargesService;
30
+ }
31
+ async normalizeObjects() {
32
+ try {
33
+ await LoanBroker_model_1.LoanBrokerModel.updateMany({}, { emails: [] });
34
+ }
35
+ catch (e) {
36
+ console.error(e);
37
+ }
38
+ }
39
+ async getAllProductBrokers() {
40
+ return (0, brokers_db_2.getAllProductBrokers)();
41
+ }
42
+ async getBorrowerBrokers(borrowerId) {
43
+ const allBorrowerBrokers = await (0, brokers_db_2.getBorrowerBrokers)(borrowerId);
44
+ if (!allBorrowerBrokers.length) {
45
+ return defaultBrokerList;
46
+ }
47
+ return allBorrowerBrokers;
48
+ }
49
+ async getProductBrokers(productId) {
50
+ return await (0, brokers_db_1.getProductBrokers)(productId);
51
+ }
52
+ async getTotalShares(borrowerId, brokers, replaceNames = false) {
53
+ const products = await this.loanChargesService.getLoanProducts(borrowerId);
54
+ const productShares = products.reduce((acc, product) => {
55
+ const sharesTypes = ['adminShare', 'interestShare', 'otherShare'];
56
+ const shares = sharesTypes.reduce((acc, share) => ({ ...acc, [share]: 0 }), {});
57
+ return { ...acc, [product._id.toString()]: shares };
58
+ }, {});
59
+ const updateShares = (broker, productId, shareFraction = 1) => {
60
+ const sharedKeys = Object.keys(productShares[productId]);
61
+ sharedKeys.forEach((sharedKey) => {
62
+ const productShare = new decimal_js_1.default(broker[sharedKey]).mul(shareFraction);
63
+ return productShares[productId][sharedKey] = new decimal_js_1.default(productShares[productId][sharedKey]).plus(productShare).toNumber();
64
+ });
65
+ };
66
+ brokers.forEach((broker) => {
67
+ updateShares(broker, broker.productId.toString());
68
+ });
69
+ if (replaceNames) {
70
+ return Object.keys(productShares).reduce((acc, productId) => {
71
+ const product = products.find((products) => products._id.toString() === productId);
72
+ return { ...acc, [product.name]: productShares[productId] };
73
+ }, {});
74
+ }
75
+ return productShares;
76
+ }
77
+ async getTotals(borrowerId) {
78
+ const brokers = await ProductBroker_model_1.ProductBrokerModel.find({ borrowerId });
79
+ const shortTotals = await this.getTotalShares(borrowerId, brokers, true);
80
+ return Object.entries(shortTotals).map(([product, shares]) => {
81
+ return {
82
+ active: true,
83
+ _id: null,
84
+ BSCode: null,
85
+ PLCode: null,
86
+ productId: product,
87
+ adminShare: shares.adminShare,
88
+ interestShare: shares.interestShare,
89
+ otherShare: shares.otherShare,
90
+ };
91
+ });
92
+ }
93
+ async checkTotalShares(borrowerId, brokers) {
94
+ const productShares = await this.getTotalShares(borrowerId, brokers);
95
+ return !Object.values(productShares).some(values => values.adminShare > 1 || values.interestShare > 1 || values.otherShare > 1);
96
+ }
97
+ async saveProductBrokers(borrowerId, brokers) {
98
+ const existingBrokers = await (0, brokers_db_2.getBorrowerBrokers)(borrowerId);
99
+ const existingBrokerIds = existingBrokers.map((broker) => broker._id.toString());
100
+ const brokersToDelete = existingBrokerIds.filter((id) => !brokers.some((broker) => String(broker._id) === id));
101
+ await ProductBroker_model_1.ProductBrokerModel.deleteMany({ _id: { $in: brokersToDelete } });
102
+ const brokersToSave = brokers.map((broker) => {
103
+ if (broker._id.toString().startsWith('new_')) {
104
+ let { _id, ...brokerWithoutId } = broker;
105
+ return { ...brokerWithoutId, borrowerId: borrowerId };
106
+ }
107
+ return { ...broker, borrowerId: borrowerId };
108
+ });
109
+ const getFilters = (broker) => {
110
+ return broker.hasOwnProperty('_id') ? { _id: broker._id } : { createdAt: Math.random() };
111
+ };
112
+ try {
113
+ return ProductBroker_model_1.ProductBrokerModel.bulkWrite(brokersToSave.map((broker, order) => ({
114
+ updateOne: {
115
+ filter: getFilters(broker),
116
+ update: { $set: { ...broker, order } },
117
+ upsert: true,
118
+ },
119
+ })));
120
+ }
121
+ catch (e) {
122
+ console.error(e);
123
+ }
124
+ }
125
+ async getAllLoanBrokers() {
126
+ return (0, brokers_db_2.getAllLoanBrokers)();
127
+ }
128
+ async saveLoanBrokers(brokers) {
129
+ const existingBrokers = await (0, brokers_db_2.getAllLoanBrokers)();
130
+ const existingBrokerIds = existingBrokers.map((broker) => broker._id.toString());
131
+ const brokersToDelete = existingBrokerIds.filter((id) => !brokers.some((broker) => String(broker._id) === id));
132
+ await LoanBroker_model_1.LoanBrokerModel.deleteMany({ _id: { $in: brokersToDelete } });
133
+ const brokersToSave = brokers.map((broker) => {
134
+ if (broker._id.toString().startsWith('new_')) {
135
+ let { _id, ...brokerWithoutId } = broker;
136
+ return brokerWithoutId;
137
+ }
138
+ return broker;
139
+ });
140
+ await Promise.all(brokersToSave.map(async (brokerToSave, order) => {
141
+ await this.saveLoanBroker(brokerToSave, order);
142
+ }));
143
+ }
144
+ async saveLoanBroker(broker, order) {
145
+ const getFilters = (broker) => {
146
+ return broker.hasOwnProperty('_id') ? { _id: broker._id } : { createdAt: Math.random() };
147
+ };
148
+ const { emails, ...update } = broker;
149
+ const updatedBroker = await LoanBroker_model_1.LoanBrokerModel.findOneAndUpdate(getFilters(broker), { ...update, order }, { upsert: true, new: true });
150
+ await this.saveLoanBrokerEmails(updatedBroker._id.toString(), emails);
151
+ }
152
+ async saveLoanBrokerEmails(loanBrokerId, emails) {
153
+ const emailsWithoutId = emails.map((email) => {
154
+ const { _id, ...rest } = email;
155
+ return _id.toString().includes('new_') ? rest : email;
156
+ });
157
+ await LoanBroker_model_1.LoanBrokerModel.findByIdAndUpdate(loanBrokerId, { emails: emailsWithoutId });
158
+ }
159
+ }
160
+ exports.BrokersService = BrokersService;
@@ -0,0 +1,200 @@
1
+ import { v4 as uuidV4 } from 'uuid';
2
+ import Decimal from 'decimal.js';
3
+
4
+ import {
5
+ IProductBrokerView,
6
+ ProductBrokerModel,
7
+ } from '../models/ProductBroker.model';
8
+ import { ILoanBrokerEmail, ILoanBrokerView, LoanBrokerModel } from '../models/LoanBroker.model';
9
+ import { getProductBrokers } from '../db/brokers.db';
10
+
11
+ import { getAllLoanBrokers, getAllProductBrokers, getBorrowerBrokers } from '../db/brokers.db';
12
+ import { LoanChargesService } from './loan-charges.service';
13
+
14
+ type BrokerView = Omit<IProductBrokerView, '_id'> & { _id: string };
15
+ type BrokerTotalView = Omit<IProductBrokerView, 'productId'> & { productId: string };
16
+
17
+ const defaultBrokerList: BrokerView[] = [
18
+ {
19
+ _id: `new_${uuidV4()}`,
20
+ active: true,
21
+ BSCode: '',
22
+ PLCode: '',
23
+ productId: null,
24
+ loanBrokerId: null,
25
+ adminShare: 0,
26
+ interestShare: 0,
27
+ otherShare: 0,
28
+ },
29
+ ];
30
+
31
+ type ShareType = 'adminShare' | 'interestShare' | 'otherShare';
32
+
33
+ type ShareValue = {
34
+ [_ in ShareType]: number;
35
+ }
36
+
37
+ type ProductTotal = {
38
+ [product_id: string]: ShareValue;
39
+ };
40
+
41
+ export class BrokersService {
42
+
43
+ constructor(
44
+ private readonly loanChargesService: LoanChargesService,
45
+ ) {
46
+ }
47
+
48
+ async normalizeObjects() {
49
+ try {
50
+ await LoanBrokerModel.updateMany({}, { emails: [] });
51
+ } catch (e) {
52
+ console.error(e);
53
+ }
54
+ }
55
+
56
+ async getAllProductBrokers() {
57
+ return getAllProductBrokers();
58
+ }
59
+
60
+ async getBorrowerBrokers(borrowerId: string) {
61
+ const allBorrowerBrokers = await getBorrowerBrokers(borrowerId);
62
+ if (!allBorrowerBrokers.length) {
63
+ return defaultBrokerList;
64
+ }
65
+ return allBorrowerBrokers;
66
+ }
67
+
68
+ async getProductBrokers(productId: string) {
69
+ return await getProductBrokers(productId);
70
+ }
71
+
72
+ async getTotalShares(borrowerId: string, brokers: IProductBrokerView[], replaceNames = false) {
73
+ const products = await this.loanChargesService.getLoanProducts(borrowerId);
74
+ const productShares = products.reduce((acc, product) => {
75
+ const sharesTypes: ShareType[] = ['adminShare', 'interestShare', 'otherShare'];
76
+ const shares = sharesTypes.reduce((acc, share) => ({ ...acc, [share]: 0 }), <ShareValue>{});
77
+ return { ...acc, [product._id.toString()]: shares };
78
+ }, <ProductTotal>{});
79
+
80
+ const updateShares = (broker: IProductBrokerView, productId: string, shareFraction = 1) => {
81
+ const sharedKeys = Object.keys(productShares[productId]);
82
+ sharedKeys.forEach((sharedKey) => {
83
+ const productShare = new Decimal(broker[sharedKey]).mul(shareFraction);
84
+ return productShares[productId][sharedKey] = new Decimal(productShares[productId][sharedKey]).plus(productShare).toNumber();
85
+ });
86
+ };
87
+
88
+ brokers.forEach((broker) => {
89
+ updateShares(broker, broker.productId.toString());
90
+ });
91
+ if (replaceNames) {
92
+ return Object.keys(productShares).reduce((acc, productId) => {
93
+ const product = products.find((products) => products._id.toString() === productId);
94
+ return { ...acc, [product.name]: productShares[productId] };
95
+ }, <ProductTotal>{});
96
+ }
97
+ return productShares;
98
+ }
99
+
100
+ async getTotals(borrowerId: string) {
101
+ const brokers = await ProductBrokerModel.find({ borrowerId }) as IProductBrokerView[];
102
+ const shortTotals = await this.getTotalShares(borrowerId, brokers, true);
103
+ return Object.entries(shortTotals).map(([product, shares]) => {
104
+ return <BrokerTotalView>{
105
+ active: true,
106
+ _id: null,
107
+ BSCode: null,
108
+ PLCode: null,
109
+ productId: product,
110
+ adminShare: shares.adminShare,
111
+ interestShare: shares.interestShare,
112
+ otherShare: shares.otherShare,
113
+ };
114
+ });
115
+ }
116
+
117
+ async checkTotalShares(borrowerId: string, brokers: IProductBrokerView[]) {
118
+ const productShares = await this.getTotalShares(borrowerId, brokers);
119
+ return !Object.values(productShares).some(values => values.adminShare > 1 || values.interestShare > 1 || values.otherShare > 1);
120
+ }
121
+
122
+ async saveProductBrokers(borrowerId: string, brokers: IProductBrokerView[]) {
123
+ const existingBrokers = await getBorrowerBrokers(borrowerId);
124
+
125
+ const existingBrokerIds = existingBrokers.map((broker) => broker._id.toString());
126
+ const brokersToDelete = existingBrokerIds.filter((id) => !brokers.some((broker) => String(broker._id) === id));
127
+ await ProductBrokerModel.deleteMany({ _id: { $in: brokersToDelete } });
128
+
129
+ const brokersToSave = brokers.map((broker) => {
130
+ if (broker._id.toString().startsWith('new_')) {
131
+ let { _id, ...brokerWithoutId } = broker;
132
+ return { ...brokerWithoutId, borrowerId: borrowerId };
133
+ }
134
+ return { ...broker, borrowerId: borrowerId };
135
+ });
136
+
137
+ const getFilters = (broker: Partial<IProductBrokerView>) => {
138
+ return broker.hasOwnProperty('_id') ? { _id: broker._id } : { createdAt: Math.random() };
139
+ };
140
+
141
+ try {
142
+ return ProductBrokerModel.bulkWrite(
143
+ brokersToSave.map((broker, order) => ({
144
+ updateOne: {
145
+ filter: getFilters(broker),
146
+ update: { $set: { ...broker, order } },
147
+ upsert: true,
148
+ },
149
+ })),
150
+ );
151
+ } catch (e) {
152
+ console.error(e);
153
+ }
154
+ }
155
+
156
+ async getAllLoanBrokers() {
157
+ return getAllLoanBrokers();
158
+ }
159
+
160
+ async saveLoanBrokers(brokers: ILoanBrokerView[]) {
161
+ const existingBrokers = await getAllLoanBrokers();
162
+
163
+ const existingBrokerIds = existingBrokers.map((broker) => broker._id.toString());
164
+ const brokersToDelete = existingBrokerIds.filter((id) => !brokers.some((broker) => String(broker._id) === id));
165
+ await LoanBrokerModel.deleteMany({ _id: { $in: brokersToDelete } });
166
+
167
+ const brokersToSave = brokers.map((broker) => {
168
+ if (broker._id.toString().startsWith('new_')) {
169
+ let { _id, ...brokerWithoutId } = broker;
170
+ return brokerWithoutId;
171
+ }
172
+ return broker;
173
+ });
174
+
175
+ await Promise.all(brokersToSave.map(async (brokerToSave, order) => {
176
+ await this.saveLoanBroker(brokerToSave, order);
177
+ }));
178
+ }
179
+
180
+ async saveLoanBroker(broker: Partial<ILoanBrokerView>, order: number) {
181
+ const getFilters = (broker: Partial<IProductBrokerView>) => {
182
+ return broker.hasOwnProperty('_id') ? { _id: broker._id } : { createdAt: Math.random() };
183
+ };
184
+ const { emails, ...update } = broker;
185
+ const updatedBroker = await LoanBrokerModel.findOneAndUpdate(
186
+ getFilters(broker),
187
+ { ...update, order },
188
+ { upsert: true, new: true },
189
+ );
190
+ await this.saveLoanBrokerEmails(updatedBroker._id.toString(), emails);
191
+ }
192
+
193
+ async saveLoanBrokerEmails(loanBrokerId: string, emails: ILoanBrokerEmail[]) {
194
+ const emailsWithoutId = emails.map((email) => {
195
+ const { _id, ...rest } = email;
196
+ return _id.toString().includes('new_') ? rest : email;
197
+ });
198
+ await LoanBrokerModel.findByIdAndUpdate(loanBrokerId, { emails: emailsWithoutId });
199
+ }
200
+ }
@@ -0,0 +1,53 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose" />
25
+ /// <reference types="mongoose/types/inferschematype" />
26
+ interface IWorkingDaysApi {
27
+ working_day: number;
28
+ work_hours: number;
29
+ wages: number;
30
+ morning_start: string;
31
+ morning_end: string;
32
+ afternoon_start: string;
33
+ afternoon_end: string;
34
+ public_holiday: string;
35
+ public_holiday_description: string;
36
+ weekend_day: number;
37
+ custom_date: number;
38
+ custom_date_description: string;
39
+ custom_date_color: string;
40
+ type: number;
41
+ }
42
+ export declare class CalendarService {
43
+ fulfillCalendar(): Promise<void>;
44
+ createDate(date: string, dateProp: IWorkingDaysApi): Promise<void>;
45
+ isWorkingDay(date: string): Promise<boolean>;
46
+ isLastWorkingDay(date: string): Promise<boolean>;
47
+ getNextWorkingDay(date: string): Promise<string>;
48
+ getLastWorkingDay(date: string): Promise<string>;
49
+ getFullCalendarList(): Promise<(import("mongoose").FlattenMaps<import("../models/CalandarDay.model").ICalendarDayDoc> & {
50
+ _id: import("mongoose").Types.ObjectId;
51
+ })[]>;
52
+ }
53
+ export {};