From 4374392af1ff6759192f470a57d5826165efcfa3 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Thu, 29 Jul 2021 22:05:38 -0400 Subject: [PATCH] Cambios al api revisado en UI --- api/common/Controller/Entradas.php | 9 +++++++++ api/common/Controller/Fuentes.php | 7 +++++++ api/nginx.conf | 16 ++++++++++++++++ api/src/Entrada.php | 15 +++++++++++++-- api/src/Fuente.php | 14 ++++++++++++++ 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/api/common/Controller/Entradas.php b/api/common/Controller/Entradas.php index 6621a0f..2d7c177 100644 --- a/api/common/Controller/Entradas.php +++ b/api/common/Controller/Entradas.php @@ -12,6 +12,15 @@ class Entradas { public function __invoke(Request $request, Response $response, Factory $factory): Response { $entradas = $factory->find(Entrada::class)->array(); + if ($entradas !== null) { + usort($entradas, function($a, $b) { + $d = $a['fecha'] - $b['fecha']; + if ($d === 0) { + return strcmp($a['cuenta']['nombre'], $b['cuenta']['nombre']); + } + return $d; + }); + } $output = [ 'entradas' => $entradas ]; diff --git a/api/common/Controller/Fuentes.php b/api/common/Controller/Fuentes.php index 5ccb223..ab2136c 100644 --- a/api/common/Controller/Fuentes.php +++ b/api/common/Controller/Fuentes.php @@ -69,6 +69,13 @@ class Fuentes { if ($fuente !== null) { $entradas = $fuente->entradas(); if ($entradas !== null) { + usort($entradas, function($a, $b) { + $d = $a->fecha()->diffInDays($b->fecha(), false); + if ($d === 0) { + return strcmp($a->cuenta()->nombre, $b->cuenta()->nombre); + } + return $d; + }); array_walk($entradas, function(&$item) { $item = $item->toArray(); }); diff --git a/api/nginx.conf b/api/nginx.conf index 7eed302..44c93fd 100644 --- a/api/nginx.conf +++ b/api/nginx.conf @@ -10,6 +10,22 @@ server { } location ~ \.php$ { + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent, + X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; + add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH'; + add_header 'Content-Type' 'application/json'; + add_header 'Content-Length' 0; + return 204; + } + + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent, + X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; + add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH'; + try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass api:9000; diff --git a/api/src/Entrada.php b/api/src/Entrada.php index fa61ce7..48b3196 100644 --- a/api/src/Entrada.php +++ b/api/src/Entrada.php @@ -8,12 +8,14 @@ use ProVM\Common\Alias\Model; * @property int $id * @property \DateTime $fecha * @property Fuente $fuente_id + * @property string $glosa + * @property string $detalle * @property Cuenta $cuenta_id * @property double $valor */ class Entrada extends Model { public static $_table = 'entradas'; - protected static $fields = ['fecha', 'fuente_id', 'cuenta_id', 'value']; + protected static $fields = ['fecha', 'fuente_id', 'glosa', 'detalle', 'cuenta_id', 'valor']; protected $fuente; public function fuente() { @@ -25,7 +27,7 @@ class Entrada extends Model { protected $cuenta; public function cuenta() { if ($this->cuenta === null) { - $this->cuenta = $this->childOf(Cuente::class, [Model::SELF_KEY => 'cuenta_id']); + $this->cuenta = $this->childOf(Cuenta::class, [Model::SELF_KEY => 'cuenta_id']); } return $this->cuenta; } @@ -35,4 +37,13 @@ class Entrada extends Model { } $this->fecha = $fecha->format('Y-m-d'); } + + public function toArray(): array { + $arr = parent::toArray(); + $arr['fuente'] = $this->fuente()->toArray(); + $arr['cuenta'] = $this->cuenta()->toArray(); + $arr['fechaFormateada'] = $this->fecha()->format('d-m-Y'); + $arr['valorFormateado'] = '$' . number_format($this->valor, 0, ',', '.'); + return $arr; + } } diff --git a/api/src/Fuente.php b/api/src/Fuente.php index 34ebcc1..17869bf 100644 --- a/api/src/Fuente.php +++ b/api/src/Fuente.php @@ -26,6 +26,18 @@ class Fuente extends Model { } return $this->banco; } + protected $saldo; + public function saldo() { + if ($this->saldo === null) { + $this->saldo = 0; + if ($this->entradas() !== null) { + $this->saldo = array_reduce($this->entradas(), function($sum, $item) { + return $sum + $item->valor; + }); + } + } + return $this->saldo; + } protected $entradas; public function entradas() { @@ -39,6 +51,8 @@ class Fuente extends Model { $arr = parent::toArray(); $arr['tipo'] = $this->tipo()->toArray(); $arr['banco'] = $this->banco()->toArray(); + $arr['saldo'] = $this->saldo(); + $arr['saldoFormateado'] = '$' . number_format($this->saldo(), 0, ',', '.'); return $arr; } }