Eliminados metodos no usados + nombres mas descriptivos

This commit is contained in:
Alejandro Tasistro 2024-07-05 19:10:13 -03:00
parent 3b0ad4b4f0
commit 197230a4ba
4 changed files with 44 additions and 94 deletions

View File

@ -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;});
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}