mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'feat/sk-18' into 'main'
Feat/sk 18 See merge request jjimenez/safekat!486
This commit is contained in:
@ -46,6 +46,7 @@ $routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function (
|
||||
$routes->post('encuadernacion', 'TarifaMaquinas::add_tarifa_encuadernacion_maquina_with_tarea');
|
||||
$routes->post('extra', 'TarifaMaquinas::add_tarifa_extra_maquina_with_tarea');
|
||||
|
||||
|
||||
$routes->delete('acabado/(:num)', 'TarifaMaquinas::delete_tarifa_acabado_maquina_with_tarea/$1');
|
||||
$routes->delete('manipulado/(:num)', 'TarifaMaquinas::delete_tarifa_manipulado_maquina_with_tarea/$1');
|
||||
$routes->delete('preimpresion/(:num)', 'TarifaMaquinas::delete_tarifa_preimpresion_maquina_with_tarea/$1');
|
||||
@ -309,6 +310,8 @@ $routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], fun
|
||||
$routes->post('datatable', 'Maquinas::datatable', ['as' => 'dataTableOfMaquinas']);
|
||||
$routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']);
|
||||
$routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']);
|
||||
$routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1',['as' => 'duplicateMaquina']);
|
||||
|
||||
$routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']);
|
||||
});
|
||||
$routes->resource('maquinas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinas', 'except' => 'show,new,create,update']);
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace Config;
|
||||
|
||||
use App\Services\FTPService;
|
||||
use App\Services\MaquinaService;
|
||||
use App\Services\PapelImpresionService;
|
||||
use CodeIgniter\Config\BaseService;
|
||||
use App\Services\ProductionService;
|
||||
@ -43,4 +44,8 @@ class Services extends BaseService
|
||||
{
|
||||
return new PapelImpresionService();
|
||||
}
|
||||
public static function maquina()
|
||||
{
|
||||
return new MaquinaService();
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,7 +42,14 @@ class Validation extends BaseConfig
|
||||
// --------------------------------------------------------------------
|
||||
// Rules
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Maquina duplicate validation
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public array $maquina_duplicate = [
|
||||
"name" => "required|string"
|
||||
];
|
||||
/**
|
||||
* PapelImpresion duplicate validation
|
||||
*
|
||||
|
||||
@ -9,6 +9,8 @@ use App\Models\Collection;
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Services\MaquinaService;
|
||||
use CodeIgniter\Validation\Validation;
|
||||
|
||||
class Maquinas extends \App\Controllers\BaseResourceController
|
||||
{
|
||||
@ -26,18 +28,19 @@ class Maquinas extends \App\Controllers\BaseResourceController
|
||||
protected static $viewPath = 'themes/vuexy/form/configuracion/maquinas/';
|
||||
|
||||
protected $indexRoute = 'maquinaList';
|
||||
|
||||
protected MaquinaService $maquinaService;
|
||||
protected Validation $validation;
|
||||
|
||||
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
||||
{
|
||||
$this->viewData['pageTitle'] = lang('Maquinas.moduleTitle');
|
||||
$this->viewData['usingSweetAlert'] = true;
|
||||
|
||||
$this->maquinaService = service('maquina');
|
||||
$this->validation = service('validation');
|
||||
// Se indica que este controlador trabaja con soft_delete
|
||||
$this->soft_delete = true;
|
||||
// Se indica el flag para los ficheros borrados
|
||||
$this->delete_flag = 1;
|
||||
|
||||
$this->viewData = ['usingServerSideDataTable' => true]; // JJO
|
||||
|
||||
// Breadcrumbs (IMN)
|
||||
@ -385,6 +388,19 @@ class Maquinas extends \App\Controllers\BaseResourceController
|
||||
];
|
||||
return $tipoOptions;
|
||||
}
|
||||
public function duplicate(int $maquina_id)
|
||||
{
|
||||
|
||||
$bodyData = $this->request->getPost();
|
||||
$validated = $this->validation->run($bodyData,'maquina_duplicate');
|
||||
if($validated){
|
||||
$this->maquinaService->setMaquina($maquina_id);
|
||||
$duplicated = $this->maquinaService->duplicate($bodyData['name']);
|
||||
return $this->response->setJSON(["data" => $duplicated]);
|
||||
}else{
|
||||
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
<?php
|
||||
namespace App\Entities\Configuracion;
|
||||
|
||||
use App\Models\Configuracion\MaquinasCallesModel;
|
||||
use App\Models\Configuracion\MaquinasDefectoModel;
|
||||
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
|
||||
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
|
||||
use CodeIgniter\Entity;
|
||||
use PhpParser\Node\Expr\Cast\Array_;
|
||||
|
||||
class Maquina extends \CodeIgniter\Entity\Entity
|
||||
{
|
||||
@ -64,4 +69,34 @@ class Maquina extends \CodeIgniter\Entity\Entity
|
||||
"user_created_id" => "int",
|
||||
"user_updated_id" => "int",
|
||||
];
|
||||
|
||||
public function papeles_impresion() : ?array
|
||||
{
|
||||
$m = model(MaquinasPapelesImpresionModel::class);
|
||||
return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll();
|
||||
}
|
||||
public function maquina_defecto(): ?array
|
||||
{
|
||||
$m = model(MaquinasDefectoModel::class);
|
||||
return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll();
|
||||
}
|
||||
public function maquina_calles() : ?array
|
||||
{
|
||||
$m = model(MaquinasCallesModel::class);
|
||||
return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll();
|
||||
}
|
||||
public function tarifas_impresion() : ?array
|
||||
{
|
||||
$m = model(MaquinasTarifasImpresionModel::class);
|
||||
return $m->asArray()->where('maquina_id',$this->attributes['id'])->findAll();
|
||||
}
|
||||
public function withAll() : self
|
||||
{
|
||||
$this->attributes['papeles_impresion'] = $this->papeles_impresion();
|
||||
$this->attributes['maquina_calles'] = $this->maquina_calles();
|
||||
$this->attributes['maquina_defecto'] = $this->maquina_defecto();
|
||||
$this->attributes['tarifas_impresion'] = $this->tarifas_impresion();
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,6 +43,7 @@ return [
|
||||
'velocidad' => 'Velocidad',
|
||||
'velocidadCorte' => 'Velocidad Corte',
|
||||
'maquina_tarea' => 'Máquina tarea',
|
||||
'namePlaceholderDuplicated' => "Inserte el nombre de la máquina a duplicar ...",
|
||||
'validation' => [
|
||||
'alto_menor_alto_impresion' => 'El campo \'Alto impresión\' debe ser menor que \'Alto\'',
|
||||
'ancho_menor_ancho_impresion' => '\'Ancho Impresión\' debe ser menor que \'Ancho\'',
|
||||
|
||||
@ -42,7 +42,7 @@ class MaquinasCallesModel extends \App\Models\BaseModel
|
||||
|
||||
protected $validationRules = [
|
||||
"formas" => [
|
||||
"rules" => "required|int",
|
||||
"rules" => "required|integer",
|
||||
],
|
||||
"internas" => [
|
||||
"rules" => "required|decimal",
|
||||
|
||||
84
ci4/app/Services/MaquinaService.php
Normal file
84
ci4/app/Services/MaquinaService.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Configuracion\MaquinasCallesModel;
|
||||
use App\Models\Configuracion\MaquinasDefectoModel;
|
||||
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
|
||||
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
|
||||
use CodeIgniter\Config\BaseService;
|
||||
|
||||
|
||||
|
||||
class MaquinaService extends BaseService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
protected Maquina $maquina;
|
||||
protected MaquinaModel $maquinaModel;
|
||||
protected MaquinasDefectoModel $maquinaDefectoModel;
|
||||
protected MaquinasCallesModel $maquinaCalleModel;
|
||||
protected MaquinasPapelesImpresionModel $maquinaPapelesImpresionModel;
|
||||
protected MaquinasTarifasImpresionModel $maquinaTarifaImpresionModel;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->maquinaModel = model(MaquinaModel::class);
|
||||
$this->maquinaDefectoModel = model(MaquinasDefectoModel::class);
|
||||
$this->maquinaCalleModel = model(MaquinasCallesModel::class);
|
||||
$this->maquinaPapelesImpresionModel = model(MaquinasPapelesImpresionModel::class);
|
||||
$this->maquinaTarifaImpresionModel = model(MaquinasTarifasImpresionModel::class);
|
||||
|
||||
|
||||
}
|
||||
public function setMaquina(int $maquina_id): self
|
||||
{
|
||||
$this->maquina = $this->maquinaModel->find($maquina_id);
|
||||
return $this;
|
||||
}
|
||||
public function duplicate(string $newName): ?Maquina
|
||||
{
|
||||
|
||||
$maquina_array = $this->maquina->toArray();
|
||||
$maquina_array['nombre'] = $newName;
|
||||
$maquinaDuplicatedId = $this->maquinaModel->insert($maquina_array);
|
||||
$maquinaWithAllRelations = $this->maquina->withAll()->toArray();
|
||||
|
||||
$maquina_defecto = $maquinaWithAllRelations['maquina_defecto'];
|
||||
$maquina_papeles_impresion = $maquinaWithAllRelations['papeles_impresion'];
|
||||
$maquina_calles = $maquinaWithAllRelations['maquina_calles'];
|
||||
$maquina_tarifas_impresion = $maquinaWithAllRelations['tarifas_impresion'];
|
||||
|
||||
|
||||
foreach ($maquina_defecto as $md)
|
||||
{
|
||||
unset($md['id']);
|
||||
$md['maquina_id'] = $maquinaDuplicatedId;
|
||||
$this->maquinaDefectoModel->insert($md);
|
||||
|
||||
}
|
||||
foreach ($maquina_papeles_impresion as $mpi)
|
||||
{
|
||||
unset($mpi['id']);
|
||||
$mpi['maquina_id'] = $maquinaDuplicatedId;
|
||||
$this->maquinaPapelesImpresionModel->insert($mpi);
|
||||
}
|
||||
foreach ($maquina_calles as $mc)
|
||||
{
|
||||
unset($mc['id']);
|
||||
$mc['maquina_id'] = $maquinaDuplicatedId;
|
||||
$this->maquinaCalleModel->insert($mc);
|
||||
}
|
||||
foreach ($maquina_tarifas_impresion as $mti)
|
||||
{
|
||||
unset($mti['id']);
|
||||
$mti['maquina_id'] = $maquinaDuplicatedId;
|
||||
$this->maquinaTarifaImpresionModel->insert($mti);
|
||||
}
|
||||
return $this->maquinaModel->find($maquinaDuplicatedId)->withAll();
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
|
||||
</div><!--//.card-header -->
|
||||
<form id="maquinaForm" class="card-body" method="post" action="<?= $formAction ?>">
|
||||
<form id="maquinaForm" class="card-body" method="post" action="<?= $formAction ?>" data-id="<?= $maquina->id ?>">
|
||||
<?= csrf_field() ?>
|
||||
<div class="card-body">
|
||||
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
|
||||
@ -19,12 +19,39 @@
|
||||
</div><!-- /.card-body -->
|
||||
<div class="py-4">
|
||||
<input type="submit"
|
||||
class="btn btn-primary float-start me-sm-3 me-1"
|
||||
name="save"
|
||||
value="<?= lang("Basic.global.Save") ?>"
|
||||
class="btn btn-primary me-sm-3 me-1"
|
||||
name="save"
|
||||
value="<?= lang("Basic.global.Save") ?>"
|
||||
/>
|
||||
<?= anchor(route_to("maquinaList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
|
||||
<button type="button" id="btn-maquina-duplicate" class="btn btn-danger me-sm-3 me-1"><i class="ti ti-xs ti-copy"></i><?= lang("Basic.global.Duplicate") ?></button>
|
||||
|
||||
<?= anchor(route_to("maquinaList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary"]) ?>
|
||||
</div><!-- /.card-footer -->
|
||||
<div class="modal fade" id="modalMaquinaDuplicate" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h3><?= lang('Basic.global.Duplicate') ?></h3>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="col-md-12">
|
||||
<label for="duplicated_name"><?= lang("Maquinas.nombre") ?></label>
|
||||
<input type="text" id="duplicated_name" name="name" class="form-control" placeholder="<?=lang("Maquinas.namePlaceholderDuplicated")?>">
|
||||
<div class="invalid-feedback d-none">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="d-flex align-items-center justify-content-end gap-2">
|
||||
<button type="button" id="btn-new-maquina-duplicate" class="btn-primary btn btn-md"><?= lang('Basic.global.Save') ?></button>
|
||||
<button type="button" class="btn-secondary btn btn-md" data-bs-dismiss="modal"><?= lang('Basic.global.Cancel') ?></button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div><!-- //.card -->
|
||||
</div><!--//.col -->
|
||||
@ -817,6 +844,7 @@
|
||||
|
||||
|
||||
<?= $this->section('additionalExternalJs') ?>
|
||||
<script type="module" src="<?= site_url('assets/js/safekat/pages/maquinas/duplicate.js') ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
|
||||
|
||||
31
httpdocs/assets/js/safekat/pages/maquinas/duplicate.js
Normal file
31
httpdocs/assets/js/safekat/pages/maquinas/duplicate.js
Normal file
@ -0,0 +1,31 @@
|
||||
import Ajax from "../../components/ajax.js"
|
||||
import Modal from "../../components/modal.js";
|
||||
$(() => {
|
||||
let maquinaId = $("#maquinaForm").data("id");
|
||||
const uri = '/maquinas/duplicate/' + maquinaId;
|
||||
let modalPapelDuplicate = new Modal($("#modalMaquinaDuplicate"))
|
||||
$("#btn-maquina-duplicate").on("click", (event) => {
|
||||
$("#duplicated_name").removeClass("is-valid").removeClass("is-invalid")
|
||||
modalPapelDuplicate.toggle();
|
||||
$("#btn-new-maquina-duplicate").on("click", () => {
|
||||
let name = $("#duplicated_name").val()
|
||||
const ajax = new Ajax(uri,
|
||||
{ name: name },
|
||||
null,
|
||||
(response) => {
|
||||
modalPapelDuplicate.toggle();
|
||||
$("#btn-new-maquina-duplicate").off();
|
||||
$("#duplicated_name").addClass("is-valid").removeClass('d-none');
|
||||
$("#duplicated_name").val("")
|
||||
window.open('/maquinas/edit/' + response.data.id)
|
||||
|
||||
},
|
||||
(error) => {
|
||||
$("#duplicated_name").removeClass("is-valid").addClass("is-invalid")
|
||||
}
|
||||
)
|
||||
ajax.post()
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user