Implemented repository mapper, and venta show
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace Incoviba\Model\Venta;
|
||||
|
||||
use DateTimeInterface;
|
||||
use Incoviba\Common\Ideal;
|
||||
use Incoviba\Model;
|
||||
|
||||
@ -15,6 +16,33 @@ class Unidad extends Ideal\Model
|
||||
public array $precios = [];
|
||||
public ?Precio $currentPrecio = null;
|
||||
|
||||
public function precio(DateTimeInterface $dateTime): Precio
|
||||
{
|
||||
if ($dateTime > $this->currentPrecio->current->fecha) {
|
||||
return $this->currentPrecio;
|
||||
}
|
||||
$precio = array_reduce(array_filter($this->precios, function(Precio $precio) use ($dateTime) {
|
||||
return $dateTime > $precio->current->fecha;
|
||||
}), function(?Precio $max, Precio $precio) {
|
||||
if ($max === null) {
|
||||
return $precio;
|
||||
}
|
||||
return $max->current->fecha > $precio->current->fecha ? $max : $precio;
|
||||
});
|
||||
if ($precio === null) {
|
||||
$precio = array_reduce(array_filter($this->precios, function(Precio $precio) use ($dateTime) {
|
||||
return $dateTime < $precio->current->fecha;
|
||||
}), function(?Precio $min, Precio $precio) {
|
||||
if ($min === null) {
|
||||
return $precio;
|
||||
}
|
||||
return $min->current->fecha < $precio->current->fecha ? $min : $precio;
|
||||
});
|
||||
}
|
||||
|
||||
return $precio;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): mixed
|
||||
{
|
||||
return array_merge(parent::jsonSerialize(), [
|
||||
|
Reference in New Issue
Block a user