272 Commits

Author SHA1 Message Date
6ddc48ec60 Merge branch 'develop' 2024-03-13 16:31:34 -03:00
8caa80459e Accelerar listado ventas 2024-03-13 16:17:14 -03:00
98953cce42 FormaPago Service 2024-03-13 14:38:44 -03:00
c7dd309185 Movimiento + Detalles 2024-03-04 19:55:49 -03:00
48bfe5d8ab Mejora en velocidad de busqueda 2024-02-28 21:44:37 -03:00
d9b5bc6507 Procesar otras cartolas Santander 2024-02-28 17:02:04 -03:00
21d1ef653f FIX: Saldo actual informe tesoreria 2024-02-28 13:53:53 -03:00
e8d43e43ff FIX: fecha saldo consolidado 2024-02-28 13:45:20 -03:00
fc9788a1cd FIX: Mostrar pie con cuotas vigentes 2024-02-28 10:37:51 -03:00
02dcc950f4 FIX: Editar credito, valor mandaba fecha 2024-02-28 10:33:34 -03:00
370b6714bc Excel button in datatables 2024-02-27 16:49:39 -03:00
dc7a9f9e7a Buscar por rut 2024-02-27 16:11:48 -03:00
cfe18c1909 Informe tesoreria en excel 2024-02-23 22:37:09 -03:00
5156858205 Update Fomantic-UI 2024-02-23 10:20:58 -03:00
415ba31270 Cartola Diaria Manual 2024-02-23 10:20:44 -03:00
c784d1bee9 Fix informes 2024-02-21 21:22:04 +00:00
a1ade5c2c7 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-20 01:54:05 +00:00
879b612493 Cartola Diaria 2024-02-19 22:39:22 -03:00
b4cdd2d5f7 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-15 21:59:47 +00:00
51cabee824 Editar credito 2024-02-15 18:57:56 -03:00
d2e51e76f8 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-14 16:54:10 +00:00
1621d6fe30 Implementacion agregar abono a escritura 2024-02-14 13:54:01 -03:00
0e32512adc Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 21:18:11 +00:00
338f290539 FIX: logged en debug 2024-02-13 18:13:53 -03:00
2aad7e1152 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 21:00:02 +00:00
e542615128 FIX: Venta nueva no se ingresaba 2024-02-13 17:59:46 -03:00
1c7797b1b1 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 15:13:06 +00:00
ba0d4073d7 FIX: All sociedades 2024-02-13 12:12:54 -03:00
faac3874a8 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 15:11:33 +00:00
ade107ab3c Stackable grid 2024-02-13 12:11:26 -03:00
c192cf1883 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 15:08:31 +00:00
4fb75b11c4 Mejora en look de depositos y vencidos 2024-02-13 12:08:25 -03:00
ccbb71d875 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 14:26:36 +00:00
7f25b4b5e1 FIX: all sociedades & allActive depositos 2024-02-13 11:26:28 -03:00
f0b26a251b Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 14:17:08 +00:00
ea068d95d0 FIX: DAPs -> Depositos routes 2024-02-13 11:17:01 -03:00
1ccc9ab3d4 Cambio a proyectos:activos 2024-02-13 14:12:19 +00:00
5cd19bcdce Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-13 14:11:45 +00:00
712c70b34d FIX: DAPs -> Depositos 2024-02-13 11:11:30 -03:00
35ab7e7e8b Depositos vencidos no suman ni restan 2024-02-13 11:10:26 -03:00
4b39f93f30 Update permissions for cli 2024-02-13 04:30:54 +00:00
d3f188684a Increase update of proyectos 2024-02-13 04:30:29 +00:00
82647a171d Merge branch 'feature/DAPs' into develop 2024-02-13 01:16:58 -03:00
e44ab30665 Informe Tesoreria 2024-02-13 01:16:17 -03:00
19333bc338 Merge branch 'feature/dap' into develop 2024-02-12 10:00:42 -03:00
4738dae7c8 DAPs API 2024-02-12 10:00:17 -03:00
a370ffff43 Cleanup 2024-02-12 09:59:47 -03:00
88f9e539f7 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-12 09:53:52 -03:00
671b26f038 Merge branch 'feature/Movimientos' into develop 2024-02-12 09:53:18 -03:00
e133bd36cf Cartola diaria 2024-02-12 09:52:48 -03:00
251dbbe0f0 FIX: cron ENV vars 2024-02-10 10:37:45 -03:00
e1eb2c4c56 Cleanup 2024-02-08 13:04:05 -03:00
1078f4c188 Simplificacion de Cartola diaria 2024-02-08 00:06:29 -03:00
38962cb9cf API Movimientos y cartola diaria 2024-02-07 23:48:31 -03:00
3cd699d2e2 Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop 2024-02-07 18:37:13 -03:00
d8b8787be9 FIX: Find Pago 2024-02-07 18:35:28 -03:00
ad3285efd9 FIX: find ventas por proyecto y unidad 2024-01-30 12:07:43 -03:00
62edca5335 Simplify set post or query 2024-01-23 20:41:52 -03:00
ac6c5b7d3d FIX: activar busqueda cuando tiene query definido 2024-01-23 20:18:02 -03:00
5b5a0ed1f5 FIX: Link a buscar propietario 2024-01-23 20:07:34 -03:00
9d7857621e FIX: findPago sin numero 2024-01-22 12:10:16 -03:00
029cd095cb Base Log cli 2024-01-19 23:27:06 -03:00
c1792907c0 Basic Controller and Service 2024-01-19 23:12:13 -03:00
fa11f5b240 Cleanup logs, fixed add Venta, fixed search 2024-01-19 23:10:20 -03:00
f55e4dbd5f ventas.base 2024-01-18 17:15:32 -03:00
ca83472012 Informe escritura 2024-01-18 16:41:16 -03:00
01af47fba1 FIX: escriturar 2024-01-18 15:18:07 -03:00
e1462657fc Clave -> Contraseña 2024-01-18 13:20:02 -03:00
72f63c5e6c Cleanup 2024-01-18 13:17:23 -03:00
1f076bc2f1 FIX: IPC y factura 2024-01-18 13:15:26 -03:00
ad003c7dcf Cleanup 2024-01-18 13:05:36 -03:00
aef1ccd4a0 Santander 2024-01-17 18:27:29 -03:00
3684bc2e21 FIX: glosa 2024-01-17 16:21:40 -03:00
d1d3705a7b Cambio base Cartola/Banco e implementacion de Itau 2024-01-17 16:19:38 -03:00
ecdb67a9ab FIX: Security en htm 2024-01-17 14:31:49 -03:00
4c86ce2a8a TipoUnidad por Proyecto 2024-01-17 11:22:10 -03:00
5c6bd91425 Missing updates 2024-01-17 11:15:13 -03:00
18d7e449f7 Missing updates 2024-01-17 11:13:27 -03:00
bfdaf0e7f2 Missing updates 2024-01-17 11:10:56 -03:00
ce0510687a Menu Centros de Costos 2024-01-17 11:05:25 -03:00
3eb4ce4d21 Max log files 2024-01-17 10:49:14 -03:00
674aba801e Cartolas 2024-01-17 10:33:11 -03:00
c4f486d3fa Disable edit of Centros Costos 2024-01-10 20:47:39 -03:00
dc840a7bff Sort Centros Costos 2024-01-10 20:36:18 -03:00
316cc51387 FIX: Tipo Cuenta 2024-01-10 20:32:55 -03:00
68e59770fd Menu contabilidad 2024-01-10 19:34:41 -03:00
a66b549a8c Centros de Costos 2024-01-09 23:35:35 -03:00
74b3bb42ea Add sorting to fetchAll 2024-01-09 23:35:11 -03:00
72a2ffe924 Error code change 2024-01-08 21:25:02 -03:00
6393a1fced Implement movimientos cuotas 2024-01-08 21:24:34 -03:00
d225011ae9 Implement search pago 2024-01-08 17:33:42 -03:00
bc2333bc95 FIX: Pie cuotas valores uf 2024-01-08 13:16:12 -03:00
675b3843ea FIX: Pie cuotas vigentes 2023-12-22 14:15:09 -03:00
0829d338a9 FIX: null date 2023-12-22 14:14:02 -03:00
20b2bdc6c6 FIX: Cuotas vigentes 2023-12-22 13:17:03 -03:00
8492d1df2b Eliminar desistimiento y loading en editar desistimiento 2023-12-22 12:52:04 -03:00
afbadd520b FIX: when new value is null 2023-12-22 12:50:09 -03:00
ac52305002 Editar desistimiento venta 2023-12-21 21:06:38 -03:00
d7d17a3051 Mostrar correctamente venta desistida 2023-12-21 19:15:11 -03:00
80a6bf1535 Desistir venta 2023-12-21 18:45:47 -03:00
93431e41b3 Porcentajes en cuotas 2023-12-20 20:59:43 -03:00
d99f2a6214 pageLength for cuotas 2023-12-20 15:39:13 -03:00
30277e6355 FIX: cuotas en pie 2023-12-20 15:37:47 -03:00
06d5327934 Search listado por defecto muestra 25 y cleanup 2023-12-20 12:04:06 -03:00
6f772a56b8 FIX: Buscar por nombre con wildcards 2023-12-20 12:02:52 -03:00
abe82e4689 FIX: Default valor unitario terreno 2023-12-20 10:50:49 -03:00
379a33a4da Escriturar 2023-12-20 08:44:49 -03:00
1ba53c9e12 FIX: Precio Unidad no existe en venta y facturacion 2023-12-13 13:28:19 -03:00
94906eea8c FIX: Precio Unidad no existe 2023-12-13 13:03:43 -03:00
8b9b02825a FIX: Precio Unidad no existe 2023-12-13 12:44:32 -03:00
8f2f90aca2 FIX: .env 2023-12-12 20:19:15 -03:00
d699f9bf62 Install executeable 2023-12-12 15:56:00 +00:00
e38fdd20ee FIX: install 2023-12-12 12:53:32 -03:00
f362054ea7 Install 2023-12-12 12:47:58 -03:00
f597d552be Edit fecha escritura 2023-12-04 21:43:57 -03:00
43977d1bd9 FIX: IPC no disponible 2023-12-04 19:51:44 -03:00
9aa4e0ae1d FIX: UF/m2 con valor venta 2023-12-04 19:08:26 -03:00
377cf51b44 Editar valor venta 2023-12-04 19:00:21 -03:00
57579a52f1 Editar propiedad en venta 2023-12-01 15:00:25 -03:00
af9c6c51d4 FIX: active -> activo en tipo_estado_pago 2023-12-01 12:39:26 -03:00
0eaa09bea0 FIX: Fetch terreno 2023-11-30 19:06:59 -03:00
04478afa2f Mejoras en Facturacion 2023-11-30 18:40:15 -03:00
f2efb41977 IPC rango y sort 2023-11-30 00:24:08 -03:00
d0a85b2149 IPC acumulado desde cli 2023-11-30 00:06:21 -03:00
68821fb0d3 Changed start location in cli 2023-11-29 23:07:50 -03:00
f957d29779 Full command 2023-11-29 23:02:12 -03:00
dc7a39e193 Output cron execution 2023-11-29 22:31:53 -03:00
17f93dcd34 Edit Pie 2023-11-29 22:21:46 -03:00
9991b7c6a3 FIX: % descuento 2023-11-29 21:23:11 -03:00
91bdef5cc5 FIX: % descuento 2023-11-29 21:21:51 -03:00
244d304e04 FIX: % descuento 2023-11-29 21:18:30 -03:00
2600bd409e FIX: fecha estado venta 2023-11-29 21:17:06 -03:00
0761be6613 Precio = valor propiedad o precio 2023-11-29 21:14:55 -03:00
e347aaabe9 Valor PU -> ultimo precio 2023-11-29 21:13:03 -03:00
fe3055708f FIX: precio->valor 2023-11-29 20:56:00 -03:00
62153dd1ef Editar propiedad en venta 2023-11-29 20:44:13 -03:00
39048e12b3 Facturacion, se agrega PropiedadUnidad 2023-11-29 20:09:08 -03:00
094209823a columna faltante del modelo 2023-11-28 22:12:15 -03:00
bcdca32075 Reajuste 2023-11-28 21:38:24 -03:00
fada4f80a2 FIX: link venta desde pie 2023-11-27 18:07:48 -03:00
a28c51d94c Total pesos en forma pago y detalle cuotas 2023-11-27 17:23:10 -03:00
df679b2a1a Log commands 2023-11-25 21:38:00 -03:00
ec4b16b2af Timezone 2023-11-25 01:14:28 -03:00
3c983fc6c9 FIX: missing slash 2023-11-25 01:05:56 -03:00
7945579e80 CLI 2023-11-25 00:56:18 -03:00
ab1647eed3 lighter install 2023-11-25 00:56:11 -03:00
ec7d8e69ab FIX: Remove login for API 2023-11-25 00:55:31 -03:00
3cadaca746 Focus and Dev Kint 2023-11-24 20:42:05 -03:00
2726bc5074 Cleanup old version 2023-11-24 20:41:41 -03:00
b66ef435c6 FIX: Escritura y saldo 2023-11-24 20:28:08 -03:00
a82db6e1da FIX: trailing slash in ventas url 2023-11-24 10:24:42 -03:00
e1ef31dccd Search update and optimization 2023-11-23 23:35:19 -03:00
bf03e85975 Redis 2023-11-23 00:53:49 -03:00
9ab0515954 Facturacion 2023-11-22 19:08:19 -03:00
b4742a501e Show Proyecto 2023-10-20 19:03:29 -03:00
4734417fe2 Estado Recepcion Final en Proyecto 2023-10-19 22:43:21 -03:00
54ac535a49 Remove benchmark 2023-10-19 22:01:00 -03:00
e536f0f8f3 Redis expiration 1 day 2023-10-19 21:49:57 -03:00
dc217d876a Redis service 2023-10-19 20:46:52 -03:00
742c0327c2 Improving cuotas por vencer 2023-10-19 19:39:27 -03:00
ada0434caf Error log cuotas 2023-10-19 19:10:08 -03:00
850a475ef6 Cuando no tiene resultados en cuotas, entregar vacio 2023-10-19 18:58:48 -03:00
02e1f3e091 Mostrar alertas en inicio 2023-10-19 18:20:37 -03:00
c2a3192b32 Listado proyectos 2023-10-13 10:45:21 -03:00
0d558b7980 Separar datos inicio 2023-10-11 09:03:44 -03:00
e4328d8604 Reorder docker 2023-10-11 09:00:00 -03:00
d8a81db78b Inmobiliarias 2023-09-28 22:28:30 -03:00
3141f1e7c4 Search 2023-09-28 21:05:16 -03:00
2e2d0f07b4 Limpieza de logo 2023-09-15 00:16:02 -03:00
0cd357b6cb 2023-09-12 2023-09-13 18:51:46 -03:00
fa15da1ee2 Ventas 2023-09-07 23:03:21 -03:00
59825259b6 Implemented repository mapper, and venta show 2023-08-08 23:53:49 -04:00
ef30ae67d2 Ventas->Listado->Ventas 2023-07-28 17:17:04 -04:00
38383f5295 Accordion 2023-07-25 20:25:28 -04:00
43cd955061 Venta->Listado->Cierres 2023-07-25 17:03:57 -04:00
1a7b10ce3c Auth, Login, Home, Venta->Listados->Precios 2023-07-24 20:55:26 -04:00
d9d5a15376 Docker 2023-07-24 20:54:30 -04:00
b7fc538e78 Old Version 2023-07-24 20:52:13 -04:00
be33305cf1 config 2023-07-24 20:41:38 -04:00
6ab24c8961 Command return 2023-06-23 11:36:44 -04:00
331ee1e584 Merge branch 'develop' 2023-06-22 23:18:13 -04:00
b212381bb7 Cli 2023-06-22 23:15:17 -04:00
05e37f19ae Money and Remote services 2023-06-22 14:04:40 -04:00
8a51fb9c42 Ignore modules 2023-06-22 13:25:29 -04:00
e6da1d9727 Encapsulation 2023-04-12 22:59:16 -04:00
34c2aa9a46 Cleanup 2023-04-12 22:56:17 -04:00
24c17debf3 Merge branch 'develop' 2023-02-15 18:30:09 -03:00
683e8bc3a8 Restart logview 2023-02-15 18:29:51 -03:00
1508539140 Fix PHP Errors 2023-02-15 18:29:43 -03:00
064ad35553 Logview version 2023-02-15 18:29:11 -03:00
e81a098d31 Fix gump version 2023-02-15 18:28:41 -03:00
01512d0605 Cleanup in dockerfile 2023-02-14 23:00:15 -03:00
552fd0aa06 Merge branch 'develop' 2023-02-14 20:50:42 -03:00
5d8fbceb67 Logview 2023-02-14 20:47:41 -03:00
60faf293d4 Merge branch 'develop' 2023-02-13 17:18:41 -03:00
907c756aa2 FIX: cuotas 2023-02-13 17:18:26 -03:00
84d50e0209 Logging 2023-02-10 15:14:34 +00:00
87643a5b99 Fixes for upgrade 2023-02-10 15:14:14 +00:00
de6100a546 Upgrade to php 8 2023-02-10 15:12:30 +00:00
b6c0c90943 Merge branch 'develop' 2023-02-10 06:45:42 +00:00
726bdaec4c logs 2023-02-10 06:39:24 +00:00
009ba01e69 Releas dependencies versions 2023-02-10 06:38:43 +00:00
bb1d2b2159 Update aldarien dependencies 2023-02-10 06:38:16 +00:00
d6f58893b6 FIX 2022-06-09 16:40:10 -04:00
717ba19792 Check uf, replace ',' in valor 2022-06-09 16:39:25 -04:00
9ffc7527c3 Log agregar Venta 2022-06-09 16:19:05 -04:00
eac6b7d197 FIX: null valor in format 2022-04-11 11:01:35 -04:00
6995561e4f FIX: listen to network 2022-03-10 15:31:18 -03:00
24bd5a6fc4 FIX: docker context 2022-03-10 15:16:55 -03:00
1c5467e8fb Python docker 2022-03-10 15:11:26 -03:00
0550ff11a4 Merge branch 'develop' 2022-03-08 12:15:31 -03:00
f29bc8f05f FIX 2022-03-08 11:02:23 -03:00
d1473eaac4 FIX: connection timeout 2022-03-08 11:00:36 -03:00
2f369c4e5e Se agregar Resciliacion y el n° de departamento al inicio de la linea
FIX: acumulado no pagado
2022-03-08 10:58:38 -03:00
27ace68b1d FIX: cuando UF = 0 2022-03-08 10:57:28 -03:00
66a128663d Merge branch 'develop' 2022-03-08 09:02:22 -03:00
b3577a7800 Glosa y estado a los pagos, titulos por cuenta 2022-03-08 08:44:33 -03:00
a5940019bc Merge branch 'develop' 2022-03-07 23:49:52 -03:00
b8babf2906 Clean up 2022-03-07 23:49:26 -03:00
7d3e75c316 FIX: max execution time 2022-03-07 22:59:13 -03:00
33417a6acd FIX: filter 2022-03-07 22:50:17 -03:00
e51d87f83f FIX: filter 2022-03-07 22:45:56 -03:00
16fb8f0a96 Filter duplicates 2022-03-07 22:43:34 -03:00
1547b24412 FIX: getNumberFormat 2022-03-07 22:40:55 -03:00
517276da1d FIX: format in excel 2022-03-07 22:38:29 -03:00
fbce7089a8 FIX: non array rows 2022-03-07 22:34:04 -03:00
e8aa00e121 FIX: columns 2022-03-07 22:31:07 -03:00
26bac169de FIX: format 2022-03-07 22:25:03 -03:00
4971570474 Merge branch 'develop' 2022-03-07 22:21:55 -03:00
3b473bcefa Change to xlsx file 2022-03-07 22:21:42 -03:00
85be709ab0 Merge branch 'develop' 2022-03-07 21:45:05 -03:00
726794923d Formateo 2022-03-07 21:44:17 -03:00
52bead5104 Merge branch 'develop' 2022-03-07 21:31:10 -03:00
a6a1c3d102 FIX: Sibsidios retorna array 2022-03-07 21:30:59 -03:00
66dbf54714 Merge branch 'develop' 2022-03-07 21:23:58 -03:00
301a4c7302 FIX: DateInterval 2022-03-07 21:23:21 -03:00
d2e6a11e0b Merge branch 'develop' 2022-03-07 21:20:58 -03:00
5fefdd94b0 Fixes to format and defaults 2022-03-07 21:20:27 -03:00
9d13a193b6 Merge branch 'develop' 2022-03-07 18:28:27 -03:00
3de1c9b527 FIX: Hide password 2022-03-07 18:27:44 -03:00
34d0659036 Fix: Was missing db configuration on php 2022-03-07 18:26:27 -03:00
b0c587532f Merge branch 'develop' 2022-03-07 18:08:44 -03:00
1754633475 Profiles and cleanup 2022-03-07 18:08:25 -03:00
6a5efba272 Informe de Contabilidad Resumen 2022-03-07 16:36:21 -03:00
0c62ed0582 Update to PHP 8 2022-03-07 14:16:37 -03:00
483a3e943c Merge branch 'develop' of http://git.provm.cl/Incoviba/oficial into develop
# Conflicts:
#	composer.json
2022-03-07 12:10:02 -03:00
68ab19b874 Merge branch 'develop' 2022-03-07 12:07:51 -03:00
bc4dd543ae FIX: handling of dependencies 2022-03-07 12:07:33 -03:00
fb8e204f77 FIX: valor en Escritura 2022-03-07 12:06:12 -03:00
8ed1742de8 Update 2022-03-07 2022-03-07 10:09:15 -03:00
f85f9ff3c9 Ignore IDE files 2022-03-07 10:07:25 -03:00
e75c3dada8 Ignore modules 2022-03-07 10:06:46 -03:00
670d73be38 Env settings 2022-03-07 10:06:02 -03:00
ee37338be4 ENV 2022-03-07 10:06:02 -03:00
b3fc29d19b Env files 2022-03-07 10:06:02 -03:00
a771714357 Database 2022-03-07 10:06:02 -03:00
1fb29cb877 .\config\ 2022-03-07 10:05:59 -03:00
db7344bc74 Mixed 2022-03-07 10:05:03 -03:00
20ae31b7bf Ignore IDE files 2022-03-07 09:59:09 -03:00
8ce0b75bb4 Ignore modules 2022-03-07 09:54:45 -03:00
abe01e5592 Update 2022-03-07 2022-03-07 12:42:34 +00:00
606fdc4d96 Env settings 2021-06-14 17:49:21 -04:00
7206fa1c3c ENV 2021-06-14 17:49:12 -04:00
d5adec2137 Env files 2021-06-14 17:44:21 -04:00
33669f34b5 Database 2021-06-14 17:41:59 -04:00
8da6b4f160 .\config\ 2021-06-14 17:41:40 -04:00
5ef0aaae50 Mixed 2021-06-14 17:35:27 -04:00
67efd83ae3 Merge branch 'master' of http://git.provm.cl/Incoviba/oficial 2021-04-05 20:22:46 +00:00
3b6b5d10ff Merge branch 'develop' into master 2021-04-05 16:22:10 -04:00
18986c6e17 Se agrega editar Bono Pie 2021-04-05 16:15:54 -04:00
b6665c8f9c Local settings 2021-03-26 19:03:57 +00:00
91cc2fed12 Local Database 2021-03-26 19:03:57 +00:00
1026 changed files with 26995 additions and 42741 deletions

