Compare commits

..

4 Commits

3 changed files with 29 additions and 3 deletions

View File

@ -33,14 +33,17 @@ public function pedidos(): HasMany
return $this->hasMany(Pedido::class);
}
function crearPedido(string $nombre) : Pedido {
return $this->pedidos()->create(['name' => $name]);
}
function pedidosConfirmados() {
return $this->pedidos()->where('confirmed',true);
}
private function calcularTotalConfirmados($closure = null) : float {
private function calcularTotalConfirmados(Closure $closure = null) : float {
if (!$closure)
$closure = fn($p) => $p->totalChismosa();
return $this->pedidosConfirmados()->sum($closure);
}
@ -49,7 +52,9 @@ function totalARecaudar() : float {
}
function totalNoBarriales() : float {
return $this->calcularTotalConfirmados(fn($p) => $p->total($p->productosNoBarriales()));
return $this->calcularTotalConfirmados(
fn($p) => $p->total($p->productosNoBarriales())
);
}
function totalTransporte() : float {

View File

@ -96,4 +96,24 @@ function totalTransporte() : int {
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);
}
}

View File

@ -18,6 +18,7 @@ public function up(): void
$table->unsignedBigInteger('barrio_id');
$table->timestamps();
$table->foreign('barrio_id')->references('id')->on('barrios');
$table->unique(['barrio_id','name']);
});
}