fastforward problem

Merge branch 'mod/presupuesto_admin' of https://git.imnavajas.es/jjimenez/safekat into mod/presupuesto_admin
This commit is contained in:
2025-01-19 19:46:09 +01:00
23 changed files with 412 additions and 395 deletions

View File

@ -124,13 +124,14 @@ $routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion']
$routes->get('datatable', 'ConfigErrores::datatable', ['as' => 'erroresPresupuestoDatatable']);
$routes->post('edit/(:num)', 'ConfigErrores::update_error_presupuesto/$1', ['as' => 'erroresPresupuestoUpdate']);
});
$routes->group("servicios", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) {
$routes->get('', 'ServicioCliente::index', ['as' => 'servicioClienteList']);
$routes->get('(:num)', 'ServicioCliente::show/$1', ['as' => 'servicioClienteShow']);
$routes->post('(:num)', 'ServicioCliente::store/$1', ['as' => 'servicioClienteStore']);
$routes->post('update/(:num)', 'ServicioCliente::update_servicio_cliente/$1', ['as' => 'updateServicioCliente']);
$routes->get('edit/(:num)', 'ServicioCliente::viewForm/$1', ['as' => 'servicioClienteViewForm']);
$routes->get('datatable', 'ServicioCliente::datatable', ['as' => 'servicioClienteDatatable']);
$routes->group("maquina-tareas", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) {
$routes->get('', 'MaquinaTarea::index', ['as' => 'maquinaTareaList']);
$routes->get('(:num)', 'MaquinaTarea::show/$1', ['as' => 'maquinaTareaShow']);
$routes->delete('(:num)', 'MaquinaTarea::delete/$1', ['as' => 'maquinaTareaDelete']);
$routes->post('', 'MaquinaTarea::store/$1', ['as' => 'maquinaTareaStore']);
$routes->post('update/(:num)', 'MaquinaTarea::update_servicio_cliente/$1', ['as' => 'maquinaTareaUpdate']);
$routes->get('edit/(:num)', 'MaquinaTarea::viewForm/$1', ['as' => 'maquinaTareaViewForm']);
$routes->get('datatable', 'MaquinaTarea::datatable', ['as' => 'maquinaTareaDatatable']);
});
});

View File

@ -0,0 +1,86 @@
<?php
namespace App\Controllers\Configuracion;
use App\Controllers\BaseController;
use App\Models\Configuracion\MaquinaTareaModel;
use CodeIgniter\HTTP\Response;
use Hermawan\DataTables\DataTable;
use CodeIgniter\I18n\Time;
class MaquinaTarea extends BaseController
{
protected MaquinaTareaModel $maquinaTareaModel;
protected $format = 'json';
protected array $viewData = [];
protected static $viewPath = 'themes/vuexy/form/configuracion/maquina_tareas/';
protected static $controllerSlug = "maquina-tareas";
protected $indexRoute = 'viewMaquinaTarea';
protected $editRoute = 'editMaquinaTarea';
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->maquinaTareaModel = model(MaquinaTareaModel::class);
}
public function index()
{
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_maquina_tareas"), 'route' => site_url('configuracion/maquina-tareas'), 'active' => true]
];
return view(static::$viewPath . $this->indexRoute, $this->viewData);
}
public function viewForm(int $maquina_tarea_id)
{
$maquinaTarea = $this->maquinaTareaModel->find($maquina_tarea_id);
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_maquina_tareas"), 'route' => site_url('configuracion/maquina-tareas'), 'active' => false],
['title' => $maquinaTarea->name, 'route' => site_url('configuracion/maquina-tareas/edit/' . $maquina_tarea_id), 'active' => true]
];
$this->viewData["model"] = $maquinaTarea;
return view(static::$viewPath . $this->editRoute, $this->viewData);
}
public function show(int $id)
{
$data = $this->maquinaTareaModel->find($id);
return $this->response->setJSON($data);
}
public function update_servicio_cliente(int $id)
{
$data = $this->request->getPost();
$status = $this->maquinaTareaModel->update($id, [
"name" => $data["name"],
"description" => $data["description"]
]);
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $status]);
}
public function store()
{
$bodyData = $this->request->getPost();
$r = $this->maquinaTareaModel->insert($bodyData);
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r,"data" => $bodyData]);
}
public function delete(int $maquina_tarea_id){
$r = $this->maquinaTareaModel->delete($maquina_tarea_id);
return $this->response->setJSON(["message" => lang("App.user_alert_delete"), "status" => $r]);
}
public function datatable()
{
$query = $this->maquinaTareaModel->getQueryDatatable()->orderBy("created_at", "DESC");
return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->add("action", fn($q) => $q->id)
->toJson(true);
}
}