6
.env.sample Normal file
View File

@ -0,0 +1,6 @@
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=./docker-compose.yml:./adminer-compose.yml
COMPOSE_PROFILES=app,db,cli,cache
APP_PATH=./app
CLI_PATH=./cli
APP_PORT=8080

20
.gitignore vendored
View File

@ -1,8 +1,12 @@
.env
/vendor/
composer.lock
/node_modules/
package-lock.json
Pipfile.lock
/logs/
/cache/
**/*.env
**/vendor/
**/composer.lock
**/node_modules/
**/package-lock.json
**/Pipfile.lock
**/logs/
**/cache/
**/modules/
**/.idea/
**/upload?/
**/informe?/

1
.key.env.sample Normal file
View File

@ -0,0 +1 @@
API_KEY=

19
CLI.Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM php:8.2-cli
ENV TZ "${TZ}"
ENV APP_NAME "${APP_NAME}"
ENV API_URL "${API_URL}"
RUN apt-get update && apt-get install -y --no-install-recommends cron rsyslog nano && rm -r /var/lib/apt/lists/*
RUN pecl install xdebug-3.2.2 \
&& docker-php-ext-enable xdebug \
&& echo "#/bin/bash\nprintenv >> /etc/environment\ncron -f -L 11" > /root/entrypoint && chmod a+x /root/entrypoint
COPY ./php-errors.ini /usr/local/etc/php/conf.d/docker-php-errors.ini
WORKDIR /code/bin
COPY --chmod=644 ./cli/crontab /var/spool/cron/crontabs/root
CMD [ "/root/entrypoint" ]

View File

@ -1,6 +1,15 @@
FROM php:7.4-fpm
FROM php:8.1-fpm
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get update && apt-get install -y --no-install-recommends libzip-dev libicu-dev git libpng-dev unzip tzdata \
&& rm -r /var/lib/apt/lists/*
RUN pecl install xdebug-3.0.3 \
RUN docker-php-ext-install pdo pdo_mysql zip intl gd bcmath
RUN pecl install xdebug-3.1.3 \
&& docker-php-ext-enable xdebug
COPY ./php-errors.ini /usr/local/etc/php/conf.d/docker-php-errors.ini
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /code

24
Log.Dockerfile Normal file
View File

@ -0,0 +1,24 @@
FROM php:8-apache
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV LOGVIEW_INSTALLATION_PATH=/app
ENV APACHE_DOCUMENT_ROOT="${LOGVIEW_INSTALLATION_PATH}/app"
ENV APACHE_PUBLIC_ROOT="${APACHE_DOCUMENT_ROOT}/public"
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR "${LOGVIEW_INSTALLATION_PATH}"
RUN apt-get update \
&& apt-get install -yq --no-install-recommends git zip unzip libzip-dev \
&& rm -r /var/lib/apt/lists/* \
&& git clone http://git.provm.cl/ProVM/logview.git "${LOGVIEW_INSTALLATION_PATH}" \
&& docker-php-ext-install zip \
&& cp "${LOGVIEW_INSTALLATION_PATH}/php-errors.ini" /usr/local/etc/php/conf.d/docker-php-errors.ini \
&& composer -d "${LOGVIEW_INSTALLATION_PATH}/app" install \
&& mkdir "${LOGVIEW_INSTALLATION_PATH}/app/cache" \
&& chmod -R 777 "${LOGVIEW_INSTALLATION_PATH}/app/cache" \
&& sed -ri -e "s!/var/www/html!${APACHE_PUBLIC_ROOT}!g" /etc/apache2/sites-available/*.conf \
&& sed -ri -e "s!/var/www/!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \
&& a2enmod rewrite \
&& a2enmod actions \
&& service apache2 restart

12
Pipfile
View File

@ -1,12 +0,0 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
gunicorn = "*"
[requires]
python_version = "3.8"

9
Python.Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM python:3.8
COPY ./bin /usr/opt/incoviba
WORKDIR /usr/opt/incoviba/informes
RUN pip install gunicorn pandas xlsxwriter httpx flask numpy
CMD ["gunicorn", "-w", "4", "--bind", "0.0.0.0", "app:app"]

15
adminer-compose.yml Normal file
View File

@ -0,0 +1,15 @@
services:
adminer:
profiles:
- db
container_name: incoviba_adminer
image: adminer
restart: unless-stopped
env_file: ${APP_PATH:-.}/.adminer.env
networks:
- adminer_network
ports:
- "8083:8080"
networks:
adminer_network: {}

View File

@ -1,11 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
#Eclipse IDE
.settings
.buildpath
.project

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,2 +0,0 @@
# asset
Asset manager module for my apps

View File

@ -1,21 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\Asset as AssetService;
class Asset
{
use Contract;
protected static function newInstance()
{
return new AssetService();
}
public static function get($identifier)
{
$instance = self::getInstance();
return $instance->get($identifier);
}
}
?>

View File

@ -1,5 +0,0 @@
<?php
function asset($identifier) {
return \App\Contract\Asset::get($identifier);
}
?>

View File

@ -1,88 +0,0 @@
<?php
namespace App\Service;
class Asset
{
protected $assets;
protected $dir;
public function __construct()
{
$this->dir = config('locations.public');
}
public function get($identifier)
{
$asset = $this->find($identifier);
return $asset->url;
}
protected function find($identifier)
{
$type = $this->getType($identifier);
$asset = null;
if ($type == false) {
foreach (array_keys($this->assets) as $type) {
if (($asset = $this->getAsset($identifier, $type))) {
break;
}
}
} else {
$asset = $this->getAsset($identifier, $type);
}
return $asset;
}
protected function getType($identifier)
{
if (strpos($identifier, '.') !== false) {
list($name, $ext) = explode('.', $identifier);
return $ext;
}
return false;
}
protected function getAsset($identifier, $type)
{
if (!isset($this->assets[$type])) {
$this->loadAssets($type);
}
if (!isset($this->assets[$type])) {
return null;
}
foreach ($this->assets[$type] as $asset) {
if ($this->compareIdentifier($asset, $identifier)) {
return $asset;
}
}
return null;
}
protected function loadAssets($type)
{
$dir = $this->dir . '/' . $type . '/*.' . $type;
$files = glob($dir);
foreach ($files as $file) {
$url = $this->url($file);
$identifier = pathinfo($file)['filename'];
$this->assets[$type] []= (object) ['identifier' => $identifier, 'url' => $url, 'type' => $type];
}
}
protected function url($file)
{
$url = '/' . config('app.project') . '/' . str_replace('\\', '/', str_replace(realpath(config('locations.public')), '', dirname(realpath($file)))) . '/' . basename(realpath($file));
$url = preg_replace('/\/+/', '/', $url);
return $url;
}
protected function compareIdentifier($asset, $identifier)
{
if (strpos($identifier, '.') !== false) {
list($name, $ext) = explode('.', $identifier);
if ($asset->identifier == $name and $asset->type == $ext) {
return true;
}
} else {
if ($asset->identifier == $identifier) {
return true;
}
}
return false;
}
}

View File

@ -1,26 +0,0 @@
{
"name" : "aldarien/asset",
"description" : "Asset manager module for my apps",
"type" : "library",
"require" : {
"aldarien/config" : "dev-master",
"aldarien/contract" : "dev-master"
},
"require-dev" : {
"phpunit/phpunit" : "^6.3"
},
"license" : "MIT",
"authors" : [{
"name" : "Aldarien",
"email" : "aldarien85@gmail.com"
}
],
"autoload" : {
"psr-4" : {
"App\\" : "app"
},
"files": [
"app/Helper/functions.php"
]
}
}

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
verbose="true"
bootstrap="./vendor/autoload.php"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./app</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -1,25 +0,0 @@
<?php
use PHPUnit\Framework\TestCase;
class AssetTest extends TestCase
{
public function setUp()
{
mkdir(root() . '/public');
mkdir(root() . '/public/css');
config('locations.public', root() . '/public');
file_put_contents(root() . '/public/css/style.css', 'body {color: black;}');
}
public function tearDown()
{
unlink(root() . '/public/css/style.css');
rmdir(root() . '/public/css');
rmdir(root() . '/public');
}
public function testAsset()
{
$this->assertEquals(asset('style.css'), '/css/style.css');
}
}
?>

View File

@ -1,13 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
config
# Eclipse IDE
.settings
.buildpath
.project

View File

@ -1,3 +0,0 @@
language: php
php: '7.1'
install: composer update

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,4 +0,0 @@
# config
Config module that recovers configuration files
[![Build Status](https://travis-ci.org/Aldarien/config.svg?branch=1.0.1)](https://travis-ci.org/Aldarien/config)

View File

@ -1,31 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\Config AS ConfigService;
class Config
{
use Contract;
protected static function newInstance()
{
return new ConfigService();
}
public static function get($name = null)
{
$instance = self::getInstance();
return $instance->get($name);
}
public static function set($name, $value)
{
$instance = self::getInstance();
return $instance->set($name, $value);
}
public static function addFile($filename)
{
$instance = self::getInstance();
return $instance->loadFile($filename);
}
}
?>

View File

@ -1,21 +0,0 @@
<?php
namespace App\Contract;
use Symfony\Component\Yaml\Yaml;
class YamlWrapper
{
public static function load($filename, $flags = 0)
{
return self::parse(file_get_contents($filename), $flags);
}
public static function parse($input, $flags = 0)
{
return Yaml::parse($input, $flags);
}
public static function dump($array, $inline = 2, $indent = 4, $flags = 0)
{
return Yaml::dump($array, $inline, $indent, $flags);
}
}
?>

View File

@ -1,9 +0,0 @@
<?php
function config($name = null, $value = null) {
if ($value == null) {
return App\Contract\Config::get($name);
} else {
return App\Contract\Config::set($name, $value);
}
}
?>

View File

@ -1,146 +0,0 @@
<?php
namespace App\Service;
use App\Contract\YamlWrapper;
class Config
{
protected $dir;
protected $data;
public function __construct($dir = null)
{
if ($dir == null) {
$dir = realpath(root() . '/config');
}
$this->dir = $dir;
$this->load();
}
protected function load()
{
$files = glob($this->dir . '/*.{php,json,yml}', GLOB_BRACE);
foreach ($files as $file) {
$info = pathinfo($file);
$name = $info['filename'];
$d = $this->getData($file);
$data[$name] = $d;
$data = array_merge($data, $this->translateArray($d, $name));
foreach ($data as $key => $value) {
$this->add($key, $value);
}
}
}
public function loadFile(string $filename)
{
if (!file_exists(realpath($filename))) {
return false;
}
$info = pathinfo($filename);
$name = $info['filename'];
$d = $this->getData($filename);
$data[$name] = $d;
$data = array_merge($data, $this->translateArray($d, $name));
foreach ($data as $key => $value) {
$this->add($key, $value);
}
return true;
}
protected function getData($filename)
{
$info = pathinfo($filename);
switch ($info['extension']) {
case 'php':
return include_once $filename;
case 'json':
return json_decode(file_get_contents($filename), true);
case 'yml':
return YamlWrapper::load($filename);
default:
throw new \DomainException('Invalid file extension for ' . $filename);
}
}
protected function translateArray($array, $level)
{
$output = [];
foreach ($array as $k1 => $l1) {
$key = $level . '.' . $k1;
if (is_array($l1)) {
$output[$key] = $l1;
$output = array_merge($output, $this->translateArray($l1, $key));
} else {
$output[$key] = $l1;
}
}
return $output;
}
protected function add($field, $value)
{
if (isset($this->data[$field])) {
if ($this->data[$field] == $value) {
return;
}
if (is_array($this->data[$field])) {
$this->data[$field] = $this->merge($this->data[$field], $this->replace($value));
} else {
$this->data[$field] = $this->replace($value);
}
} else {
$this->data[$field] = $this->replace($value);
}
}
protected function merge($arr1, $arr2)
{
$output = $arr1;
foreach ($arr2 as $k => $value) {
if (isset($arr1[$k])) {
if ($arr1[$k] == $value) {
continue;
}
if (is_array($arr1[$k])) {
$output[$k] = $this->merge($arr1[$k], $value);
} else {
$output[$k] = array_merge([$arr1[$k]], $value);
}
} else {
$output[$k] = $value;
}
}
return $output;
}
protected function replace($value)
{
if (is_array($value)) {
foreach ($value as $k => $v) {
$value[$k] = $this->replace($v);
}
return $value;
}
if (strpos($value, '{') !== false) {
while(strpos($value, '{') !== false) {
$ini = strpos($value, '{') + 1;
$end = strpos($value, '}', $ini);
$rep = substr($value, $ini, $end - $ini);
$value = str_replace('{' . $rep . '}', $this->get($rep), $value);
}
}
return $value;
}
public function get($name = null)
{
if ($name == null) {
return $this->data;
}
if (isset($this->data[$name])) {
return $this->data[$name];
}
return null;
}
public function set($name, $value)
{
$this->add($name, $value);
}
}
?>

View File

@ -1,3 +0,0 @@
<?php
include_once dirname(__DIR__) . '/vendor/autoload.php';
?>

View File

@ -1,28 +0,0 @@
{
"name": "aldarien/config",
"description": "Config module for my apps",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Aldarien",
"email": "aldarien85@gmail.com"
}
],
"require": {
"aldarien/contract": "dev-master",
"aldarien/root": "dev-master",
"symfony/yaml": "^3.3"
},
"autoload": {
"psr-4": {
"App\\": "app"
},
"files": [
"app/Helper/functions.php"
]
},
"require-dev": {
"phpunit/phpunit": "^6.3"
}
}

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
verbose="true"
bootstrap="./bootstrap/autoload.php"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./app</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -1,90 +0,0 @@
<?php
use PHPUnit\Framework\TestCase;
use App\Contract\YamlWrapper;
class ConfigTest extends TestCase
{
public function setUp()
{
mkdir(dirname(__DIR__) . '/config');
$str = "<?php return ['name' => 'Config', 'test_array' => ['data1' => 1, 'data2' => 2]]; ?>";
file_put_contents(dirname(__DIR__) . '/config/app.php', $str);
$data = ['name' => 'Config', 'test_array' => ['data1' => 1, 'data2' => 2]];
file_put_contents(dirname(__DIR__) . '/config/json.json', json_encode($data));
file_put_contents(dirname(__DIR__) . '/config/yaml.yml', YamlWrapper::dump($data));
$data = ['last_name' => 'Config'];
file_put_contents(dirname(__DIR__) . '/config/yaml.json', json_encode($data));
}
public function testGetNamePhp()
{
$name = 'Config';
$this->assertEquals($name, config('app.name'));
}
public function testGetNameJson()
{
$name = 'Config';
$this->assertEquals($name, config('json.name'));
}
public function testGetNameYaml()
{
$name = 'Config';
$this->assertEquals($name, config('yaml.name'));
}
public function testSetNamehp()
{
$new_name = 'Config_Test';
config('app.name', $new_name);
$this->assertEquals($new_name, config('app.name'));
}
public function testSetNameJson()
{
$new_name = 'Config_Test';
config('json.name', $new_name);
$this->assertEquals($new_name, config('json.name'));
}
public function testSetNameYaml()
{
$new_name = 'Config_Test';
config('yaml.name', $new_name);
$this->assertEquals($new_name, config('yaml.name'));
}
public function testArrayGetPhp()
{
$this->assertArrayHasKey('data1', config('app.test_array'));
}
public function testArrayGetJson()
{
$this->assertArrayHasKey('data1', config('json.test_array'));
}
public function testArrayGetYaml()
{
$this->assertArrayHasKey('data1', config('yaml.test_array'));
}
public function testSameSectionName()
{
$this->assertEquals('Config', config('yaml.last_name'));
}
public function testDuplicateValue()
{
config('json.name', 'Config2');
$this->assertEquals('Config2', config('json.name'));
}
public function testAddFile()
{
$filename = dirname(__DIR__) . '/composer.json';
App\Contract\Config::addFile($filename);
$this->assertEquals('aldarien/config', config('composer.name'));
}
public function tearDown()
{
unlink(dirname(__DIR__) . '/config/app.php');
unlink(dirname(__DIR__) . '/config/json.json');
unlink(dirname(__DIR__) . '/config/yaml.yml');
unlink(dirname(__DIR__) . '/config/yaml.json');
rmdir(dirname(__DIR__) . '/config');
}
}
?>

View File

@ -1,6 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,20 +0,0 @@
<?php
namespace App\Definition;
trait Contract
{
protected static $instance = null;
private function __construct() {}
protected static function getInstance()
{
if (self::$instance == null) {
self::$instance = static::newInstance();
}
return self::$instance;
}
abstract protected static function newInstance();
}
?>

View File

@ -1,18 +0,0 @@
{
"name": "aldarien/contract",
"description": "Contract trait for my apps",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Aldarien",
"email": "aldarien85@gmail.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"App\\": "app"
}
}
}

View File

@ -1,11 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
# Eclipse IDE
.settings
.buildpath
.project

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,2 +0,0 @@
# format
Module for formatting data, mostly numbers

View File

@ -1,43 +0,0 @@
<?php
namespace App\Helper;
class Format
{
public static function number(float $number, $decimals)
{
return number_format($number, $decimals, ',', '.');
}
public static function pesos(float $number, bool $print = false)
{
return (($print) ? '$ ' : '') . self::number($number, 0);
}
public static function ufs(float $number, bool $print = false)
{
return self::number($number, 2) . (($print) ? ' UF' : '');
}
public static function date(string $date)
{
$d = \Carbon\Carbon::parse($date, config('app.timezone'));
return $d->format("d \d\\e F Y");
}
public static function shortDate(string $date)
{
$d = \Carbon\Carbon::parse($date, config('app.timezone'));
return $d->format('d-m-Y');
}
public static function localDate(string $date)
{
$d = \Carbon\Carbon::parse($date, config('app.timezone'));
setlocale(LC_TIME, 'es');
return $d->formatLocalized('%d de %B de %Y');
}
public static function m2(float $number, bool $print = false)
{
return self::number($number, 2) . (($print) ? ' m&#0178;' : '');
}
public static function percent(float $number, bool $print = false)
{
return self::number($number, 2) . (($print) ? '%' : '');
}
}
?>

View File

@ -1,23 +0,0 @@
{
"name" : "aldarien/format",
"description" : "Module for formatting data, mostly numbers",
"type" : "library",
"require-dev" : {
"phpunit/phpunit" : "^6",
"aldarien/config": "dev-master"
},
"license" : "MIT",
"authors" : [{
"name" : "Aldarien",
"email" : "aldarien85@gmail.com"
}
],
"autoload" : {
"psr-4" : {
"App\\" : "app"
}
},
"require": {
"nesbot/carbon": "^2"
}
}

View File

@ -1,5 +0,0 @@
<?php
return [
'timezone' => 'America/Santiago'
];
?>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
verbose="true"
bootstrap="./vendor/autoload.php"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./app</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -1,59 +0,0 @@
<?php
use PHPUnit\Framework\TestCase;
use App\Helper\Format;
class FormatTest extends TestCase
{
protected $number = 5049872.31567;
protected $date = '2016-03-25';
public function testFormat()
{
$output = '5.049.872,316';
$result = Format::number($this->number, 3);
$this->assertEquals($output, $result);
}
public function testPesosPrint()
{
$output = '$ 5.049.872';
$result = Format::pesos($this->number, true);
$this->assertEquals($output, $result);
}
public function testUFPrint()
{
$output = '5.049.872,32 UF';
$result = Format::ufs($this->number, true);
$this->assertEquals($output, $result);
}
public function testDate()
{
$output = '25 de March 2016';
$result = Format::date($this->date);
$this->assertEquals($output, $result);
}
public function testShortDate()
{
$output = '25-03-2016';
$result = Format::shortDate($this->date);
$this->assertEquals($output, $result);
}
public function testLocalDate()
{
$output = '25 de marzo de 2016';
$result = Format::localDate($this->date);
$this->assertEquals($output, $result);
}
public function testM2Print()
{
$output = '5.049.872,32 m&#0178;';
$result = Format::m2($this->number, true);
$this->assertEquals($output, $result);
}
public function testPercentPrint()
{
$output = '5.049.872,32%';
$result = Format::percent($this->number, true);
$this->assertEquals($output, $result);
}
}
?>

View File

@ -1,7 +0,0 @@
#Eclipse IDE
.settings
.buildpath
.project
#Composer
vendor

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,2 +0,0 @@
# response
Response handler module for my apps

View File

@ -1,27 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\Response as ResponseService;
class Response
{
use Contract;
protected static function newInstance()
{
return new ResponseService();
}
public static function __callStatic($name, $params)
{
if (!method_exists(Response::class, $name)) {
$instance = self::getInstance();
if (method_exists($instance, $name)) {
return call_user_func_array([$instance, $name], $params);
}
return null;
}
return call_user_func_array([self, $name], $params);
}
}
?>

View File

@ -1,11 +0,0 @@
<?php
function sanitize() {
App\Contract\Response::sanitize();
}
function get($query = null) {
return App\Contract\Response::get($query);
}
function post($query = null) {
return App\Contract\Response::post($query);
}
?>

View File

@ -1,62 +0,0 @@
<?php
namespace App\Service;
class Response
{
protected $post;
protected $get;
protected $gump;
public function __construct()
{
$this->gump = new \GUMP();
}
public function sanitize()
{
if ($_POST) {
$this->post = $this->correctNumbers($this->gump->sanitize($_POST));
}
if ($_GET) {
$this->get = $this->correctNumbers($this->gump->sanitize($_GET));
}
}
public function correctNumbers(array $data)
{
$output = [];
foreach ($data as $key => $value) {
if (is_float(str_replace(',', '.', $value))) {
$output[$key] = str_replace(',', '.', $value);
} else {
$output[$key] = $value;
}
}
return $output;
}
public function get($query = null)
{
if ($this->get == null) {
$this->sanitize();
}
if ($query == null) {
return $this->get;
}
if (isset($this->get[$query])) {
return $this->get[$query];
}
return false;
}
public function post($query = null)
{
if ($this->post == null) {
$this->sanitize();
}
if ($query == null) {
return $this->post;
}
if (isset($this->post[$query])) {
return $this->post[$query];
}
return false;
}
}
?>

View File

@ -1,3 +0,0 @@
<?php
include_once dirname(__DIR__) . '/vendor/autoload.php';
?>

View File

@ -1,26 +0,0 @@
{
"name" : "aldarien/response",
"description" : "Response handler module for my apps",
"type" : "library",
"require" : {
"wixel/gump" : "^1.5",
"aldarien/contract" : "dev-master"
},
"require-dev" : {
"phpunit/phpunit" : "^6.3"
},
"license" : "MIT",
"authors" : [{
"name" : "Aldarien",
"email" : "jpvial@gmail.com"
}
],
"autoload" : {
"psr-4" : {
"App\\" : "app"
},
"files": [
"app/Helper/functions.php"
]
}
}

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
verbose="true"
bootstrap="./bootstrap/autoload.php"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./app</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -1,22 +0,0 @@
<?php
use PHPUnit\Framework\TestCase;
class ResponseTest extends TestCase
{
protected $value = 'Test';
public function setUp()
{
$_GET['test'] = $this->value;
$_POST['test'] = $this->value;
}
public function testGet()
{
$this->assertEquals($this->value, get('test'));
}
public function testPost()
{
$this->assertEquals($this->value, post('test'));
}
}
?>

View File

@ -1,5 +0,0 @@
.buildpath
.project
.settings
*.lock
vendor

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,22 +0,0 @@
# root
get root directory path for your project
## Usage
add `Root::root('project')` or `root('project')` or `Root::root()` or `root()` where you need the root directory of your proyect.
## Example
For the structure:
~~~
/usr/share/www/projects
- myProject
-- src
-- tests
~~~
using `Root::root('myProject')`
outputs:
`/usr/share/www/projects/myProject`

View File

@ -1,5 +0,0 @@
<?php
function root(string $proyect_name = '') {
return \Proyect\Root\Root::root($proyect_name);
}
?>

View File

@ -1,21 +0,0 @@
{
"name" : "aldarien/root",
"description" : "Find the root path for your proyect",
"authors" : [{
"name" : "Aldarien"
}
],
"license": "MIT",
"require-dev" : {
"phpunit/phpunit" : "~6",
"kint-php/kint" : "~2"
},
"autoload" : {
"psr-4" : {
"Proyect\\Root\\" : "src"
},
"files": [
"app/Helper/functions.php"
]
}
}

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.2/phpunit.xsd"
bootstrap="vendor/autoload.php"
forceCoversAnnotation="true"
beStrictAboutCoversAnnotation="true"
beStrictAboutOutputDuringTests="true"
beStrictAboutTodoAnnotatedTests="true"
verbose="true">
<testsuite>
<directory suffix="Test.php">tests</directory>
</testsuite>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -1,48 +0,0 @@
<?php
namespace Proyect\Root;
class Root
{
/**
* gives base path for your proyect.
* eg. <code>$proyect_name/public/index.php</code> calls for <code>$proyect_name/bootstrap/autoload.php</code>,
* you just need to
*
* <code>include root() . '/bootstrap/autoload.php'</code>
*
* @param string $proyect_name
* @return string
*/
public static function root(string $proyect_name = '')
{
$dir = realpath(__DIR__);
if ($proyect_name == '') {
return self::findComposerFile($dir);
} else {
$ini = strpos($dir, $proyect_name) + strlen($proyect_name);
}
$path = substr($dir, $ini);
$cnt = substr_count($path, DIRECTORY_SEPARATOR);
$root = DIRECTORY_SEPARATOR;
for ($i = 0; $i < $cnt; $i ++) {
$root .= '..' . DIRECTORY_SEPARATOR;
}
return realpath($dir . $root);
}
protected static function findComposerFile($dir)
{
if (file_exists($dir . '/vendor/')) {
return $dir;
}
$root = realpath('/');
if (realpath($dir) == $root) {
return null;
}
$dir = dirname($dir);
return self::findComposerFile($dir);
}
}
?>

