From 4738dae7c8dfab92ba4d344dae8b7fd128475e98 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Mon, 12 Feb 2024 09:59:15 -0300 Subject: [PATCH] DAPs API --- app/src/Controller/API/Contabilidad/DAPs.php | 35 +++++++++++++ app/src/Model/DAP.php | 36 +++++++++++++ app/src/Repository/DAP.php | 54 ++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 app/src/Controller/API/Contabilidad/DAPs.php create mode 100644 app/src/Model/DAP.php create mode 100644 app/src/Repository/DAP.php diff --git a/app/src/Controller/API/Contabilidad/DAPs.php b/app/src/Controller/API/Contabilidad/DAPs.php new file mode 100644 index 0000000..d968318 --- /dev/null +++ b/app/src/Controller/API/Contabilidad/DAPs.php @@ -0,0 +1,35 @@ + $inmobiliaria_rut, + 'daps' => [] + ]; + try { + $inmobiliaria = $inmobiliariaRepository->fetchById($inmobiliaria_rut); + $cuentas = $cuentaRepository->fetchByInmobiliaria($inmobiliaria->rut); + foreach ($cuentas as $cuenta) { + $daps = $dapRepository->fetchByCuenta($cuenta->id); + } + } catch (Implement\Exception\EmptyResult) {} + return $this->withJson($response, $output); + } +} \ No newline at end of file diff --git a/app/src/Model/DAP.php b/app/src/Model/DAP.php new file mode 100644 index 0000000..5e440d4 --- /dev/null +++ b/app/src/Model/DAP.php @@ -0,0 +1,36 @@ +termino->diff($this->inicio)->days; + } + public function interes(): float + { + return ($this->futuro - $this->capital) / $this->capital / $this->periodo() * 365; + } + + public function jsonSerialize(): mixed + { + return array_merge(parent::jsonSerialize(), [ + 'cuenta_id' => $this->cuenta->id, + 'capital' => $this->capital, + 'futuro' => $this->futuro, + 'inicio' => $this->inicio->format('Y-m-d'), + 'termino' => $this->termino->format('Y-m-d'), + 'periodo' => $this->periodo(), + 'interes' => $this->interes() + ]); + } +} \ No newline at end of file diff --git a/app/src/Repository/DAP.php b/app/src/Repository/DAP.php new file mode 100644 index 0000000..8baaf0a --- /dev/null +++ b/app/src/Repository/DAP.php @@ -0,0 +1,54 @@ +setTable('depositos'); + } + + public function create(?array $data = null): Model\DAP + { + $map = (new Implement\Repository\MapperParser(['capital', 'futuro'])) + ->register('cuenta_id', (new Implement\Repository\Mapper()) + ->setProperty('cuenta') + ->setFunction(function(array $data) { + return $this->cuentaRepository->fetchById($data['cuenta_id']); + })) + ->register('inicio', new Implement\Repository\Mapper\DateTime('inicio')) + ->register('termino', new Implement\Repository\Mapper\DateTime('termino')); + return $this->parseData(new Model\DAP(), $data, $map); + } + public function save(Define\Model $model): Model\DAP + { + $model->id = $this->saveNew([ + 'cuenta_id', 'capital', 'futuro', 'inicio', 'termino' + ], [ + $model->cuenta->id, $model->capital, $model->futuro, + $model->inicio->format('Y-m-d'), $model->termino->format('Y-m-d') + ]); + return $model; + } + + public function edit(Define\Model $model, array $new_data): Model\DAP + { + return $this->update($model, ['cuenta_id', 'capital', 'futuro', 'inicio', 'termino'], $new_data); + } + + public function fetchByCuenta(int $cuenta_id): array + { + $query = $this->connection->getQueryBuilder() + ->select() + ->from($this->getTable()) + ->where('cuenta_id = ?'); + return $this->fetchMany($query, [$cuenta_id]); + } +} \ No newline at end of file