@tomei/rental 0.17.9-dev.2 → 0.17.9-staging.2

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 (288) hide show
  1. package/.commitlintrc.json +23 -22
  2. package/.gitlab-ci.yml +16 -16
  3. package/.husky/commit-msg +9 -9
  4. package/.husky/pre-commit +7 -7
  5. package/.prettierrc +4 -4
  6. package/CHANGELOG.md +9 -0
  7. package/Jenkinsfile +51 -51
  8. package/README.md +8 -8
  9. package/dist/index.d.ts +1 -28
  10. package/dist/index.js +1 -52
  11. package/dist/index.js.map +1 -1
  12. package/dist/src/components/agreement/agreement.js +9 -9
  13. package/dist/src/components/rental/rental.js +15 -15
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/eslint.config.mjs +58 -58
  16. package/jest.config.js +10 -10
  17. package/migrations/20250529092130-add-status-to-joint-hirer.js +19 -19
  18. package/migrations/agreement-signature-table-migration.js +76 -76
  19. package/migrations/booking-table-migration.js +79 -79
  20. package/migrations/hirer-change-request-new-hirer-migration.js +72 -72
  21. package/migrations/hirer-change-request-remove-hirer-migration.js +39 -39
  22. package/migrations/hirer-change-request-signature-migration.js +65 -65
  23. package/migrations/joint-hirer-table-migration.js +52 -52
  24. package/migrations/rental-aggreement-history-migration.js +41 -41
  25. package/migrations/rental-aggrement-table-migration.js +30 -30
  26. package/migrations/rental-hirer-change-request-migrations.js +64 -64
  27. package/migrations/rental-price-table-migration.js +32 -32
  28. package/migrations/rental-table-migrations.js +96 -96
  29. package/package.json +80 -77
  30. package/sonar-project.properties +12 -12
  31. package/src/ClassMappings/ItemClassMap.ts +7 -7
  32. package/src/ClassMappings/index.ts +3 -3
  33. package/src/components/agreement/agreement.repository.ts +54 -54
  34. package/src/components/agreement/agreement.ts +187 -185
  35. package/src/components/agreement-history/agreement-history.repository.ts +54 -54
  36. package/src/components/agreement-history/agreement-history.ts +57 -57
  37. package/src/components/agreement-signature/agreement-signature.repository.ts +55 -55
  38. package/src/components/agreement-signature/agreement-signature.ts +155 -155
  39. package/src/components/booking/booking.repository.ts +51 -51
  40. package/src/components/booking/booking.ts +492 -492
  41. package/src/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.repository.ts +64 -64
  42. package/src/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.ts +153 -153
  43. package/src/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.repository.ts +65 -65
  44. package/src/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.ts +134 -134
  45. package/src/components/hirer-change-request-signature/hirer-change-request-signature.repository.ts +65 -65
  46. package/src/components/hirer-change-request-signature/hirer-change-request-signature.ts +272 -272
  47. package/src/components/joint-hirer/joint-hirer.repository.ts +54 -54
  48. package/src/components/joint-hirer/joint-hirer.ts +252 -189
  49. package/src/components/rental/rental.repository.ts +51 -51
  50. package/src/components/rental/rental.ts +1467 -1398
  51. package/src/components/rental-hirer-change-request/rental-hirer-change-request.repository.ts +64 -64
  52. package/src/components/rental-hirer-change-request/rental-hirer-change-request.ts +907 -917
  53. package/src/components/rental-price/rental-price.repository.ts +54 -54
  54. package/src/components/rental-price/rental-price.ts +100 -100
  55. package/src/database.ts +39 -39
  56. package/src/enum/account-type.enum.ts +4 -4
  57. package/src/enum/agreement-signature-status.enum.ts +4 -4
  58. package/src/enum/agreement-signature-verification-method.enum.ts +4 -4
  59. package/src/enum/booking.enum.ts +5 -5
  60. package/src/enum/hirer-type.enum.ts +4 -4
  61. package/src/enum/index.ts +23 -23
  62. package/src/enum/rental-hirer-change-request-hirer-role.ts +4 -4
  63. package/src/enum/rental-hirer-change-request-status.ts +7 -7
  64. package/src/enum/rental-hirer-change-request-type.ts +4 -4
  65. package/src/enum/rental-status.enum.ts +39 -39
  66. package/src/index.ts +54 -54
  67. package/src/interfaces/agreemeent-signature-attr.interface.ts +19 -19
  68. package/src/interfaces/agreement-attr.interface.ts +7 -7
  69. package/src/interfaces/agreement-history-attr.interface.ts +7 -7
  70. package/src/interfaces/booking-attr.interface.ts +19 -19
  71. package/src/interfaces/booking-find-all-search-attr.interface.ts +12 -12
  72. package/src/interfaces/hirer-change-request-new-hirer-attr.interface.ts +15 -15
  73. package/src/interfaces/hirer-change-request-remove-hirer-attr.interface.ts +5 -5
  74. package/src/interfaces/hirer-change-request-signature-attr.interface.ts +15 -15
  75. package/src/interfaces/index.ts +29 -29
  76. package/src/interfaces/joint-hirer-attr.interface.ts +11 -11
  77. package/src/interfaces/rental-attr.interface.ts +25 -25
  78. package/src/interfaces/rental-find-all-search-attr.interface.ts +11 -11
  79. package/src/interfaces/rental-hirer-change-request.attr.interface.ts +17 -17
  80. package/src/interfaces/rental-hirer-change-request.update.interface.ts +4 -4
  81. package/src/interfaces/rental-price-attr.interface.ts +7 -7
  82. package/src/interfaces/response-hirer-signature-attr.interface.ts +15 -15
  83. package/src/models/agreement-history.entity.ts +51 -51
  84. package/src/models/agreement-signature.entity.ts +105 -105
  85. package/src/models/agreement.entity.ts +47 -47
  86. package/src/models/booking.entity.ts +105 -105
  87. package/src/models/hirer-change-request-new-hirer.entity.ts +102 -102
  88. package/src/models/hirer-change-request-remove-hirer.entity.ts +47 -47
  89. package/src/models/hirer-change-request-signature.entity.ts +86 -86
  90. package/src/models/index.ts +25 -25
  91. package/src/models/joint-hirer.entity.ts +70 -70
  92. package/src/models/rental-price.entity.ts +38 -38
  93. package/src/models/rental.entity.ts +133 -133
  94. package/tsconfig.build.json +6 -11
  95. package/tsconfig.json +24 -22
  96. package/dist/ClassMappings/ItemClassMap.d.ts +0 -4
  97. package/dist/ClassMappings/ItemClassMap.js +0 -8
  98. package/dist/ClassMappings/ItemClassMap.js.map +0 -1
  99. package/dist/ClassMappings/index.d.ts +0 -2
  100. package/dist/ClassMappings/index.js +0 -6
  101. package/dist/ClassMappings/index.js.map +0 -1
  102. package/dist/components/agreement/agreement.d.ts +0 -27
  103. package/dist/components/agreement/agreement.js +0 -120
  104. package/dist/components/agreement/agreement.js.map +0 -1
  105. package/dist/components/agreement/agreement.repository.d.ts +0 -8
  106. package/dist/components/agreement/agreement.repository.js +0 -52
  107. package/dist/components/agreement/agreement.repository.js.map +0 -1
  108. package/dist/components/agreement-history/agreement-history.d.ts +0 -17
  109. package/dist/components/agreement-history/agreement-history.js +0 -40
  110. package/dist/components/agreement-history/agreement-history.js.map +0 -1
  111. package/dist/components/agreement-history/agreement-history.repository.d.ts +0 -8
  112. package/dist/components/agreement-history/agreement-history.repository.js +0 -52
  113. package/dist/components/agreement-history/agreement-history.repository.js.map +0 -1
  114. package/dist/components/agreement-signature/agreement-signature.d.ts +0 -31
  115. package/dist/components/agreement-signature/agreement-signature.js +0 -107
  116. package/dist/components/agreement-signature/agreement-signature.js.map +0 -1
  117. package/dist/components/agreement-signature/agreement-signature.repository.d.ts +0 -8
  118. package/dist/components/agreement-signature/agreement-signature.repository.js +0 -53
  119. package/dist/components/agreement-signature/agreement-signature.repository.js.map +0 -1
  120. package/dist/components/booking/booking.d.ts +0 -46
  121. package/dist/components/booking/booking.js +0 -289
  122. package/dist/components/booking/booking.js.map +0 -1
  123. package/dist/components/booking/booking.repository.d.ts +0 -8
  124. package/dist/components/booking/booking.repository.js +0 -52
  125. package/dist/components/booking/booking.repository.js.map +0 -1
  126. package/dist/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.d.ts +0 -32
  127. package/dist/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.js +0 -106
  128. package/dist/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.js.map +0 -1
  129. package/dist/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.repository.d.ts +0 -9
  130. package/dist/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.repository.js +0 -62
  131. package/dist/components/hirer-change-request-new-hirer/hirer-change-request-new-hirer.repository.js.map +0 -1
  132. package/dist/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.d.ts +0 -22
  133. package/dist/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.js +0 -89
  134. package/dist/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.js.map +0 -1
  135. package/dist/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.repository.d.ts +0 -9
  136. package/dist/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.repository.js +0 -63
  137. package/dist/components/hirer-change-request-remove-hirer/hirer-change-request-remove-hirer.repository.js.map +0 -1
  138. package/dist/components/hirer-change-request-signature/hirer-change-request-signature.d.ts +0 -30
  139. package/dist/components/hirer-change-request-signature/hirer-change-request-signature.js +0 -208
  140. package/dist/components/hirer-change-request-signature/hirer-change-request-signature.js.map +0 -1
  141. package/dist/components/hirer-change-request-signature/hirer-change-request-signature.repository.d.ts +0 -9
  142. package/dist/components/hirer-change-request-signature/hirer-change-request-signature.repository.js +0 -63
  143. package/dist/components/hirer-change-request-signature/hirer-change-request-signature.repository.js.map +0 -1
  144. package/dist/components/joint-hirer/joint-hirer.d.ts +0 -26
  145. package/dist/components/joint-hirer/joint-hirer.js +0 -137
  146. package/dist/components/joint-hirer/joint-hirer.js.map +0 -1
  147. package/dist/components/joint-hirer/joint-hirer.repository.d.ts +0 -8
  148. package/dist/components/joint-hirer/joint-hirer.repository.js +0 -52
  149. package/dist/components/joint-hirer/joint-hirer.repository.js.map +0 -1
  150. package/dist/components/rental/rental.d.ts +0 -72
  151. package/dist/components/rental/rental.js +0 -847
  152. package/dist/components/rental/rental.js.map +0 -1
  153. package/dist/components/rental/rental.repository.d.ts +0 -8
  154. package/dist/components/rental/rental.repository.js +0 -52
  155. package/dist/components/rental/rental.repository.js.map +0 -1
  156. package/dist/components/rental-hirer-change-request/rental-hirer-change-request.d.ts +0 -71
  157. package/dist/components/rental-hirer-change-request/rental-hirer-change-request.js +0 -531
  158. package/dist/components/rental-hirer-change-request/rental-hirer-change-request.js.map +0 -1
  159. package/dist/components/rental-hirer-change-request/rental-hirer-change-request.repository.d.ts +0 -9
  160. package/dist/components/rental-hirer-change-request/rental-hirer-change-request.repository.js +0 -62
  161. package/dist/components/rental-hirer-change-request/rental-hirer-change-request.repository.js.map +0 -1
  162. package/dist/components/rental-price/rental-price.d.ts +0 -18
  163. package/dist/components/rental-price/rental-price.js +0 -66
  164. package/dist/components/rental-price/rental-price.js.map +0 -1
  165. package/dist/components/rental-price/rental-price.repository.d.ts +0 -8
  166. package/dist/components/rental-price/rental-price.repository.js +0 -52
  167. package/dist/components/rental-price/rental-price.repository.js.map +0 -1
  168. package/dist/database.d.ts +0 -4
  169. package/dist/database.js +0 -37
  170. package/dist/database.js.map +0 -1
  171. package/dist/enum/account-type.enum.d.ts +0 -4
  172. package/dist/enum/account-type.enum.js +0 -9
  173. package/dist/enum/account-type.enum.js.map +0 -1
  174. package/dist/enum/aggrement-status.enum.d.ts +0 -5
  175. package/dist/enum/aggrement-status.enum.js +0 -10
  176. package/dist/enum/aggrement-status.enum.js.map +0 -1
  177. package/dist/enum/agreement-signature-status.enum.d.ts +0 -4
  178. package/dist/enum/agreement-signature-status.enum.js +0 -9
  179. package/dist/enum/agreement-signature-status.enum.js.map +0 -1
  180. package/dist/enum/agreement-signature-verification-method.enum.d.ts +0 -4
  181. package/dist/enum/agreement-signature-verification-method.enum.js +0 -9
  182. package/dist/enum/agreement-signature-verification-method.enum.js.map +0 -1
  183. package/dist/enum/booking.enum.d.ts +0 -5
  184. package/dist/enum/booking.enum.js +0 -10
  185. package/dist/enum/booking.enum.js.map +0 -1
  186. package/dist/enum/hirer-type.enum.d.ts +0 -4
  187. package/dist/enum/hirer-type.enum.js +0 -9
  188. package/dist/enum/hirer-type.enum.js.map +0 -1
  189. package/dist/enum/index.d.ts +0 -11
  190. package/dist/enum/index.js +0 -24
  191. package/dist/enum/index.js.map +0 -1
  192. package/dist/enum/rental-hirer-change-request-hirer-role.d.ts +0 -4
  193. package/dist/enum/rental-hirer-change-request-hirer-role.js +0 -9
  194. package/dist/enum/rental-hirer-change-request-hirer-role.js.map +0 -1
  195. package/dist/enum/rental-hirer-change-request-status.d.ts +0 -7
  196. package/dist/enum/rental-hirer-change-request-status.js +0 -12
  197. package/dist/enum/rental-hirer-change-request-status.js.map +0 -1
  198. package/dist/enum/rental-hirer-change-request-type.d.ts +0 -4
  199. package/dist/enum/rental-hirer-change-request-type.js +0 -9
  200. package/dist/enum/rental-hirer-change-request-type.js.map +0 -1
  201. package/dist/enum/rental-status.enum.d.ts +0 -9
  202. package/dist/enum/rental-status.enum.js +0 -14
  203. package/dist/enum/rental-status.enum.js.map +0 -1
  204. package/dist/interfaces/agreemeent-signature-attr.interface.d.ts +0 -18
  205. package/dist/interfaces/agreemeent-signature-attr.interface.js +0 -3
  206. package/dist/interfaces/agreemeent-signature-attr.interface.js.map +0 -1
  207. package/dist/interfaces/agreement-attr.interface.d.ts +0 -7
  208. package/dist/interfaces/agreement-attr.interface.js +0 -3
  209. package/dist/interfaces/agreement-attr.interface.js.map +0 -1
  210. package/dist/interfaces/agreement-history-attr.interface.d.ts +0 -7
  211. package/dist/interfaces/agreement-history-attr.interface.js +0 -3
  212. package/dist/interfaces/agreement-history-attr.interface.js.map +0 -1
  213. package/dist/interfaces/booking-attr.interface.d.ts +0 -18
  214. package/dist/interfaces/booking-attr.interface.js +0 -3
  215. package/dist/interfaces/booking-attr.interface.js.map +0 -1
  216. package/dist/interfaces/booking-find-all-search-attr.interface.d.ts +0 -12
  217. package/dist/interfaces/booking-find-all-search-attr.interface.js +0 -3
  218. package/dist/interfaces/booking-find-all-search-attr.interface.js.map +0 -1
  219. package/dist/interfaces/hirer-change-request-new-hirer-attr.interface.d.ts +0 -15
  220. package/dist/interfaces/hirer-change-request-new-hirer-attr.interface.js +0 -3
  221. package/dist/interfaces/hirer-change-request-new-hirer-attr.interface.js.map +0 -1
  222. package/dist/interfaces/hirer-change-request-remove-hirer-attr.interface.d.ts +0 -5
  223. package/dist/interfaces/hirer-change-request-remove-hirer-attr.interface.js +0 -3
  224. package/dist/interfaces/hirer-change-request-remove-hirer-attr.interface.js.map +0 -1
  225. package/dist/interfaces/hirer-change-request-signature-attr.interface.d.ts +0 -14
  226. package/dist/interfaces/hirer-change-request-signature-attr.interface.js +0 -3
  227. package/dist/interfaces/hirer-change-request-signature-attr.interface.js.map +0 -1
  228. package/dist/interfaces/index.d.ts +0 -14
  229. package/dist/interfaces/index.js +0 -3
  230. package/dist/interfaces/index.js.map +0 -1
  231. package/dist/interfaces/joint-hirer-attr.interface.d.ts +0 -11
  232. package/dist/interfaces/joint-hirer-attr.interface.js +0 -3
  233. package/dist/interfaces/joint-hirer-attr.interface.js.map +0 -1
  234. package/dist/interfaces/rental-attr.interface.d.ts +0 -24
  235. package/dist/interfaces/rental-attr.interface.js +0 -3
  236. package/dist/interfaces/rental-attr.interface.js.map +0 -1
  237. package/dist/interfaces/rental-find-all-search-attr.interface.d.ts +0 -10
  238. package/dist/interfaces/rental-find-all-search-attr.interface.js +0 -3
  239. package/dist/interfaces/rental-find-all-search-attr.interface.js.map +0 -1
  240. package/dist/interfaces/rental-hirer-change-request.attr.interface.d.ts +0 -16
  241. package/dist/interfaces/rental-hirer-change-request.attr.interface.js +0 -3
  242. package/dist/interfaces/rental-hirer-change-request.attr.interface.js.map +0 -1
  243. package/dist/interfaces/rental-hirer-change-request.update.interface.d.ts +0 -4
  244. package/dist/interfaces/rental-hirer-change-request.update.interface.js +0 -3
  245. package/dist/interfaces/rental-hirer-change-request.update.interface.js.map +0 -1
  246. package/dist/interfaces/rental-price-attr.interface.d.ts +0 -7
  247. package/dist/interfaces/rental-price-attr.interface.js +0 -3
  248. package/dist/interfaces/rental-price-attr.interface.js.map +0 -1
  249. package/dist/interfaces/response-hirer-signature-attr.interface.d.ts +0 -14
  250. package/dist/interfaces/response-hirer-signature-attr.interface.js +0 -3
  251. package/dist/interfaces/response-hirer-signature-attr.interface.js.map +0 -1
  252. package/dist/models/agreement-history.entity.d.ts +0 -10
  253. package/dist/models/agreement-history.entity.js +0 -65
  254. package/dist/models/agreement-history.entity.js.map +0 -1
  255. package/dist/models/agreement-signature.entity.d.ts +0 -22
  256. package/dist/models/agreement-signature.entity.js +0 -123
  257. package/dist/models/agreement-signature.entity.js.map +0 -1
  258. package/dist/models/agreement.entity.d.ts +0 -14
  259. package/dist/models/agreement.entity.js +0 -70
  260. package/dist/models/agreement.entity.js.map +0 -1
  261. package/dist/models/booking.entity.d.ts +0 -21
  262. package/dist/models/booking.entity.js +0 -128
  263. package/dist/models/booking.entity.js.map +0 -1
  264. package/dist/models/hirer-change-request-new-hirer.entity.d.ts +0 -19
  265. package/dist/models/hirer-change-request-new-hirer.entity.js +0 -121
  266. package/dist/models/hirer-change-request-new-hirer.entity.js.map +0 -1
  267. package/dist/models/hirer-change-request-remove-hirer.entity.d.ts +0 -11
  268. package/dist/models/hirer-change-request-remove-hirer.entity.js +0 -57
  269. package/dist/models/hirer-change-request-remove-hirer.entity.js.map +0 -1
  270. package/dist/models/hirer-change-request-signature.entity.d.ts +0 -18
  271. package/dist/models/hirer-change-request-signature.entity.js +0 -101
  272. package/dist/models/hirer-change-request-signature.entity.js.map +0 -1
  273. package/dist/models/index.d.ts +0 -12
  274. package/dist/models/index.js +0 -26
  275. package/dist/models/index.js.map +0 -1
  276. package/dist/models/joint-hirer.entity.d.ts +0 -14
  277. package/dist/models/joint-hirer.entity.js +0 -91
  278. package/dist/models/joint-hirer.entity.js.map +0 -1
  279. package/dist/models/rental-hirer-change-request.entity.d.ts +0 -22
  280. package/dist/models/rental-hirer-change-request.entity.js +0 -108
  281. package/dist/models/rental-hirer-change-request.entity.js.map +0 -1
  282. package/dist/models/rental-price.entity.d.ts +0 -8
  283. package/dist/models/rental-price.entity.js +0 -59
  284. package/dist/models/rental-price.entity.js.map +0 -1
  285. package/dist/models/rental.entity.d.ts +0 -29
  286. package/dist/models/rental.entity.js +0 -160
  287. package/dist/models/rental.entity.js.map +0 -1
  288. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1,189 +1,252 @@
