diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index d62e2352..0c2f678a 100644 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -48,16 +48,16 @@ $routes->group('', [], function($routes) { $routes->group('tarifaacabado', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) { $routes->get('', 'Tarifaacabado::index', ['as' => 'tarifaacabadoList']); + $routes->get('index', 'Tarifaacabado::index', ['as' => 'tarifaacabadoIndex']); + $routes->get('list', 'Tarifaacabado::index', ['as' => 'tarifaacabadoList2']); $routes->get('add', 'Tarifaacabado::add', ['as' => 'newTarifaacabado']); $routes->post('add', 'Tarifaacabado::add', ['as' => 'createTarifaacabado']); - $routes->post('create', 'Tarifaacabado::create', ['as' => 'ajaxCreateTarifaacabado']); - $routes->put('(:num)/update', 'Tarifaacabado::update/$1', ['as' => 'ajaxUpdateTarifaacabado']); - $routes->post('(:num)/edit', 'Tarifaacabado::edit/$1', ['as' => 'updateTarifaacabado']); - $routes->post('datatable', 'Tarifaacabado::datatable', ['as' => 'dataTableOfTarifasacabado']); + $routes->get('edit/(:num)', 'Tarifaacabado::edit/$1', ['as' => 'editTarifaacabado']); + $routes->post('edit/(:num)', 'Tarifaacabado::edit/$1', ['as' => 'updateTarifaacabado']); + $routes->get('delete/(:num)', 'Tarifaacabado::delete/$1', ['as' => 'deleteTarifaacabado']); $routes->post('allmenuitems', 'Tarifaacabado::allItemsSelect', ['as' => 'select2ItemsOfTarifasacabado']); $routes->post('menuitems', 'Tarifaacabado::menuItems', ['as' => 'menuItemsOfTarifasacabado']); }); - $routes->resource('tarifaacabado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaacabado', 'except' => 'show,new,create,update']); $routes->group('users', ['namespace' => 'App\Controllers\Usuarios'], function ($routes) { $routes->get('', 'Users::index', ['as' => 'userList']); diff --git a/ci4/app/Controllers/Tarifas/Tarifaacabado.php b/ci4/app/Controllers/Tarifas/Tarifaacabado.php index 1bf43192..86dcb41b 100644 --- a/ci4/app/Controllers/Tarifas/Tarifaacabado.php +++ b/ci4/app/Controllers/Tarifas/Tarifaacabado.php @@ -1,57 +1,39 @@ -viewData['pageTitle'] = lang('Tarifaacabado.moduleTitle'); - $this->viewData['usingSweetAlert'] = true; parent::initController($request, $response, $logger); + } - public function index() { - - helper('general'); - $viewData = [ - 'currentModule' => static::$controllerSlug, - 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Tarifaacabado.tarifaacabado')]), - 'tarifaacabado_' => new TarifaacabadoEntity(), - 'usingServerSideDataTable' => true, - - ]; + $this->viewData['usingClientSideDataTable'] = true; + + $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tarifaacabado.tarifaacabado')]); + parent::index(); - $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class - - return view(static::$viewPath.'viewTarifaacabadoList', $viewData); } - public function add() { @@ -63,13 +45,12 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $nullIfEmpty = true; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); $noException = true; - $successfulResult = false; // for now - + if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($this->canValidate()) : try { @@ -84,23 +65,23 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { endif; $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission - + endif; if ($noException && $successfulResult) : $id = $this->model->db->insertID(); $message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('Tarifaacabado.tarifaacabado'))]).'.'; - $message .= anchor( "admin/tarifaacabado/{$id}/edit" , lang('Basic.global.continueEditing').'?'); + $message .= anchor(route_to('editTarifaacabado', $id), lang('Basic.global.continueEditing').'?'); $message = ucfirst(str_replace("'", "\'", $message)); if ($thenRedirect) : if (!empty($this->indexRoute)) : - return redirect()->to(route_to( $this->indexRoute ) )->with('sweet-success', $message); + return redirect()->to(route_to($this->indexRoute))->with('successMessage', $message); else: - return $this->redirect2listView('sweet-success', $message); + return $this->redirect2listView('successMessage', $message); endif; else: - $this->session->setFlashData('sweet-success', $message); + $this->viewData['successMessage'] = $message; endif; endif; // $noException && $successfulResult @@ -111,7 +92,7 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $this->viewData['formAction'] = route_to('createTarifaacabado'); - $this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('Tarifaacabado.moduleTitle').' '.lang('Basic.global.addNewSuffix'); + $this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('Tarifaacabado.tarifaacabado').' '.lang('Basic.global.addNewSuffix'); return $this->displayForm(__METHOD__); @@ -127,7 +108,7 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { if ($tarifaacabado_ == false) : $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Tarifaacabado.tarifaacabado')), $id]); - return $this->redirect2listView('sweet-error', $message); + return $this->redirect2listView('errorMessage', $message); endif; $requestMethod = $this->request->getMethod(); @@ -137,13 +118,12 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $nullIfEmpty = true; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); $noException = true; - $successfulResult = false; // for now + if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : @@ -163,21 +143,21 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $tarifaacabado_->fill($sanitizedData); $thenRedirect = true; - + endif; if ($noException && $successfulResult) : $id = $tarifaacabado_->id ?? $id; $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('Tarifaacabado.tarifaacabado'))]).'.'; - $message .= anchor( "admin/tarifaacabado/{$id}/edit" , lang('Basic.global.continueEditing').'?'); + $message .= anchor(route_to('editTarifaacabado', $id), lang('Basic.global.continueEditing').'?'); $message = ucfirst(str_replace("'", "\'", $message)); if ($thenRedirect) : if (!empty($this->indexRoute)) : - return redirect()->to(route_to( $this->indexRoute ) )->with('sweet-success', $message); + return redirect()->to(route_to($this->indexRoute))->with('successMessage', $message); else: - return $this->redirect2listView('sweet-success', $message); + return $this->redirect2listView('successMessage', $message); endif; else: - $this->session->setFlashData('sweet-success', $message); + $this->viewData['successMessage'] = $message; endif; endif; // $noException && $successfulResult @@ -185,46 +165,15 @@ class Tarifaacabado extends \App\Controllers\GoBaseResourceController { $this->viewData['tarifaacabado_'] = $tarifaacabado_; - $this->viewData['formAction'] = route_to('updateTarifaacabado', $id); + $this->viewData['formAction'] = route_to('updateTarifaacabado', $id); - $this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('Tarifaacabado.moduleTitle').' '.lang('Basic.global.edit3'); + $this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('Tarifaacabado.tarifaacabado').' '.lang('Basic.global.edit3'); return $this->displayForm(__METHOD__, $id); } // end function edit(...) - - - public function datatable() { - if ($this->request->isAJAX()) { - $reqData = $this->request->getPost(); - if (!isset($reqData['draw']) || !isset($reqData['columns']) ) { - $errstr = 'No data available in response to this specific request.'; - $response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr); - return $response; - } - $start = $reqData['start'] ?? 0; - $length = $reqData['length'] ?? 5; - $search = $reqData['search']['value']; - $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = TarifaacabadoModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; - $dir = $reqData['order']['0']['dir'] ?? 'asc'; - - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); - foreach ($resourceData as $item) : -if (isset($item->formula_price) && strlen($item->formula_price) > 100) : - $item->formula_price = character_limiter($item->formula_price, 100); -endif; - endforeach; - return $this->respond(Collection::datatable( - $resourceData, - $this->model->getResource()->countAllResults(), - $this->model->getResource($search)->countAllResults() - )); - } else { - return $this->failUnauthorized('Invalid request', 403); - } - } + public function allItemsSelect() { if ($this->request->isAJAX()) { @@ -233,7 +182,7 @@ endif; $menu = $this->model->getAllForMenu($reqVal.', Select a field...', 'Select a field...', $onlyActiveOnes, false); $nonItem = new \stdClass; $nonItem->id = ''; - //$nonItem->Select a field... = '- '.lang('Basic.global.None').' -'; + $nonItem->Selectafield = '- '.lang('Basic.global.None').' -'; array_unshift($menu , $nonItem); $newTokenHash = csrf_hash(); @@ -247,7 +196,7 @@ endif; return $this->failUnauthorized('Invalid request', 403); } } - + public function menuItems() { if ($this->request->isAJAX()) { $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; @@ -273,5 +222,5 @@ endif; return $this->failUnauthorized('Invalid request', 403); } } - + } diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoList.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoList.php index 03f73bfa..4bb141b8 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoList.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/acabado/viewTarifaacabadoList.php @@ -1,6 +1,6 @@ include('themes/_commonPartialsBs/datatables') ?> -include('themes/_commonPartialsBs/sweetalert') ?> extend('themes/backend/vuexy/main/defaultlayout') ?> + section('content'); ?>
@@ -8,15 +8,15 @@