View File

@ -1,89 +0,0 @@
<?php
namespace App\Controllers\Configuracion;
use App\Controllers\BaseController;
use App\Models\Configuracion\ServicioClienteModel;
use CodeIgniter\HTTP\Response;
use Hermawan\DataTables\DataTable;
use CodeIgniter\I18n\Time;
class ServicioCliente extends BaseController
{
protected ServicioClienteModel $servicioClienteModel;
protected $format = 'json';
protected array $viewData = [];
protected static $viewPath = 'themes/vuexy/form/configuracion/servicios_cliente/';
protected static $controllerSlug = "servicios";
protected $indexRoute = 'viewServicioCliente';
protected $editRoute = 'ServicioClienteEdit';
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->servicioClienteModel = model(ServicioClienteModel::class);
}
public function index()
{
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_servicios_cliente"), 'route' => site_url('configuracion/servicios'), 'active' => true]
];
return view(static::$viewPath . $this->indexRoute, $this->viewData);
}
public function viewForm(int $servicio_cliente_id)
{
$servicioCliente = $this->servicioClienteModel->find($servicio_cliente_id);
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_servicios_cliente"), 'route' => site_url('configuracion/servicios'), 'active' => false],
['title' => $servicioCliente->nombre, 'route' => site_url('configuracion/servicios/edit/' . $servicio_cliente_id), 'active' => true]
];
$this->viewData["model"] = $servicioCliente;
return view(static::$viewPath . 'ServicioClienteEdit', $this->viewData);
}
public function show(int $id)
{
$data = $this->servicioClienteModel->find($id)->withAllTarifas();
return $this->response->setJSON($data);
}
public function update_servicio_cliente(int $id)
{
$data = $this->request->getPost();
$status = $this->servicioClienteModel->update($id, [
"nombre" => $data["nombre"],
"code" => $data["code"]
]);
if (isset($data["tarifa_manipulado_id"])) {
$this->servicioClienteModel->upsertTarifaManipulado($id, $data["tarifa_manipulado_id"]);
}else if(isset($data["tarifa_acabado_id"])) {
$this->servicioClienteModel->upsertTarifaAcabado($id, $data["tarifa_acabado_id"]);
}else{
$this->servicioClienteModel->detachTarifas($id);
}
return $this->response->setJSON(["message" => lang("App.global_success"), "status" => $status]);
}
public function store()
{
// $this->servicioClienteModel->update($id,[$this->request->getPost()]);
return $this->response->setJSON([]);
}
public function datatable()
{
$query = $this->servicioClienteModel->getQueryDatatable()->orderBy("created_at", "DESC");
return DataTable::of($query)
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
->add("action", fn($q) => $q->id)
->toJson(true);
}
}

View File