1
- import { ClassError, ObjectBase } from '@tomei/general';
2
- import { JointHirerRepository } from './joint-hirer.repository';
3
- import { IJointHirerAttr } from '../../interfaces/joint-hirer-attr.interface';
4
- import { ApplicationConfig } from '@tomei/config';
5
- import { LoginUser } from '@tomei/sso';
6
- import { ActionEnum, Activity } from '@tomei/activity-history';
7
-
8
- export class JointHirer extends ObjectBase {
9
- ObjectId: string;
10
- ObjectName: string;
11
- ObjectType: string = 'JointHirer';
12
- TableName: string = 'rental_JointHirer';
13
- RentalId: string;
14
- CustomerId: string;
15
- CustomerType: string;
16
- Status = 'Active'; // Default status
17
- CreatedById: string;
18
- CreatedAt: Date;
19
- UpdatedById: string;
20
- UpdatedAt: Date;
21
-
22
- get HirerId(): string {
23
- return this.ObjectId;
24
- }
25
-
26
- set HirerId(value: string) {
27
- this.ObjectId = value;
28
- }
29
-
30
- protected static _Repository = new JointHirerRepository();
31
-
32
- protected constructor(jointHirerAttr?: IJointHirerAttr) {
33
- super();
34
- if (jointHirerAttr) {
35
- this.HirerId = jointHirerAttr.HirerId;
36
- this.RentalId = jointHirerAttr.RentalId;
37
- this.CustomerId = jointHirerAttr.CustomerId;
38
- this.CustomerType = jointHirerAttr.CustomerType;
39
- this.Status = jointHirerAttr.Status;
40
- this.CreatedById = jointHirerAttr.CreatedById;
41
- this.CreatedAt = jointHirerAttr.CreatedAt;
42
- this.UpdatedById = jointHirerAttr.UpdatedById;
43
- this.UpdatedAt = jointHirerAttr.UpdatedAt;
44
- }
45
- }
46
-
47
- toJSON(): IJointHirerAttr {
48
- return {
49
- HirerId: this.HirerId,
50
- RentalId: this.RentalId,
51
- CustomerId: this.CustomerId,
52
- CustomerType: this.CustomerType,
53
- Status: this.Status,
54
- CreatedById: this.CreatedById,
55
- CreatedAt: this.CreatedAt,
56
- UpdatedById: this.UpdatedById,
57
- UpdatedAt: this.UpdatedAt,
58
- };
59
- }
60
-
61
- public static async init(hirerId?: string, dbTransaction?: any) {
62
- try {
63
- if (hirerId) {
64
- const jr = await JointHirer._Repository.findByPk(
65
- hirerId,
66
- dbTransaction,
67
- );
68
- if (jr) {
69
- return new JointHirer(jr.get({ plain: true }));
70
- } else {
71
- throw new ClassError(
72
- 'JointHirer',
73
- 'JointHirerErrMsg01',
74
- 'JointHirer not found',
75
- );
76
- }
77
- }
78
- return new JointHirer();
79
- } catch (error) {
80
- throw error;
81
- }
82
- }
83
-
84
- public async create(loginUser: LoginUser, dbTransaction?: any) {
85
- //This method will create a new joint hirer record.
86
- try {
87
- //Part 1: Check Privilege
88
- const systemCode =
89
- ApplicationConfig.getComponentConfigValue('system-code');
90
- const isPrivileged = await loginUser.checkPrivileges(
91
- systemCode,
92
- 'JointHirer - Create',
93
- );
94
-
95
- if (!isPrivileged) {
96
- throw new ClassError(
97
- 'JointHirer',
98
- 'JointHirerErrMsg00',
99
- "You do not have 'JointHirer - Create' privilege.",
100
- );
101
- }
102
-
103
- //Part 2: Insert Joint Hirer Record
104
- //Check if this.RentalId, this.CustomerId, this.CustomerType have value otherwise throw new ClassError with below params
105
- if (!this.RentalId || !this.CustomerId || !this.CustomerType) {
106
- throw new ClassError(
107
- 'JointHirer',
108
- 'JointHirerErrMsg03',
109
- 'RentalId, CustomerId and CustomerType are required.',
110
- );
111
- }
112
-
113
- //Set other attributes
114
- this.ObjectId = this.createId();
115
- this.CreatedById = loginUser.ObjectId;
116
- this.CreatedAt = new Date();
117
- this.UpdatedById = loginUser.ObjectId;
118
- this.UpdatedAt = new Date();
119
-
120
- const entityValueAfter: IJointHirerAttr = {
121
- HirerId: this.HirerId,
122
- RentalId: this.RentalId,
123
- CustomerId: this.CustomerId,
124
- CustomerType: this.CustomerType,
125
- Status: this.Status,
126
- CreatedById: this.CreatedById,
127
- CreatedAt: this.CreatedAt,
128
- UpdatedById: this.UpdatedById,
129
- UpdatedAt: this.UpdatedAt,
130
- };
131
-
132
- //Call repo class create method by passing the class attributes and db transaction.
133
- await JointHirer._Repository.create(entityValueAfter, {
134
- transaction: dbTransaction,
135
- });
136
-
137
- //Part 4: Record Create JointHirer Activity
138
- const activity = new Activity();
139
- activity.ObjectId = this._createId();
140
- activity.Action = ActionEnum.CREATE;
141
- activity.Description = 'Add Joint Hirer';
142
- activity.EntityId = this.ObjectId;
143
- activity.EntityType = this.ObjectType;
144
- activity.EntityValueBefore = JSON.stringify({});
145
- activity.EntityValueAfter = JSON.stringify(entityValueAfter);
146
-
147
- await activity.create(loginUser.ObjectId, dbTransaction);
148
-
149
- return this;
150
- } catch (error) {
151
- throw error;
152
- }
153
- }
154
-
155
- public async remove(loginUser: LoginUser, dbTransaction?: any) {
156
- try {
157
- //Mark Joint Hirer as Inactive
158
- const entityValueBefore: IJointHirerAttr = this.toJSON();
159
- this.Status = 'Inactive'; // Set status to 'Inactive' instead of deleting the record
160
- this.UpdatedById = loginUser.ObjectId;
161
- this.UpdatedAt = new Date();
162
- const entityValueAfter: IJointHirerAttr = this.toJSON();
163
-
164
- // Part 2: Remove Joint Hirer Record
165
- await JointHirer._Repository.update(entityValueAfter, {
166
- where: {
167
- HirerId: this.HirerId,
168
- },
169
- transaction: dbTransaction,
170
- });
171
-
172
- // Part 3: Record Remove JointHirer Activity
173
- const activity = new Activity();
174
- activity.ObjectId = this._createId();
175
- activity.Action = ActionEnum.UPDATE;
176
- activity.Description = 'Mark Joint Hirer as Inactive';
177
- activity.EntityId = this.ObjectId;
178
- activity.EntityType = this.ObjectType;
179
- activity.EntityValueBefore = JSON.stringify(entityValueBefore);
180
- activity.EntityValueAfter = JSON.stringify(entityValueAfter);
181
-
182
- await activity.create(loginUser.ObjectId, dbTransaction);
183
-
184
- return this;
185
- } catch (error) {
186
- throw error;
187
- }
188
- }
189
- }
1
+ import { ClassError, ObjectBase } from '@tomei/general';
2
+ import { JointHirerRepository } from './joint-hirer.repository';
3
+ import { IJointHirerAttr } from '../../interfaces/joint-hirer-attr.interface';
4
+ import { ApplicationConfig } from '@tomei/config';
5
+ import { LoginUser } from '@tomei/sso';
6
+ import { ActionEnum, Activity } from '@tomei/activity-history';
7
+ import { Rental } from '../rental/rental';
8
+ import { RentalAccountTypeEnum } from '../../enum/account-type.enum';
9
+
10
+ export class JointHirer extends ObjectBase {
11
+ ObjectId: string;
12
+ ObjectName: string;
13
+ ObjectType: string = 'JointHirer';
14
+ TableName: string = 'rental_JointHirer';
15
+ RentalId: string;
16
+ CustomerId: string;
17
+ CustomerType: string;
18
+ Status = 'Active'; // Default status
19
+ CreatedById: string;
20
+ CreatedAt: Date;
21
+ UpdatedById: string;
22
+ UpdatedAt: Date;
23
+ private _Rental: Rental;
24
+
25
+ get HirerId(): string {
26
+ return this.ObjectId;
27
+ }
28
+
29
+ set HirerId(value: string) {
30
+ this.ObjectId = value;
31
+ }
32
+
33
+ protected static _Repository = new JointHirerRepository();
34
+
35
+ protected constructor(jointHirerAttr?: IJointHirerAttr) {
36
+ super();
37
+ if (jointHirerAttr) {
38
+ this.HirerId = jointHirerAttr.HirerId;
39
+ this.RentalId = jointHirerAttr.RentalId;
40
+ this.CustomerId = jointHirerAttr.CustomerId;
41
+ this.CustomerType = jointHirerAttr.CustomerType;
42
+ this.Status = jointHirerAttr.Status;
43
+ this.CreatedById = jointHirerAttr.CreatedById;
44
+ this.CreatedAt = jointHirerAttr.CreatedAt;
45
+ this.UpdatedById = jointHirerAttr.UpdatedById;
46
+ this.UpdatedAt = jointHirerAttr.UpdatedAt;
47
+ }
48
+ }
49
+
50
+ toJSON(): IJointHirerAttr {
51
+ return {
52
+ HirerId: this.HirerId,
53
+ RentalId: this.RentalId,
54
+ CustomerId: this.CustomerId,
55
+ CustomerType: this.CustomerType,
56
+ Status: this.Status,
57
+ CreatedById: this.CreatedById,
58
+ CreatedAt: this.CreatedAt,
59
+ UpdatedById: this.UpdatedById,
60
+ UpdatedAt: this.UpdatedAt,
61
+ };
62
+ }
63
+
64
+ public static async init(hirerId?: string, dbTransaction?: any) {
65
+ try {
66
+ if (hirerId) {
67
+ const jr = await JointHirer._Repository.findByPk(
68
+ hirerId,
69
+ dbTransaction,
70
+ );
71
+ if (jr) {
72
+ return new JointHirer(jr.get({ plain: true }));
73
+ } else {
74
+ throw new ClassError(
75
+ 'JointHirer',
76
+ 'JointHirerErrMsg01',
77
+ 'JointHirer not found',
78
+ );
79
+ }
80
+ }
81
+ return new JointHirer();
82
+ } catch (error) {
83
+ throw error;
84
+ }
85
+ }
86
+
87
+ public async create(loginUser: LoginUser, dbTransaction?: any) {
88
+ //This method will create a new joint hirer record.
89
+ try {
90
+ //Part 1: Check Privilege
91
+ const systemCode =
92
+ ApplicationConfig.getComponentConfigValue('system-code');
93
+ const isPrivileged = await loginUser.checkPrivileges(
94
+ systemCode,
95
+ 'JointHirer - Create',
96
+ );
97
+
98
+ if (!isPrivileged) {
99
+ throw new ClassError(
100
+ 'JointHirer',
101
+ 'JointHirerErrMsg00',
102
+ "You do not have 'JointHirer - Create' privilege.",
103
+ );
104
+ }
105
+
106
+ //Part 2: Insert Joint Hirer Record
107
+ //Check if this.RentalId, this.CustomerId, this.CustomerType have value otherwise throw new ClassError with below params
108
+ if (!this.RentalId || !this.CustomerId || !this.CustomerType) {
109
+ throw new ClassError(
110
+ 'JointHirer',
111
+ 'JointHirerErrMsg03',
112
+ 'RentalId, CustomerId and CustomerType are required.',
113
+ );
114
+ }
115
+
116
+ //Set other attributes
117
+ this.ObjectId = this.createId();
118
+ this.CreatedById = loginUser.ObjectId;
119
+ this.CreatedAt = new Date();
120
+ this.UpdatedById = loginUser.ObjectId;
121
+ this.UpdatedAt = new Date();
122
+
123
+ const entityValueAfter: IJointHirerAttr = {
124
+ HirerId: this.HirerId,
125
+ RentalId: this.RentalId,
126
+ CustomerId: this.CustomerId,
127
+ CustomerType: this.CustomerType,
128
+ Status: this.Status,
129
+ CreatedById: this.CreatedById,
130
+ CreatedAt: this.CreatedAt,
131
+ UpdatedById: this.UpdatedById,
132
+ UpdatedAt: this.UpdatedAt,
133
+ };
134
+
135
+ //Call repo class create method by passing the class attributes and db transaction.
136
+ await JointHirer._Repository.create(entityValueAfter, {
137
+ transaction: dbTransaction,
138
+ });
139
+
140
+ //Part 4: Record Create JointHirer Activity
141
+ const activity = new Activity();
142
+ activity.ObjectId = this._createId();
143
+ activity.Action = ActionEnum.CREATE;
144
+ activity.Description = 'Add Joint Hirer';
145
+ activity.EntityId = this.ObjectId;
146
+ activity.EntityType = this.ObjectType;
147
+ activity.EntityValueBefore = JSON.stringify({});
148
+ activity.EntityValueAfter = JSON.stringify(entityValueAfter);
149
+
150
+ await activity.create(loginUser.ObjectId, dbTransaction);
151
+
152
+ //update the AccountType
153
+ const rental = await this.getRental(dbTransaction);
154
+ const totalIds = await rental.getCustomerIds(loginUser, dbTransaction);
155
+
156
+ if (totalIds.length > 1 && rental.AccountType === 'Single') {
157
+ await rental.update(loginUser, dbTransaction, {
158
+ AccountType: RentalAccountTypeEnum.JOINT,
159
+ });
160
+ }
161
+
162
+ return this;
163
+ } catch (error) {
164
+ throw error;
165
+ }
166
+ }
167
+
168
+ public async remove(loginUser: LoginUser, dbTransaction?: any) {
169
+ try {
170
+ //Make sure this.HirerId exists
171
+ if (!this.HirerId) {
172
+ throw new ClassError(
173
+ 'JointHirer',
174
+ 'JointHirerErrMsg02',
175
+ 'HirerId is required to remove Joint Hirer.',
176
+ );
177
+ }
178
+
179
+ //Make sure this.Status is not "Inactive"
180
+ if (this.Status === 'Inactive') {
181
+ return this;
182
+ }
183
+
184
+ //Mark Joint Hirer as Inactive
185
+ const entityValueBefore: IJointHirerAttr = this.toJSON();
186
+ this.Status = 'Inactive'; // Set status to 'Inactive' instead of deleting the record
187
+ this.UpdatedById = loginUser.ObjectId;
188
+ this.UpdatedAt = new Date();
189
+ const entityValueAfter: IJointHirerAttr = this.toJSON();
190
+
191
+ // Part 2: Remove Joint Hirer Record
192
+ await JointHirer._Repository.update(entityValueAfter, {
193
+ where: {
194
+ HirerId: this.HirerId,
195
+ },
196
+ transaction: dbTransaction,
197
+ });
198
+
199
+ // Part 3: Record Remove JointHirer Activity
200
+ const activity = new Activity();
201
+ activity.ObjectId = this._createId();
202
+ activity.Action = ActionEnum.UPDATE;
203
+ activity.Description = 'Mark Joint Hirer as Inactive';
204
+ activity.EntityId = this.ObjectId;
205
+ activity.EntityType = this.ObjectType;
206
+ activity.EntityValueBefore = JSON.stringify(entityValueBefore);
207
+ activity.EntityValueAfter = JSON.stringify(entityValueAfter);
208
+
209
+ await activity.create(loginUser.ObjectId, dbTransaction);
210
+
211
+ //update the AccountType
212
+ const rental = await this.getRental(dbTransaction);
213
+ const totalIds = await rental.getCustomerIds(loginUser, dbTransaction);
214
+
215
+ if (totalIds.length === 1 && rental.AccountType === 'Joint') {
216
+ await rental.update(loginUser, dbTransaction, {
217
+ AccountType: RentalAccountTypeEnum.SINGLE,
218
+ });
219
+ }
220
+
221
+ return this;
222
+ } catch (error) {
223
+ throw error;
224
+ }
225
+ }
226
+
227
+ private async getRental(dbTransaction?: any) {
228
+ if (this._Rental) {
229
+ return this._Rental;
230
+ }
231
+
232
+ if (!this.RentalId) {
233
+ throw new ClassError(
234
+ 'JointHirer',
235
+ 'JointHirerErrMsg04',
236
+ 'RentalId is empty.',
237
+ );
238
+ }
239
+
240
+ this._Rental = await Rental.init(dbTransaction, this.RentalId);
241
+
242
+ if (!this._Rental) {
243
+ throw new ClassError(
244
+ 'JointHirer',
245
+ 'JointHirerErrMsg05',
246
+ 'Rental not found.',
247
+ );
248
+ }
249
+
250
+ return this._Rental;
251
+ }
252
+ }
@@ -1,51 +1,51 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import { RentalModel } from '../../models/rental.entity';
3
-
4
- export class RentalRepository
5
- extends RepositoryBase<RentalModel>
6
- implements IRepositoryBase<RentalModel>
7
- {
8
- constructor() {
9
- super(RentalModel);
10
- }
11
-
12
- async findByPk(id: string, transaction?: any): Promise<RentalModel | null> {
13
- try {
14
- const result = await RentalModel.findByPk(id, {
15
- transaction: transaction,
16
- });
17
-
18
- return result;
19
- } catch (error) {
20
- throw new Error(`An Error occured when fetching : ${error.message}`);
21
- }
22
- }
23
-
24
- async delete(RentalId: string, dbTransaction?: any) {
25
- try {
26
- const options = {
27
- where: {
28
- RentalId: RentalId,
29
- },
30
- transaction: dbTransaction,
31
- };
32
- await RentalModel.destroy(options);
33
- } catch (error) {
34
- throw new Error(`An Error occured when delete : ${error.message}`);
35
- }
36
- }
37
-
38
- async findAndCountAll(options?: any) {
39
- try {
40
- let Rentals: any;
41
- if (options) {
42
- Rentals = await RentalModel.findAndCountAll(options);
43
- } else {
44
- Rentals = await RentalModel.findAndCountAll();
45
- }
46
- return Rentals;
47
- } catch (error) {
48
- throw new Error(`An Error occured when retriving : ${error.message}`);
49
- }
50
- }
51
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import { RentalModel } from '../../models/rental.entity';
3
+
4
+ export class RentalRepository
5
+ extends RepositoryBase<RentalModel>
6
+ implements IRepositoryBase<RentalModel>
7
+ {
8
+ constructor() {
9
+ super(RentalModel);
10
+ }
11
+
12
+ async findByPk(id: string, transaction?: any): Promise<RentalModel | null> {
13
+ try {
14
+ const result = await RentalModel.findByPk(id, {
15
+ transaction: transaction,
16
+ });
17
+
18
+ return result;
19
+ } catch (error) {
20
+ throw new Error(`An Error occured when fetching : ${error.message}`);
21
+ }
22
+ }
23
+
24
+ async delete(RentalId: string, dbTransaction?: any) {
25
+ try {
26
+ const options = {
27
+ where: {
28
+ RentalId: RentalId,
29
+ },
30
+ transaction: dbTransaction,
31
+ };
32
+ await RentalModel.destroy(options);
33
+ } catch (error) {
34
+ throw new Error(`An Error occured when delete : ${error.message}`);
35
+ }
36
+ }
37
+
38
+ async findAndCountAll(options?: any) {
39
+ try {
40
+ let Rentals: any;
41
+ if (options) {
42
+ Rentals = await RentalModel.findAndCountAll(options);
43
+ } else {
44
+ Rentals = await RentalModel.findAndCountAll();
45
+ }
46
+ return Rentals;
47
+ } catch (error) {
48
+ throw new Error(`An Error occured when retriving : ${error.message}`);
49
+ }
50
+ }
51
+ }