View File

@ -1,61 +0,0 @@
<?php
use PHPUnit\Framework\TestCase;
use Proyect\Root\Root;
class RootTest extends TestCase
{
private $proyect_name = 'root';
private $current_dir;
public function testBaseRoot()
{
$this->getCurrentDir();
$this->assertEquals($this->getRoot(), $this->current_dir);
$this->assertEquals($this->getBaseRoot(), $this->current_dir);
}
public function testBaseRootFunction()
{
$this->getCurrentDir();
$this->assertEquals($this->getFRoot(), $this->current_dir);
$this->assertEquals($this->getFBaseRoot(), $this->current_dir);
}
public function testSrcRoot()
{
$this->changeDir('src');
$this->assertEquals(realpath($this->getRoot() . '/src'), $this->current_dir);
$this->assertEquals(realpath($this->getBaseRoot() . '/src'), $this->current_dir);
}
public function testSrcRootFunction()
{
$this->changeDir('src');
$this->assertEquals(realpath($this->getFRoot() . '/src'), $this->current_dir);
$this->assertEquals(realpath($this->getFBaseRoot() . '/src'), $this->current_dir);
}
private function getCurrentDir()
{
$this->current_dir = getcwd();
}
private function changeDir($dir)
{
chdir($dir);
$this->getCurrentDir();
}
private function getRoot()
{
return Root::root($this->proyect_name);
}
private function getBaseRoot()
{
return Root::root();
}
private function getFRoot()
{
return root($this->proyect_name);
}
private function getFBaseRoot()
{
return root();
}
}
?>

