@manticore-labs/nest 0.0.72 → 0.0.73

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 (236) hide show
  1. package/.circleci/config.yml +47 -47
  2. package/.idea/codeStyles/Project.xml +37 -37
  3. package/.idea/codeStyles/codeStyleConfig.xml +4 -4
  4. package/.idea/encodings.xml +3 -3
  5. package/.idea/inspectionProfiles/Project_Default.xml +5 -5
  6. package/.idea/manticore-labs-nest.iml +11 -11
  7. package/.idea/misc.xml +5 -5
  8. package/.idea/modules.xml +7 -7
  9. package/.idea/vcs.xml +5 -5
  10. package/.idea/workspace.xml +77 -399
  11. package/LICENSE +8 -8
  12. package/README.1.md +116 -116
  13. package/README.md +1 -1
  14. package/build/main/index.d.ts +42 -42
  15. package/build/main/index.js +25 -25
  16. package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.d.ts +5 -5
  17. package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +24 -24
  18. package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.d.ts +5 -5
  19. package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +24 -24
  20. package/build/main/lib/auth0/auth0.controller.d.ts +40 -40
  21. package/build/main/lib/auth0/auth0.controller.js +537 -537
  22. package/build/main/lib/auth0/auth0.service.d.ts +69 -69
  23. package/build/main/lib/auth0/auth0.service.js +604 -604
  24. package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.d.ts +5 -5
  25. package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +25 -25
  26. package/build/main/lib/auth0/interfaces/busqueda-nombre.d.ts +3 -3
  27. package/build/main/lib/auth0/interfaces/busqueda-nombre.js +2 -2
  28. package/build/main/lib/auth0/interfaces/funciones-seguridad.d.ts +10 -10
  29. package/build/main/lib/auth0/interfaces/funciones-seguridad.js +2 -2
  30. package/build/main/lib/auth0/interfaces/mensajes-controlador.d.ts +5 -5
  31. package/build/main/lib/auth0/interfaces/mensajes-controlador.js +2 -2
  32. package/build/main/lib/auth0/seguridad-jwt-moviles/check-jwt.d.ts +2 -2
  33. package/build/main/lib/auth0/seguridad-jwt-moviles/check-jwt.js +7 -7
  34. package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.d.ts +1 -1
  35. package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.js +3 -3
  36. package/build/main/lib/funciones-util/buscar-registro.d.ts +1 -1
  37. package/build/main/lib/funciones-util/buscar-registro.js +492 -440
  38. package/build/main/lib/funciones-util/buscar-un-registro-por-id.d.ts +1 -1
  39. package/build/main/lib/funciones-util/buscar-un-registro-por-id.js +25 -25
  40. package/build/main/lib/funciones-util/buscar-where-or.d.ts +1 -1
  41. package/build/main/lib/funciones-util/buscar-where-or.js +33 -33
  42. package/build/main/lib/funciones-util/contar-registros.d.ts +1 -1
  43. package/build/main/lib/funciones-util/contar-registros.js +41 -41
  44. package/build/main/lib/funciones-util/crear-un-registro.d.ts +1 -1
  45. package/build/main/lib/funciones-util/crear-un-registro.js +24 -24
  46. package/build/main/lib/funciones-util/editar-un-registro.d.ts +1 -1
  47. package/build/main/lib/funciones-util/editar-un-registro.js +24 -24
  48. package/build/main/lib/funciones-util/eliminar-uno.d.ts +1 -1
  49. package/build/main/lib/funciones-util/eliminar-uno.js +35 -35
  50. package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.d.ts +2 -2
  51. package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +21 -21
  52. package/build/main/lib/interfaces-util/arreglo-funciones-booleanas.d.ts +4 -4
  53. package/build/main/lib/interfaces-util/arreglo-funciones-booleanas.js +2 -2
  54. package/build/main/lib/interfaces-util/broadcast-join.gateway.d.ts +14 -14
  55. package/build/main/lib/interfaces-util/broadcast-join.gateway.js +2 -2
  56. package/build/main/lib/interfaces-util/campos-a-buscar.d.ts +9 -9
  57. package/build/main/lib/interfaces-util/campos-a-buscar.js +9 -9
  58. package/build/main/lib/interfaces-util/delete-service.d.ts +12 -12
  59. package/build/main/lib/interfaces-util/delete-service.js +2 -2
  60. package/build/main/lib/interfaces-util/dto.d.ts +4 -4
  61. package/build/main/lib/interfaces-util/dto.js +2 -2
  62. package/build/main/lib/interfaces-util/find-where-relations.d.ts +9 -9
  63. package/build/main/lib/interfaces-util/find-where-relations.js +2 -2
  64. package/build/main/lib/interfaces-util/funciones-seguridad.d.ts +13 -13
  65. package/build/main/lib/interfaces-util/funciones-seguridad.js +2 -2
  66. package/build/main/lib/interfaces-util/funciones.gateway.d.ts +5 -5
  67. package/build/main/lib/interfaces-util/funciones.gateway.js +2 -2
  68. package/build/main/lib/interfaces-util/mensajes-controller.d.ts +6 -6
  69. package/build/main/lib/interfaces-util/mensajes-controller.js +2 -2
  70. package/build/main/lib/interfaces-util/politicas-de-seguridad.d.ts +17 -17
  71. package/build/main/lib/interfaces-util/politicas-de-seguridad.js +2 -2
  72. package/build/main/lib/interfaces-util/respuesta-general.gateway.d.ts +5 -5
  73. package/build/main/lib/interfaces-util/respuesta-general.gateway.js +2 -2
  74. package/build/main/lib/menu/entities/menu-entity.d.ts +13 -13
  75. package/build/main/lib/menu/entities/menu-entity.js +93 -93
  76. package/build/main/lib/one-signal/interfaces/funciones-seguridad.d.ts +9 -9
  77. package/build/main/lib/one-signal/interfaces/funciones-seguridad.js +2 -2
  78. package/build/main/lib/one-signal/interfaces/one-signal-device.d.ts +19 -19
  79. package/build/main/lib/one-signal/interfaces/one-signal-device.js +2 -2
  80. package/build/main/lib/one-signal/interfaces/one-signal-notification.d.ts +15 -15
  81. package/build/main/lib/one-signal/interfaces/one-signal-notification.js +2 -2
  82. package/build/main/lib/one-signal/interfaces/one-signal-notifications.d.ts +7 -7
  83. package/build/main/lib/one-signal/interfaces/one-signal-notifications.js +2 -2
  84. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.d.ts +5 -5
  85. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.js +2 -2
  86. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification.d.ts +4 -4
  87. package/build/main/lib/one-signal/interfaces/one-signal-ok-create-notification.js +2 -2
  88. package/build/main/lib/one-signal/interfaces/one-signal-success.d.ts +3 -3
  89. package/build/main/lib/one-signal/interfaces/one-signal-success.js +2 -2
  90. package/build/main/lib/one-signal/interfaces/one-signal-tags.d.ts +3 -3
  91. package/build/main/lib/one-signal/interfaces/one-signal-tags.js +2 -2
  92. package/build/main/lib/one-signal/interfaces/one-signal-view-devices.d.ts +7 -7
  93. package/build/main/lib/one-signal/interfaces/one-signal-view-devices.js +2 -2
  94. package/build/main/lib/one-signal/one-signal.controller.d.ts +15 -15
  95. package/build/main/lib/one-signal/one-signal.controller.js +250 -250
  96. package/build/main/lib/one-signal/one-signal.service.d.ts +32 -32
  97. package/build/main/lib/one-signal/one-signal.service.js +84 -84
  98. package/build/main/lib/politicas/revisar-si-tiene-nombre-permiso.d.ts +1 -1
  99. package/build/main/lib/politicas/revisar-si-tiene-nombre-permiso.js +9 -9
  100. package/build/main/lib/politicas/revisar-si-tiene-rol.d.ts +1 -1
  101. package/build/main/lib/politicas/revisar-si-tiene-rol.js +9 -9
  102. package/build/main/lib/principal.controller.d.ts +20 -20
  103. package/build/main/lib/principal.controller.js +309 -309
  104. package/build/main/lib/principal.dto.d.ts +5 -5
  105. package/build/main/lib/principal.dto.js +21 -21
  106. package/build/main/lib/principal.entity.d.ts +7 -7
  107. package/build/main/lib/principal.entity.js +42 -42
  108. package/build/main/lib/principal.find-many-options.d.ts +14 -14
  109. package/build/main/lib/principal.find-many-options.js +48 -48
  110. package/build/main/lib/principal.find-many-where-or.d.ts +10 -10
  111. package/build/main/lib/principal.find-many-where-or.js +28 -28
  112. package/build/main/lib/principal.gateway.d.ts +35 -35
  113. package/build/main/lib/principal.gateway.js +399 -399
  114. package/build/main/lib/principal.id.d.ts +3 -3
  115. package/build/main/lib/principal.id.js +16 -16
  116. package/build/main/lib/principal.resolver.d.ts +21 -21
  117. package/build/main/lib/principal.resolver.js +343 -343
  118. package/build/main/lib/principal.service.d.ts +38 -38
  119. package/build/main/lib/principal.service.js +261 -256
  120. package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.d.ts +4 -4
  121. package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.js +16 -16
  122. package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.d.ts +3 -3
  123. package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +30 -30
  124. package/build/main/lib/seguridad/funciones/index.d.ts +6 -6
  125. package/build/main/lib/seguridad/funciones/index.js +12 -12
  126. package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.d.ts +1 -1
  127. package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.js +6 -6
  128. package/build/main/lib/seguridad/funciones/obtener-request.d.ts +1 -1
  129. package/build/main/lib/seguridad/funciones/obtener-request.js +6 -6
  130. package/build/main/lib/seguridad/funciones/obtener-response.d.ts +1 -1
  131. package/build/main/lib/seguridad/funciones/obtener-response.js +6 -6
  132. package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.d.ts +2 -2
  133. package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.js +13 -13
  134. package/build/main/lib/seguridad/seguridad.decorator.d.ts +1 -1
  135. package/build/main/lib/seguridad/seguridad.decorator.js +4 -4
  136. package/build/module/index.d.ts +42 -42
  137. package/build/module/index.js +20 -20
  138. package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.d.ts +5 -5
  139. package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +21 -21
  140. package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.d.ts +5 -5
  141. package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +21 -21
  142. package/build/module/lib/auth0/auth0.controller.d.ts +40 -40
  143. package/build/module/lib/auth0/auth0.controller.js +535 -535
  144. package/build/module/lib/auth0/auth0.service.d.ts +69 -69
  145. package/build/module/lib/auth0/auth0.service.js +603 -603
  146. package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.d.ts +5 -5
  147. package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +22 -22
  148. package/build/module/lib/auth0/interfaces/busqueda-nombre.d.ts +3 -3
  149. package/build/module/lib/auth0/interfaces/funciones-seguridad.d.ts +10 -10
  150. package/build/module/lib/auth0/interfaces/mensajes-controlador.d.ts +5 -5
  151. package/build/module/lib/auth0/seguridad-jwt-moviles/check-jwt.d.ts +2 -2
  152. package/build/module/lib/auth0/seguridad-jwt-moviles/check-jwt.js +4 -4
  153. package/build/module/lib/expresiones-regulares/letras-espacios-tildes-enie.d.ts +1 -1
  154. package/build/module/lib/expresiones-regulares/letras-espacios-tildes-enie.js +1 -1
  155. package/build/module/lib/funciones-util/buscar-registro.d.ts +1 -1
  156. package/build/module/lib/funciones-util/buscar-registro.js +489 -437
  157. package/build/module/lib/funciones-util/buscar-un-registro-por-id.d.ts +1 -1
  158. package/build/module/lib/funciones-util/buscar-un-registro-por-id.js +22 -22
  159. package/build/module/lib/funciones-util/buscar-where-or.d.ts +1 -1
  160. package/build/module/lib/funciones-util/buscar-where-or.js +30 -30
  161. package/build/module/lib/funciones-util/contar-registros.d.ts +1 -1
  162. package/build/module/lib/funciones-util/contar-registros.js +38 -38
  163. package/build/module/lib/funciones-util/crear-un-registro.d.ts +1 -1
  164. package/build/module/lib/funciones-util/crear-un-registro.js +21 -21
  165. package/build/module/lib/funciones-util/editar-un-registro.d.ts +1 -1
  166. package/build/module/lib/funciones-util/editar-un-registro.js +21 -21
  167. package/build/module/lib/funciones-util/eliminar-uno.d.ts +1 -1
  168. package/build/module/lib/funciones-util/eliminar-uno.js +32 -32
  169. package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.d.ts +2 -2
  170. package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +18 -18
  171. package/build/module/lib/interfaces-util/arreglo-funciones-booleanas.d.ts +4 -4
  172. package/build/module/lib/interfaces-util/broadcast-join.gateway.d.ts +14 -14
  173. package/build/module/lib/interfaces-util/campos-a-buscar.d.ts +9 -9
  174. package/build/module/lib/interfaces-util/campos-a-buscar.js +6 -6
  175. package/build/module/lib/interfaces-util/delete-service.d.ts +12 -12
  176. package/build/module/lib/interfaces-util/dto.d.ts +4 -4
  177. package/build/module/lib/interfaces-util/find-where-relations.d.ts +9 -9
  178. package/build/module/lib/interfaces-util/funciones-seguridad.d.ts +13 -13
  179. package/build/module/lib/interfaces-util/funciones.gateway.d.ts +5 -5
  180. package/build/module/lib/interfaces-util/mensajes-controller.d.ts +6 -6
  181. package/build/module/lib/interfaces-util/politicas-de-seguridad.d.ts +17 -17
  182. package/build/module/lib/interfaces-util/respuesta-general.gateway.d.ts +5 -5
  183. package/build/module/lib/menu/entities/menu-entity.d.ts +13 -13
  184. package/build/module/lib/menu/entities/menu-entity.js +90 -90
  185. package/build/module/lib/one-signal/interfaces/funciones-seguridad.d.ts +9 -9
  186. package/build/module/lib/one-signal/interfaces/one-signal-device.d.ts +19 -19
  187. package/build/module/lib/one-signal/interfaces/one-signal-notification.d.ts +15 -15
  188. package/build/module/lib/one-signal/interfaces/one-signal-notifications.d.ts +7 -7
  189. package/build/module/lib/one-signal/interfaces/one-signal-ok-create-notification-no-players.d.ts +5 -5
  190. package/build/module/lib/one-signal/interfaces/one-signal-ok-create-notification.d.ts +4 -4
  191. package/build/module/lib/one-signal/interfaces/one-signal-success.d.ts +3 -3
  192. package/build/module/lib/one-signal/interfaces/one-signal-tags.d.ts +3 -3
  193. package/build/module/lib/one-signal/interfaces/one-signal-view-devices.d.ts +7 -7
  194. package/build/module/lib/one-signal/one-signal.controller.d.ts +15 -15
  195. package/build/module/lib/one-signal/one-signal.controller.js +248 -248
  196. package/build/module/lib/one-signal/one-signal.service.d.ts +32 -32
  197. package/build/module/lib/one-signal/one-signal.service.js +82 -82
  198. package/build/module/lib/politicas/revisar-si-tiene-nombre-permiso.d.ts +1 -1
  199. package/build/module/lib/politicas/revisar-si-tiene-nombre-permiso.js +6 -6
  200. package/build/module/lib/politicas/revisar-si-tiene-rol.d.ts +1 -1
  201. package/build/module/lib/politicas/revisar-si-tiene-rol.js +6 -6
  202. package/build/module/lib/principal.controller.d.ts +20 -20
  203. package/build/module/lib/principal.controller.js +306 -306
  204. package/build/module/lib/principal.dto.d.ts +5 -5
  205. package/build/module/lib/principal.dto.js +18 -18
  206. package/build/module/lib/principal.entity.d.ts +7 -7
  207. package/build/module/lib/principal.entity.js +39 -39
  208. package/build/module/lib/principal.find-many-options.d.ts +14 -14
  209. package/build/module/lib/principal.find-many-options.js +45 -45
  210. package/build/module/lib/principal.find-many-where-or.d.ts +10 -10
  211. package/build/module/lib/principal.find-many-where-or.js +25 -25
  212. package/build/module/lib/principal.gateway.d.ts +35 -35
  213. package/build/module/lib/principal.gateway.js +396 -396
  214. package/build/module/lib/principal.id.d.ts +3 -3
  215. package/build/module/lib/principal.id.js +13 -13
  216. package/build/module/lib/principal.resolver.d.ts +21 -21
  217. package/build/module/lib/principal.resolver.js +340 -340
  218. package/build/module/lib/principal.service.d.ts +38 -38
  219. package/build/module/lib/principal.service.js +258 -253
  220. package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.d.ts +4 -4
  221. package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.js +13 -13
  222. package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.d.ts +3 -3
  223. package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +27 -27
  224. package/build/module/lib/seguridad/funciones/index.d.ts +6 -6
  225. package/build/module/lib/seguridad/funciones/index.js +6 -6
  226. package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.d.ts +1 -1
  227. package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.js +3 -3
  228. package/build/module/lib/seguridad/funciones/obtener-request.d.ts +1 -1
  229. package/build/module/lib/seguridad/funciones/obtener-request.js +3 -3
  230. package/build/module/lib/seguridad/funciones/obtener-response.d.ts +1 -1
  231. package/build/module/lib/seguridad/funciones/obtener-response.js +3 -3
  232. package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.d.ts +2 -2
  233. package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.js +10 -10
  234. package/build/module/lib/seguridad/seguridad.decorator.d.ts +1 -1
  235. package/build/module/lib/seguridad/seguridad.decorator.js +2 -2
  236. package/package.json +117 -116