@ -695,7 +695,7 @@ return [
"menu_papelgenerico" => "Papel generico",
"menu_papelimpresion" => "Papel impresión",
"menu_series_facturas" => "Series facturas",
"menu_servicios_cliente" => "Servicios cliente",
"menu_maquina_tareas" => "Tareas máquinas",
"menu_ubicaciones" => "Ubicaciones",
"menu_serviciocliente" => "Servicio cliente",
"menu_tamanioformatos" => "Tamaño formatos",

View File

@ -2,13 +2,14 @@
return [
"cardTitle" => "Servicios cliente",
"cardTitle" => "Máquina tareas",
"tarea_new" => "Crear tarea",
"infoTarifaManipulado" => "La tarifa seleccionada estará asociada al servicio.",
"infoTarifaAcabado" => "La tarifa seleccionada estará asociada al servicio.",
"datatable" => [
"nombre" => "Nombre",
"code" => "Código",
"description" => "Descripción",
"created_at" => "Fecha creación",
]
];

View File

@ -3,6 +3,9 @@
namespace App\Models\Configuracion;
use App\Entities\Tarifas\Maquinas\TareaMaquinaEntity;
use CodeIgniter\Database\BaseBuilder;
use CodeIgniter\Database\MySQLi\Builder;
use CodeIgniter\Database\Query;
use CodeIgniter\Model;
class MaquinaTareaModel extends Model
@ -55,14 +58,19 @@ class MaquinaTareaModel extends Model
* @return array
*
*/
public function getSelectQuery(?string $q = null) : array
public function getSelectQuery(?string $q = null): array
{
$query = $this->builder()->select(["id","name","description"])
->where("deleted_at",null);
if($q){
$query->like("nombre",$q);
$query = $this->builder()->select(["id", "name", "description"])
->where("deleted_at", null);
if ($q) {
$query->like("nombre", $q);
}
return $query->get()->getResultArray();
}
public function getQueryDatatable(): BaseBuilder
{
return $this->builder()->select(["id","name","description","created_at"])
->where("deleted_at", null);
}
}

View File

@ -0,0 +1,23 @@
<form class="form-control" id="<?= $id ?>" data-id="<?= $model?->id ?>">
<div class="row mb-2">
<!-- Servicio cliente nombre-->
<div class="col-xs-12 col-md-12 col-lg-12 mb-2">
<label for="servicio-cliente-nombre" class="form-label"><?= @lang("MaquinaTarea.datatable.nombre") ?></label>
<input type="text" class="form-control" name="name" id="maquina-tarea-nombre">
</div>
<!-- Servicio cliente code-->
<div class="col-xs-12 col-md-12 col-lg-12 mb-2">
<label for="servicio-cliente-code" class="form-label"><?= @lang("MaquinaTarea.datatable.description") ?></label>
<textarea type="text" rows="5" cols="5" class="form-control" name="description" id="maquina-tarea-description"></textarea>
</div>
</div>
<div class="row mb-2">
<div class="col-md-12 d-flex justify-content-start gap-4">
<button type="button" class="btn btn-primary btn-md d-none" id="btn-new-maquina-tarea"><?= lang("App.global_save") ?></button>
<button type="button" class="btn btn-primary btn-md d-none" id="btn-update-maquina-tarea"><?= lang("App.global_save") ?></button>
<a href="<?= route_to("maquinaTareaList")?>" type="button" class="btn btn-secondary btn-md d-none" id="btn-come-back"><?= lang("App.global_come_back") ?></button>
</div>
</div>
</form>

View File

@ -1,61 +0,0 @@
<form class="form-control" id="<?= $id ?>" data-id="<?= $model->id ?>">
<div class="row mb-2">
<!-- Servicio cliente nombre-->
<div class="col-xs-12 col-md-6 col-lg-6 mb-2">
<label for="servicio-cliente-nombre" class="form-label"><?= @lang("ServicioCliente.datatable.nombre") ?></label>
<input type="text" class="form-control" name="nombre" id="servicio-cliente-nombre">
</div>
<!-- Servicio cliente code-->
<div class="col-xs-12 col-md-6 col-lg-6 mb-2">
<label for="servicio-cliente-code" class="form-label"><?= @lang("ServicioCliente.datatable.code") ?></label>
<input type="text" class="form-control" name="code" id="servicio-cliente-code">
</div>
<!-- Tarifa acabado asociada a servicio -->
<div class="col-xs-12 col-md-8 col-lg-6 mb-2" id="container-tarifa-acabado-select">
<label for="servicio-cliente-tarifa-acabado" class="form-label"><?= @lang("Tarifaacabado.tarifaacabado") ?></label>
<select class="select2 form-select" name="tarifa_acabado_id" id="servicio-cliente-tarifa-acabado" placeholder="<?= @lang("Tarifaacabado.tarifasacabado") ?>">
</select>
<div class="form-text"><?= @lang("ServicioCliente.infoTarifaAcabado") ?></div>
</div>
<!-- Tarifa manipulado asociada a servicio-->
<div class="col-xs-12 col-md-8 col-lg-6 mb-2 d-none" id="container-tarifa-manipulado-select">
<label for="servicio-cliente-tarifa-manipulado" class="form-label"><?= @lang("Tarifamanipulado.tarifamanipulado") ?></label>
<select class="select2 form-select" name="tarifa_manipulado_id" id="servicio-cliente-tarifa-manipulado" placeholder="<?= @lang("Tarifamanipulado.tarifasmanipulado") ?>">
</select>
<div class="form-text"><?= @lang("ServicioCliente.infoTarifaManipulado") ?></div>
</div>
<!-- Check tarifa acabado o manipulado -->
<div class="col-xs-12 col-md-4 col-lg-6 mb-2">
<div class="text-light small fw-medium mb-2">Seleccione tipo de tarifa</div>
<div class="switches-stacked">
<label class="switch">
<input type="radio" class="switch-input" id="check-tarifa-acabado" name="switches-stacked-radio" checked />
<span class="switch-toggle-slider">
<span class="switch-on"></span>
<span class="switch-off"></span>
</span>
<span class="switch-label"><?= @lang("Tarifaacabado.tarifasacabado") ?></span>
</label>
<label class="switch">
<input type="radio" class="switch-input" id="check-tarifa-manipulado" name="switches-stacked-radio" />
<span class="switch-toggle-slider">
<span class="switch-on"></span>
<span class="switch-off"></span>
</span>
<span class="switch-label"><?= @lang("Tarifamanipulado.tarifasmanipulado") ?></span>
</label>
</div>
</div>
</div>
<div class="row mb-2">
<div class="col-md-12 d-flex justify-content-start gap-4">
<button type="button" class="btn btn-primary btn-md d-none" id="btn-new-servicio-cliente"><?= lang("App.global_save") ?></button>
<button type="button" class="btn btn-primary btn-md d-none" id="btn-update-servicio-cliente"><?= lang("App.global_save") ?></button>
<button type="button" class="btn btn-secondary btn-md"><?= lang("App.global_come_back") ?></button>
</div>
</div>
</form>

View File

@ -2,9 +2,9 @@
<table id="<?= $id ?>" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('ServicioCliente.datatable.nombre') ?></th>
<th><?= lang('ServicioCliente.datatable.code') ?></th>
<th><?= lang('ServicioCliente.datatable.created_at') ?></th>
<th><?= lang('MaquinaTarea.datatable.nombre') ?></th>
<th><?= lang('MaquinaTarea.datatable.description') ?></th>
<th><?= lang('MaquinaTarea.datatable.created_at') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>

View File

@ -9,14 +9,14 @@
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('ServicioCliente.cardTitle') ?></h3>
<h3 class="card-title"><?= $model->name ?></h3>
</div>
<!--//.card-header -->
<div class="card-body" id="serviciosClienteCard">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<?= view('themes/vuexy/components/forms/servicio_cliente', ["id" => "formServicioCliente"]); ?>
<?= view('themes/vuexy/components/forms/maquina_tarea', ["id" => "maquina-tarea-form", "model" => $model]); ?>
</div>
<!--//.card-body -->
@ -31,7 +31,15 @@
</div>
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url("themes/vuexy/vendor/libs/dropzone/dropzone.css") ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/spinkit/spinkit.css') ?>" />
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/configuracion/servicio_cliente/edit.js") ?>">
</script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/configuracion/maquina_tarea/edit.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,56 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('MaquinaTarea.cardTitle') ?></h3>
</div>
<!--//.card-header -->
<div class="card-body" id="maquinaTareaCard">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="col-md-12 d-flex justify-content-end">
<button type="button" class="btn-primary btn btn-md" id="btn-maquina-tarea-new">
<i class="ti ti-plus ti-xs"></i> &nbsp; <?= lang("MaquinaTarea.tarea_new") ?>
</button>
</div>
<?= view('themes/vuexy/components/tables/maquina_tarea_table', ["id" => "maquina-tarea-datatable"]); ?>
<div class="modal fade" id="modalNewMaquinaTarea" tabindex="-1" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h3><?= lang("MaquinaTarea.tarea_new") ?></h3>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<?= view('themes/vuexy/components/forms/maquina_tarea', ["id" => "maquina-tarea-form", "model" => null]); ?>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</div>
<!--//.card-footer -->
</div>
<!--//.card -->
</div>
<!--//.col -->
</div>
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/configuracion/maquina_tarea/index.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -1,37 +0,0 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('ServicioCliente.cardTitle') ?></h3>
</div>
<!--//.card-header -->
<div class="card-body" id="serviciosClienteCard">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<?= view('themes/vuexy/components/tables/servicios_cliente_table', ["id" => "tableServiciosCliente"]); ?>
</div>
<!--//.card-body -->
<div class="card-footer">
</div>
<!--//.card-footer -->
</div>
<!--//.card -->
</div>
<!--//.col -->
</div>
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url("assets/js/safekat/pages/configuracion/servicio_cliente/index.js") ?>">
</script>
<?= $this->endSection() ?>

View File

@ -63,6 +63,13 @@ if (
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to("maquinaTareaList") ?>" class="menu-link">
<?= lang("App.menu_maquina_tareas") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('usuarios.menu')) { ?>
<li class="menu-item">
<a href="<?= site_url("configuracion/users") ?>" class="menu-link">
@ -98,13 +105,7 @@ if (
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to("servicioClienteList") ?>" class="menu-link">
<?= lang("App.menu_servicios_cliente") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->inGroup('admin') || auth()->user()->inGroup('beta')) { ?>
<li class="menu-item">
<a href="<?= route_to('erroresPresupuestoIndex') ?>" class="menu-link">

View File

@ -18,3 +18,13 @@ export const alertConfirmationDelete = (title,type="primary") => {
buttonsStyling: false
})
}
export const alertSuccessMessage = (title,type="primary") => {
return Swal.fire({
showCancelButton: false,
showConfirmButton : false,
title: title,
text: title,
icon: "success"
})
}

View File

@ -0,0 +1,72 @@
import Ajax from "../ajax.js";
import { alertConfirmationDelete, alertSuccessMessage } from "../alerts/sweetAlert.js";
class MaquinaTareaDatatable {
constructor(domItem) {
this.datatableItem = domItem
this.datatableColumns = [
{ data: 'name', searchable: true, sortable: true },
{ data: 'description', searchable: true, sortable: true },
{ data: 'created_at', searchable: true, sortable: true },
{
data: 'action', searchable: false, sortable: false,
render: (d, t) => {
return `<div class="btn-group btn-group-sm">
<a href="/configuracion/maquina-tareas/edit/${d}" class="maquina-tarea-edit"><i class="ti ti-eye ti-sm mx-2"></i></a>
<a type="button" data-id="${d}" class="maquina-tarea-delete"><i class="ti ti-trash ti-sm mx-2"></i></a>
</div>`
}
}
]
}
init() {
this.datatableItem.on('click','.maquina-tarea-delete',this.onDelete.bind(this))
this.datatable = this.datatableItem.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info',
bottomEnd: 'paging'
},
serverSide: true,
pageLength: 25,
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
columns: this.datatableColumns,
ajax: '/configuracion/maquina-tareas/datatable'
});
}
onDelete(event){
const modelId = $(event.currentTarget).data("id");
alertConfirmationDelete("¿Estás seguro de realizar esta acción?").then(result => {
if(result.isConfirmed){
this.handleDeleteMaquinaTarea(modelId)
}
}
)
}
handleDeleteMaquinaTarea(modelId){
const ajax = new Ajax('/configuracion/maquina-tareas/' + modelId,
null,
null,
(response) => {
alertSuccessMessage(response.message)
this.datatable.ajax.reload()
},
null
)
ajax.delete()
}
}
export default MaquinaTareaDatatable;

