test-entity-library-asm 2.8.18 → 2.9.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.
@@ -0,0 +1,216 @@
1
+ import { Repository } from "typeorm";
2
+ import { IBasicLazyEvent } from "../interfaces";
3
+ import { getSeverityNameDiscountType, getStatusBasic } from "../utils";
4
+ import { Partner } from "../entities.views.routes";
5
+ import { getTimeZone, getTimezoneOffset } from "..";
6
+
7
+ export async function getDiscountsCodeCompanyInformation(
8
+ repository: Repository<any>,
9
+ { lazyEvent }: IBasicLazyEvent
10
+ ) {
11
+ try {
12
+ const timezone = getTimezoneOffset(getTimeZone());
13
+
14
+ const queryBuilder = repository
15
+ .createQueryBuilder("discount")
16
+ .leftJoinAndSelect("discount.updated_by", "master")
17
+ .skip(lazyEvent.first)
18
+ .take(lazyEvent.rows);
19
+
20
+ if (lazyEvent.filters["global"] && lazyEvent.filters["global"].value) {
21
+ const globalValue = `%${lazyEvent.filters[
22
+ "global"
23
+ ].value.toLowerCase()}%`;
24
+ queryBuilder.andWhere(
25
+ "LOWER(discount.code) LIKE :globalValue OR LOWER(discount.discount) LIKE :globalValue OR LOWER(discount.use_limit) LIKE :globalValue OR LOWER(discount.repeat_days) LIKE :globalValue OR LOWER(discount.updated) LIKE :globalValue OR LOWER(discount.start) LIKE :globalValue OR LOWER(discount.created) LIKE :globalValue OR LOWER(discount.expiration) LIKE :globalValue OR LOWER(master.name) LIKE :globalValue OR LOWER(master.surname) LIKE :globalValue",
26
+ {
27
+ globalValue:
28
+ globalValue ||
29
+ getStatusBasic(lazyEvent.filters["global"].value.toLowerCase()) ||
30
+ getSeverityNameDiscountType(
31
+ lazyEvent.filters["global"].value.toLowerCase()
32
+ ),
33
+ }
34
+ );
35
+ }
36
+
37
+ const filters = lazyEvent.filters;
38
+ Object.keys(filters).forEach((key) => {
39
+ let value = filters[key].value;
40
+ if (
41
+ (Array.isArray(value) && value.length > 0) ||
42
+ (!Array.isArray(value) && value && key !== "global")
43
+ ) {
44
+ const matchMode = filters[key].matchMode;
45
+ if (!Array.isArray(value) && value) {
46
+ value = filters[key].value.toLowerCase();
47
+ }
48
+ const accessKey =
49
+ key.split(".").length > 1 ? `${key}` : `discount.${key}`;
50
+
51
+ switch (matchMode) {
52
+ case "custom":
53
+ if (
54
+ (key === "number_of_times_used" || key === "use_limit") &&
55
+ matchMode === "custom"
56
+ ) {
57
+ const [from, to] = value || [null, null];
58
+
59
+ if (from !== null && to === null) {
60
+ queryBuilder.andWhere(`discount.${key} >= :from`, {
61
+ from,
62
+ });
63
+ } else if (from === null && to !== null) {
64
+ queryBuilder.andWhere(`discount.${key} <= :to`, {
65
+ to,
66
+ });
67
+ } else if (from !== null && to !== null) {
68
+ queryBuilder.andWhere(`discount.${key} BETWEEN :from AND :to`, {
69
+ from,
70
+ to,
71
+ });
72
+ }
73
+ }
74
+ break;
75
+ case "contains":
76
+ queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
77
+ [key]: `%${value}%`,
78
+ });
79
+ break;
80
+ case "startsWith":
81
+ queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
82
+ [key]: `${value}%`,
83
+ });
84
+ break;
85
+ case "endsWith":
86
+ queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
87
+ [key]: `%${value}`,
88
+ });
89
+ break;
90
+ case "equals":
91
+ if (key === "status") {
92
+ queryBuilder.andWhere("discount.status = :status", {
93
+ status: getStatusBasic(filters[key].value ?? ""),
94
+ });
95
+ } else if (key === "typeText") {
96
+ queryBuilder.andWhere("discount.type = :type", {
97
+ type: getSeverityNameDiscountType(filters[key].value ?? ""),
98
+ });
99
+ } else if (key === "updated_by") {
100
+ const updatedByIds = filters[key].value.map(
101
+ (element: Partner) => element.id
102
+ );
103
+
104
+ if (updatedByIds.length > 0) {
105
+ queryBuilder.andWhere(
106
+ "discount.updated_by IN (:...updatedByIds)",
107
+ {
108
+ updatedByIds,
109
+ }
110
+ );
111
+ }
112
+ } else {
113
+ queryBuilder.andWhere(`${accessKey} = :${key}`, {
114
+ [key]: value,
115
+ });
116
+ }
117
+ break;
118
+ case "notContains":
119
+ queryBuilder.andWhere(`${accessKey} NOT LIKE :${key}`, {
120
+ [key]: `%${value}%`,
121
+ });
122
+ break;
123
+ case "notEquals":
124
+ queryBuilder.andWhere(`${accessKey} != :${key}`, {
125
+ [key]: value,
126
+ });
127
+ break;
128
+ case "dateIs":
129
+ queryBuilder.andWhere(
130
+ `${
131
+ key !== "expiration" && key !== "start"
132
+ ? "DATE(CONVERT_TZ("
133
+ : ""
134
+ } ${accessKey} ${
135
+ key !== "expiration" && key !== "start"
136
+ ? `, '+00:00', '${timezone}'))`
137
+ : ""
138
+ } = :${key}`,
139
+ {
140
+ [key]: value.split("T")[0],
141
+ }
142
+ );
143
+ break;
144
+ case "dateIsNot":
145
+ queryBuilder.andWhere(
146
+ `${
147
+ key !== "expiration" && key !== "start"
148
+ ? "DATE(CONVERT_TZ("
149
+ : ""
150
+ } ${accessKey} ${
151
+ key !== "expiration" && key !== "start"
152
+ ? `, '+00:00', '${timezone}'))`
153
+ : ""
154
+ } != :${key}`,
155
+ {
156
+ [key]: value.split("T")[0],
157
+ }
158
+ );
159
+ break;
160
+ case "dateBefore":
161
+ queryBuilder.andWhere(
162
+ `${
163
+ key !== "expiration" && key !== "start"
164
+ ? "DATE(CONVERT_TZ("
165
+ : ""
166
+ } ${accessKey} ${
167
+ key !== "expiration" && key !== "start"
168
+ ? `, '+00:00', '${timezone}'))`
169
+ : ""
170
+ } < :${key}`,
171
+ {
172
+ [key]: value.split("T")[0],
173
+ }
174
+ );
175
+ break;
176
+ case "dateAfter":
177
+ queryBuilder.andWhere(
178
+ `${
179
+ key !== "expiration" && key !== "start"
180
+ ? "DATE(CONVERT_TZ("
181
+ : ""
182
+ } ${accessKey} ${
183
+ key !== "expiration" && key !== "start"
184
+ ? `, '+00:00', '${timezone}'))`
185
+ : ""
186
+ } > :${key}`,
187
+ {
188
+ [key]: value.split("T")[0],
189
+ }
190
+ );
191
+ break;
192
+ default:
193
+ break;
194
+ }
195
+ }
196
+ });
197
+
198
+ if (lazyEvent.sortField) {
199
+ const order = lazyEvent.sortOrder === 1 ? "ASC" : "DESC";
200
+ queryBuilder.orderBy(`discount.${lazyEvent.sortField}`, order);
201
+ }
202
+
203
+ const [discountsCodeCompany, totalRecords] =
204
+ await queryBuilder.getManyAndCount();
205
+
206
+ return {
207
+ data: discountsCodeCompany,
208
+ totalRecords,
209
+ };
210
+ } catch (error) {
211
+ return {
212
+ data: [],
213
+ totalRecords: 0,
214
+ };
215
+ }
216
+ }
@@ -0,0 +1,251 @@
1
+ import { Repository } from "typeorm";
2
+ import {
3
+ getSeverityNameDiscountType,
4
+ getStatusBasic,
5
+ getTimeZone,
6
+ getTimezoneOffset,
7
+ Partner,
8
+ } from "..";
9
+ import { IPropsDiscountUserOrCompany } from "../interfaces";
10
+
11
+ export async function getDiscountsCodeUserInformation(
12
+ repository: Repository<any>,
13
+ { status, company, lazyEvent }: IPropsDiscountUserOrCompany
14
+ ) {
15
+ try {
16
+ const timezone = getTimezoneOffset(getTimeZone());
17
+
18
+ const queryBuilder = repository
19
+ .createQueryBuilder("discount_code_user")
20
+ .skip(lazyEvent.first)
21
+ .take(lazyEvent.rows);
22
+
23
+ // DOC: Filtro global
24
+ if (lazyEvent.filters["global"] && lazyEvent.filters["global"].value) {
25
+ const globalValue = `%${lazyEvent.filters[
26
+ "global"
27
+ ].value.toLowerCase()}%`;
28
+ queryBuilder.andWhere(
29
+ "(LOWER(discount_code_user.local_name) LIKE :globalValue OR LOWER(partner_surname) LIKE :globalValue OR LOWER(discount_code_user.code) LIKE :globalValue OR LOWER(discount_code_user.discount) LIKE :globalValue OR LOWER(partner_name) LIKE :globalValue)",
30
+ {
31
+ globalValue:
32
+ globalValue ||
33
+ getStatusBasic(lazyEvent.filters["global"].value.toLowerCase()) ||
34
+ getSeverityNameDiscountType(
35
+ lazyEvent.filters["global"].value.toLowerCase()
36
+ ),
37
+ }
38
+ );
39
+ }
40
+
41
+ // DOC: Filtro por estado FILTRO POR DEFECTO
42
+ if (status !== null && status >= 0) {
43
+ queryBuilder.andWhere("discount_code_user.status = :status", {
44
+ status: status,
45
+ });
46
+ }
47
+
48
+ // DOC: Filtro por company FILTRO POR DEFECTO
49
+ if (!!company && company >= 0) {
50
+ queryBuilder.andWhere("discount_code_user.company = :company", {
51
+ company: company,
52
+ });
53
+ }
54
+
55
+ // DOC: Aplicación de filtros globales para las columnas de las tablas.
56
+ const filters = lazyEvent.filters;
57
+ Object.keys(filters).forEach((key) => {
58
+ let value = filters[key].value;
59
+ if (
60
+ (Array.isArray(value) && value.length > 0) ||
61
+ (!Array.isArray(value) && value && key !== "global")
62
+ ) {
63
+ const matchMode = filters[key].matchMode;
64
+ if (!Array.isArray(value) && value) {
65
+ value = filters[key].value.toLowerCase();
66
+ }
67
+ const accessKey =
68
+ key.split(".").length > 1 ? `${key}` : `discount_code_user.${key}`;
69
+
70
+ switch (matchMode) {
71
+ case "custom":
72
+ if (
73
+ (key === "number_of_times_used" || key === "use_limit") &&
74
+ matchMode === "custom"
75
+ ) {
76
+ const [from, to] = value || [null, null];
77
+
78
+ if (from !== null && to === null) {
79
+ queryBuilder.andWhere(`discount_code_user.${key} >= :from`, {
80
+ from,
81
+ });
82
+ } else if (from === null && to !== null) {
83
+ queryBuilder.andWhere(`discount_code_user.${key} <= :to`, {
84
+ to,
85
+ });
86
+ } else if (from !== null && to !== null) {
87
+ queryBuilder.andWhere(
88
+ `discount_code_user.${key} BETWEEN :from AND :to`,
89
+ { from, to }
90
+ );
91
+ }
92
+ }
93
+ break;
94
+ case "contains":
95
+ queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
96
+ [key]: `%${value}%`,
97
+ });
98
+ break;
99
+ case "startsWith":
100
+ queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
101
+ [key]: `${value}%`,
102
+ });
103
+ break;
104
+ case "endsWith":
105
+ queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
106
+ [key]: `%${value}`,
107
+ });
108
+ break;
109
+ case "equals":
110
+ if (key === "status") {
111
+ queryBuilder.andWhere("discount_code_user.status = :status", {
112
+ status: getStatusBasic(filters[key].value ?? ""),
113
+ });
114
+ } else if (key === "typeText") {
115
+ queryBuilder.andWhere("discount_code_user.type = :type", {
116
+ type: getSeverityNameDiscountType(filters[key].value ?? ""),
117
+ });
118
+ } else if (key === "updated_by") {
119
+ const updatedByIds = filters[key].value.map(
120
+ (element: Partner) => element.id
121
+ );
122
+
123
+ if (updatedByIds.length > 0) {
124
+ queryBuilder.andWhere(
125
+ "discount_code_user.updated_by IN (:...updatedByIds)",
126
+ {
127
+ updatedByIds,
128
+ }
129
+ );
130
+ }
131
+ } else {
132
+ queryBuilder.andWhere(`${accessKey} = :${key}`, {
133
+ [key]: value,
134
+ });
135
+ }
136
+ break;
137
+ case "notContains":
138
+ queryBuilder.andWhere(`${accessKey} NOT LIKE :${key}`, {
139
+ [key]: `%${value}%`,
140
+ });
141
+ break;
142
+ case "notEquals":
143
+ queryBuilder.andWhere(`${accessKey} != :${key}`, {
144
+ [key]: value,
145
+ });
146
+ break;
147
+ case "dateIs":
148
+ queryBuilder.andWhere(
149
+ `${
150
+ key !== "expiration" && key !== "start"
151
+ ? "DATE(CONVERT_TZ("
152
+ : ""
153
+ } ${accessKey} ${
154
+ key !== "expiration" && key !== "start"
155
+ ? `, '+00:00', '${timezone}'))`
156
+ : ""
157
+ } = :${key}`,
158
+ {
159
+ [key]: value.split("T")[0],
160
+ }
161
+ );
162
+ break;
163
+ case "dateIsNot":
164
+ queryBuilder.andWhere(
165
+ `${
166
+ key !== "expiration" && key !== "start"
167
+ ? "DATE(CONVERT_TZ("
168
+ : ""
169
+ } ${accessKey} ${
170
+ key !== "expiration" && key !== "start"
171
+ ? `, '+00:00', '${timezone}'))`
172
+ : ""
173
+ } != :${key}`,
174
+ {
175
+ [key]: value.split("T")[0],
176
+ }
177
+ );
178
+ break;
179
+ case "dateBefore":
180
+ queryBuilder.andWhere(
181
+ `${
182
+ key !== "expiration" && key !== "start"
183
+ ? "DATE(CONVERT_TZ("
184
+ : ""
185
+ } ${accessKey} ${
186
+ key !== "expiration" && key !== "start"
187
+ ? `, '+00:00', '${timezone}'))`
188
+ : ""
189
+ } < :${key}`,
190
+ {
191
+ [key]: value.split("T")[0],
192
+ }
193
+ );
194
+ break;
195
+ case "dateAfter":
196
+ queryBuilder.andWhere(
197
+ `${
198
+ key !== "expiration" && key !== "start"
199
+ ? "DATE(CONVERT_TZ("
200
+ : ""
201
+ } ${accessKey} ${
202
+ key !== "expiration" && key !== "start"
203
+ ? `, '+00:00', '${timezone}'))`
204
+ : ""
205
+ } > :${key}`,
206
+ {
207
+ [key]: value.split("T")[0],
208
+ }
209
+ );
210
+ break;
211
+ default:
212
+ break;
213
+ }
214
+ }
215
+ });
216
+
217
+ // DOC: Ordenamiento
218
+ if (lazyEvent.sortField) {
219
+ const order = lazyEvent.sortOrder === 1 ? "ASC" : "DESC";
220
+
221
+ if (lazyEvent.sortField === "local.name") {
222
+ queryBuilder.orderBy(`local.name`, order);
223
+ } else {
224
+ if (lazyEvent.sortField === "typeText") {
225
+ queryBuilder.orderBy(`discount_code_user.type`, order);
226
+ } else if (lazyEvent.sortField === "status") {
227
+ queryBuilder.orderBy(`discount_code_user.status`, order);
228
+ } else {
229
+ queryBuilder.orderBy(
230
+ `discount_code_user.${lazyEvent.sortField}`,
231
+ order
232
+ );
233
+ }
234
+ }
235
+ }
236
+
237
+ // DOC: Ejecutar la consulta
238
+ const [discountsCodeUser, totalRecords] =
239
+ await queryBuilder.getManyAndCount();
240
+
241
+ return {
242
+ data: discountsCodeUser,
243
+ totalRecords,
244
+ };
245
+ } catch (error) {
246
+ return {
247
+ data: [],
248
+ totalRecords: 0,
249
+ };
250
+ }
251
+ }
@@ -224,6 +224,9 @@ export async function getLocalsCompanyInformation(
224
224
  totalRecords,
225
225
  };
226
226
  } catch (error) {
227
- return false;
227
+ return {
228
+ data: [],
229
+ totalRecords: 0,
230
+ }
228
231
  }
229
232
  }