@@ -1,440 +1,492 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const class_validator_1 = require("class-validator");
4
- const class_transformer_1 = require("class-transformer");
5
- const typeorm_1 = require("typeorm");
6
- async function buscarVariosRegistros(criterioBusqueda, PrincipalFindManyOptions, skip, take, servicio) {
7
- let existeErrorEnConvertirAJSON = false;
8
- const criterioBusquedaNoEsUnObjeto = typeof criterioBusqueda !== 'object';
9
- if (criterioBusquedaNoEsUnObjeto) {
10
- try {
11
- criterioBusqueda = JSON.parse(criterioBusqueda);
12
- }
13
- catch (e) {
14
- existeErrorEnConvertirAJSON = true;
15
- }
16
- }
17
- if (existeErrorEnConvertirAJSON) {
18
- console.error('Error: Formateando JSON, se busca con parametros default');
19
- const criterioBusquedaPorDefecto = {
20
- skip: skip,
21
- take: take
22
- };
23
- criterioBusqueda = criterioBusquedaPorDefecto;
24
- return servicio.find(criterioBusqueda);
25
- }
26
- else {
27
- const criterioBusquedaClase = class_transformer_1.plainToClass(PrincipalFindManyOptions, criterioBusqueda);
28
- const errors = await class_validator_1.validate(criterioBusquedaClase);
29
- const busquedaClasetieneAlMenosUnError = errors.length > 0;
30
- if (busquedaClasetieneAlMenosUnError) {
31
- console.error('Error: Error en criterios de busqueda, se busca con parametros default', errors);
32
- criterioBusqueda = {
33
- skip: skip,
34
- take: take
35
- };
36
- return servicio.find(criterioBusqueda);
37
- }
38
- else {
39
- if (criterioBusquedaClase.where) {
40
- if (Array.isArray(criterioBusquedaClase.where)) {
41
- criterioBusquedaClase
42
- .where
43
- .forEach((busqueda, indice) => {
44
- Object
45
- .keys(busqueda)
46
- .forEach((campo) => {
47
- let noEncuentraOperador = true;
48
- let campoEsTexto = typeof criterioBusquedaClase.where[indice][campo] === 'string';
49
- if (noEncuentraOperador && campoEsTexto) {
50
- const expresionRegularNot = /Not\(".+"\)+/g;
51
- const contieneNot = criterioBusquedaClase.where[indice][campo].match(expresionRegularNot);
52
- if (contieneNot && noEncuentraOperador) {
53
- const sinNot = criterioBusquedaClase.where[indice][campo].replace('Not("', '').replace('")', '');
54
- if (noEncuentraOperador && campoEsTexto) {
55
- const expresionRegularLike = /Like\(".+"\)+/g;
56
- const contieneLike = sinNot.match(expresionRegularLike);
57
- if (contieneLike) {
58
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Like(sinNot.replace('Like("', '').replace('")', '')));
59
- noEncuentraOperador = false;
60
- }
61
- }
62
- if (noEncuentraOperador && campoEsTexto) {
63
- const expresionRegularLessThan = /LessThan\(".+"\)+/g;
64
- const contieneLessThan = sinNot.match(expresionRegularLessThan);
65
- if (contieneLessThan) {
66
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.LessThan(sinNot.replace('LessThan("', '').replace('")', '')));
67
- noEncuentraOperador = false;
68
- }
69
- }
70
- if (noEncuentraOperador && campoEsTexto) {
71
- const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
72
- const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
73
- if (contieneMoreThan) {
74
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.MoreThan(sinNot.replace('MoreThan("', '').replace('")', '')));
75
- noEncuentraOperador = false;
76
- }
77
- }
78
- if (noEncuentraOperador && campoEsTexto) {
79
- const expresionRegularEqual = /Equal\(".+"\)+/g;
80
- const contieneEqual = sinNot.match(expresionRegularEqual);
81
- if (contieneEqual) {
82
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Equal(sinNot.replace('Equal("', '').replace('")', '')));
83
- noEncuentraOperador = false;
84
- }
85
- }
86
- if (noEncuentraOperador && campoEsTexto) {
87
- const expresionRegularBetween = /Between\(".+"\)+/g;
88
- const contieneBetween = sinNot.match(expresionRegularBetween);
89
- if (contieneBetween) {
90
- const busqueda = [...sinNot
91
- .replace('Between("', '')
92
- .replace('")', '')
93
- .replace(' ', '')
94
- .split(',')
95
- .map((n) => +n)];
96
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Between(busqueda[0], busqueda[1]));
97
- noEncuentraOperador = false;
98
- }
99
- }
100
- if (noEncuentraOperador && campoEsTexto) {
101
- const expresionRegularIn = /In\(.+\)+/g;
102
- const contieneIn = sinNot.match(expresionRegularIn);
103
- if (contieneIn) {
104
- let arreglo;
105
- try {
106
- arreglo = JSON.parse(sinNot
107
- .replace('In(', '')
108
- .replace('])', ']'));
109
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.In(arreglo));
110
- noEncuentraOperador = false;
111
- }
112
- catch (e) {
113
- console.log('Error formateando clausula IN');
114
- console.log(e);
115
- }
116
- }
117
- }
118
- if (noEncuentraOperador && campoEsTexto) {
119
- const expresionRegularAny = /Any\(.+\)+/g;
120
- const contieneAny = sinNot.match(expresionRegularAny);
121
- if (contieneAny) {
122
- let arreglo;
123
- try {
124
- arreglo = JSON.parse(sinNot
125
- .replace('Any(', '')
126
- .replace(')', ''));
127
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Any(arreglo));
128
- noEncuentraOperador = false;
129
- }
130
- catch (e) {
131
- console.log('Error formateando clausula ANY');
132
- console.log(e);
133
- }
134
- }
135
- }
136
- if (noEncuentraOperador && campoEsTexto) {
137
- const expresionRegularIsNull = /IsNull\(".+"\)+/g;
138
- const contieneIsNull = sinNot.match(expresionRegularIsNull);
139
- if (contieneIsNull) {
140
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.IsNull());
141
- noEncuentraOperador = false;
142
- }
143
- }
144
- }
145
- } // Fin de NOT
146
- if (noEncuentraOperador && campoEsTexto) {
147
- const expresionRegularLike = /Like\(".+"\)+/g;
148
- const contieneLike = criterioBusquedaClase.where[indice][campo].match(expresionRegularLike);
149
- if (contieneLike) {
150
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Like(criterioBusquedaClase.where[indice][campo].replace('Like("', '').replace('")', ''));
151
- noEncuentraOperador = false;
152
- }
153
- }
154
- if (noEncuentraOperador && campoEsTexto) {
155
- const expresionRegularLessThan = /LessThan\(".+"\)+/g;
156
- const contieneLessThan = criterioBusquedaClase.where[indice][campo].match(expresionRegularLessThan);
157
- if (contieneLessThan) {
158
- criterioBusquedaClase.where[indice][campo] = typeorm_1.LessThan(criterioBusquedaClase.where[indice][campo].replace('LessThan("', '').replace('")', ''));
159
- noEncuentraOperador = false;
160
- }
161
- }
162
- if (noEncuentraOperador && campoEsTexto) {
163
- const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
164
- const contieneMoreThan = criterioBusquedaClase.where[indice][campo].match(expresionRegularMoreThan);
165
- if (contieneMoreThan) {
166
- criterioBusquedaClase.where[indice][campo] = typeorm_1.MoreThan(criterioBusquedaClase.where[indice][campo].replace('MoreThan("', '').replace('")', ''));
167
- noEncuentraOperador = false;
168
- }
169
- }
170
- if (noEncuentraOperador && campoEsTexto) {
171
- const expresionRegularEqual = /Equal\(".+"\)+/g;
172
- const contieneEqual = criterioBusquedaClase.where[indice][campo].match(expresionRegularEqual);
173
- if (contieneEqual) {
174
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Equal(criterioBusquedaClase.where[indice][campo].replace('Equal("', '').replace('")', ''));
175
- noEncuentraOperador = false;
176
- }
177
- }
178
- if (noEncuentraOperador && campoEsTexto) {
179
- const expresionRegularBetween = /Between\(".+"\)+/g;
180
- const contieneBetween = criterioBusquedaClase.where[indice][campo].match(expresionRegularBetween);
181
- if (contieneBetween) {
182
- const busqueda = [...criterioBusquedaClase.where[indice][campo]
183
- .replace('Between("', '')
184
- .replace('")', '')
185
- .replace(' ', '')
186
- .split(',')
187
- .map((n) => +n)];
188
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Between(busqueda[0], busqueda[1]);
189
- noEncuentraOperador = false;
190
- }
191
- }
192
- if (noEncuentraOperador && campoEsTexto) {
193
- const expresionRegularIn = /In\(.+\)+/g;
194
- const contieneIn = criterioBusquedaClase.where[indice][campo].match(expresionRegularIn);
195
- if (contieneIn) {
196
- let arreglo;
197
- try {
198
- arreglo = JSON.parse(criterioBusquedaClase.where[indice][campo]
199
- .replace('In(', '')
200
- .replace('])', ']'));
201
- criterioBusquedaClase.where[indice][campo] = typeorm_1.In(arreglo);
202
- noEncuentraOperador = false;
203
- }
204
- catch (e) {
205
- console.log(e);
206
- }
207
- }
208
- }
209
- if (noEncuentraOperador && campoEsTexto) {
210
- const expresionRegularAny = /Any\(.+\)+/g;
211
- const contieneAny = criterioBusquedaClase.where[indice][campo].match(expresionRegularAny);
212
- if (contieneAny) {
213
- let arreglo;
214
- try {
215
- arreglo = JSON.parse(criterioBusquedaClase.where[indice][campo]
216
- .replace('Any(', '')
217
- .replace(')', ''));
218
- criterioBusquedaClase.where[indice][campo] = typeorm_1.Any(arreglo);
219
- noEncuentraOperador = false;
220
- }
221
- catch (e) {
222
- console.log(e);
223
- }
224
- }
225
- }
226
- if (noEncuentraOperador && campoEsTexto) {
227
- const expresionRegularIsNull = /IsNull\(".+"\)+/g;
228
- const contieneIsNull = criterioBusquedaClase.where[indice][campo].match(expresionRegularIsNull);
229
- if (contieneIsNull) {
230
- criterioBusquedaClase.where[indice][campo] = typeorm_1.IsNull();
231
- noEncuentraOperador = false;
232
- }
233
- }
234
- });
235
- });
236
- }
237
- else {
238
- Object
239
- .keys(criterioBusquedaClase.where)
240
- .forEach((campo) => {
241
- let noEncuentraOperador = true;
242
- let campoEsTexto = typeof criterioBusquedaClase.where[campo] === 'string';
243
- if (noEncuentraOperador && campoEsTexto) {
244
- const expresionRegularNot = /Not\(".+"\)+/g;
245
- const contieneNot = criterioBusquedaClase.where[campo].match(expresionRegularNot);
246
- if (contieneNot && noEncuentraOperador) {
247
- // criterioBusquedaClase.where[campo] = Not(
248
- // criterioBusquedaClase.where[campo].replace('Not("', '').replace('")', '')
249
- // );
250
- // noEncuentraOperador = false;
251
- const sinNot = criterioBusquedaClase.where[campo].replace('Not("', '').replace('")', '');
252
- if (noEncuentraOperador && campoEsTexto) {
253
- const expresionRegularLike = /Like\(".+"\)+/g;
254
- const contieneLike = sinNot.match(expresionRegularLike);
255
- if (contieneLike) {
256
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Like(sinNot.replace('Like("', '').replace('")', '')));
257
- noEncuentraOperador = false;
258
- }
259
- }
260
- if (noEncuentraOperador && campoEsTexto) {
261
- const expresionRegularLessThan = /LessThan\(".+"\)+/g;
262
- const contieneLessThan = sinNot.match(expresionRegularLessThan);
263
- if (contieneLessThan) {
264
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.LessThan(sinNot.replace('LessThan("', '').replace('")', '')));
265
- noEncuentraOperador = false;
266
- }
267
- }
268
- if (noEncuentraOperador && campoEsTexto) {
269
- const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
270
- const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
271
- if (contieneMoreThan) {
272
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.MoreThan(sinNot.replace('MoreThan("', '').replace('")', '')));
273
- noEncuentraOperador = false;
274
- }
275
- }
276
- if (noEncuentraOperador && campoEsTexto) {
277
- const expresionRegularEqual = /Equal\(".+"\)+/g;
278
- const contieneEqual = sinNot.match(expresionRegularEqual);
279
- if (contieneEqual) {
280
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Equal(sinNot.replace('Equal("', '').replace('")', '')));
281
- noEncuentraOperador = false;
282
- }
283
- }
284
- if (noEncuentraOperador && campoEsTexto) {
285
- const expresionRegularBetween = /Between\(".+"\)+/g;
286
- const contieneBetween = sinNot.match(expresionRegularBetween);
287
- if (contieneBetween) {
288
- const busqueda = [...sinNot
289
- .replace('Between("', '')
290
- .replace('")', '')
291
- .replace(' ', '')
292
- .split(',')
293
- .map((n) => +n)];
294
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Between(busqueda[0], busqueda[1]));
295
- noEncuentraOperador = false;
296
- }
297
- }
298
- if (noEncuentraOperador && campoEsTexto) {
299
- const expresionRegularIn = /In\(.+\)+/g;
300
- const contieneIn = sinNot.match(expresionRegularIn);
301
- if (contieneIn) {
302
- let arreglo;
303
- try {
304
- arreglo = JSON.parse(sinNot
305
- .replace('In(', '')
306
- .replace('])', ']'));
307
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.In(arreglo));
308
- noEncuentraOperador = false;
309
- }
310
- catch (e) {
311
- console.log('Error formateando clausula IN');
312
- console.log(e);
313
- }
314
- }
315
- }
316
- if (noEncuentraOperador && campoEsTexto) {
317
- const expresionRegularAny = /Any\(.+\)+/g;
318
- const contieneAny = sinNot.match(expresionRegularAny);
319
- if (contieneAny) {
320
- let arreglo;
321
- try {
322
- arreglo = JSON.parse(sinNot
323
- .replace('Any(', '')
324
- .replace(')', ''));
325
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Any(arreglo));
326
- noEncuentraOperador = false;
327
- }
328
- catch (e) {
329
- console.log('Error formateando clausula ANY');
330
- console.log(e);
331
- }
332
- }
333
- }
334
- if (noEncuentraOperador && campoEsTexto) {
335
- const expresionRegularIsNull = /IsNull\(".+"\)+/g;
336
- const contieneIsNull = sinNot.match(expresionRegularIsNull);
337
- if (contieneIsNull) {
338
- criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.IsNull());
339
- noEncuentraOperador = false;
340
- }
341
- }
342
- }
343
- } // Fin de NOT
344
- if (noEncuentraOperador && campoEsTexto) {
345
- const expresionRegularLike = /Like\(".+"\)+/g;
346
- const contieneLike = criterioBusquedaClase.where[campo].match(expresionRegularLike);
347
- if (contieneLike) {
348
- criterioBusquedaClase.where[campo] = typeorm_1.Like(criterioBusquedaClase.where[campo].replace('Like("', '').replace('")', ''));
349
- noEncuentraOperador = false;
350
- }
351
- }
352
- if (noEncuentraOperador && campoEsTexto) {
353
- const expresionRegularLessThan = /LessThan\(".+"\)+/g;
354
- const contieneLessThan = criterioBusquedaClase.where[campo].match(expresionRegularLessThan);
355
- if (contieneLessThan) {
356
- criterioBusquedaClase.where[campo] = typeorm_1.LessThan(criterioBusquedaClase.where[campo].replace('LessThan("', '').replace('")', ''));
357
- noEncuentraOperador = false;
358
- }
359
- }
360
- if (noEncuentraOperador && campoEsTexto) {
361
- const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
362
- const contieneMoreThan = criterioBusquedaClase.where[campo].match(expresionRegularMoreThan);
363
- if (contieneMoreThan) {
364
- criterioBusquedaClase.where[campo] = typeorm_1.MoreThan(criterioBusquedaClase.where[campo].replace('MoreThan("', '').replace('")', ''));
365
- noEncuentraOperador = false;
366
- }
367
- }
368
- if (noEncuentraOperador && campoEsTexto) {
369
- const expresionRegularEqual = /Equal\(".+"\)+/g;
370
- const contieneEqual = criterioBusquedaClase.where[campo].match(expresionRegularEqual);
371
- if (contieneEqual) {
372
- criterioBusquedaClase.where[campo] = typeorm_1.Equal(criterioBusquedaClase.where[campo].replace('Equal("', '').replace('")', ''));
373
- noEncuentraOperador = false;
374
- }
375
- }
376
- if (noEncuentraOperador && campoEsTexto) {
377
- const expresionRegularBetween = /Between\(".+"\)+/g;
378
- const contieneBetween = criterioBusquedaClase.where[campo].match(expresionRegularBetween);
379
- if (contieneBetween) {
380
- const busqueda = [...criterioBusquedaClase.where[campo]
381
- .replace('Between("', '')
382
- .replace('")', '')
383
- .replace(' ', '')
384
- .split(',')
385
- .map((n) => +n)];
386
- criterioBusquedaClase.where[campo] = typeorm_1.Between(busqueda[0], busqueda[1]);
387
- noEncuentraOperador = false;
388
- }
389
- }
390
- if (noEncuentraOperador && campoEsTexto) {
391
- const expresionRegularIn = /In\(.+\)+/g;
392
- const contieneIn = criterioBusquedaClase.where[campo].match(expresionRegularIn);
393
- if (contieneIn) {
394
- let arreglo;
395
- try {
396
- arreglo = JSON.parse(criterioBusquedaClase.where[campo]
397
- .replace('In(', '')
398
- .replace('])', ']'));
399
- criterioBusquedaClase.where[campo] = typeorm_1.In(arreglo);
400
- noEncuentraOperador = false;
401
- }
402
- catch (e) {
403
- console.log(e);
404
- }
405
- }
406
- }
407
- if (noEncuentraOperador && campoEsTexto) {
408
- const expresionRegularAny = /Any\(.+\)+/g;
409
- const contieneAny = criterioBusquedaClase.where[campo].match(expresionRegularAny);
410
- if (contieneAny) {
411
- let arreglo;
412
- try {
413
- arreglo = JSON.parse(criterioBusquedaClase.where[campo]
414
- .replace('Any(', '')
415
- .replace(')', ''));
416
- criterioBusquedaClase.where[campo] = typeorm_1.Any(arreglo);
417
- noEncuentraOperador = false;
418
- }
419
- catch (e) {
420
- console.log(e);
421
- }
422
- }
423
- }
424
- if (noEncuentraOperador && campoEsTexto) {
425
- const expresionRegularIsNull = /IsNull\(".+"\)+/g;
426
- const contieneIsNull = criterioBusquedaClase.where[campo].match(expresionRegularIsNull);
427
- if (contieneIsNull) {
428
- criterioBusquedaClase.where[campo] = typeorm_1.IsNull();
429
- noEncuentraOperador = false;
430
- }
431
- }
432
- });
433
- }
434
- }
435
- return servicio.find(criterioBusquedaClase);
436
- }
437
- }
438
- }
439
- exports.buscarVariosRegistros = buscarVariosRegistros;
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzY2FyLXJlZ2lzdHJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9idXNjYXItcmVnaXN0cm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBMkM7QUFDM0MseURBQWlEO0FBQ2pELHFDQUF5RjtBQUVsRixLQUFLLGdDQUFnQyxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVE7SUFDMUcsSUFBSSwyQkFBMkIsR0FBRyxLQUFLLENBQUM7SUFDeEMsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLGdCQUFnQixLQUFLLFFBQVEsQ0FBQztJQUUxRSxJQUFJLDRCQUE0QixFQUFFO1FBQ2hDLElBQUk7WUFDRixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDakQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLDJCQUEyQixHQUFHLElBQUksQ0FBQztTQUNwQztLQUNGO0lBRUQsSUFBSSwyQkFBMkIsRUFBRTtRQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDMUUsTUFBTSwwQkFBMEIsR0FBRztZQUNqQyxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLGdCQUFnQixHQUFHLDBCQUEwQixDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ3hDO1NBQU07UUFDTCxNQUFNLHFCQUFxQixHQUFRLGdDQUFZLENBQUMsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RixNQUFNLE1BQU0sR0FBRyxNQUFNLDBCQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNyRCxNQUFNLGdDQUFnQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksZ0NB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
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const class_validator_1 = require("class-validator");
4
+ const class_transformer_1 = require("class-transformer");
5
+ const typeorm_1 = require("typeorm");
6
+ async function buscarVariosRegistros(criterioBusqueda, PrincipalFindManyOptions, skip, take, servicio) {
7
+ let existeErrorEnConvertirAJSON = false;
8
+ const criterioBusquedaNoEsUnObjeto = typeof criterioBusqueda !== 'object';
9
+ if (criterioBusquedaNoEsUnObjeto) {
10
+ try {
11
+ criterioBusqueda = JSON.parse(criterioBusqueda);
12
+ }
13
+ catch (e) {
14
+ existeErrorEnConvertirAJSON = true;
15
+ }
16
+ }
17
+ if (existeErrorEnConvertirAJSON) {
18
+ console.error('Error: Formateando JSON, se busca con parametros default');
19
+ const criterioBusquedaPorDefecto = {
20
+ skip: skip,
21
+ take: take
22
+ };
23
+ criterioBusqueda = criterioBusquedaPorDefecto;
24
+ return servicio.find(criterioBusqueda);
25
+ }
26
+ else {
27
+ const criterioBusquedaClase = class_transformer_1.plainToClass(PrincipalFindManyOptions, criterioBusqueda);
28
+ const errors = await class_validator_1.validate(criterioBusquedaClase);
29
+ const busquedaClasetieneAlMenosUnError = errors.length > 0;
30
+ if (busquedaClasetieneAlMenosUnError) {
31
+ console.error('Error: Error en criterios de busqueda, se busca con parametros default', errors);
32
+ criterioBusqueda = {
33
+ skip: skip,
34
+ take: take
35
+ };
36
+ return servicio.find(criterioBusqueda);
37
+ }
38
+ else {
39
+ if (criterioBusquedaClase.where) {
40
+ if (Array.isArray(criterioBusquedaClase.where)) {
41
+ criterioBusquedaClase
42
+ .where
43
+ .forEach((busqueda, indice) => {
44
+ Object
45
+ .keys(busqueda)
46
+ .forEach((campo) => {
47
+ let noEncuentraOperador = true;
48
+ let campoEsTexto = typeof criterioBusquedaClase.where[indice][campo] === 'string';
49
+ if (noEncuentraOperador && campoEsTexto) {
50
+ const expresionRegularNot = /Not\(".+"\)+/g;
51
+ const contieneNot = criterioBusquedaClase.where[indice][campo].match(expresionRegularNot);
52
+ if (contieneNot && noEncuentraOperador) {
53
+ const sinNot = criterioBusquedaClase.where[indice][campo].replace('Not("', '').replace('")', '');
54
+ if (noEncuentraOperador && campoEsTexto) {
55
+ const expresionRegularLike = /Like\(".+"\)+/g;
56
+ const contieneLike = sinNot.match(expresionRegularLike);
57
+ if (contieneLike) {
58
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Like(sinNot.replace('Like("', '').replace('")', '')));
59
+ noEncuentraOperador = false;
60
+ }
61
+ }
62
+ if (noEncuentraOperador && campoEsTexto) {
63
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
64
+ const contieneLessThan = sinNot.match(expresionRegularLessThan);
65
+ if (contieneLessThan) {
66
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.LessThan(sinNot.replace('LessThan("', '').replace('")', '')));
67
+ noEncuentraOperador = false;
68
+ }
69
+ }
70
+ if (noEncuentraOperador && campoEsTexto) {
71
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
72
+ const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
73
+ if (contieneMoreThan) {
74
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.MoreThan(sinNot.replace('MoreThan("', '').replace('")', '')));
75
+ noEncuentraOperador = false;
76
+ }
77
+ }
78
+ if (noEncuentraOperador && campoEsTexto) {
79
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
80
+ const contieneEqual = sinNot.match(expresionRegularEqual);
81
+ if (contieneEqual) {
82
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Equal(sinNot.replace('Equal("', '').replace('")', '')));
83
+ noEncuentraOperador = false;
84
+ }
85
+ }
86
+ if (noEncuentraOperador && campoEsTexto) {
87
+ const expresionRegularBetween = /Between\(".+"\)+/g;
88
+ const contieneBetween = sinNot.match(expresionRegularBetween);
89
+ if (contieneBetween) {
90
+ const busqueda = [...sinNot
91
+ .replace('Between("', '')
92
+ .replace('")', '')
93
+ .replace(' ', '')
94
+ .split(',')
95
+ .map((n) => isNaN(n) ? n : +n)];
96
+ const esFecha = busqueda[0].length === 10 &&
97
+ busqueda[0].length === 10 &&
98
+ (typeof busqueda[0] === 'string') &&
99
+ (typeof busqueda[1] === 'string') &&
100
+ busqueda[0].match('-') &&
101
+ busqueda[1].match('-');
102
+ if (esFecha) {
103
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
104
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
105
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Between(fechaInicio, fechaFin));
106
+ }
107
+ else {
108
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Between(busqueda[0], busqueda[1]));
109
+ }
110
+ noEncuentraOperador = false;
111
+ }
112
+ }
113
+ if (noEncuentraOperador && campoEsTexto) {
114
+ const expresionRegularIn = /In\(.+\)+/g;
115
+ const contieneIn = sinNot.match(expresionRegularIn);
116
+ if (contieneIn) {
117
+ let arreglo;
118
+ try {
119
+ arreglo = JSON.parse(sinNot
120
+ .replace('In(', '')
121
+ .replace('])', ']'));
122
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.In(arreglo));
123
+ noEncuentraOperador = false;
124
+ }
125
+ catch (e) {
126
+ console.log('Error formateando clausula IN');
127
+ console.log(e);
128
+ }
129
+ }
130
+ }
131
+ if (noEncuentraOperador && campoEsTexto) {
132
+ const expresionRegularAny = /Any\(.+\)+/g;
133
+ const contieneAny = sinNot.match(expresionRegularAny);
134
+ if (contieneAny) {
135
+ let arreglo;
136
+ try {
137
+ arreglo = JSON.parse(sinNot
138
+ .replace('Any(', '')
139
+ .replace(')', ''));
140
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.Any(arreglo));
141
+ noEncuentraOperador = false;
142
+ }
143
+ catch (e) {
144
+ console.log('Error formateando clausula ANY');
145
+ console.log(e);
146
+ }
147
+ }
148
+ }
149
+ if (noEncuentraOperador && campoEsTexto) {
150
+ const expresionRegularIsNull = /IsNull\(".+"\)+/g;
151
+ const contieneIsNull = sinNot.match(expresionRegularIsNull);
152
+ if (contieneIsNull) {
153
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Not(typeorm_1.IsNull());
154
+ noEncuentraOperador = false;
155
+ }
156
+ }
157
+ }
158
+ } // Fin de NOT
159
+ if (noEncuentraOperador && campoEsTexto) {
160
+ const expresionRegularLike = /Like\(".+"\)+/g;
161
+ const contieneLike = criterioBusquedaClase.where[indice][campo].match(expresionRegularLike);
162
+ if (contieneLike) {
163
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Like(criterioBusquedaClase.where[indice][campo].replace('Like("', '').replace('")', ''));
164
+ noEncuentraOperador = false;
165
+ }
166
+ }
167
+ if (noEncuentraOperador && campoEsTexto) {
168
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
169
+ const contieneLessThan = criterioBusquedaClase.where[indice][campo].match(expresionRegularLessThan);
170
+ if (contieneLessThan) {
171
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.LessThan(criterioBusquedaClase.where[indice][campo].replace('LessThan("', '').replace('")', ''));
172
+ noEncuentraOperador = false;
173
+ }
174
+ }
175
+ if (noEncuentraOperador && campoEsTexto) {
176
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
177
+ const contieneMoreThan = criterioBusquedaClase.where[indice][campo].match(expresionRegularMoreThan);
178
+ if (contieneMoreThan) {
179
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.MoreThan(criterioBusquedaClase.where[indice][campo].replace('MoreThan("', '').replace('")', ''));
180
+ noEncuentraOperador = false;
181
+ }
182
+ }
183
+ if (noEncuentraOperador && campoEsTexto) {
184
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
185
+ const contieneEqual = criterioBusquedaClase.where[indice][campo].match(expresionRegularEqual);
186
+ if (contieneEqual) {
187
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Equal(criterioBusquedaClase.where[indice][campo].replace('Equal("', '').replace('")', ''));
188
+ noEncuentraOperador = false;
189
+ }
190
+ }
191
+ if (noEncuentraOperador && campoEsTexto) {
192
+ const expresionRegularBetween = /Between\(".+"\)+/g;
193
+ const contieneBetween = criterioBusquedaClase.where[indice][campo].match(expresionRegularBetween);
194
+ if (contieneBetween) {
195
+ const busqueda = [...criterioBusquedaClase.where[indice][campo]
196
+ .replace('Between("', '')
197
+ .replace('")', '')
198
+ .replace(' ', '')
199
+ .split(',')
200
+ .map((n) => isNaN(n) ? n : +n)];
201
+ const esFecha = busqueda[0].length === 10 &&
202
+ busqueda[0].length === 10 &&
203
+ (typeof busqueda[0] === 'string') &&
204
+ (typeof busqueda[1] === 'string') &&
205
+ busqueda[0].match('-') &&
206
+ busqueda[1].match('-');
207
+ if (esFecha) {
208
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
209
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
210
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Between(fechaInicio, fechaFin);
211
+ }
212
+ else {
213
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Between(busqueda[0], busqueda[1]);
214
+ }
215
+ noEncuentraOperador = false;
216
+ }
217
+ }
218
+ if (noEncuentraOperador && campoEsTexto) {
219
+ const expresionRegularIn = /In\(.+\)+/g;
220
+ const contieneIn = criterioBusquedaClase.where[indice][campo].match(expresionRegularIn);
221
+ if (contieneIn) {
222
+ let arreglo;
223
+ try {
224
+ arreglo = JSON.parse(criterioBusquedaClase.where[indice][campo]
225
+ .replace('In(', '')
226
+ .replace('])', ']'));
227
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.In(arreglo);
228
+ noEncuentraOperador = false;
229
+ }
230
+ catch (e) {
231
+ console.log(e);
232
+ }
233
+ }
234
+ }
235
+ if (noEncuentraOperador && campoEsTexto) {
236
+ const expresionRegularAny = /Any\(.+\)+/g;
237
+ const contieneAny = criterioBusquedaClase.where[indice][campo].match(expresionRegularAny);
238
+ if (contieneAny) {
239
+ let arreglo;
240
+ try {
241
+ arreglo = JSON.parse(criterioBusquedaClase.where[indice][campo]
242
+ .replace('Any(', '')
243
+ .replace(')', ''));
244
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.Any(arreglo);
245
+ noEncuentraOperador = false;
246
+ }
247
+ catch (e) {
248
+ console.log(e);
249
+ }
250
+ }
251
+ }
252
+ if (noEncuentraOperador && campoEsTexto) {
253
+ const expresionRegularIsNull = /IsNull\(".+"\)+/g;
254
+ const contieneIsNull = criterioBusquedaClase.where[indice][campo].match(expresionRegularIsNull);
255
+ if (contieneIsNull) {
256
+ criterioBusquedaClase.where[indice][campo] = typeorm_1.IsNull();
257
+ noEncuentraOperador = false;
258
+ }
259
+ }
260
+ });
261
+ });
262
+ }
263
+ else {
264
+ Object
265
+ .keys(criterioBusquedaClase.where)
266
+ .forEach((campo) => {
267
+ let noEncuentraOperador = true;
268
+ let campoEsTexto = typeof criterioBusquedaClase.where[campo] === 'string';
269
+ if (noEncuentraOperador && campoEsTexto) {
270
+ const expresionRegularNot = /Not\(".+"\)+/g;
271
+ const contieneNot = criterioBusquedaClase.where[campo].match(expresionRegularNot);
272
+ if (contieneNot && noEncuentraOperador) {
273
+ // criterioBusquedaClase.where[campo] = Not(
274
+ // criterioBusquedaClase.where[campo].replace('Not("', '').replace('")', '')
275
+ // );
276
+ // noEncuentraOperador = false;
277
+ const sinNot = criterioBusquedaClase.where[campo].replace('Not("', '').replace('")', '');
278
+ if (noEncuentraOperador && campoEsTexto) {
279
+ const expresionRegularLike = /Like\(".+"\)+/g;
280
+ const contieneLike = sinNot.match(expresionRegularLike);
281
+ if (contieneLike) {
282
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Like(sinNot.replace('Like("', '').replace('")', '')));
283
+ noEncuentraOperador = false;
284
+ }
285
+ }
286
+ if (noEncuentraOperador && campoEsTexto) {
287
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
288
+ const contieneLessThan = sinNot.match(expresionRegularLessThan);
289
+ if (contieneLessThan) {
290
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.LessThan(sinNot.replace('LessThan("', '').replace('")', '')));
291
+ noEncuentraOperador = false;
292
+ }
293
+ }
294
+ if (noEncuentraOperador && campoEsTexto) {
295
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
296
+ const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
297
+ if (contieneMoreThan) {
298
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.MoreThan(sinNot.replace('MoreThan("', '').replace('")', '')));
299
+ noEncuentraOperador = false;
300
+ }
301
+ }
302
+ if (noEncuentraOperador && campoEsTexto) {
303
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
304
+ const contieneEqual = sinNot.match(expresionRegularEqual);
305
+ if (contieneEqual) {
306
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Equal(sinNot.replace('Equal("', '').replace('")', '')));
307
+ noEncuentraOperador = false;
308
+ }
309
+ }
310
+ if (noEncuentraOperador && campoEsTexto) {
311
+ const expresionRegularBetween = /Between\(".+"\)+/g;
312
+ const contieneBetween = sinNot.match(expresionRegularBetween);
313
+ if (contieneBetween) {
314
+ const busqueda = [...sinNot
315
+ .replace('Between("', '')
316
+ .replace('")', '')
317
+ .replace(' ', '')
318
+ .split(',')
319
+ .map((n) => isNaN(n) ? n : +n)];
320
+ const esFecha = busqueda[0].length === 10 &&
321
+ busqueda[0].length === 10 &&
322
+ (typeof busqueda[0] === 'string') &&
323
+ (typeof busqueda[1] === 'string') &&
324
+ busqueda[0].match('-') &&
325
+ busqueda[1].match('-');
326
+ if (esFecha) {
327
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
328
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
329
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Between(fechaInicio, fechaFin));
330
+ }
331
+ else {
332
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Between(busqueda[0], busqueda[1]));
333
+ }
334
+ noEncuentraOperador = false;
335
+ }
336
+ }
337
+ if (noEncuentraOperador && campoEsTexto) {
338
+ const expresionRegularIn = /In\(.+\)+/g;
339
+ const contieneIn = sinNot.match(expresionRegularIn);
340
+ if (contieneIn) {
341
+ let arreglo;
342
+ try {
343
+ arreglo = JSON.parse(sinNot
344
+ .replace('In(', '')
345
+ .replace('])', ']'));
346
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.In(arreglo));
347
+ noEncuentraOperador = false;
348
+ }
349
+ catch (e) {
350
+ console.log('Error formateando clausula IN');
351
+ console.log(e);
352
+ }
353
+ }
354
+ }
355
+ if (noEncuentraOperador && campoEsTexto) {
356
+ const expresionRegularAny = /Any\(.+\)+/g;
357
+ const contieneAny = sinNot.match(expresionRegularAny);
358
+ if (contieneAny) {
359
+ let arreglo;
360
+ try {
361
+ arreglo = JSON.parse(sinNot
362
+ .replace('Any(', '')
363
+ .replace(')', ''));
364
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.Any(arreglo));
365
+ noEncuentraOperador = false;
366
+ }
367
+ catch (e) {
368
+ console.log('Error formateando clausula ANY');
369
+ console.log(e);
370
+ }
371
+ }
372
+ }
373
+ if (noEncuentraOperador && campoEsTexto) {
374
+ const expresionRegularIsNull = /IsNull\(".+"\)+/g;
375
+ const contieneIsNull = sinNot.match(expresionRegularIsNull);
376
+ if (contieneIsNull) {
377
+ criterioBusquedaClase.where[campo] = typeorm_1.Not(typeorm_1.IsNull());
378
+ noEncuentraOperador = false;
379
+ }
380
+ }
381
+ }
382
+ } // Fin de NOT
383
+ if (noEncuentraOperador && campoEsTexto) {
384
+ const expresionRegularLike = /Like\(".+"\)+/g;
385
+ const contieneLike = criterioBusquedaClase.where[campo].match(expresionRegularLike);
386
+ if (contieneLike) {
387
+ criterioBusquedaClase.where[campo] = typeorm_1.Like(criterioBusquedaClase.where[campo].replace('Like("', '').replace('")', ''));
388
+ noEncuentraOperador = false;
389
+ }
390
+ }
391
+ if (noEncuentraOperador && campoEsTexto) {
392
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
393
+ const contieneLessThan = criterioBusquedaClase.where[campo].match(expresionRegularLessThan);
394
+ if (contieneLessThan) {
395
+ criterioBusquedaClase.where[campo] = typeorm_1.LessThan(criterioBusquedaClase.where[campo].replace('LessThan("', '').replace('")', ''));
396
+ noEncuentraOperador = false;
397
+ }
398
+ }
399
+ if (noEncuentraOperador && campoEsTexto) {
400
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
401
+ const contieneMoreThan = criterioBusquedaClase.where[campo].match(expresionRegularMoreThan);
402
+ if (contieneMoreThan) {
403
+ criterioBusquedaClase.where[campo] = typeorm_1.MoreThan(criterioBusquedaClase.where[campo].replace('MoreThan("', '').replace('")', ''));
404
+ noEncuentraOperador = false;
405
+ }
406
+ }
407
+ if (noEncuentraOperador && campoEsTexto) {
408
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
409
+ const contieneEqual = criterioBusquedaClase.where[campo].match(expresionRegularEqual);
410
+ if (contieneEqual) {
411
+ criterioBusquedaClase.where[campo] = typeorm_1.Equal(criterioBusquedaClase.where[campo].replace('Equal("', '').replace('")', ''));
412
+ noEncuentraOperador = false;
413
+ }
414
+ }
415
+ if (noEncuentraOperador && campoEsTexto) {
416
+ const expresionRegularBetween = /Between\(".+"\)+/g;
417
+ const contieneBetween = criterioBusquedaClase.where[campo].match(expresionRegularBetween);
418
+ if (contieneBetween) {
419
+ const busqueda = [...criterioBusquedaClase.where[campo]
420
+ .replace('Between("', '')
421
+ .replace('")', '')
422
+ .replace(' ', '')
423
+ .split(',')
424
+ .map((n) => isNaN(n) ? n : +n)];
425
+ const esFecha = busqueda[0].length === 10 &&
426
+ busqueda[0].length === 10 &&
427
+ (typeof busqueda[0] === 'string') &&
428
+ (typeof busqueda[1] === 'string') &&
429
+ busqueda[0].match('-') &&
430
+ busqueda[1].match('-');
431
+ if (esFecha) {
432
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
433
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
434
+ criterioBusquedaClase.where[campo] = typeorm_1.Between(fechaInicio, fechaFin);
435
+ }
436
+ else {
437
+ criterioBusquedaClase.where[campo] = typeorm_1.Between(busqueda[0], busqueda[1]);
438
+ }
439
+ noEncuentraOperador = false;
440
+ }
441
+ }
442
+ if (noEncuentraOperador && campoEsTexto) {
443
+ const expresionRegularIn = /In\(.+\)+/g;
444
+ const contieneIn = criterioBusquedaClase.where[campo].match(expresionRegularIn);
445
+ if (contieneIn) {
446
+ let arreglo;
447
+ try {
448
+ arreglo = JSON.parse(criterioBusquedaClase.where[campo]
449
+ .replace('In(', '')
450
+ .replace('])', ']'));
451
+ criterioBusquedaClase.where[campo] = typeorm_1.In(arreglo);
452
+ noEncuentraOperador = false;
453
+ }
454
+ catch (e) {
455
+ console.log(e);
456
+ }
457
+ }
458
+ }
459
+ if (noEncuentraOperador && campoEsTexto) {
460
+ const expresionRegularAny = /Any\(.+\)+/g;
461
+ const contieneAny = criterioBusquedaClase.where[campo].match(expresionRegularAny);
462
+ if (contieneAny) {
463
+ let arreglo;
464
+ try {
465
+ arreglo = JSON.parse(criterioBusquedaClase.where[campo]
466
+ .replace('Any(', '')
467
+ .replace(')', ''));
468
+ criterioBusquedaClase.where[campo] = typeorm_1.Any(arreglo);
469
+ noEncuentraOperador = false;
470
+ }
471
+ catch (e) {
472
+ console.log(e);
473
+ }
474
+ }
475
+ }
476
+ if (noEncuentraOperador && campoEsTexto) {
477
+ const expresionRegularIsNull = /IsNull\(".+"\)+/g;
478
+ const contieneIsNull = criterioBusquedaClase.where[campo].match(expresionRegularIsNull);
479
+ if (contieneIsNull) {
480
+ criterioBusquedaClase.where[campo] = typeorm_1.IsNull();
481
+ noEncuentraOperador = false;
482
+ }
483
+ }
484
+ });
485
+ }
486
+ }
487
+ return servicio.find(criterioBusquedaClase);
488
+ }
489
+ }
490
+ }
491
+ exports.buscarVariosRegistros = buscarVariosRegistros;
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzY2FyLXJlZ2lzdHJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9idXNjYXItcmVnaXN0cm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBMkM7QUFDM0MseURBQWlEO0FBQ2pELHFDQUF5RjtBQUVsRixLQUFLLGdDQUFnQyxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVE7SUFDMUcsSUFBSSwyQkFBMkIsR0FBRyxLQUFLLENBQUM7SUFDeEMsTUFBTSw0QkFBNEIsR0FBRyxPQUFPLGdCQUFnQixLQUFLLFFBQVEsQ0FBQztJQUUxRSxJQUFJLDRCQUE0QixFQUFFO1FBQ2hDLElBQUk7WUFDRixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDakQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLDJCQUEyQixHQUFHLElBQUksQ0FBQztTQUNwQztLQUNGO0lBRUQsSUFBSSwyQkFBMkIsRUFBRTtRQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDMUUsTUFBTSwwQkFBMEIsR0FBRztZQUNqQyxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUNGLGdCQUFnQixHQUFHLDBCQUEwQixDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ3hDO1NBQU07UUFDTCxNQUFNLHFCQUFxQixHQUFRLGdDQUFZLENBQUMsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RixNQUFNLE1BQU0sR0FBRyxNQUFNLDBCQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNyRCxNQUFNLGdDQUFnQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksZ0NB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