View File

@ -1,11 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
# Eclipse IDE
.settings
.buildpath
.project

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,2 +0,0 @@
# session
Session wrapper for aura/session

View File

@ -1,29 +0,0 @@
<?php
namespace App\Contract;
use Aura\Session\SessionFactory;
use App\Definition\Contract;
class Session
{
use Contract;
protected static function newInstance()
{
$session_factory = new SessionFactory();
return $session_factory->newInstance($_COOKIE);
}
public static function get($segment, $name)
{
$instance = self::getInstance();
$segment = $instance->getSegment($segment);
return $segment->get($name);
}
public static function set($segment, $name, $value)
{
$instance = self::getInstance();
$segment = $instance->getSegment($segment);
$segment->set($name, $value);
}
}
?>

View File

@ -1,24 +0,0 @@
{
"name": "aldarien/session",
"description": "Session wrapper for aura/session",
"type": "library",
"require": {
"aura/session": "^2.1",
"aldarien/contract": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "^6.3"
},
"license": "MIT",
"authors": [
{
"name": "Aldarien",
"email": "aldarien85@gmail.com"
}
],
"autoload": {
"psr-4": {
"App\\": "app"
}
}
}

View File

@ -1,12 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
.settings
.buildpath
.project
# Eclipse IDE

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,2 +0,0 @@
# url
Get relative path url