+ 'btn btn-primary float-end']); ?>
- +
- - + @@ -26,176 +26,68 @@ + + + + + + + + + + + + + + + + + + +
+ id ?> + + nombre) || strlen($item->nombre) < 51 ? esc($item->nombre) : character_limiter(esc($item->nombre), 50) ?> + + tirada_min) ?> + + precio_min) ?> + + tirada_max) ?> + + precio_max) ?> + + ajuste) ?> + + formula_price) || strlen($item->formula_price) < 51 ? esc($item->formula_price) : character_limiter(esc($item->formula_price), 50) ?> + + user_created_id) ?> + + user_update_id) ?> + + deleted_at) ? '' : date('d/m/Y H:m:s', strtotime($item->deleted_at)) ?> + + created_at) ? '' : date('d/m/Y H:m:s', strtotime($item->created_at)) ?> + + updated_at) ? '' : date('d/m/Y H:m:s', strtotime($item->updated_at)) ?> + + id), lang('Basic.global.edit'), ['class'=>'btn btn-sm btn-warning btn-edit me-1', 'data-id'=>$item->id,]); ?> + 'btn btn-sm btn-danger btn-delete ms-1', 'data-href'=>route_to('deleteTarifaacabado', $item->id), 'data-bs-toggle'=>'modal', 'data-bs-target'=>'#confirm2delete']); ?> +
endSection() ?> - - -section('additionalInlineJs') ?> - - const lastColNr = $('#tableOfTarifasacabado').find("tr:first th").length - 1; - const actionBtns = function(data) { - return ` -
- - -
- `; - }; - theTable = $('#tableOfTarifasacabado').DataTable({ - processing: true, - serverSide: true, - autoWidth: true, - responsive: true, - scrollX: true, - lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ], - pageLength: 10, - lengthChange: true, - "dom": 'lfrtipB', // 'lfBrtip', // you can try different layout combinations by uncommenting one or the other - // "dom": '<"top"lf><"clear">rt<"bottom"ipB><"clear">', // remember to comment this line if you uncomment the above - "buttons": [ - 'copy', 'csv', 'excel', 'print', { - extend: 'pdfHtml5', - orientation: 'landscape', - pageSize: 'A4' - } - ], - stateSave: true, - order: [[1, 'asc']], - language: { - //url: "/assets/dt/languages[$currentLocale] ?? config('Basics')->i18n ?>.json" - }, - ajax : $.fn.dataTable.pipeline( { - url: '', - method: 'POST', - headers: {'X-Requested-With': 'XMLHttpRequest'}, - async: true, - }), - columnDefs: [ - { - orderable: false, - searchable: false, - targets: [0,lastColNr] - } - ], - columns : [ - { 'data': actionBtns }, - { 'data': 'id' }, - { 'data': 'nombre' }, - { 'data': 'tirada_min' }, - { 'data': 'precio_min' }, - { 'data': 'tirada_max' }, - { 'data': 'precio_max' }, - { 'data': 'ajuste' }, - { 'data': 'formula_price' }, - { 'data': 'user_created_id' }, - { 'data': 'user_update_id' }, - { 'data': 'created_at' }, - { 'data': 'updated_at' }, - { 'data': actionBtns } - ] - }); - - - theTable.on( 'draw.dt', function () { - - const dateCols = [11, 12]; - const shortDateFormat = ''; - const dateTimeFormat = ''; - - for (let coln of dateCols) { - theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) { - const datestr = cell.innerHTML; - const dateStrLen = datestr.toString().trim().length; - if (dateStrLen > 0) { - let dateTimeParts= datestr.split(/[- :]/); // regular expression split that creates array with: year, month, day, hour, minutes, seconds values - dateTimeParts[1]--; // monthIndex begins with 0 for January and ends with 11 for December so we need to decrement by one - const d = new Date(...dateTimeParts); // new Date(datestr); - const md = moment(d); - const usingThisFormat = dateStrLen > 11 ? dateTimeFormat : shortDateFormat; - const formattedDateStr = md.format(usingThisFormat); - cell.innerHTML = formattedDateStr; - } - }); - } - }); - -$(document).on('click', '.btn-edit', function(e) { - window.location.href = `/${$(this).attr('data-id')}/edit`; - }); - -$(document).on('click', '.btn-delete', function(e) { - Swal.fire({ - title: '', - text: '', - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#3085d6', - confirmButtonText: '', - cancelButtonText: '', - cancelButtonColor: '#d33' - }) - .then((result) => { - const dataId = $(this).data('id'); - const row = $(this).closest('tr'); - if (result.value) { - $.ajax({ - url: `/${dataId}`, - method: 'DELETE', - }).done((data, textStatus, jqXHR) => { - Toast.fire({ - icon: 'success', - title: data.msg ?? jqXHR.statusText, - }); - - theTable.clearPipeline(); - theTable.row($(row)).invalidate().draw(); - }).fail((jqXHR, textStatus, errorThrown) => { - Toast.fire({ - icon: 'error', - title: jqXHR.responseJSON.messages.error, - }); - }) - } - }); - }); - - - - -endSection() ?> - - -section('css') ?> - -endSection() ?> - - -section('additionalExternalJs') ?> - - - - - - - - - - -endSection() ?> -