diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 14aa7581..6f8aa601 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -276,6 +276,7 @@ $routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracio $routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']); $routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']); $routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']); + $routes->post('duplicate/(:num)','Papelesimpresion::duplicate/$1',['as' => 'duplicatePapelImpresion']); }); $routes->resource('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesimpresion', 'except' => 'show,new,create,update']); diff --git a/ci4/app/Config/Services.php b/ci4/app/Config/Services.php index 3f76f76e..df2d881e 100755 --- a/ci4/app/Config/Services.php +++ b/ci4/app/Config/Services.php @@ -3,6 +3,7 @@ namespace Config; use App\Services\FTPService; +use App\Services\PapelImpresionService; use CodeIgniter\Config\BaseService; use App\Services\ProductionService; use App\Services\TarifaMaquinaService; @@ -38,4 +39,8 @@ class Services extends BaseService public static function tarifa_maquina(){ return new TarifaMaquinaService(); } + public static function papel_impresion() + { + return new PapelImpresionService(); + } } diff --git a/ci4/app/Config/Validation.php b/ci4/app/Config/Validation.php index d07aade1..c097a621 100755 --- a/ci4/app/Config/Validation.php +++ b/ci4/app/Config/Validation.php @@ -43,6 +43,14 @@ class Validation extends BaseConfig // Rules // -------------------------------------------------------------------- + /** + * PapelImpresion duplicate validation + * + * @var array + */ + public array $papel_impresion_duplicate = [ + "name" => "required|string" + ]; /**======================================================================== * TARIFA MAQUINA ACABADO *========================================================================**/ diff --git a/ci4/app/Controllers/Configuracion/Papelesimpresion.php b/ci4/app/Controllers/Configuracion/Papelesimpresion.php index fb3a0363..e5beef97 100755 --- a/ci4/app/Controllers/Configuracion/Papelesimpresion.php +++ b/ci4/app/Controllers/Configuracion/Papelesimpresion.php @@ -22,6 +22,7 @@ use use App\Models\Collection; +use CodeIgniter\Validation\Validation; @@ -35,7 +36,6 @@ use App\Models\Configuracion\PapelImpresionTipologiaModel; use App\Models\Configuracion\MaquinasPapelesImpresionModel; use App\Models\Configuracion\MaquinaModel; - class Papelesimpresion extends \App\Controllers\BaseResourceController { @@ -52,6 +52,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController protected static $viewPath = 'themes/vuexy/form/configuracion/papel/'; protected $indexRoute = 'papelImpresionList'; + protected Validation $validation; public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) { @@ -66,6 +67,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController $this->delete_flag = 1; $this->tpModel = new PapelImpresionTipologiaModel(); + $this->validation = service("validation"); // Breadcrumbs $this->viewData['breadcrumb'] = [ @@ -443,4 +445,27 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController $ma_pa_model->updateRows($active_values); } } + /** + * Duplica el papel impresion y sus relaciones + * + * @param int $papel_impresion_id + * @return Response + */ + public function duplicate( int $papel_impresion_id) + { + $bodyData = $this->request->getPost(); + $validated = $this->validation->run($bodyData, "papel_impresion_duplicate"); + if($validated){ + $papelImpresionEntity = $this->model->find($papel_impresion_id); + $papelImpresionService = service('papel_impresion'); + $duplicated = $papelImpresionService + ->setPapelImpresionEntity($papelImpresionEntity) + ->duplicate($bodyData["name"]); + return $this->response->setJSON(["data" => $duplicated]); + + }else{ + return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400); + } + + } } diff --git a/ci4/app/Entities/Configuracion/PapelImpresion.php b/ci4/app/Entities/Configuracion/PapelImpresion.php index 4d79a06e..9aaa4a2f 100755 --- a/ci4/app/Entities/Configuracion/PapelImpresion.php +++ b/ci4/app/Entities/Configuracion/PapelImpresion.php @@ -1,6 +1,9 @@ "boolean", "is_deleted" => "int", ]; + + public function tipologia() : ?PapelImpresionTipologia + { + $m = model(PapelImpresionTipologiaModel::class); + return $m->where('papel_impresion_id',$this->attributes["id"])->first(); + } + public function maquinas_impresion() : ?MaquinasPapelesImpresionEntity + { + $m = model(MaquinasPapelesImpresionModel::class); + return $m->where('papel_impresion_id',$this->attributes["id"])->first(); + } + public function margen() : ?PapelImpresionMargen + { + $m = model(PapelImpresionMargenModel::class); + return $m->where('papel_impresion_id',$this->attributes["id"])->first(); + } } diff --git a/ci4/app/Language/es/Basic.php b/ci4/app/Language/es/Basic.php index bb333f54..be74f2d1 100755 --- a/ci4/app/Language/es/Basic.php +++ b/ci4/app/Language/es/Basic.php @@ -28,6 +28,8 @@ return [ 'Profile' => 'Perfil', 'Roles' => 'Roles', 'Save' => 'Guardar', + 'Copy' => 'Copiar', + 'Duplicate' => 'Duplicar', 'Sections' => 'Secciones', 'SignOut' => 'Desconectar', 'Success' => 'Éxito', diff --git a/ci4/app/Language/es/PapelImpresion.php b/ci4/app/Language/es/PapelImpresion.php index 939442db..0b2f919c 100755 --- a/ci4/app/Language/es/PapelImpresion.php +++ b/ci4/app/Language/es/PapelImpresion.php @@ -39,6 +39,7 @@ return [ 'activo' => 'Activo?', 'useInClient' => 'Usar en presup. cliente', 'userUpdateId' => 'ID usuario actualización', + 'namePlaceholderDuplicated' => 'Inserte el nombre del papel que se va a duplicar', 'consumo_tintas_rotativas' => 'Consumo tintas', 'maquinas_papel' => 'Máquinas seleccionadas', diff --git a/ci4/app/Services/PapelImpresionService.php b/ci4/app/Services/PapelImpresionService.php new file mode 100644 index 00000000..b476f511 --- /dev/null +++ b/ci4/app/Services/PapelImpresionService.php @@ -0,0 +1,66 @@ +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; + + } +} \ No newline at end of file diff --git a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php index 77ddfcd7..074deae0 100644 --- a/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php +++ b/ci4/app/Views/themes/vuexy/form/configuracion/papel/viewPapelImpresionForm.php @@ -6,28 +6,28 @@ = $this->section("content") ?>