View File

@ -1,21 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\URL as URLService;
class URL
{
use Contract;
protected static function newInstance()
{
return new URLService();
}
public static function url($path = '', $variables = null)
{
$instance = self::getInstance();
return $instance->url($path, $variables);
}
}
?>

View File

@ -1,8 +0,0 @@
<?php
function url($path = '', $variables = null) {
return App\Contract\URL::url($path, $variables);
}
function baseUrl() {
return url();
}
?>

View File

@ -1,76 +0,0 @@
<?php
namespace App\Service;
use League\Uri\Http;
use League\Uri\Components\Host;
use League\Uri\Components\HierarchicalPath;
class URL
{
protected $root;
protected $relative;
public function __construct()
{
$this->root = $this->findRoot();
$this->relative = $this->findRelative();
}
protected function findRoot()
{
$base = $_SERVER['HTTP_HOST'] . ((isset($_SERVER['HTTP_PORT'])) ? ':' . $_SERVER['HTTP_PORT'] : '');
$uri = Http::createFromString(\Sabre\Uri\resolve($_SERVER['REQUEST_SCHEME'] . '://' . $base, $_SERVER['SCRIPT_NAME']));
$host = new Host($uri->getHost());
if ($host->isAbsolute()) {
return $host->getRegistrableDomain();
}
$base = $host . (($uri->getPort()) ? ':' . $uri->getPort() : '');
return ($uri->getScheme() ?: 'http') . '://' . $base;
}
protected function findRelative()
{
$uri = Http::createFromString($_SERVER['SCRIPT_NAME']);
$normalized = (new HierarchicalPath($uri->getPath()))->withoutLeadingSlash()->withoutTrailingSlash()->withoutDotSegments()->withoutEmptySegments();
if ($normalized->getDirname() == '.') {
return '';
}
return $normalized->getDirname();
}
public function url($path = '', $variables = null)
{
$uri = Http::createFromString($path);
if ($uri->getHost() != $this->root and $uri->getHost() != '') {
return $path;
}
$uri = \Sabre\Uri\resolve($this->getBaseUrl(), $path);
try {
$host = new Host(Http::createFromString($uri)->getHost());
} catch (\League\Uri\Exception $e) {
$uri = \Sabre\Uri\resolve($this->getBaseUrl(), '../../') . '/' . basename($path);
$host = new Host(Http::createFromString($uri)->getHost());
}
$base = new Host(Http::createFromString($this->root)->getHost());
if ($host . '' != $base . '') {
$host = new Host(Http::createFromString($this->root)->getHost());
$page = str_replace($this->root, '', $uri);
$uri = \Sabre\Uri\resolve(Http::createFromString($this->root)->getScheme() . '://' . $host->getRegistrableDomain(). '/', $page);
}
if ($variables != null) {
$uri = \Sabre\Uri\resolve($uri, '?' . http_build_query($variables));
}
$uri = \Sabre\Uri\normalize($uri);
return $uri;
}
protected function getBaseUrl()
{
$url = \Sabre\Uri\normalize(trim($this->root . '/' . $this->relative, '/') . '/');
return $url;
}
}
?>

