Mejora al cargar las transacciones por tramos

This commit is contained in:
2021-08-01 22:53:02 -04:00
parent 4441444d78
commit af988aea6c
7 changed files with 78 additions and 53 deletions

View File

@ -43,25 +43,23 @@ class Cuenta extends Model {
return $this->abonos;
}
protected $transacciones;
public function transacciones() {
public function transacciones($limit = null, $start = 0) {
if ($this->transacciones === null) {
$this->transacciones = [];
if ($this->abonos() !== null) {
$this->transacciones = array_merge($this->transacciones, $this->abonos());
$transacciones = Model::factory(Transaccion::class)
->join('cuentas', 'cuentas.id = transacciones.desde_id OR cuentas.id = transacciones.hasta_id')
->whereEqual('cuentas.id', $this->id)
->orderByAsc('transacciones.fecha');
if ($limit !== null) {
$transacciones = $transacciones->limit($limit)
->offset($start);
}
if ($this->cargos() !== null) {
$this->transacciones = array_merge($this->transacciones, array_map(function($item) {
$item->valor = - $item->valor;
return $item;
}, $this->cargos()));
}
usort($this->transacciones, function($a, $b) {
$d = $a->fecha()->diffInDays($b->fecha(), false);
if ($d === 0) {
return $a->valor - $b->valor;
$this->transacciones = $transacciones->findMany();
foreach ($this->transacciones as &$transaccion) {
$transaccion->setFactory($this->factory);
if ($transaccion->desde_id === $this->id) {
$transaccion->valor = - $transaccion->valor;
}
return $d;
});
}
}
return $this->transacciones;
}