View File

@ -1,44 +0,0 @@
class ServicioClienteDatatable {
constructor(domItem) {
this.datatableItem = domItem
this.datatableColumns = [
{ data: 'nombre', searchable: true, sortable: true },
{ data: 'code', searchable: true, sortable: true },
{ data: 'created_at', searchable: true, sortable: true },
{
data: 'action', searchable: false, sortable: false,
render: (d, t) => {
return `<div class="btn-group btn-group-sm">
<a href="/configuracion/servicios/edit/${d}" class="servicio-cliente-edit"><i class="ti ti-eye ti-sm mx-2"></i></a>
</div>`
}
}
]
}
init() {
this.datatable = this.datatableItem.DataTable({
processing: true,
layout: {
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info',
bottomEnd: 'paging'
},
serverSide: true,
pageLength: 25,
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
columns: this.datatableColumns,
ajax: '/configuracion/servicios/datatable'
});
}
}
export default ServicioClienteDatatable;

View File

@ -0,0 +1,94 @@
import Ajax from '../ajax.js'
import { alertSuccessMessage } from '../alerts/sweetAlert.js'
import ClassSelect from '../select2.js'
class MaquinaTareaForm {
/**
*
* @param {*} domItem jQuery item of the form html element
*/
constructor(domItem) {
this.item = domItem
this.btnNew = this.item.find("#btn-new-maquina-tarea")
this.btnUpdate = this.item.find("#btn-update-maquina-tarea")
this.btnComeBack = this.item.find("#btn-come-back")
}
init() {
this.modelId = this.item.data('id')
this.uri = `/configuracion/maquina-tareas/${this.modelId}`
this.uriUpdate = `/configuracion/maquina-tareas/update/${this.modelId}`
this.uriPost = `/configuracion/maquina-tareas`
this.btnNew.on("click", this.handlePost.bind(this))
this.btnUpdate.on("click", this.handlePut.bind(this))
this.handleGet()
this.btnUpdate.removeClass("d-none")
this.btnComeBack.removeClass("d-none")
}
initNew(){
this.uri = `/configuracion/maquina-tareas`
this.btnNew.on("click", this.handlePost.bind(this))
this.btnNew.removeClass("d-none")
}
handleGet() {
const ajax = new Ajax(
this.uri,
null,
null,
this.handleGetSuccess.bind(this),
this.handleGetError.bind(this)
)
ajax.get()
}
handleGetSuccess(data) {
this.item.find('[name="name"]').val(data.name)
this.item.find('[name="description"]').val(data.description)
}
handleGetError(e) {
console.error(e)
}
handlePost() {
let bodyData = this.getFormData()
const ajax = new Ajax(
this.uriPost,
bodyData,
null,
this.handlePostSuccess.bind(this),
this.handlePostError.bind(this)
)
ajax.post()
}
handlePostSuccess(data) {
alertSuccessMessage(data.message)
$("#modalNewMaquinaTarea").modal('toggle')
}
handlePostError() { }
handlePut() {
let bodyData = this.getFormData()
const ajax = new Ajax(
this.uriUpdate,
bodyData,
null,
this.handlePutSuccess.bind(this),
this.handlePutError.bind(this)
)
ajax.post()
}
handlePutSuccess(data) {
// this.item.reset()
alertSuccessMessage(data.message)
this.handleGet(data)
}
handlePutError() { }
getFormData() {
let data = {}
this.item.serializeArray().forEach((e) => {
data[e.name] = e.value
}
)
return data
}
}
export default MaquinaTareaForm

