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

View File

@ -96,4 +96,24 @@ function totalTransporte() : int {
function totalChismosa() : float { function totalChismosa() : float {
return $this->total() + $this->totalTransporte(); 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->unsignedBigInteger('barrio_id');
$table->timestamps(); $table->timestamps();
$table->foreign('barrio_id')->references('id')->on('barrios'); $table->foreign('barrio_id')->references('id')->on('barrios');
$table->unique(['barrio_id','name']);
}); });
} }