test-entity-library-asm 2.7.2 → 2.7.4
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.
- package/dist/CustomRepository.d.ts +5 -1
- package/dist/CustomRepository.js +185 -0
- package/dist/entities/DiscountCodeCompany.js +12 -3
- package/dist/entities/Plan.js +2 -0
- package/dist/interfaces.d.ts +3 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +29 -1
- package/package.json +1 -1
- package/src/CustomRepository.ts +244 -2
- package/src/entities/DiscountCodeCompany.ts +12 -4
- package/src/entities/Plan.ts +2 -0
- package/src/interfaces.ts +4 -0
- package/src/utils.ts +28 -0
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { DataSource, EntityTarget, Repository, ObjectLiteral } from 'typeorm';
|
|
2
|
-
import { IPropsQueryVerifyLocal } from './interfaces';
|
|
2
|
+
import { IPropsDiscountUserOrCompany, IPropsQueryVerifyLocal } from './interfaces';
|
|
3
3
|
export declare class CustomRepository<T extends ObjectLiteral> extends Repository<T> {
|
|
4
4
|
constructor(target: EntityTarget<T>, dataSource: DataSource);
|
|
5
5
|
getVerifyLocals({ status, lazyEvent }: IPropsQueryVerifyLocal): Promise<{
|
|
6
6
|
data: T[];
|
|
7
7
|
totalRecords: number;
|
|
8
8
|
}>;
|
|
9
|
+
getDiscountCodeUser({ status, company, lazyEvent, }: IPropsDiscountUserOrCompany): Promise<{
|
|
10
|
+
data: T[];
|
|
11
|
+
totalRecords: number;
|
|
12
|
+
}>;
|
|
9
13
|
anyOtherRepository(args: any): Promise<void>;
|
|
10
14
|
}
|
package/dist/CustomRepository.js
CHANGED
|
@@ -54,6 +54,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
54
54
|
exports.CustomRepository = void 0;
|
|
55
55
|
var typeorm_1 = require("typeorm");
|
|
56
56
|
var utils_1 = require("./utils");
|
|
57
|
+
var _1 = require(".");
|
|
57
58
|
var CustomRepository = /** @class */ (function (_super) {
|
|
58
59
|
__extends(CustomRepository, _super);
|
|
59
60
|
function CustomRepository(target, dataSource) {
|
|
@@ -169,6 +170,190 @@ var CustomRepository = /** @class */ (function (_super) {
|
|
|
169
170
|
});
|
|
170
171
|
});
|
|
171
172
|
};
|
|
173
|
+
CustomRepository.prototype.getDiscountCodeUser = function (_a) {
|
|
174
|
+
return __awaiter(this, arguments, void 0, function (_b) {
|
|
175
|
+
var timezone, queryBuilder, globalValue, filters, order, _c, discountsCodeUser, totalRecords;
|
|
176
|
+
var status = _b.status, company = _b.company, lazyEvent = _b.lazyEvent;
|
|
177
|
+
return __generator(this, function (_d) {
|
|
178
|
+
switch (_d.label) {
|
|
179
|
+
case 0:
|
|
180
|
+
timezone = (0, _1.getTimezoneOffset)((0, _1.getTimeZone)());
|
|
181
|
+
queryBuilder = this.createQueryBuilder('discount_code_user')
|
|
182
|
+
.skip(lazyEvent.first)
|
|
183
|
+
.take(lazyEvent.rows);
|
|
184
|
+
// DOC: Filtro global
|
|
185
|
+
if (lazyEvent.filters['global'] && lazyEvent.filters['global'].value) {
|
|
186
|
+
globalValue = "%".concat(lazyEvent.filters['global'].value.toLowerCase(), "%");
|
|
187
|
+
queryBuilder.andWhere('LOWER(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', {
|
|
188
|
+
globalValue: globalValue ||
|
|
189
|
+
(0, utils_1.getStatusBasic)(lazyEvent.filters['global'].value.toLowerCase()) ||
|
|
190
|
+
(0, utils_1.getSeverityNameDiscountType)(lazyEvent.filters['global'].value.toLowerCase()),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// DOC: Filtro por estado FILTRO POR DEFECTO
|
|
194
|
+
if (status !== null && status >= 0) {
|
|
195
|
+
queryBuilder.andWhere('discount_code_user.status = :status', {
|
|
196
|
+
status: status,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
// DOC: Filtro por company FILTRO POR DEFECTO
|
|
200
|
+
if (!!company && company >= 0) {
|
|
201
|
+
queryBuilder.andWhere('discount_code_user.company = :company', {
|
|
202
|
+
company: company,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
filters = lazyEvent.filters;
|
|
206
|
+
Object.keys(filters).forEach(function (key) {
|
|
207
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
208
|
+
var _l, _m;
|
|
209
|
+
var value = filters[key].value;
|
|
210
|
+
if ((Array.isArray(value) && value.length > 0) ||
|
|
211
|
+
(!Array.isArray(value) && value && key !== 'global')) {
|
|
212
|
+
var matchMode = filters[key].matchMode;
|
|
213
|
+
if (!Array.isArray(value) && value) {
|
|
214
|
+
value = filters[key].value.toLowerCase();
|
|
215
|
+
}
|
|
216
|
+
var accessKey = key.split('.').length > 1 ? "".concat(key) : "discount_code_user.".concat(key);
|
|
217
|
+
switch (matchMode) {
|
|
218
|
+
case 'custom':
|
|
219
|
+
if ((key === 'number_of_times_used' || key === 'use_limit') &&
|
|
220
|
+
matchMode === 'custom') {
|
|
221
|
+
var _o = value || [null, null], from = _o[0], to = _o[1];
|
|
222
|
+
if (from !== null && to === null) {
|
|
223
|
+
queryBuilder.andWhere("discount_code_user.".concat(key, " >= :from"), {
|
|
224
|
+
from: from,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
else if (from === null && to !== null) {
|
|
228
|
+
queryBuilder.andWhere("discount_code_user.".concat(key, " <= :to"), {
|
|
229
|
+
to: to,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
else if (from !== null && to !== null) {
|
|
233
|
+
queryBuilder.andWhere("discount_code_user.".concat(key, " BETWEEN :from AND :to"), { from: from, to: to });
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
case 'contains':
|
|
238
|
+
queryBuilder.andWhere("".concat(accessKey, " LIKE :").concat(key), (_a = {},
|
|
239
|
+
_a[key] = "%".concat(value, "%"),
|
|
240
|
+
_a));
|
|
241
|
+
break;
|
|
242
|
+
case 'startsWith':
|
|
243
|
+
queryBuilder.andWhere("".concat(accessKey, " LIKE :").concat(key), (_b = {},
|
|
244
|
+
_b[key] = "".concat(value, "%"),
|
|
245
|
+
_b));
|
|
246
|
+
break;
|
|
247
|
+
case 'endsWith':
|
|
248
|
+
queryBuilder.andWhere("".concat(accessKey, " LIKE :").concat(key), (_c = {},
|
|
249
|
+
_c[key] = "%".concat(value),
|
|
250
|
+
_c));
|
|
251
|
+
break;
|
|
252
|
+
case 'equals':
|
|
253
|
+
if (key === 'status') {
|
|
254
|
+
queryBuilder.andWhere('discount_code_user.status = :status', {
|
|
255
|
+
status: (0, utils_1.getStatusBasic)((_l = filters[key].value) !== null && _l !== void 0 ? _l : ''),
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
else if (key === 'typeText') {
|
|
259
|
+
queryBuilder.andWhere('discount_code_user.type = :type', {
|
|
260
|
+
type: (0, utils_1.getSeverityNameDiscountType)((_m = filters[key].value) !== null && _m !== void 0 ? _m : ''),
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
else if (key === 'updated_by') {
|
|
264
|
+
var updatedByIds = filters[key].value.map(function (element) { return element.id; });
|
|
265
|
+
if (updatedByIds.length > 0) {
|
|
266
|
+
queryBuilder.andWhere('discount_code_user.updated_by IN (:...updatedByIds)', {
|
|
267
|
+
updatedByIds: updatedByIds,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
queryBuilder.andWhere("".concat(accessKey, " = :").concat(key), (_d = {},
|
|
273
|
+
_d[key] = value,
|
|
274
|
+
_d));
|
|
275
|
+
}
|
|
276
|
+
break;
|
|
277
|
+
case 'notContains':
|
|
278
|
+
queryBuilder.andWhere("".concat(accessKey, " NOT LIKE :").concat(key), (_e = {},
|
|
279
|
+
_e[key] = "%".concat(value, "%"),
|
|
280
|
+
_e));
|
|
281
|
+
break;
|
|
282
|
+
case 'notEquals':
|
|
283
|
+
queryBuilder.andWhere("".concat(accessKey, " != :").concat(key), (_f = {},
|
|
284
|
+
_f[key] = value,
|
|
285
|
+
_f));
|
|
286
|
+
break;
|
|
287
|
+
case 'dateIs':
|
|
288
|
+
queryBuilder.andWhere("".concat(key !== 'expiration' && key !== 'start'
|
|
289
|
+
? 'DATE(CONVERT_TZ('
|
|
290
|
+
: '', " ").concat(accessKey, " ").concat(key !== 'expiration' && key !== 'start'
|
|
291
|
+
? ", '+00:00', '".concat(timezone, "'))")
|
|
292
|
+
: '', " = :").concat(key), (_g = {},
|
|
293
|
+
_g[key] = value.split('T')[0],
|
|
294
|
+
_g));
|
|
295
|
+
break;
|
|
296
|
+
case 'dateIsNot':
|
|
297
|
+
queryBuilder.andWhere("".concat(key !== 'expiration' && key !== 'start'
|
|
298
|
+
? 'DATE(CONVERT_TZ('
|
|
299
|
+
: '', " ").concat(accessKey, " ").concat(key !== 'expiration' && key !== 'start'
|
|
300
|
+
? ", '+00:00', '".concat(timezone, "'))")
|
|
301
|
+
: '', " != :").concat(key), (_h = {},
|
|
302
|
+
_h[key] = value.split('T')[0],
|
|
303
|
+
_h));
|
|
304
|
+
break;
|
|
305
|
+
case 'dateBefore':
|
|
306
|
+
queryBuilder.andWhere("".concat(key !== 'expiration' && key !== 'start'
|
|
307
|
+
? 'DATE(CONVERT_TZ('
|
|
308
|
+
: '', " ").concat(accessKey, " ").concat(key !== 'expiration' && key !== 'start'
|
|
309
|
+
? ", '+00:00', '".concat(timezone, "'))")
|
|
310
|
+
: '', " < :").concat(key), (_j = {},
|
|
311
|
+
_j[key] = value.split('T')[0],
|
|
312
|
+
_j));
|
|
313
|
+
break;
|
|
314
|
+
case 'dateAfter':
|
|
315
|
+
queryBuilder.andWhere("".concat(key !== 'expiration' && key !== 'start'
|
|
316
|
+
? 'DATE(CONVERT_TZ('
|
|
317
|
+
: '', " ").concat(accessKey, " ").concat(key !== 'expiration' && key !== 'start'
|
|
318
|
+
? ", '+00:00', '".concat(timezone, "'))")
|
|
319
|
+
: '', " > :").concat(key), (_k = {},
|
|
320
|
+
_k[key] = value.split('T')[0],
|
|
321
|
+
_k));
|
|
322
|
+
break;
|
|
323
|
+
default:
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
// DOC: Ordenamiento
|
|
329
|
+
if (lazyEvent.sortField) {
|
|
330
|
+
order = lazyEvent.sortOrder === 1 ? 'ASC' : 'DESC';
|
|
331
|
+
if (lazyEvent.sortField === 'local.name') {
|
|
332
|
+
queryBuilder.orderBy("local.name", order);
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
if (lazyEvent.sortField === 'typeText') {
|
|
336
|
+
queryBuilder.orderBy("discount_code_user.type", order);
|
|
337
|
+
}
|
|
338
|
+
else if (lazyEvent.sortField === 'status') {
|
|
339
|
+
queryBuilder.orderBy("discount_code_user.status", order);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
queryBuilder.orderBy("discount_code_user.".concat(lazyEvent.sortField), order);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return [4 /*yield*/, queryBuilder.getManyAndCount()];
|
|
347
|
+
case 1:
|
|
348
|
+
_c = _d.sent(), discountsCodeUser = _c[0], totalRecords = _c[1];
|
|
349
|
+
return [2 /*return*/, {
|
|
350
|
+
data: discountsCodeUser,
|
|
351
|
+
totalRecords: totalRecords,
|
|
352
|
+
}];
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
};
|
|
172
357
|
CustomRepository.prototype.anyOtherRepository = function (args) {
|
|
173
358
|
return __awaiter(this, void 0, void 0, function () {
|
|
174
359
|
return __generator(this, function (_a) {
|
|
@@ -11,9 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.DiscountCodeCompany = void 0;
|
|
13
13
|
var typeorm_1 = require("typeorm");
|
|
14
|
+
var dateTransformer_1 = require("../transformers/dateTransformer");
|
|
15
|
+
var jsonTransformer_1 = require("../transformers/jsonTransformer");
|
|
14
16
|
var CodeRedemptionHistoryCompany_1 = require("./CodeRedemptionHistoryCompany");
|
|
15
17
|
var Master_1 = require("./Master");
|
|
16
|
-
var jsonTransformer_1 = require("../transformers/jsonTransformer");
|
|
17
18
|
var DiscountCodeCompany = /** @class */ (function () {
|
|
18
19
|
function DiscountCodeCompany() {
|
|
19
20
|
}
|
|
@@ -56,7 +57,11 @@ var DiscountCodeCompany = /** @class */ (function () {
|
|
|
56
57
|
__metadata("design:type", Number)
|
|
57
58
|
], DiscountCodeCompany.prototype, "use_limit", void 0);
|
|
58
59
|
__decorate([
|
|
59
|
-
(0, typeorm_1.Column)({
|
|
60
|
+
(0, typeorm_1.Column)({
|
|
61
|
+
type: 'datetime',
|
|
62
|
+
comment: 'Fecha de creación del registro.',
|
|
63
|
+
transformer: new dateTransformer_1.DateTransformer(),
|
|
64
|
+
}),
|
|
60
65
|
__metadata("design:type", Date)
|
|
61
66
|
], DiscountCodeCompany.prototype, "created", void 0);
|
|
62
67
|
__decorate([
|
|
@@ -82,7 +87,11 @@ var DiscountCodeCompany = /** @class */ (function () {
|
|
|
82
87
|
__metadata("design:type", Object)
|
|
83
88
|
], DiscountCodeCompany.prototype, "repeat_days", void 0);
|
|
84
89
|
__decorate([
|
|
85
|
-
(0, typeorm_1.Column)({
|
|
90
|
+
(0, typeorm_1.Column)({
|
|
91
|
+
type: 'datetime',
|
|
92
|
+
comment: 'Fecha de expiración del registro.',
|
|
93
|
+
transformer: new dateTransformer_1.DateTransformer(),
|
|
94
|
+
}),
|
|
86
95
|
__metadata("design:type", Date)
|
|
87
96
|
], DiscountCodeCompany.prototype, "updated", void 0);
|
|
88
97
|
__decorate([
|
package/dist/entities/Plan.js
CHANGED
|
@@ -13,6 +13,7 @@ exports.Plan = void 0;
|
|
|
13
13
|
var typeorm_1 = require("typeorm");
|
|
14
14
|
var Company_1 = require("./Company");
|
|
15
15
|
var __1 = require("..");
|
|
16
|
+
var jsonTransformer_1 = require("../transformers/jsonTransformer");
|
|
16
17
|
var Plan = /** @class */ (function () {
|
|
17
18
|
function Plan() {
|
|
18
19
|
}
|
|
@@ -44,6 +45,7 @@ var Plan = /** @class */ (function () {
|
|
|
44
45
|
__decorate([
|
|
45
46
|
(0, typeorm_1.Column)({
|
|
46
47
|
type: 'mediumtext',
|
|
48
|
+
transformer: jsonTransformer_1.jsonTransformer,
|
|
47
49
|
nullable: true,
|
|
48
50
|
comment: 'Campo de tipo JSON donde se guarda información necesaria para el plan',
|
|
49
51
|
}),
|
package/dist/interfaces.d.ts
CHANGED
package/dist/utils.d.ts
CHANGED
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getStatusVerifyLocalNumber = void 0;
|
|
3
|
+
exports.getSeverityNameDiscountType = exports.getStatusBasic = exports.getStatusVerifyLocalNumber = void 0;
|
|
4
4
|
function getStatusVerifyLocalNumber(status) {
|
|
5
5
|
var statuses = {
|
|
6
6
|
'Pending approval': 1,
|
|
@@ -13,3 +13,31 @@ function getStatusVerifyLocalNumber(status) {
|
|
|
13
13
|
return statuses[status];
|
|
14
14
|
}
|
|
15
15
|
exports.getStatusVerifyLocalNumber = getStatusVerifyLocalNumber;
|
|
16
|
+
function getStatusBasic(status) {
|
|
17
|
+
var statuses = {
|
|
18
|
+
Active: 1,
|
|
19
|
+
active: 1,
|
|
20
|
+
Inactive: 0,
|
|
21
|
+
inactive: 0,
|
|
22
|
+
Activo: 1,
|
|
23
|
+
activo: 1,
|
|
24
|
+
Inactivo: 0,
|
|
25
|
+
inactivo: 0,
|
|
26
|
+
};
|
|
27
|
+
return statuses[status] || status;
|
|
28
|
+
}
|
|
29
|
+
exports.getStatusBasic = getStatusBasic;
|
|
30
|
+
function getSeverityNameDiscountType(type) {
|
|
31
|
+
var types = {
|
|
32
|
+
Percentage: 1,
|
|
33
|
+
percentage: 1,
|
|
34
|
+
Porcentaje: 1,
|
|
35
|
+
porcentaje: 1,
|
|
36
|
+
Moneda: 2,
|
|
37
|
+
moneda: 2,
|
|
38
|
+
Currency: 1,
|
|
39
|
+
currency: 1,
|
|
40
|
+
};
|
|
41
|
+
return types[type] || type;
|
|
42
|
+
}
|
|
43
|
+
exports.getSeverityNameDiscountType = getSeverityNameDiscountType;
|
package/package.json
CHANGED
package/src/CustomRepository.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { DataSource, EntityTarget, Repository, ObjectLiteral } from 'typeorm'
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
IPropsDiscountUserOrCompany,
|
|
4
|
+
IPropsQueryVerifyLocal,
|
|
5
|
+
} from './interfaces'
|
|
6
|
+
import {
|
|
7
|
+
getSeverityNameDiscountType,
|
|
8
|
+
getStatusBasic,
|
|
9
|
+
getStatusVerifyLocalNumber,
|
|
10
|
+
} from './utils'
|
|
11
|
+
import { getTimeZone, getTimezoneOffset, Partner } from '.'
|
|
4
12
|
|
|
5
13
|
export class CustomRepository<T extends ObjectLiteral> extends Repository<T> {
|
|
6
14
|
constructor(target: EntityTarget<T>, dataSource: DataSource) {
|
|
@@ -147,6 +155,240 @@ export class CustomRepository<T extends ObjectLiteral> extends Repository<T> {
|
|
|
147
155
|
}
|
|
148
156
|
}
|
|
149
157
|
|
|
158
|
+
async getDiscountCodeUser({
|
|
159
|
+
status,
|
|
160
|
+
company,
|
|
161
|
+
lazyEvent,
|
|
162
|
+
}: IPropsDiscountUserOrCompany) {
|
|
163
|
+
// const response = await getRepository.getVerifyLocals({ status: 1, lazyEvent })
|
|
164
|
+
const timezone = getTimezoneOffset(getTimeZone())
|
|
165
|
+
|
|
166
|
+
const queryBuilder = this.createQueryBuilder('discount_code_user')
|
|
167
|
+
.skip(lazyEvent.first)
|
|
168
|
+
.take(lazyEvent.rows)
|
|
169
|
+
|
|
170
|
+
// DOC: Filtro global
|
|
171
|
+
if (lazyEvent.filters['global'] && lazyEvent.filters['global'].value) {
|
|
172
|
+
const globalValue = `%${lazyEvent.filters['global'].value.toLowerCase()}%`
|
|
173
|
+
queryBuilder.andWhere(
|
|
174
|
+
'LOWER(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',
|
|
175
|
+
{
|
|
176
|
+
globalValue:
|
|
177
|
+
globalValue ||
|
|
178
|
+
getStatusBasic(lazyEvent.filters['global'].value.toLowerCase()) ||
|
|
179
|
+
getSeverityNameDiscountType(
|
|
180
|
+
lazyEvent.filters['global'].value.toLowerCase()
|
|
181
|
+
),
|
|
182
|
+
}
|
|
183
|
+
)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// DOC: Filtro por estado FILTRO POR DEFECTO
|
|
187
|
+
if (status !== null && status >= 0) {
|
|
188
|
+
queryBuilder.andWhere('discount_code_user.status = :status', {
|
|
189
|
+
status: status,
|
|
190
|
+
})
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// DOC: Filtro por company FILTRO POR DEFECTO
|
|
194
|
+
if (!!company && company >= 0) {
|
|
195
|
+
queryBuilder.andWhere('discount_code_user.company = :company', {
|
|
196
|
+
company: company,
|
|
197
|
+
})
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// DOC: Aplicación de filtros globales para las columnas de las tablas.
|
|
201
|
+
const filters = lazyEvent.filters
|
|
202
|
+
Object.keys(filters).forEach((key) => {
|
|
203
|
+
let value = filters[key].value
|
|
204
|
+
if (
|
|
205
|
+
(Array.isArray(value) && value.length > 0) ||
|
|
206
|
+
(!Array.isArray(value) && value && key !== 'global')
|
|
207
|
+
) {
|
|
208
|
+
const matchMode = filters[key].matchMode
|
|
209
|
+
if (!Array.isArray(value) && value) {
|
|
210
|
+
value = filters[key].value.toLowerCase()
|
|
211
|
+
}
|
|
212
|
+
const accessKey =
|
|
213
|
+
key.split('.').length > 1 ? `${key}` : `discount_code_user.${key}`
|
|
214
|
+
|
|
215
|
+
switch (matchMode) {
|
|
216
|
+
case 'custom':
|
|
217
|
+
if (
|
|
218
|
+
(key === 'number_of_times_used' || key === 'use_limit') &&
|
|
219
|
+
matchMode === 'custom'
|
|
220
|
+
) {
|
|
221
|
+
const [from, to] = value || [null, null]
|
|
222
|
+
|
|
223
|
+
if (from !== null && to === null) {
|
|
224
|
+
queryBuilder.andWhere(`discount_code_user.${key} >= :from`, {
|
|
225
|
+
from,
|
|
226
|
+
})
|
|
227
|
+
} else if (from === null && to !== null) {
|
|
228
|
+
queryBuilder.andWhere(`discount_code_user.${key} <= :to`, {
|
|
229
|
+
to,
|
|
230
|
+
})
|
|
231
|
+
} else if (from !== null && to !== null) {
|
|
232
|
+
queryBuilder.andWhere(
|
|
233
|
+
`discount_code_user.${key} BETWEEN :from AND :to`,
|
|
234
|
+
{ from, to }
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
break
|
|
239
|
+
case 'contains':
|
|
240
|
+
queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
|
|
241
|
+
[key]: `%${value}%`,
|
|
242
|
+
})
|
|
243
|
+
break
|
|
244
|
+
case 'startsWith':
|
|
245
|
+
queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
|
|
246
|
+
[key]: `${value}%`,
|
|
247
|
+
})
|
|
248
|
+
break
|
|
249
|
+
case 'endsWith':
|
|
250
|
+
queryBuilder.andWhere(`${accessKey} LIKE :${key}`, {
|
|
251
|
+
[key]: `%${value}`,
|
|
252
|
+
})
|
|
253
|
+
break
|
|
254
|
+
case 'equals':
|
|
255
|
+
if (key === 'status') {
|
|
256
|
+
queryBuilder.andWhere('discount_code_user.status = :status', {
|
|
257
|
+
status: getStatusBasic(filters[key].value ?? ''),
|
|
258
|
+
})
|
|
259
|
+
} else if (key === 'typeText') {
|
|
260
|
+
queryBuilder.andWhere('discount_code_user.type = :type', {
|
|
261
|
+
type: getSeverityNameDiscountType(filters[key].value ?? ''),
|
|
262
|
+
})
|
|
263
|
+
} else if (key === 'updated_by') {
|
|
264
|
+
const updatedByIds = filters[key].value.map(
|
|
265
|
+
(element: Partner) => element.id
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
if (updatedByIds.length > 0) {
|
|
269
|
+
queryBuilder.andWhere(
|
|
270
|
+
'discount_code_user.updated_by IN (:...updatedByIds)',
|
|
271
|
+
{
|
|
272
|
+
updatedByIds,
|
|
273
|
+
}
|
|
274
|
+
)
|
|
275
|
+
}
|
|
276
|
+
} else {
|
|
277
|
+
queryBuilder.andWhere(`${accessKey} = :${key}`, {
|
|
278
|
+
[key]: value,
|
|
279
|
+
})
|
|
280
|
+
}
|
|
281
|
+
break
|
|
282
|
+
case 'notContains':
|
|
283
|
+
queryBuilder.andWhere(`${accessKey} NOT LIKE :${key}`, {
|
|
284
|
+
[key]: `%${value}%`,
|
|
285
|
+
})
|
|
286
|
+
break
|
|
287
|
+
case 'notEquals':
|
|
288
|
+
queryBuilder.andWhere(`${accessKey} != :${key}`, {
|
|
289
|
+
[key]: value,
|
|
290
|
+
})
|
|
291
|
+
break
|
|
292
|
+
case 'dateIs':
|
|
293
|
+
queryBuilder.andWhere(
|
|
294
|
+
`${
|
|
295
|
+
key !== 'expiration' && key !== 'start'
|
|
296
|
+
? 'DATE(CONVERT_TZ('
|
|
297
|
+
: ''
|
|
298
|
+
} ${accessKey} ${
|
|
299
|
+
key !== 'expiration' && key !== 'start'
|
|
300
|
+
? `, '+00:00', '${timezone}'))`
|
|
301
|
+
: ''
|
|
302
|
+
} = :${key}`,
|
|
303
|
+
{
|
|
304
|
+
[key]: value.split('T')[0],
|
|
305
|
+
}
|
|
306
|
+
)
|
|
307
|
+
break
|
|
308
|
+
case 'dateIsNot':
|
|
309
|
+
queryBuilder.andWhere(
|
|
310
|
+
`${
|
|
311
|
+
key !== 'expiration' && key !== 'start'
|
|
312
|
+
? 'DATE(CONVERT_TZ('
|
|
313
|
+
: ''
|
|
314
|
+
} ${accessKey} ${
|
|
315
|
+
key !== 'expiration' && key !== 'start'
|
|
316
|
+
? `, '+00:00', '${timezone}'))`
|
|
317
|
+
: ''
|
|
318
|
+
} != :${key}`,
|
|
319
|
+
{
|
|
320
|
+
[key]: value.split('T')[0],
|
|
321
|
+
}
|
|
322
|
+
)
|
|
323
|
+
break
|
|
324
|
+
case 'dateBefore':
|
|
325
|
+
queryBuilder.andWhere(
|
|
326
|
+
`${
|
|
327
|
+
key !== 'expiration' && key !== 'start'
|
|
328
|
+
? 'DATE(CONVERT_TZ('
|
|
329
|
+
: ''
|
|
330
|
+
} ${accessKey} ${
|
|
331
|
+
key !== 'expiration' && key !== 'start'
|
|
332
|
+
? `, '+00:00', '${timezone}'))`
|
|
333
|
+
: ''
|
|
334
|
+
} < :${key}`,
|
|
335
|
+
{
|
|
336
|
+
[key]: value.split('T')[0],
|
|
337
|
+
}
|
|
338
|
+
)
|
|
339
|
+
break
|
|
340
|
+
case 'dateAfter':
|
|
341
|
+
queryBuilder.andWhere(
|
|
342
|
+
`${
|
|
343
|
+
key !== 'expiration' && key !== 'start'
|
|
344
|
+
? 'DATE(CONVERT_TZ('
|
|
345
|
+
: ''
|
|
346
|
+
} ${accessKey} ${
|
|
347
|
+
key !== 'expiration' && key !== 'start'
|
|
348
|
+
? `, '+00:00', '${timezone}'))`
|
|
349
|
+
: ''
|
|
350
|
+
} > :${key}`,
|
|
351
|
+
{
|
|
352
|
+
[key]: value.split('T')[0],
|
|
353
|
+
}
|
|
354
|
+
)
|
|
355
|
+
break
|
|
356
|
+
default:
|
|
357
|
+
break
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
})
|
|
361
|
+
|
|
362
|
+
// DOC: Ordenamiento
|
|
363
|
+
if (lazyEvent.sortField) {
|
|
364
|
+
const order = lazyEvent.sortOrder === 1 ? 'ASC' : 'DESC'
|
|
365
|
+
|
|
366
|
+
if (lazyEvent.sortField === 'local.name') {
|
|
367
|
+
queryBuilder.orderBy(`local.name`, order)
|
|
368
|
+
} else {
|
|
369
|
+
if (lazyEvent.sortField === 'typeText') {
|
|
370
|
+
queryBuilder.orderBy(`discount_code_user.type`, order)
|
|
371
|
+
} else if (lazyEvent.sortField === 'status') {
|
|
372
|
+
queryBuilder.orderBy(`discount_code_user.status`, order)
|
|
373
|
+
} else {
|
|
374
|
+
queryBuilder.orderBy(
|
|
375
|
+
`discount_code_user.${lazyEvent.sortField}`,
|
|
376
|
+
order
|
|
377
|
+
)
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// DOC: Ejecutar la consulta
|
|
383
|
+
const [discountsCodeUser, totalRecords] =
|
|
384
|
+
await queryBuilder.getManyAndCount()
|
|
385
|
+
|
|
386
|
+
return {
|
|
387
|
+
data: discountsCodeUser,
|
|
388
|
+
totalRecords,
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
150
392
|
async anyOtherRepository(args: any) {
|
|
151
393
|
// Implementa otro método personalizado aquí
|
|
152
394
|
}
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
OneToMany,
|
|
7
7
|
PrimaryGeneratedColumn,
|
|
8
8
|
} from 'typeorm'
|
|
9
|
+
import { DateTransformer } from '../transformers/dateTransformer'
|
|
10
|
+
import { jsonTransformer } from '../transformers/jsonTransformer'
|
|
9
11
|
import { CodeRedemptionHistoryCompany } from './CodeRedemptionHistoryCompany'
|
|
10
|
-
import { User } from './User'
|
|
11
12
|
import { Master } from './Master'
|
|
12
|
-
import { jsonTransformer } from '../transformers/jsonTransformer'
|
|
13
13
|
|
|
14
14
|
@Entity('discount_code_company', {
|
|
15
15
|
comment: 'Códigos de descuento para las empresas.',
|
|
@@ -50,7 +50,11 @@ export class DiscountCodeCompany {
|
|
|
50
50
|
})
|
|
51
51
|
use_limit: number
|
|
52
52
|
|
|
53
|
-
@Column({
|
|
53
|
+
@Column({
|
|
54
|
+
type: 'datetime',
|
|
55
|
+
comment: 'Fecha de creación del registro.',
|
|
56
|
+
transformer: new DateTransformer(),
|
|
57
|
+
})
|
|
54
58
|
created: Date
|
|
55
59
|
|
|
56
60
|
@Column({
|
|
@@ -73,7 +77,11 @@ export class DiscountCodeCompany {
|
|
|
73
77
|
})
|
|
74
78
|
repeat_days: any
|
|
75
79
|
|
|
76
|
-
@Column({
|
|
80
|
+
@Column({
|
|
81
|
+
type: 'datetime',
|
|
82
|
+
comment: 'Fecha de expiración del registro.',
|
|
83
|
+
transformer: new DateTransformer(),
|
|
84
|
+
})
|
|
77
85
|
updated: Date
|
|
78
86
|
|
|
79
87
|
@Column({
|
package/src/entities/Plan.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from 'typeorm'
|
|
9
9
|
import { Company } from './Company'
|
|
10
10
|
import { LocalPlan } from '..'
|
|
11
|
+
import { jsonTransformer } from '../transformers/jsonTransformer'
|
|
11
12
|
|
|
12
13
|
@Entity({
|
|
13
14
|
comment: 'Planes que tendrá la plataforma para las empresas (company)',
|
|
@@ -37,6 +38,7 @@ export class Plan {
|
|
|
37
38
|
|
|
38
39
|
@Column({
|
|
39
40
|
type: 'mediumtext',
|
|
41
|
+
transformer: jsonTransformer,
|
|
40
42
|
nullable: true,
|
|
41
43
|
comment:
|
|
42
44
|
'Campo de tipo JSON donde se guarda información necesaria para el plan',
|
package/src/interfaces.ts
CHANGED
package/src/utils.ts
CHANGED
|
@@ -9,3 +9,31 @@ export function getStatusVerifyLocalNumber(status: string) {
|
|
|
9
9
|
}
|
|
10
10
|
return statuses[status]
|
|
11
11
|
}
|
|
12
|
+
|
|
13
|
+
export function getStatusBasic(status: string) {
|
|
14
|
+
const statuses: any = {
|
|
15
|
+
Active: 1,
|
|
16
|
+
active: 1,
|
|
17
|
+
Inactive: 0,
|
|
18
|
+
inactive: 0,
|
|
19
|
+
Activo: 1,
|
|
20
|
+
activo: 1,
|
|
21
|
+
Inactivo: 0,
|
|
22
|
+
inactivo: 0,
|
|
23
|
+
}
|
|
24
|
+
return statuses[status] || status
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function getSeverityNameDiscountType(type: string) {
|
|
28
|
+
const types: any = {
|
|
29
|
+
Percentage: 1,
|
|
30
|
+
percentage: 1,
|
|
31
|
+
Porcentaje: 1,
|
|
32
|
+
porcentaje: 1,
|
|
33
|
+
Moneda: 2,
|
|
34
|
+
moneda: 2,
|
|
35
|
+
Currency: 1,
|
|
36
|
+
currency: 1,
|
|
37
|
+
}
|
|
38
|
+
return types[type] || type
|
|
39
|
+
}
|