From 197230a4baa254643baffd104c970d00207fc93a Mon Sep 17 00:00:00 2001 From: ale Date: Fri, 5 Jul 2024 19:10:13 -0300 Subject: [PATCH] Eliminados metodos no usados + nombres mas descriptivos --- app/Models/Barrio.php | 31 +++--------- app/Models/Pedido.php | 92 ++++++++++++++--------------------- app/Models/Producto.php | 13 ----- app/Utils/TransporteUtils.php | 2 +- 4 files changed, 44 insertions(+), 94 deletions(-) diff --git a/app/Models/Barrio.php b/app/Models/Barrio.php index 232d7ea..760a979 100644 --- a/app/Models/Barrio.php +++ b/app/Models/Barrio.php @@ -39,36 +39,20 @@ function crearPedido(string $nombre) : Pedido { return $this->pedidos()->create(['nombre' => $name]); } - function pedidosPagados() { - return $this->pedidos()->where('pagado',true); - } - function totalARecaudar() : float { return $this->calcularTotalPagados(); } - function totalNoBarriales() : float { - return $this->calcularTotalPagados( - fn($p) => $p->total($p->productosNoBarriales()) - ); - } - - function totalParaTransporte() : float { - return $this->calcularTotalPagados( - fn($p) => $p->total($p->productosConTransporte()) - ); - } - - function totalATransferir() : float { - return $this->totalNoBarriales() + TransporteUtils::total($this->totalParaTransporte()); - } - private function calcularTotalPagados(Closure $closure = null) : float { if (!$closure) $closure = fn($p) => $p->totalChismosa(); return $this->pedidosPagados()->sum($closure); } + function totalATransferir() : float { + return $this->calcularTotalPagados($p->totalATransferir()); + } + /** * Los productos que pertenecen al barrio. */ @@ -112,8 +96,7 @@ private function armarColumnasPedido() : array { } } - private function cantidadPedida($productoId) - { + private function cantidadPedida($productoId) { $pedidos = $this->pedidos() ->whereHas('productos', function ($query) use ($productoId) { @@ -122,7 +105,7 @@ function ($query) use ($productoId) { return $pedidos->sum(function ($pedido) use ($productoId) { return $pedido->productos - ->where('id', $productoId) - ->first()->pivot->cantidad ?? 0;}); + ->find($productoId) + ->pivot->cantidad ?? 0;}); } } diff --git a/app/Models/Pedido.php b/app/Models/Pedido.php index 1c8deea..c9f0d94 100644 --- a/app/Models/Pedido.php +++ b/app/Models/Pedido.php @@ -26,6 +26,18 @@ public function barrio(): BelongsTo { return $this->belongsTo(Barrio::class); } + function togglePagado() : bool { + $this->pagado = !$this->pagado; + $this->save(); + return $this->pagado; + } + + function toggleTerminado() : bool { + $this->terminado = !$this->terminado; + $this->save(); + return $this->terminado; + } + /** * Los productos que pertenecen al pedido. */ @@ -33,34 +45,28 @@ public function productos(): BelongsToMany { return $this->belongsToMany(Producto::class)->withPivot(['cantidad']); } - /** - * Los productos del pedido que no aportan para el - * bono de transporte - */ - function productosSinTransporte() { - return $this->productos()->orWhere(['bono' => true, 'barrial' => true]); + function agregarProducto(Producto $producto, int $cantidad) { + $productoEnChismosa = $this->productos()->where('id', $producto->id)->first(); + if ($productoEnChismosa) { + $productoEnChismosa->pivot->cantidad += $cantidad; + $productoEnChismosa->save(); + return $productoEnChismosa; + } else { + $this->productos()->attach($producto, ['cantidad' => $cantidad]); + return $this->productos()->where('id', $producto->id)->first(); + } + } + + function quitarProducto(Producto $producto) { + $this->productos()->detach($producto); } /** - * Los productos del pedido que aportan para el - * bono de transporte. + * El total de los productos del pedido + * sumado al total de los bonos de transporte */ - function productosConTransporte() { - return $this->productos()->where(['bono' => false, 'barrial' => false]); - } - - /** - * Los productos no barriales del pedido. - */ - function productosNoBarriales() { - return $this->productos()->where('barrial',false); - } - - /** - * Los bonos del pedido. - */ - function bonos() { - return $this->productos()->where('bono',true); + function totalChismosa() : float { + return $this->totalProductos() + $this->totalTransporte(); } /** @@ -71,7 +77,7 @@ function bonos() { * Si la colección es null o no se pasa ningún parámetro * se toman todos los productos del pedido. */ - function total($productos = null) : float { + function totalProductos($productos = null) : float { if (!$productos) $productos = $this->productos(); @@ -81,38 +87,12 @@ function total($productos = null) : float { /** * El total de bonos de transporte del pedido */ - function totalTransporte() : int { - if ($this->productos()->every(fn($prod) => !$prod->pagaTransporte())) - return 0; - - return TransporteUtils::total($this->productosConTransporte()); + function totalBonosDeTransporte() : int { + return TransporteUtils::calcularTotal($this->productosConTransporte()); } - /** - * El total de los productos del pedido - * sumado al total de los bonos de transporte - */ - function totalChismosa() : float { - return $this->total() + $this->totalTransporte(); - } - - function toggleConfirm() : bool { - $this->confirmed = !$this->confirmed; - $this->save(); - return $this->confirmed; - } - - function agregarProducto(Producto $producto, int $cantidad) { - $productoEnChismosa = $this->productos()->where('id', $producto->id)->first(); - if ($productoEnChismosa) { - $productoEnChismosa->pivot->cantidad += $cantidad; - $productoEnChismosa->save(); - } else { - $this->productos()->attach($producto, ['cantidad' => $cantidad]); - } - } - - function quitarProducto(Producto $producto) { - $this->productos()->detach($producto); + function totalATransferir() : float { + $productos = $this->productos()->where(['bono' => false, 'barrial' => false])->get(); + return $this->totalProductos($productos); } } diff --git a/app/Models/Producto.php b/app/Models/Producto.php index 59966ad..5aaec75 100644 --- a/app/Models/Producto.php +++ b/app/Models/Producto.php @@ -48,17 +48,4 @@ public function barrio(): BelongsTo { return $this->belongsTo(Barrio::class); } - - /** - * Los productos centrales. - */ - public static function centrales() { - return Producto::where([ - 'barrial' => false, - ]); - } - - function pagaTransporte() : bool { - return !$this->bono && !$this->barrial; - } } diff --git a/app/Utils/TransporteUtils.php b/app/Utils/TransporteUtils.php index 1de8dfc..12f9e4f 100644 --- a/app/Utils/TransporteUtils.php +++ b/app/Utils/TransporteUtils.php @@ -13,7 +13,7 @@ static function cantidad(float $total) : int { return 0; } - static function total(float $total) : int { + static function calcularTotal(float $total) : int { return cantidad($total) * COSTO_TRANSPORTE; } }