View File

@ -1,125 +0,0 @@
import Ajax from '../ajax.js'
import ClassSelect from '../select2.js'
class ServicioClienteForm {
/**
*
* @param {*} domItem jQuery item of the form html element
*/
constructor(domItem) {
this.item = domItem
this.btnNew = this.item.find("#btn-new-servicio-cliente")
this.btnUpdate = this.item.find("#btn-update-servicio-cliente")
this.selectItemTarifaAcabado = this.item.find("#servicio-cliente-tarifa-acabado")
this.selectItemTarifaManipulado = this.item.find("#servicio-cliente-tarifa-manipulado")
this.selectTarifaAcabado = new ClassSelect(this.selectItemTarifaAcabado, '/tarifas/acabados/select', "Seleccione una tarifa", true)
this.selectTarifaManipulado = new ClassSelect(this.selectItemTarifaManipulado, '/tarifasmanipulado/select', "Seleccione una tarifa", true)
this.checkTarifaAcabado = this.item.find("#check-tarifa-acabado")
this.checkTarifaManipulado = this.item.find("#check-tarifa-manipulado")
}
init() {
this.modelId = this.item.data('id')
this.uri = `/configuracion/servicios/${this.modelId}`
this.uriUpdate = `/configuracion/servicios/update/${this.modelId}`
this.uriPost = `/configuracion/servicios`
this.btnNew.on("click", this.handlePost.bind(this))
this.btnUpdate.on("click", this.handlePut.bind(this))
this.handleGet()
this.selectTarifaAcabado.init()
this.selectTarifaManipulado.init()
this.btnUpdate.removeClass("d-none")
this.checkTarifaAcabado.change(() => {
console.log("Acabado", this.checkTarifaAcabado.is(":checked"))
if (this.checkTarifaAcabado.is(":checked")) {
this.item.find("#container-tarifa-acabado-select").removeClass("d-none")
this.item.find("#container-tarifa-manipulado-select").addClass("d-none")
} else {
this.item.find("#container-tarifa-acabado-select").addClass("d-none")
this.item.find("#container-tarifa-manipulado-select").removeClass("d-none")
}
})
this.checkTarifaManipulado.change(() => {
console.log("Manipulado", this.checkTarifaManipulado.is(":checked"))
if (this.checkTarifaManipulado.is(":checked")) {
this.item.find("#container-tarifa-acabado-select").addClass("d-none")
this.item.find("#container-tarifa-manipulado-select").removeClass("d-none")
} else {
this.item.find("#container-tarifa-acabado-select").removeClass("d-none")
this.item.find("#container-tarifa-manipulado-select").addClass("d-none")
}
})
}
handleGet() {
const ajax = new Ajax(
this.uri,
null,
null,
this.handleGetSuccess.bind(this),
this.handleGetError.bind(this)
)
ajax.get()
}
handleGetSuccess(data) {
this.item.find('[name="nombre"]').val(data.nombre)
this.item.find('[name="code"]').val(data.code)
if(data?.tarifas_acabado){
this.selectTarifaAcabado.setOption(data.tarifas_acabado.id,data.tarifas_acabado.nombre)
this.checkTarifaAcabado.prop("checked",true)
this.checkTarifaAcabado.trigger("change")
this.selectTarifaManipulado.reset()
}
if(data?.tarifas_manipulado){
this.checkTarifaManipulado.prop("checked",true)
this.selectTarifaManipulado.setOption(data.tarifas_manipulado.id,data.tarifas_manipulado.nombre)
this.checkTarifaManipulado.trigger("change")
this.selectTarifaAcabado.reset()
}
}
handleGetError(e) {
console.error(e)
}
handlePost() {
let bodyData = this.getFormData()
const ajax = new Ajax(
this.uriPost,
bodyData,
null,
this.handlePostSuccess.bind(this),
this.handlePostError.bind(this)
)
ajax.post()
}
handlePostSuccess() {
this.item.reset()
}
handlePostError() { }
handlePut() {
let bodyData = this.getFormData()
const ajax = new Ajax(
this.uriUpdate,
bodyData,
null,
this.handlePutSuccess.bind(this),
this.handlePutError.bind(this)
)
ajax.post()
}
handlePutSuccess(data) {
// this.item.reset()
this.handleGet(data)
}
handlePutError() { }
getFormData() {
let data = {}
this.item.serializeArray().forEach((e) => {
data[e.name] = e.value
}
)
return data
}
}
export default ServicioClienteForm

