feat : duplicar papel impresion con relaciones

This commit is contained in:
amazuecos
2025-01-20 22:18:10 +01:00
parent e7163efc5e
commit aa5dea2cfb
10 changed files with 837 additions and 650 deletions

View File

@ -0,0 +1,66 @@
<?php
namespace App\Services;
use App\Entities\Configuracion\PapelImpresion;
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
use App\Models\Configuracion\PapelImpresionMargenModel;
use App\Models\Configuracion\PapelImpresionModel;
use App\Models\Configuracion\PapelImpresionTipologiaModel;
use CodeIgniter\Config\BaseService;
class PapelImpresionService extends BaseService
{
protected PapelImpresionModel $papelImpresionModel;
protected PapelImpresionTipologiaModel $papelImpresionTipologiaModel;
protected MaquinasPapelesImpresionModel $maquinaPapelImpresionModel;
protected PapelImpresionMargenModel $papelImpresionMargenModel;
protected MaquinasPapelesImpresionModel $papelImpresionMaquinaModel;
protected PapelImpresion $papelImpresion;
public function __construct() {
$this->papelImpresionModel = model(PapelImpresionModel::class);
$this->papelImpresionModel = model(PapelImpresionModel::class);
$this->papelImpresionMargenModel = model(PapelImpresionMargenModel::class);
$this->papelImpresionTipologiaModel = model(PapelImpresionTipologiaModel::class);
$this->papelImpresionMaquinaModel = model(MaquinasPapelesImpresionModel::class);
}
public function setPapelImpresionEntity(PapelImpresion $papelImpresionEntity) : self
{
$this->papelImpresion = $papelImpresionEntity;
return $this;
}
public function duplicate(string $newName) : PapelImpresion
{
$papelImpresionRow = $this->papelImpresion?->toArray();
$papelImpresionMargen = $this->papelImpresion->margen()?->toArray();
$papelImpresionTipologia = $this->papelImpresion->tipologia()?->toArray();
$papelImpresionMaquina = $this->papelImpresion->maquinas_impresion()?->toArray();
$papelImpresionRow['nombre'] = $newName;
if($this->papelImpresion){
$papelImpresionDuplicatedId = $this->papelImpresionModel->insert($papelImpresionRow);
}
if($papelImpresionMargen){
$papelImpresionMargen['papel_impresion_id'] = $papelImpresionDuplicatedId;
$this->papelImpresionMargenModel->insert($papelImpresionMargen);
}
if($papelImpresionTipologia){
$this->papelImpresionTipologiaModel->insert($papelImpresionTipologia);
$papelImpresionTipologia['papel_impresion_id'] = $papelImpresionDuplicatedId;
}
if($papelImpresionMaquina){
$papelImpresionMaquina['papel_impresion_id'] = $papelImpresionDuplicatedId;
$this->papelImpresionMaquinaModel->insert($papelImpresionMaquina);
}
$papelImpresionDuplicated = $this->papelImpresionModel->find($papelImpresionDuplicatedId);
return $papelImpresionDuplicated;
}
}