View File

@ -1,28 +0,0 @@
{
"name" : "aldarien/url",
"description" : "Get relative path uri",
"type" : "library",
"require" : {
"aldarien/contract" : "dev-master",
"aldarien/root" : "dev-master",
"league/uri": "^5.2",
"sabre/uri": "^2.1"
},
"require-dev" : {
"phpunit/phpunit" : "^6.3"
},
"license" : "MIT",
"authors" : [{
"name" : "Aldarien",
"email" : "jpvial@gmail.com"
}
],
"autoload" : {
"psr-4" : {
"App\\" : "app"
},
"files": [
"app/Helper/functions.php"
]
}
}

View File

@ -1,10 +0,0 @@
composer.phar
/vendor/
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
.settings
.buildpath
.project

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Aldarien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,2 +0,0 @@
# view
View module for my apps

View File

@ -1,21 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\View as ViewService;
class View
{
use Contract;
protected static function newInstance()
{
return new ViewService();
}
public static function show($template, $variables = null)
{
$instance = self::getInstance();
return $instance->show($template, $variables);
}
}
?>

View File

@ -1,5 +0,0 @@
<?php
function view($template, $variables = null) {
return \App\Contract\View::show($template, $variables);
}
?>

View File

@ -1,27 +0,0 @@
<?php
namespace App\Service;
use Philo\Blade\Blade;
class View
{
protected $views;
protected $cache;
protected $blade;
public function __construct()
{
$this->views = config('locations.views');
$this->cache = config('locations.cache');
$this->blade = new Blade($this->views, $this->cache);
}
public function show($template, $vars = null)
{
if ($vars) {
return $this->blade->view()->make($template, $vars)->render();
}
return $this->blade->view()->make($template)->render();
}
}
?>