View File

@ -0,0 +1,6 @@
import MaquinaTareaForm from '../../../components/forms/maquinaTareaForm.js'
$(() => {
const maquinaTareaForm = new MaquinaTareaForm($("#maquina-tarea-form"))
maquinaTareaForm.init()
})

View File

@ -0,0 +1,17 @@
import MaquinaTareaDatatable from '../../../components/datatables/MaquinaTareaDatatable.js'
import MaquinaTareaForm from '../../../components/forms/maquinaTareaForm.js'
import Modal from '../../../components/modal.js'
const maquinaTareaDatatable = new MaquinaTareaDatatable($("#maquina-tarea-datatable"))
maquinaTareaDatatable.init()
const maquinaTareaForm = new MaquinaTareaForm($("#maquina-tarea-form"))
maquinaTareaForm.initNew()
const modal = new Modal($("#modalNewMaquinaTarea"))
$("#btn-maquina-tarea-new").on('click',() => {
modal.show()
modal.item.on("hidden.bs.modal",() => {
maquinaTareaDatatable.datatable.ajax.reload()
})
})

View File

@ -1,6 +0,0 @@
import ServicioClienteForm from '../../../components/forms/servicioClienteForm.js'
$(document).ready(() => {
const formServicioCliente = new ServicioClienteForm($("#formServicioCliente"))
formServicioCliente.init()
})

View File

@ -1,4 +0,0 @@
import ServicioClienteDatatable from '../../../components/datatables/ServicioClienteDatatable.js'
const servicioClienteDatatable = new ServicioClienteDatatable($("#tableServiciosCliente"))
servicioClienteDatatable.init()