diff --git a/api/common/Controller/Cuentas.php b/api/common/Controller/Cuentas.php index 0100df3..b27fe66 100644 --- a/api/common/Controller/Cuentas.php +++ b/api/common/Controller/Cuentas.php @@ -82,6 +82,15 @@ class Cuentas { ]; return $this->withJson($response, $output); } + public function categoria(Request $request, Response $response, Factory $factory, $cuenta_id): Response { + $cuenta = $factory->find(Cuenta::class)->one($cuenta_id); + $output = [ + 'input' => $cuenta_id, + 'cuenta' => $cuenta?->toArray(), + 'categoria' => $cuenta?->categoria()->toArray() + ]; + return $this->withJson($response, $output); + } public function entradas(Request $request, Response $response, Factory $factory, $cuenta_id): Response { $cuenta = $factory->find(Cuenta::class)->one($cuenta_id); $entradas = null; @@ -120,6 +129,8 @@ class Cuentas { $arr['valorFormateado'] = $cuenta->moneda()->format($arr['valor']); } } + $arr['debito']['categoria'] = $transaccion->debito()->categoria()->toArray(); + $arr['credito']['categoria'] = $transaccion->credito()->categoria()->toArray(); $transaccion = $arr; } } diff --git a/api/resources/routes/cuentas.php b/api/resources/routes/cuentas.php index 06ea592..c1df50c 100644 --- a/api/resources/routes/cuentas.php +++ b/api/resources/routes/cuentas.php @@ -11,6 +11,7 @@ $app->group('/cuenta/{cuenta_id}', function($app) { $app->get('/amount', [Cuentas::class, 'transaccionesAmount']); $app->get('[/{limit:[0-9]+}[/{start:[0-9]+}]]', [Cuentas::class, 'transacciones']); }); + $app->get('/categoria', [Cuentas::class, 'categoria']); $app->put('/edit', [Cuentas::class, 'edit']); $app->delete('/delete', [Cuentas::class, 'delete']); $app->get('[/]', [Cuentas::class, 'show']); diff --git a/ui/public/assets/scripts/cuentas.show.js b/ui/public/assets/scripts/cuentas.show.js index c4f03c6..cc551ab 100644 --- a/ui/public/assets/scripts/cuentas.show.js +++ b/ui/public/assets/scripts/cuentas.show.js @@ -96,40 +96,44 @@ const transacciones = { return } this.cuenta = data.cuenta - this.saldo = this.cuenta.saldo - $('#cuenta').html(this.cuenta.nombre + ' (' + this.cuenta.categoria.nombre + ')').append( - $('').attr('class', 'square full icon').css('color', '#' + this.cuenta.tipo.color) - ) - const amount = data.transacciones - const step = 50 - for (let i = 0; i < amount; i += step) { - promises.push( - sendGet(_urls.api + '/cuenta/' + this.cuenta_id + '/transacciones/' + step + '/' + i) + sendGet(_urls.api + '/cuenta/' + this.cuenta_id + '/categoria').then((resp) => { + this.cuenta.categoria = resp.categoria + }).then(() => { + this.saldo = this.cuenta.saldo + $('#cuenta').html(this.cuenta.nombre + ' (' + this.cuenta.categoria.nombre + ')').append( + $('').attr('class', 'square full icon').css('color', '#' + this.cuenta.tipo.color) ) - } - if (promises.length > 0) { - Promise.all(promises).then((data_arr) => { - this.transacciones = [] - data_arr.forEach(data => { - if (data.transacciones === null || data.transacciones.length === 0) { - return - } - $.each(data.transacciones, (i, el) => { - const tr = new Transaccion(el) - tr.setCuenta(this.cuenta) - tr.setModal(this.modal) - this.transacciones.push(tr) + const amount = data.transacciones + const step = 50 + for (let i = 0; i < amount; i += step) { + promises.push( + sendGet(_urls.api + '/cuenta/' + this.cuenta_id + '/transacciones/' + step + '/' + i) + ) + } + if (promises.length > 0) { + Promise.all(promises).then((data_arr) => { + this.transacciones = [] + data_arr.forEach(data => { + if (data.transacciones === null || data.transacciones.length === 0) { + return + } + $.each(data.transacciones, (i, el) => { + const tr = new Transaccion(el) + tr.setCuenta(this.cuenta) + tr.setModal(this.modal) + this.transacciones.push(tr) + }) }) + this.transacciones.sort((a, b) => { + return (new Date(b.fecha)) - (new Date(a.fecha)) + }) + }).then(() => { + this.draw() }) - this.transacciones.sort((a, b) => { - return (new Date(b.fecha)) - (new Date(a.fecha)) - }) - }).then(() => { + } else { this.draw() - }) - } else { - this.draw() - } + } + }) }) }, cuentas: () => { @@ -141,11 +145,18 @@ const transacciones = { }).then(() => { const select = this.modal.find("[name='cuenta']") $.each(this.cuentas, (i, el) => { - select.append( - $('').attr('value', el.id).html(el.nombre + ' (' + el.categoria.nombre + ')') - ) + this.get().categoria(i).then(() => { + select.append( + $('').attr('value', el.id).html(el.nombre + ' (' + el.categoria.nombre + ')') + ) + }) }) }) + }, + categoria: (idx) => { + return sendGet(_urls.api + '/cuenta/' + this.cuentas[idx].id + '/categoria').then((data) => { + this.cuentas[idx].categoria = data.categoria + }) } } }, @@ -172,7 +183,7 @@ const transacciones = { fecha: fecha, valor: $("[name='cambio']").val() }) - sendPut(_urls.api + '/tipos/cambios/add', data1) + sendPost(_urls.api + '/tipos/cambios/add', data1) const valor = $("[name='valor']").val() const cuenta = $("[name='cuenta']").val()