View File

@ -1,9 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>View</title>
</head>
<body>
View test
</body>
</html>

View File

@ -1,28 +0,0 @@
{
"name": "aldarien/view",
"description": "View module for my apps",
"type": "library",
"require": {
"philo/laravel-blade": "^3.1",
"aldarien/contract": "dev-master",
"aldarien/config": "dev-master"
},
"license": "MIT",
"authors": [
{
"name": "Aldarien",
"email": "aldarien85@gmail.com"
}
],
"autoload": {
"psr-4": {
"App\\": "app"
},
"files": [
"app/Helper/functions.php"
]
},
"require-dev": {
"phpunit/phpunit": "^6.3"
}
}

View File

@ -1,8 +0,0 @@
<?php
return [
'base' => root(),
'cache' => '{locations.base}/cache',
'resources' => '{locations.base}/resources',
'views' => '{locations.resources}/views'
];
?>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
verbose="true"
bootstrap="./vendor/autoload.php"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./app</directory>
</whitelist>
</filter>
</phpunit>

View File

@ -1,5 +0,0 @@
<?php
include_once dirname(__DIR__) . '/vendor/autoload.php';
echo view('base');
?>

View File

@ -1,9 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>View</title>
</head>
<body>
View test
</body>
</html>

View File

@ -1,22 +0,0 @@
<?php
use PHPUnit\Framework\TestCase;
class ViewTest extends TestCase
{
public function testView()
{
$output = <<<DATA
<!DOCTYPE html>
<html>
<head>
<title>View</title>
</head>
<body>
View test
</body>
</html>
DATA;
$this->assertEquals($output, view('base'));
}
}
?>

1
app/.adminer.env.sample Normal file
View File

@ -0,0 +1 @@
ADMINER_DESIGN=dracula

4
app/.db.env.sample Normal file
View File

@ -0,0 +1,4 @@
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=
MYSQL_USER=
MYSQL_PASSWORD=

11
app/.env.sample Normal file
View File

@ -0,0 +1,11 @@
APP_URL=
MYSQL_HOST=db
COOKIE_NAME=
COOKIE_DOMAIN=
COOKIE_PATH=/
MAX_LOGIN_HOURS=120
REDIS_HOST=redis
REDIS_PORT=6379

View File

@ -1,18 +0,0 @@
<?php
namespace App\Alias\Excel\Style;
use Slam\Excel\Helper\CellStyleInterface;
use Slam\Excel\Pear\Writer\Format;
class Mes implements CellStyleInterface
{
public function decorateValue($value)
{
return $value;
}
public function styleCell(Format $format): void
{
$format->setNumFormat('mmm-YY');
$format->setAlign('center');
}
}

View File

@ -1,12 +0,0 @@
<?php
use App\Helper\Format as F;
class Format
{
public static function __callstatic($name, $params)
{
if (method_exists(F, $name)) {
return F::$name($params);
}
}
}
?>

View File

@ -1,87 +0,0 @@
<?php
namespace App\Alias;
use Stringy\Stringy;
use App\Contract\Auth;
class Model extends \Model
{
public function getTable()
{
return parent::_get_table_name(static::class);
}
protected function log()
{
if (strpos(get_called_class(), 'Incoviba\\common\\') !== false) {
return;
}
$user = Auth::User()->id;
$orm = $this->orm;
$ref = new \ReflectionObject($orm);
if (!$ref->hasProperty('_dirty_fields')) {
return;
}
$dirty = $ref->getProperty('_dirty_fields');
$dirty->setAccessible(true);
$new_values = $dirty->getValue($orm);
$changes = array_combine(array_keys($new_values), array_fill(0, count($new_values), ['old' => '', 'new' => '']));
if ($this->isNew()) {
$old = (object) array_combine(array_keys($new_values), array_fill(0, count($new_values), ''));
} else {
$old = model(get_called_class())->findOne($this->{$this->getId()});
}
foreach ($new_values as $column => $value) {
$changes[$column] = ['column' => $column, 'old' => $old->$column, 'new' => $value];
}
$action = '[' . get_called_class() . ']';
doLog($user, $action, $changes);
}
public function getId()
{
if (property_exists(get_called_class(), '_id_column')) {
return static::$_id_column;
}
return $this->id;
}
public function save()
{
$ref = new \ReflectionObject($this);
if ($ref->hasProperty('_timestamps')) {
$ref = $ref->getProperty('_timestamps');
$ref->setAccessible(true);
if ($ref->getValue()) {
if ($this->is_new()) {
$this->setExpr('created_at', 'NOW()');
}
$this->setExpr('updated_at', 'NOW()');
}
}
if (!\ORM::getDb()->inTransaction()) {
\ORM::getDb()->beginTransaction();
}
try {
parent::save();
if (\ORM::getDb()->inTransaction()) {
\ORM::getDb()->commit();
}
} catch (\Exception $e) {
if (\ORM::getDb()->inTransaction()) {
\ORM::getDb()->rollBack();
}
throw $e;
}
$this->log();
}
public function __call($method, $args)
{
if (!method_exists($this, $method)) {
$str = '' . Stringy::create($method)->underscored();
if (method_exists($this, $str)) {
return call_user_func_array([$this, $str], $args);
}
throw new \BadMethodCallException($method . ' not found in ' . get_class($this));
}
return call_user_func_array([$this, $str], $args);
}
}
?>

View File

@ -1,20 +0,0 @@
<?php
namespace App\Alias;
use Carbon\Carbon;
/**
*
* @author Aldarien
* @property int id
* @property Date fecha
*
*/
class NewEstado extends NewModel
{
public function fecha()
{
return Carbon::parse($this->fecha, config('app.timezone'));
}
}
?>

View File

@ -1,9 +0,0 @@
<?php
namespace App\Alias;
class NewModel extends Model
{
protected static $_connection_name = 'mysql_copy';
protected static $_timestamps = true;
}
?>

View File

@ -1,15 +0,0 @@
<?php
namespace App\Alias;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class NewTipo extends NewModel
{
protected static $_timestamps = true;
}
?>

View File

@ -1,8 +0,0 @@
<?php
namespace App\Alias;
class OldModel extends Model
{
protected static $_connection_name = 'mysql';
}
?>

View File

@ -1,155 +0,0 @@
<?php
namespace App\Alias;
use Slam\Excel\Helper as ExcelHelper;
class PHPExcel
{
protected $name;
protected $filename;
protected $columns;
protected $data;
public function __construct($name, $filename)
{
$this->name = $name;
$this->filename = $filename;
}
public function addColumns($fields)
{
$columns = [];
foreach ($fields as $i => $field) {
if (is_object($field)) {
if (isset($field->style)) {
$style = $this->getExcelStyle($field->style);
} else {
$style = $this->getExcelStyle();
}
$column = new ExcelHelper\Column($field->name, $field->name, 10, $style);
} elseif (is_array($field)) {
if (isset($field['style'])) {
$style = $this->getExcelStyle($field['style']);
} else {
$style = $this->getExcelStyle();
}
$column = new ExcelHelper\Column($field['name'], $field['name'], 10, $style);
} else {
$style = $this->getExcelStyle();
$column = new ExcelHelper\Column($field, $field, 10, $style);
}
$columns []= $column;
}
$collection = new ExcelHelper\ColumnCollection($columns);
$this->columns = $collection;
}
protected function getExcelStyle($style = 'text')
{
switch (strtolower($style)) {
case 'date':
return new ExcelHelper\CellStyle\Date();
case 'mes':
return new Excel\Style\Mes();
case 'currency':
case 'amount':
return new ExcelHelper\CellStyle\Amount();
case 'number':
case 'integer':
return new ExcelHelper\CellStyle\Integer();
case 'percent':
case 'percentage':
return new ExcelHelper\CellStyle\Percentage();
case 'text':
case 'string':
default:
return new ExcelHelper\CellStyle\Text();
}
}
public function addData($data)
{
if ($this->data == null) {
$this->data = [];
}
$this->data = array_merge($data);
}
public function addRow($rowData)
{
if ($this->data == null) {
$this->data = [];
}
$this->data []= $rowData;
}
public function addTotals($totals)
{
$columns = (array) $this->columns;
$columns = array_pop($columns);
$ts = [];
foreach ($columns as $column) {
$col = $column->getHeading();
if (isset($totals[$col])) {
$ts[$col] = $this->getTotal($col, $totals[$col]);
continue;
}
$ts[$col] = '';
}
$this->data []= $ts;
}
protected function getTotal($col, $aggr)
{
$col_num = $this->getColNumber($col);
$col = $this->getColName($col_num);
switch(strtolower($aggr)) {
case 'sum':
$num = 109;
break;
case 'count':
$num = 102;
break;
case 'counta':
$num = 103;
break;
default:
$num = 0;
}
if ($num > 0) {
$end = count($this->data) + 2;
$str = "=SUBTOTAL({$num};{$col}3:{$col}{$end})";
return $str;
}
return $aggr;
}
protected function getColNumber($col)
{
$columns = (array) $this->columns;
$columns = array_keys(array_pop($columns));
return array_search($col, $columns);
}
protected function getColName($col_num)
{
$cols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$N = strlen($cols);
$name = '';
if ($col_num > $N) {
$name .= $cols[floor($col_num / $N)];
$col_num = $N * ($col_num / $N - floor($col_num / $N));
}
$name .= $cols[$col_num];
return $name;
}
public function informe()
{
header("Content-Type: application/octet-stream; charset=utf-8");
header('Content-Transfer-Encoding: binary');
header('Content-Disposition: attachment; filename="' . $this->filename . '"');
header('Cache-Control: max-age=0');
$pE = new ExcelHelper\TableWorkbook('php://output');
$ws = $pE->addWorksheet($this->name);
$table = new ExcelHelper\Table($ws, 0, 0, $this->name, new \ArrayIterator($this->data));
$table->setColumnCollection($this->columns);
$pE->writeTable($table);
$pE->close();
}
}

View File

@ -1,27 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\Auth as AuthService;
class Auth
{
use Contract;
protected static function newInstance()
{
return new AuthService();
}
public static function __callStatic($name, $params)
{
if (!method_exists(Response::class, $name)) {
$instance = self::getInstance();
if (method_exists($instance, $name)) {
return call_user_func_array([$instance, $name], $params);
}
return null;
}
return call_user_func_array([self, $name], $params);
}
}
?>

View File

@ -1,27 +0,0 @@
<?php
namespace App\Contract;
use App\Definition\Contract;
use App\Service\Route as RouteService;
class Route
{
use Contract;
protected static function newInstance()
{
return new RouteService();
}
public static function __callStatic($name, $params)
{
if (!method_exists(Response::class, $name)) {
$instance = self::getInstance();
if (method_exists($instance, $name)) {
return call_user_func_array([$instance, $name], $params);
}
return null;
}
return call_user_func_array([self, $name], $params);
}
}
?>

View File

@ -1,41 +0,0 @@
<?php
namespace App\Controller\API;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Incoviba\old\Proyecto\Proyecto;
class Unidades {
public function no_reservadas(Request $request, Response $response, $id_proyecto, $id_tipo) {
$proyecto = model(Proyecto::class)->findOne($id_proyecto);
if (!$proyecto) {
throw new \InvalidArgumentException('Proyecto identificado por ' . $id_proyecto . ' no existe.');
}
$unidades = $proyecto->unidades($id_tipo);
$unidades = array_filter($unidades, function($item) {
return !$item->isVendida() and !$item->isReservada();
});
$unidades = array_map(function($item) {
return $item->asArray();
}, $unidades);
usort($unidades, function($a, $b) {
$ap = strpos($a['descripcion'], ' ');
$ad = $a['descripcion'];
if ($ap != false) {
$ad = substr($ad, 0, $ap);
}
$bd = $b['descripcion'];
$bp = strpos($b['descripcion'], ' ');
if ($bp != false) {
$bd = substr($bd, 0, $bp);
}
return strcmp(
str_pad($ad, 4, '0', \STR_PAD_LEFT),
str_pad($bd, 4, '0', \STR_PAD_LEFT)
);
});
$output = array_values($unidades);
$response->getBody()->write(\json_encode($output));
return $response->withHeader('Content-Type', 'application/json');
}
}

Some files were not shown because too many files have changed in this diff Show More