<?php

use CodeIgniter\Router\RouteCollection;

/**
 * @var RouteCollection $routes
 */

//service('auth')->routes($routes, ['except' => ['login', 'register']]);
service('auth')->routes($routes);


//WEB ROUTER ------------------------------------------------------
//------------------------------------------------------------------
$routes->get('/', 'Home::index', ['as' => 'home']);
$routes->get('lang/{locale}', 'Language::index');
$routes->get('viewmode/(:alpha)', 'Viewmode::index/$1');


$routes->group('activity', ['namespace' => 'App\Controllers\Sistema'], function ($routes) {
    $routes->get('', 'Actividad::index', ['as' => 'activityList']);
    $routes->post('datatable', 'Actividad::datatable', ['as' => 'activityDT']);
});

$routes->group('settings', ['namespace' => 'App\Controllers\Sistema'], function ($routes) {
    $routes->get('', 'Ajustes::settings', ['as' => 'ajustesList']);
    $routes->post('', 'Ajustes::settings', ['as' => 'ajustesEdit']);
});


/*
 * --------------------------------------------------------------------
 * Route Definitions
 * --------------------------------------------------------------------
 */

/* Rutas para tarifas */
$routes->group('tarifas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {

    /* Maquinas */
    $routes->group('maquinas', ['namespace' => 'App\Controllers\Tarifas\Maquinas'], function ($routes) {

        $routes->post('acabado', 'TarifaMaquinas::add_tarifa_acabado_maquina_with_tarea');
        $routes->post('manipulado', 'TarifaMaquinas::add_tarifa_manipulado_maquina_with_tarea');
        $routes->post('preimpresion', 'TarifaMaquinas::add_tarifa_preimpresion_maquina_with_tarea');
        $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');
        $routes->delete('encuadernacion/(:num)', 'TarifaMaquinas::delete_tarifa_encuadernacion_maquina_with_tarea/$1');
        $routes->delete('extra/(:num)', 'TarifaMaquinas::delete_tarifa_extra_maquina_with_tarea/$1');

        $routes->get('acabado/select', 'TarifaMaquinas::get_select_maquina_acabado');
        $routes->get('manipulado/select', 'TarifaMaquinas::get_select_maquina_manipulado');
        $routes->get('impresion/select', 'TarifaMaquinas::get_select_maquina_impresion');
        $routes->get('encuadernacion/select', 'TarifaMaquinas::get_select_maquina_manipulado');
        $routes->get('tareas/select', 'TarifaMaquinas::get_select_maquina_tareas');




        $routes->get('acabado/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_acabado_maquina/$1');
        $routes->get('manipulado/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_manipulado_maquina/$1');
        $routes->get('preimpresion/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_preimpresion_maquina/$1');
        $routes->get('encuadernacion/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_encuadernacion_maquina/$1');
        $routes->get('extra/datatable/(:num)', 'TarifaMaquinas::get_datatable_tarifa_extra_maquina/$1');
    });
    /* Cliente */
    $routes->group('acabados', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) {

        $routes->get('', 'TarifaAcabados::index', ['as' => 'tarifaAcabadoList']);
        $routes->get('gettarifas', 'TarifaAcabados::getSelect2');
        $routes->match(['get', 'post'], 'add', 'TarifaAcabados::add', ['as' => 'tarifaAcabadoAdd']);
        $routes->match(['get', 'post'], 'edit/(:num)', 'TarifaAcabados::edit/$1', ['as' => 'tarifaAcabadoEdit']);
        $routes->get('delete/(:num)', 'TarifaAcabados::delete/$1', ['as' => 'tarifaAcabadoDelete']);
        $routes->post('datatable', 'TarifaAcabados::datatable', ['as' => 'tarifaAcabadoDT']);
        $routes->get('select', 'TarifaAcabados::show_select', ["as" => "showSelectTarifaAcabado"]);
        $routes->group('lineas', ['namespace' => 'App\Controllers\Tarifas\Acabados'], function ($routes) {
            $routes->post('datatable', 'TarifaAcabadosLineas::datatable', ['as' => 'tarifaAcabadoLineasDT']);
            $routes->post('datatable_editor', 'TarifaAcabadosLineas::datatable_editor', ['as' => 'tarifaAcabadoLineasDTE']);
            $routes->get('delete/(:num)', 'TarifaAcabadosLineas::delete/$1', ['as' => 'tarifaAcabadoLineasDelete']);
        });
    });
});

/* Rutas para configuraciones */
$routes->group('configuracion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {

    /* Ubicaciones */
    $routes->group('ubicaciones', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {

        $routes->get('', 'Ubicaciones::index', ['as' => 'ubicacionesList']);
        $routes->match(['get', 'post'], 'add', 'Ubicaciones::add', ['as' => 'ubicacionesAdd']);
        $routes->match(['get', 'post'], 'edit/(:num)', 'Ubicaciones::edit/$1', ['as' => 'ubicacionesEdit']);
        $routes->get('delete/(:num)', 'Ubicaciones::delete/$1', ['as' => 'ubicacionesDelete']);
        $routes->post('datatable', 'Ubicaciones::datatable', ['as' => 'ubicacionesDT']);
    });

    /* Series Factura */
    $routes->group('series-facturas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
        $routes->get('', 'SeriesFacturas::index', ['as' => 'seriesFacturasList']);
        $routes->match(['get', 'post'], 'add', 'SeriesFacturas::add', ['as' => 'seriesFacturasAdd']);
        $routes->match(['get', 'post'], 'edit/(:num)', 'SeriesFacturas::edit/$1', ['as' => 'seriesFacturasEdit']);
        $routes->get('delete/(:num)', 'SeriesFacturas::delete/$1', ['as' => 'seriesFacturasDelete']);
        $routes->post('datatable', 'SeriesFacturas::datatable', ['as' => 'seriesFacturasDT']);
        $routes->post('menuitemsFacturas', 'SeriesFacturas::menuItemsFacturas', ['as' => 'menuItemsOfSeriesFacturas']);
    });


    $routes->group("variables", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) {
        $routes->get('', 'ConfigVariables::index', ['as' => 'variablesIndex']);
        $routes->get('find/(:num)', 'ConfigVariables::get/$1', ['as' => 'variablesFind']);
        $routes->post('edit/(:num)', 'ConfigVariables::updateVariable/$1', ['as' => 'updateVariable']);
        $routes->delete('delete/(:num)', 'ConfigVariables::delete/$1', ['as' => 'deleteVariable']);
        $routes->get('datatable', 'ConfigVariables::datatable', ['as' => 'datatableVariables']);
    });
    $routes->group("errores-presupuesto", ["namespace" => 'App\Controllers\Configuracion'], function ($routes) {
        $routes->get('', 'ConfigErrores::index', ['as' => 'erroresPresupuestoIndex']);
        $routes->get('edit/(:num)', 'ConfigErrores::viewForm/$1', ['as' => 'erroresPresupuestoViewForm']);
        $routes->get('get/(:num)', 'ConfigErrores::get_error_presupuesto/$1', ['as' => 'erroresPresupuestoGetErrorPresupuesto']);
        $routes->get('datatable', 'ConfigErrores::datatable', ['as' => 'erroresPresupuestoDatatable']);
        $routes->post('edit/(:num)', 'ConfigErrores::update_error_presupuesto/$1', ['as' => 'erroresPresupuestoUpdate']);
    });
    $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']);
    });
});


$routes->group('users', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Users::index', ['as' => 'userList']);
    $routes->get('list', 'Users::index', ['as' => 'userList2']);
    $routes->get('add', 'Users::add', ['as' => 'newUser']);
    $routes->post('add', 'Users::add', ['as' => 'createUser']);
    $routes->get('edit/(:num)', 'Users::edit/$1', ['as' => 'editUser']);
    $routes->post('edit/(:num)', 'Users::edit/$1', ['as' => 'updateUser']);
    $routes->get('delete/(:num)', 'Users::delete/$1', ['as' => 'deleteUser']);
    $routes->post('allmenuitems', 'Users::allItemsSelect', ['as' => 'select2ItemsOfUsers']);
    $routes->post('menuitems', 'Users::menuItems', ['as' => 'menuItemsOfUsers']);
    $routes->post('datatable', 'Users::datatable', ['as' => 'datatableOfUsers']);
    $routes->get('getMenuComerciales', 'Users::getMenuComerciales', ['as' => 'menuItemsComerciales']);
});
$routes->resource('users', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Users', 'except' => 'show,new,create,update']);


$routes->group('group', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Group::index', ['as' => 'userGroupList']);
    $routes->get('index', 'Group::index', ['as' => 'groupIndex']);
    $routes->post('edit/(:num)', 'Group::edit/$1', ['as' => 'updateGroup']);
    $routes->get('edit/(:num)', 'Group::edit/$1', ['as' => 'editGroup']);
    $routes->get('delete/(:num)', 'Group::delete/$1', ['as' => 'deleteGroup']);
    $routes->get('add', 'Group::add', ['as' => 'newGroup']);
    $routes->post('add', 'Group::add', ['as' => 'createGroup']);
});

$routes->group('tarifapreimpresion', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifapreimpresion::index', ['as' => 'tarifapreimpresionList']);
    $routes->get('index', 'Tarifapreimpresion::index', ['as' => 'tarifapreimpresionIndex']);
    $routes->get('list', 'Tarifapreimpresion::index', ['as' => 'tarifapreimpresionList2']);
    $routes->get('add', 'Tarifapreimpresion::add', ['as' => 'newTarifapreimpresion']);
    $routes->post('add', 'Tarifapreimpresion::add', ['as' => 'createTarifapreimpresion']);
    $routes->get('edit/(:num)', 'Tarifapreimpresion::edit/$1', ['as' => 'editTarifapreimpresion']);
    $routes->post('edit/(:num)', 'Tarifapreimpresion::edit/$1', ['as' => 'updateTarifapreimpresion']);
    $routes->get('delete/(:num)', 'Tarifapreimpresion::delete/$1', ['as' => 'deleteTarifapreimpresion']);
    $routes->post('allmenuitems', 'Tarifapreimpresion::allItemsSelect', ['as' => 'select2ItemsOfTarifaspreimpresion']);
    $routes->post('menuitems', 'Tarifapreimpresion::menuItems', ['as' => 'menuItemsOfTarifaspreimpresion']);
    $routes->get('gettarifas', 'Tarifapreimpresion::getSelect2');
});


$routes->group('tarifaextra', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifaextra::index', ['as' => 'tarifaextraList']);
    $routes->get('index', 'Tarifaextra::index', ['as' => 'tarifaextraIndex']);
    $routes->get('list', 'Tarifaextra::index', ['as' => 'tarifaextraList2']);
    $routes->get('add', 'Tarifaextra::add', ['as' => 'newTarifaextra']);
    $routes->post('add', 'Tarifaextra::add', ['as' => 'createTarifaextra']);
    $routes->get('edit/(:num)', 'Tarifaextra::edit/$1', ['as' => 'editTarifaextra']);
    $routes->post('edit/(:num)', 'Tarifaextra::edit/$1', ['as' => 'updateTarifaextra']);
    $routes->get('delete/(:num)', 'Tarifaextra::delete/$1', ['as' => 'deleteTarifaextra']);
    $routes->post('allmenuitems', 'Tarifaextra::allItemsSelect', ['as' => 'select2ItemsOfTarifasextra']);
    $routes->post('menuitems', 'Tarifaextra::menuItems', ['as' => 'menuItemsOfTarifasextra']);
    $routes->get('gettarifas', 'Tarifaextra::getSelect2');
});


$routes->group('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifasmanipulado::index', ['as' => 'tarifaManipuladoList']);
    $routes->get('add', 'Tarifasmanipulado::add', ['as' => 'newTarifaManipulado']);
    $routes->post('add', 'Tarifasmanipulado::add', ['as' => 'createTarifaManipulado']);
    $routes->post('create', 'Tarifasmanipulado::create', ['as' => 'ajaxCreateTarifaManipulado']);
    $routes->put('(:num)/update', 'Tarifasmanipulado::update/$1', ['as' => 'ajaxUpdateTarifaManipulado']);
    $routes->post('edit/(:num)', 'Tarifasmanipulado::edit/$1', ['as' => 'updateTarifaManipulado']);
    $routes->get('delete/(:num)', 'Tarifasmanipulado::delete/$1', ['as' => 'deleteTarifaManipulado']);
    $routes->post('datatable', 'Tarifasmanipulado::datatable', ['as' => 'dataTableOfTarifasManipulado']);
    $routes->post('allmenuitems', 'Tarifasmanipulado::allItemsSelect', ['as' => 'select2ItemsOfTarifasManipulado']);
    $routes->post('menuitems', 'Tarifasmanipulado::menuItems', ['as' => 'menuItemsOfTarifasManipulado']);
    $routes->get('select', 'Tarifasmanipulado::show_select', ["as" => "showSelectTarifaManipulado"]);
    $routes->get('gettarifas', 'Tarifasmanipulado::getSelect2');
});
$routes->resource('tarifasmanipulado', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasmanipulado', 'except' => 'show,new,create,update']);


$routes->group('tarifamanipuladolineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifamanipuladolineas::index', ['as' => 'tarifaManipuladoLineaList']);
    $routes->get('add', 'Tarifamanipuladolineas::add', ['as' => 'newTarifaManipuladoLinea']);
    $routes->post('add', 'Tarifamanipuladolineas::add', ['as' => 'createTarifaManipuladoLinea']);
    $routes->post('create', 'Tarifamanipuladolineas::create', ['as' => 'ajaxCreateTarifaManipuladoLinea']);
    $routes->put('(:num)/update', 'Tarifamanipuladolineas::update/$1', ['as' => 'ajaxUpdateTarifaManipuladoLinea']);
    $routes->post('(:num)/edit', 'Tarifamanipuladolineas::edit/$1', ['as' => 'updateTarifaManipuladoLinea']);
    $routes->post('datatable', 'Tarifamanipuladolineas::datatable', ['as' => 'dataTableOfTarifaManipuladoLineas']);
    $routes->post('datatable_editor', 'Tarifamanipuladolineas::datatable_editor', ['as' => 'editorOfTarifaManipuladoLineas']);
    $routes->post('allmenuitems', 'Tarifamanipuladolineas::allItemsSelect', ['as' => 'select2ItemsOfTarifaManipuladoLineas']);
    $routes->post('menuitems', 'Tarifamanipuladolineas::menuItems', ['as' => 'menuItemsOfTarifaManipuladoLineas']);
});
$routes->resource('tarifamanipuladolineas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifamanipuladolineas', 'except' => 'show,new,create,update']);


$routes->group('tipologiaslibros', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Tipologias::index', ['as' => 'tipologiaLibrosList']);
    $routes->get('index', 'Tipologias::index', ['as' => 'tipologiaLibrosIndex']);
    $routes->get('list', 'Tipologias::index', ['as' => 'tipologiaLibrosList2']);
    $routes->get('add', 'Tipologias::add', ['as' => 'newTipologiaLibros']);
    $routes->post('add', 'Tipologias::add', ['as' => 'createTipologiaLibros']);
    $routes->get('edit/(:num)', 'Tipologias::edit/$1', ['as' => 'editTipologiaLibros']);
    $routes->post('edit/(:num)', 'Tipologias::edit/$1', ['as' => 'updateTipologiaLibros']);
    $routes->get('delete/(:num)', 'Tipologias::delete/$1', ['as' => 'deleteTipologiaLibros']);
    $routes->post('allmenuitems', 'Tipologias::allItemsSelect', ['as' => 'select2ItemsOfTipologiasLibros']);
    $routes->post('menuitems', 'Tipologias::menuItems', ['as' => 'menuItemsOfTipologiasLibros']);
});

$routes->group('imposiciones', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Imposiciones::index', ['as' => 'imposicionList']);
    $routes->get('add', 'Imposiciones::add', ['as' => 'newImposicion']);
    $routes->post('add', 'Imposiciones::add', ['as' => 'createImposicion']);
    $routes->post('create', 'Imposiciones::create', ['as' => 'ajaxCreateImposicion']);
    $routes->put('(:num)/update', 'Imposiciones::update/$1', ['as' => 'ajaxUpdateImposicion']);
    $routes->post('(:num)/edit', 'Imposiciones::edit/$1', ['as' => 'updateImposicion']);
    $routes->post('datatable', 'Imposiciones::datatable', ['as' => 'dataTableOfImposiciones']);
    $routes->post('allmenuitems', 'Imposiciones::allItemsSelect', ['as' => 'select2ItemsOfImposiciones']);
    $routes->post('menuitems', 'Imposiciones::menuItems', ['as' => 'menuItemsOfImposiciones']);
});
$routes->resource('imposiciones', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Imposiciones', 'except' => 'show,new,create,update']);

$routes->group('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Papelesgenericos::index', ['as' => 'papelGenericoList']);
    $routes->delete('', 'Papelesgenericos::index', ['as' => 'papelGenericoList2']);
    $routes->get('add', 'Papelesgenericos::add', ['as' => 'newPapelGenerico']);
    $routes->post('add', 'Papelesgenericos::add', ['as' => 'createPapelGenerico']);
    $routes->post('create', 'Papelesgenericos::create', ['as' => 'ajaxCreatePapelGenerico']);
    $routes->put('(:num)/update', 'Papelesgenericos::update/$1', ['as' => 'ajaxUpdatePapelGenerico']);
    $routes->post('edit/(:num)', 'Papelesgenericos::edit/$1', ['as' => 'updatePapelGenerico']);
    $routes->post('datatable', 'Papelesgenericos::datatable', ['as' => 'dataTableOfPapelesGenericos']);
    $routes->post('allmenuitems', 'Papelesgenericos::allItemsSelect', ['as' => 'select2ItemsOfPapelesGenericos']);
    $routes->post('menuitems', 'Papelesgenericos::menuItems', ['as' => 'menuItemsOfPapelesGenericos']);
    $routes->get('getpapelcliente', 'Papelesgenericos::getPapelCliente', ['as' => 'getPapelCliente']);
    $routes->get('selectpapelespecial', 'Papelesgenericos::selectPapelEspecial', ['as' => 'selectPapelEspecial']);
});
$routes->resource('papelesgenericos', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesgenericos', 'except' => 'show,new,create,update']);

$routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Papelesimpresion::index', ['as' => 'papelImpresionList']);
    $routes->get('add', 'Papelesimpresion::add', ['as' => 'newPapelImpresion']);
    $routes->post('add', 'Papelesimpresion::add', ['as' => 'createPapelImpresion']);
    $routes->post('create', 'Papelesimpresion::create', ['as' => 'ajaxCreatePapelImpresion']);
    $routes->put('(:num)/update', 'Papelesimpresion::update/$1', ['as' => 'ajaxUpdatePapelImpresion']);
    $routes->post('edit/(:num)', 'Papelesimpresion::edit/$1', ['as' => 'updatePapelImpresion']);
    $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']);

$routes->group('papelimpresiontipologias', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('add', 'Papelimpresiontipologias::add', ['as' => 'newPapelImpresionTipologia']);
    $routes->post('add', 'Papelimpresiontipologias::add', ['as' => 'createPapelImpresionTipologia']);
    $routes->post('datatable_editor', 'Papelimpresiontipologias::datatable_editor', ['as' => 'editorOfConsumoTintas']);
    $routes->get('edit/(:num)', 'Papelimpresiontipologias::edit/$1', ['as' => 'editPapelImpresionTipologia']);
    $routes->post('edit/(:num)', 'Papelimpresiontipologias::edit/$1', ['as' => 'updatePapelImpresionTipologia']);
    $routes->get('delete/(:num)', 'Papelimpresiontipologias::delete/$1', ['as' => 'deletePapelImpresionTipologia']);
});


$routes->group('papelesimpresionmargenes', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->post('datatable', 'Papelimpresionmargenes::datatable', ['as' => 'dataTableOfPapelImpresionMargen']);
    $routes->post('datatable_editor', 'Papelimpresionmargenes::datatable_editor', ['as' => 'editorOfPapelImpresionMargenes']);
    $routes->get('delete/(:num)', 'Papelimpresionmargenes::delete/$1', ['as' => 'deletePapelImpresionMargen']);
});
$routes->resource('papelesimpresionmargenes', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelimpresionmargenes', 'except' => 'show,new,create,update']);

$routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Maquinas::index', ['as' => 'maquinaList']);
    $routes->get('add', 'Maquinas::add', ['as' => 'newMaquina']);
    $routes->get('edit/(:num)', 'Maquinas::edit/$1');
    $routes->get('delete/(:num)', 'Maquinas::delete/$1');
    $routes->post('add', 'Maquinas::add', ['as' => 'createMaquina']);
    $routes->post('create', 'Maquinas::create', ['as' => 'ajaxCreateMaquina']);
    $routes->put('update/(:num)', 'Maquinas::update/$1', ['as' => 'ajaxUpdateMaquina']);
    $routes->post('edit/(:num)', 'Maquinas::edit/$1', ['as' => 'updateMaquina']);
    $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']);


$routes->group('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Maquinastarifasimpresion::index', ['as' => 'maquinasTarifaImpresionList']);
    $routes->get('add', 'Maquinastarifasimpresion::add', ['as' => 'newMaquinasTarifaImpresion']);
    $routes->post('add', 'Maquinastarifasimpresion::add', ['as' => 'createMaquinasTarifaImpresion']);
    $routes->post('create', 'Maquinastarifasimpresion::create', ['as' => 'ajaxCreateMaquinasTarifaImpresion']);
    $routes->put('(:num)/update', 'Maquinastarifasimpresion::update/$1', ['as' => 'ajaxUpdateMaquinasTarifaImpresion']);
    $routes->post('(:num)/edit', 'Maquinastarifasimpresion::edit/$1', ['as' => 'updateMaquinasTarifaImpresion']);
    $routes->get('delete/(:num)', 'Maquinastarifasimpresion::delete/$1', ['as' => 'deleteMaquinastarifasimpresion']);
    $routes->post('datatable_editor', 'Maquinastarifasimpresion::datatable_editor', ['as' => 'editorOfMaquinasTarifaImpresion']);
    $routes->post('datatable', 'Maquinastarifasimpresion::datatable', ['as' => 'dataTableOfMaquinasTarifasImpresion']);
    $routes->post('allmenuitems', 'Maquinastarifasimpresion::allItemsSelect', ['as' => 'select2ItemsOfMaquinasTarifasImpresion']);
    $routes->post('menuitems', 'Maquinastarifasimpresion::menuItems', ['as' => 'menuItemsOfMaquinasTarifasImpresion']);
});
$routes->resource('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinastarifasimpresion', 'except' => 'show,new,create,update']);

$routes->group('maquinascalles', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Maquinascalles::index', ['as' => 'maquinasCallesList']);
    $routes->get('delete/(:num)', 'Maquinascalles::delete/$1', ['as' => 'deleteMaquinascalles']);
    $routes->post('datatable_editor', 'Maquinascalles::datatable_editor', ['as' => 'editorOfMaquinascalles']);
    $routes->post('datatable', 'Maquinascalles::datatable', ['as' => 'dataTableOfMaquinascalles']);
});
$routes->resource('maquinascalles', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'maquinascalles', 'except' => 'show,new,create,update']);

$routes->group('maquinaspapelesimpresion', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->post('datatable', 'Maquinaspapelesimpresion::datatable', ['as' => 'dataTableOfMaquinasPapelesImpresion']);
    $routes->post('datatable_2', 'Maquinaspapelesimpresion::datatable_2', ['as' => 'dataTableOfPapelesImpresionMaquinas']);
    $routes->post('datatable_editor', 'Maquinaspapelesimpresion::datatable_editor', ['as' => 'editorOfMaquinasPapelImpresion']);
    $routes->post('datatable_editor_2', 'Maquinaspapelesimpresion::datatable_editor_2', ['as' => 'editorOfPapelImpresionMaquinas']);
    $routes->post('updateTableOnChange', 'Maquinaspapelesimpresion::updateTableOnChange', ['as' => 'updateMaquinaPapelOnTarifasChange']);
});
$routes->resource('maquinastarifasimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinastarifasimpresion', 'except' => 'show,new,create,update']);


$routes->group('maquinasdefecto', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Maquinasdefecto::index', ['as' => 'maquinaPorDefectoList']);
    $routes->get('add', 'Maquinasdefecto::add', ['as' => 'newMaquinaPorDefecto']);
    $routes->post('add', 'Maquinasdefecto::add', ['as' => 'createMaquinaPorDefecto']);
    $routes->post('create', 'Maquinasdefecto::create', ['as' => 'ajaxCreateMaquinaPorDefecto']);
    $routes->put('(:num)/update', 'Maquinasdefecto::update/$1', ['as' => 'ajaxUpdateMaquinaPorDefecto']);
    $routes->post('edit/(:num)', 'Maquinasdefecto::edit/$1', ['as' => 'updateMaquinaPorDefecto']);
    $routes->post('datatable', 'Maquinasdefecto::datatable', ['as' => 'dataTableOfMaquinasPorDefecto']);
    $routes->post('allmenuitems', 'Maquinasdefecto::allItemsSelect', ['as' => 'select2ItemsOfMaquinasPorDefecto']);
    $routes->post('menuitems', 'Maquinasdefecto::menuItems', ['as' => 'menuItemsOfMaquinasPorDefecto']);
});
$routes->resource('maquinasdefecto', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinasdefecto', 'except' => 'show,new,create,update']);


$routes->group('profile', ['namespace' => 'App\Controllers'], function ($routes) {
    $routes->get('', 'Profile::index', ['as' => 'profileList']);
    $routes->get('index', 'Profile::index', ['as' => 'profileIndex']);
    $routes->get('list', 'Profile::index', ['as' => 'profileList2']);
});


$routes->group('comunidades-autonomas', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Comunidadesautonomas::index', ['as' => 'comunidadAutonomaList']);
    $routes->get('add', 'Comunidadesautonomas::add', ['as' => 'newComunidadAutonoma']);
    $routes->post('add', 'Comunidadesautonomas::add', ['as' => 'createComunidadAutonoma']);
    $routes->post('create', 'Comunidadesautonomas::create', ['as' => 'ajaxCreateComunidadAutonoma']);
    $routes->put('(:num)/update', 'Comunidadesautonomas::update/$1', ['as' => 'ajaxUpdateComunidadAutonoma']);
    $routes->post('(:num)/edit', 'Comunidadesautonomas::edit/$1', ['as' => 'updateComunidadAutonoma']);
    $routes->post('datatable', 'Comunidadesautonomas::datatable', ['as' => 'dataTableOfComunidadesAutonomas']);
    $routes->post('allmenuitems', 'Comunidadesautonomas::allItemsSelect', ['as' => 'select2ItemsOfComunidadesAutonomas']);
    $routes->post('menuitems', 'Comunidadesautonomas::menuItems', ['as' => 'menuItemsOfComunidadesAutonomas']);
    $routes->get('menuitems2', 'Comunidadesautonomas::menuItems2', ['as' => 'menuItemsOfComunidadesAutonomas2']);
});
$routes->resource('comunidades-autonomas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Comunidadesautonomas', 'except' => 'show,new,create,update']);


$routes->group('formas-pago', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'FormasPago::index', ['as' => 'formasPagoList']);
    $routes->match(['get', 'post'], 'add', 'FormasPago::add', ['as' => 'formasPagoAdd']);
    $routes->match(['get', 'post'], 'edit/(:num)', 'FormasPago::edit/$1', ['as' => 'formasPagoEdit']);
    $routes->get('delete/(:num)', 'FormasPago::delete/$1', ['as' => 'formasPagoDelete']);
    $routes->post('datatable', 'FormasPago::datatable', ['as' => 'formasPagoDT']);
    $routes->get('menuitems', 'FormasPago::menuItems', ['as' => 'menuItemsOfFormasDePagos']);
});
$routes->resource('formas-pago', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'FormasPago', 'except' => 'show,new,create,update']);


$routes->group('paises', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Paises::index', ['as' => 'paisList']);
    $routes->get('add', 'Paises::add', ['as' => 'newPais']);
    $routes->post('add', 'Paises::add', ['as' => 'createPais']);
    $routes->post('create', 'Paises::create', ['as' => 'ajaxCreatePais']);
    $routes->put('(:num)/update', 'Paises::update/$1', ['as' => 'ajaxUpdatePais']);
    $routes->post('(:num)/edit', 'Paises::edit/$1', ['as' => 'updatePais']);
    $routes->post('datatable', 'Paises::datatable', ['as' => 'dataTableOfPaises']);
    $routes->post('allmenuitems', 'Paises::allItemsSelect', ['as' => 'select2ItemsOfPaises']);
    $routes->post('menuitems', 'Paises::menuItems', ['as' => 'menuItemsOfPaises']);
    $routes->get('menuitems2', 'Paises::menuItems2', ['as' => 'menuItemsOfPaises2']);
});
$routes->resource('paises', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Paises', 'except' => 'show,new,create,update']);


$routes->group('provincias', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) {
    $routes->get('', 'Provincias::index', ['as' => 'provinciaList']);
    $routes->get('add', 'Provincias::add', ['as' => 'newProvincia']);
    $routes->post('add', 'Provincias::add', ['as' => 'createProvincia']);
    $routes->post('create', 'Provincias::create', ['as' => 'ajaxCreateProvincia']);
    $routes->put('(:num)/update', 'Provincias::update/$1', ['as' => 'ajaxUpdateProvincia']);
    $routes->post('(:num)/edit', 'Provincias::edit/$1', ['as' => 'updateProvincia']);
    $routes->post('datatable', 'Provincias::datatable', ['as' => 'dataTableOfProvincias']);
    $routes->post('allmenuitems', 'Provincias::allItemsSelect', ['as' => 'select2ItemsOfProvincias']);
    $routes->post('menuitems', 'Provincias::menuItems', ['as' => 'menuItemsOfProvincias']);
    $routes->get('menuitems2', 'Provincias::menuItems2', ['as' => 'menuItemsOfProvincias2']);
});
$routes->resource('provincias', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Provincias', 'except' => 'show,new,create,update']);


/* Rutas para configuraciones */
$routes->group('clientes', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {

    /* Cliente */
    $routes->group('cliente', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
        $routes->get('', 'Cliente::index', ['as' => 'clienteList']);
        $routes->get('edit/(:num)', 'Cliente::edit/$1', ['as' => 'editarCliente']);
        $routes->match(['get', 'post'], 'add', 'Cliente::add', ['as' => 'clienteAdd']);
        $routes->match(['get', 'post'], 'edit/(:num)', 'Cliente::edit/$1', ['as' => 'clienteEdit']);
        $routes->get('delete/(:num)', 'Cliente::delete/$1', ['as' => 'clienteDelete']);
        $routes->post('datatable', 'Cliente::datatable', ['as' => 'clienteDT']);
        $routes->post('menuitems', 'Cliente::menuItems', ['as' => 'menuItemsOfClientes']);
        $routes->get('getSelect2', 'Cliente::getSelect2', ['as' => 'getListaSelect2']);
    });
});


$routes->group('clienteprecios', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->post('datatable', 'ClientePrecios::datatable', ['as' => 'dataTableOfClienteprecios']);
    $routes->post('datatable_editor', 'ClientePrecios::datatable_editor', ['as' => 'editorOfClienteprecios']);
    $routes->post('changeplantilla', 'ClientePrecios::updatePlantilla', ['as' => 'changePlantillaOfClienteprecios']);
    $routes->get('getplantilla', 'ClientePrecios::getCurrentPlantilla', ['as' => 'getPlantillaOfClienteprecios']);
    $routes->post('update', 'ClientePrecios::updatePlantilla', ['as' => 'updateClienteprecios']);
});
$routes->resource('clienteprecios', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'ClientePrecios', 'except' => 'show,new,create,update']);


$routes->group('clienteplantillaprecios', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->get('', 'Clienteplantillaprecios::index', ['as' => 'clienteplantillapreciosList']);
    $routes->get('add', 'Clienteplantillaprecios::add', ['as' => 'newClienteplantillaprecios']);
    $routes->post('add', 'Clienteplantillaprecios::add', ['as' => 'createClienteplantillaprecios']);
    $routes->post('edit/(:num)', 'Clienteplantillaprecios::edit/$1', ['as' => 'updateClienteplantillaprecios']);
    $routes->get('edit/(:num)', 'Clienteplantillaprecios::edit/$1', ['as' => 'updateClienteplantillaprecios']);
    $routes->get('delete/(:num)', 'Clienteplantillaprecios::delete/$1', ['as' => 'deleteClienteplantillaprecios']);
    $routes->post('datatable', 'Clienteplantillaprecios::datatable', ['as' => 'dataTableOfClientesplantillaprecios']);
    $routes->get('menuitems', 'Clienteplantillaprecios::menuItems', ['as' => 'menuItemsOfClienteplantillaprecios']);
    $routes->post('update/(:num)', 'Clienteplantillaprecios::update/$1', ['as' => 'updateClienteplantillaprecios']);
});
$routes->resource('clienteplantillaprecios', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'Clienteplantillaprecios', 'except' => 'show,new,create']);


$routes->group('clienteplantillaprecioslineas', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->post('datatable', 'Clienteplantillaprecioslineas::datatable', ['as' => 'dataTableOfClientesplantillaprecioslineas']);
    $routes->post('datatable_editor', 'Clienteplantillaprecioslineas::datatable_editor', ['as' => 'editorOfClienteplantillaprecioslineas']);
    $routes->post('getrows', 'Clienteplantillaprecioslineas::getStoredRows', ['as' => 'getStoredRowsOfClienteplantillaprecioslineas']);
});
$routes->resource('clienteplantillaprecioslineas', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'clienteplantillaprecioslineas', 'except' => 'show,new,create,update']);

$routes->group('clienteusuarios', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->post('datatable', 'Clienteusuarios::datatable', ['as' => 'dataTableOfClienteUsuarios']);
    $routes->post('adduser', 'Clienteusuarios::addUserToClient');
    $routes->get('delete/(:num)', 'Clienteusuarios::removeClienteFromUser/$1');
    $routes->get('getusers', 'Clienteusuarios::getAvailableUsers');
});


$routes->group('misdirecciones', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->get('', 'Clientedirecciones::index', ['as' => 'clientedireccionesIndex']);
    $routes->get('get/(:num)', 'Clientedirecciones::get/$1', ['as' => 'get']);
    $routes->get('getDireccionPresupuesto/(:num)', 'Clientedirecciones::getDireccionPresupuesto/$1', ['as' => 'getDireccionPresupuesto']);
    $routes->post('add', 'Clientedirecciones::add', ['as' => 'newClientedirecciones']);
    $routes->get('getSelect2', 'Clientedirecciones::getSelect2', ['as' => 'listaClientedirecciones']);
});



$routes->group('tarifasencuadernacion', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifasencuadernacion::index', ['as' => 'tarifaEncuadernacionList']);
    $routes->get('add', 'Tarifasencuadernacion::add', ['as' => 'newTarifaEncuadernacion']);
    $routes->post('add', 'Tarifasencuadernacion::add', ['as' => 'createTarifaEncuadernacion']);
    $routes->post('create', 'Tarifasencuadernacion::create', ['as' => 'ajaxCreateTarifaEncuadernacion']);
    $routes->put('(:num)/update', 'Tarifasencuadernacion::update/$1', ['as' => 'ajaxUpdateTarifaEncuadernacion']);
    $routes->post('edit/(:num)', 'Tarifasencuadernacion::edit/$1', ['as' => 'updateTarifaEncuadernacion']);
    $routes->get('delete/(:num)', 'Tarifasencuadernacion::delete/$1', ['as' => 'deleteTarifaEncuadernacion']);
    $routes->post('datatable', 'Tarifasencuadernacion::datatable', ['as' => 'dataTableOfTarifasEncuadernacion']);
    $routes->post('allmenuitems', 'Tarifasencuadernacion::allItemsSelect', ['as' => 'select2ItemsOfTarifasEncuadernacion']);
    $routes->post('menuitems', 'Tarifasencuadernacion::menuItems', ['as' => 'menuItemsOfTarifasEncuadernacion']);
    $routes->get('gettarifas', 'Tarifasencuadernacion::getSelect2');
});
$routes->resource('tarifasencuadernacion', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasencuadernacion', 'except' => 'show,new,create,update']);


$routes->group('tarifaencuadernacionlineas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifaencuadernacionlineas::index', ['as' => 'tarifaEncuadernacionLineaList']);
    $routes->get('add', 'Tarifaencuadernacionlineas::add', ['as' => 'newTarifaEncuadernacionLinea']);
    $routes->post('add', 'Tarifaencuadernacionlineas::add', ['as' => 'createTarifaEncuadernacionLinea']);
    $routes->post('create', 'Tarifaencuadernacionlineas::create', ['as' => 'ajaxCreateTarifaEncuadernacionLinea']);
    $routes->put('(:num)/update', 'Tarifaencuadernacionlineas::update/$1', ['as' => 'ajaxUpdateTarifaEncuadernacionLinea']);
    $routes->post('(:num)/edit', 'Tarifaencuadernacionlineas::edit/$1', ['as' => 'updateTarifaEncuadernacionLinea']);
    $routes->post('datatable', 'Tarifaencuadernacionlineas::datatable', ['as' => 'dataTableOfTarifaEncuadernacionLineas']);
    $routes->post('datatable_editor', 'Tarifaencuadernacionlineas::datatable_editor', ['as' => 'editorOfTarifaEncuadernacionLineas']);
    $routes->post('allmenuitems', 'Tarifaencuadernacionlineas::allItemsSelect', ['as' => 'select2ItemsOfTarifaEncuadernacionLineas']);
    $routes->post('menuitems', 'Tarifaencuadernacionlineas::menuItems', ['as' => 'menuItemsOfTarifaEncuadernacionLineas']);
});
$routes->resource('tarifaencuadernacionlineas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaencuadernacionlineas', 'except' => 'show,new,create,update']);

$routes->group('tarifaencuadernacionlineahorass', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifaencuadernacionlineashoras::index', ['as' => 'tarifaEncuadernacionLineaListHoras']);
    $routes->get('add', 'Tarifaencuadernacionlineashoras::add', ['as' => 'newTarifaEncuadernacionLineaHoras']);
    $routes->post('add', 'Tarifaencuadernacionlineashoras::add', ['as' => 'createTarifaEncuadernacionLineaHoras']);
    $routes->post('create', 'Tarifaencuadernacionlineashoras::create', ['as' => 'ajaxCreateTarifaEncuadernacionLineaHoras']);
    $routes->put('(:num)/update', 'Tarifaencuadernacionlineashoras::update/$1', ['as' => 'ajaxUpdateTarifaEncuadernacionLineaHoras']);
    $routes->post('(:num)/edit', 'Tarifaencuadernacionlineashoras::edit/$1', ['as' => 'updateTarifaEncuadernacionLineaHoras']);
    $routes->post('datatable', 'Tarifaencuadernacionlineashoras::datatable', ['as' => 'dataTableOfTarifaEncuadernacionLineasHoras']);
    $routes->post('datatable_editor', 'Tarifaencuadernacionlineashoras::datatable_editor', ['as' => 'editorOfTarifaEncuadernacionLineasHoras']);
    $routes->post('allmenuitems', 'Tarifaencuadernacionlineashoras::allItemsSelect', ['as' => 'select2ItemsOfTarifaEncuadernacionLineasHoras']);
});
$routes->resource('tarifaencuadernacionlineahorass', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'TarifaencuadernacionlineasHoras', 'except' => 'show,new,create,update']);


$routes->group('tarifaencuadernaciontiradas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->post('datatable', 'Tarifaencuadernaciontiradas::datatable', ['as' => 'dataTableOfTarifaEncuadernacionTiradas']);
    $routes->post('datatable_editor', 'Tarifaencuadernaciontiradas::datatable_editor', ['as' => 'editorOfTarifaEncuadernacionTiradas']);
    $routes->post('menuitems', 'Tarifaencuadernaciontiradas::menuItems', ['as' => 'menuItemsOfTarifaencuadernaciontiradas']);
});
$routes->resource('tarifaencuadernaciontiradas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaencuadernaciontiradas', 'except' => 'show,new,create,update']);


$routes->group('tarifasenvios', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->get('', 'Tarifasenvios::index', ['as' => 'tarifaEnvioList']);
    $routes->get('add', 'Tarifasenvios::add', ['as' => 'newTarifaEnvio']);
    $routes->post('add', 'Tarifasenvios::add', ['as' => 'createTarifaEnvio']);
    $routes->post('create', 'Tarifasenvios::create', ['as' => 'ajaxCreateTarifaEnvio']);
    $routes->put('(:num)/update', 'Tarifasenvios::update/$1', ['as' => 'ajaxUpdateTarifaEnvio']);
    $routes->post('edit/(:num)', 'Tarifasenvios::edit/$1', ['as' => 'updateTarifaEnvio']);
    $routes->post('datatable', 'Tarifasenvios::datatable', ['as' => 'dataTableOfTarifaEnvio']);
    $routes->post('allmenuitems', 'Tarifasenvios::allItemsSelect', ['as' => 'select2ItemsOfTarifaEnvio']);
    $routes->post('menuitems', 'Tarifasenvios::menuItems', ['as' => 'menuItemsOfTarifaEnvio']);
});
$routes->resource('tarifasenvios', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasenvios', 'except' => 'show,new,create,update']);


$routes->group('tarifasenviosprecios', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->post('datatable', 'Tarifasenviosprecios::datatable', ['as' => 'dataTableOfTarifasEnvioPrecios']);
    $routes->post('datatable_editor', 'Tarifasenviosprecios::datatable_editor', ['as' => 'editorOfTarifasEnvioPrecios']);
});
$routes->resource('tarifasenviosprecios', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasenviosprecios', 'except' => 'show,new,create,update']);


$routes->group('tarifasenvioszonas', ['namespace' => 'App\Controllers\Tarifas'], function ($routes) {
    $routes->post('datatable', 'Tarifasenvioszonas::datatable', ['as' => 'dataTableOfTarifasEnvioZonas']);
    $routes->post('datatable_editor', 'Tarifasenvioszonas::datatable_editor', ['as' => 'editorOfTarifasEnvioZonas']);
});
$routes->resource('tarifasenvioszonas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifasenvioszonas', 'except' => 'show,new,create,update']);


$routes->group('proveedores', ['namespace' => 'App\Controllers\Compras'], function ($routes) {
    $routes->get('', 'Proveedores::index', ['as' => 'proveedorList']);
    $routes->get('add', 'Proveedores::add', ['as' => 'newProveedor']);
    $routes->post('add', 'Proveedores::add', ['as' => 'createProveedor']);
    $routes->post('create', 'Proveedores::create', ['as' => 'ajaxCreateProveedor']);
    $routes->put('(:num)/update', 'Proveedores::update/$1', ['as' => 'ajaxUpdateProveedor']);
    $routes->post('edit/(:num)', 'Proveedores::edit/$1', ['as' => 'updateProveedor']);
    $routes->post('datatable', 'Proveedores::datatable', ['as' => 'dataTableOfProveedores']);
    $routes->post('allmenuitems', 'Proveedores::allItemsSelect', ['as' => 'select2ItemsOfProveedores']);
    $routes->post('menuitems', 'Proveedores::menuItems', ['as' => 'menuItemsOfProveedores']);
});
$routes->resource('proveedores', ['namespace' => 'App\Controllers\Compras', 'controller' => 'Proveedores', 'except' => 'show,new,create,update']);

$routes->group('proveedorestipos', ['namespace' => 'App\Controllers\Compras'], function ($routes) {
    $routes->post('menuitems', 'ProveedoresTipos::menuItems', ['as' => 'menuItemsOfProveedoresTipos']);
});

$routes->resource('proveedorestipos', ['namespace' => 'App\Controllers\Compras', 'controller' => 'ProveedoresTipos', 'except' => 'show,new,create,update']);

$routes->group('clientecontactos', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->get('', 'Clientecontactos::index', ['as' => 'ClienteContactosList']);
    $routes->get('add', 'Clientecontactos::add', ['as' => 'newClienteContactos']);
    $routes->post('add', 'Clientecontactos::add', ['as' => 'createClienteContactos']);
    $routes->post('create', 'Clientecontactos::create', ['as' => 'ajaxCreateClienteContactos']);
    $routes->put('(:num)/update', 'Clientecontactos::update/$1', ['as' => 'ajaxUpdateClienteContactos']);
    $routes->post('(:num)/edit', 'Clientecontactos::edit/$1', ['as' => 'updateClienteContactos']);
    $routes->post('datatable', 'Clientecontactos::datatable', ['as' => 'dataTableOfClienteContactos']);
    $routes->post('datatable_editor', 'Clientecontactos::datatable_editor', ['as' => 'editorOfClienteContactos']);
    $routes->get('delete/(:num)', 'Clientecontactos::delete/$1', ['as' => 'deleteClienteContactos']);
    $routes->post('allmenuitems', 'Clientecontactos::allItemsSelect', ['as' => 'select2ItemsOfClienteContactos']);
    $routes->post('menuitems', 'Clientecontactos::menuItems', ['as' => 'menuItemsOfClienteContactos']);
});
$routes->resource('ClienteContactos', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'ClienteContactos', 'except' => 'show,new,create,update']);


$routes->group('clientedirecciones', ['namespace' => 'App\Controllers\Clientes'], function ($routes) {
    $routes->get('delete/(:num)', 'Clientedirecciones::delete/$1', ['as' => 'deleteClientedirecciones']);
    $routes->post('datatable', 'Clientedirecciones::datatable', ['as' => 'dataTableOfClienteDirecciones']);
    $routes->post('datatable_editor', 'Clientedirecciones::datatable_editor', ['as' => 'editorOfClienteDirecciones']);
    $routes->post('menuitems', 'Clientedirecciones::menuItems', ['as' => 'menuItemsOfClienteDirecciones']);
});
$routes->resource('clientedirecciones', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'Clientedirecciones', 'except' => 'show,new,create,update']);


$routes->group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->get('list/(:num)', 'Presupuestoadmin::list/$1', ['as' => 'presupuestoAdminList']);  // HOMOGENIZAR CON ARGS DINAMICOS!!!
    $routes->get('add/(:num)', 'Presupuestoadmin::add/$1', ['as' => 'newPresupuestoAdmin']);
    $routes->get('edit/(:any)', 'Presupuestoadmin::edit/$1', ['as' => 'editarPresupuestoAdmin']);
    $routes->post('add/(:num)', 'Presupuestoadmin::add/$1', ['as' => 'createPresupuestoAdmin']);
    $routes->post('create', 'Presupuestoadmin::create', ['as' => 'ajaxCreatePresupuestoAdmin']);
    $routes->put('(:num)/update', 'Presupuestoadmin::update/$1', ['as' => 'ajaxUpdatePresupuestoAdmin']);
    $routes->post('edit/(:num)', 'Presupuestoadmin::edit/$1', ['as' => 'updatePresupuestoAdmin']);
    $routes->post('datatable', 'Presupuestoadmin::datatable', ['as' => 'dataTableOfPresupuestoAdmin']);
    $routes->post('datatable_2', 'Presupuestoadmin::datatable_2', ['as' => 'updateDataOfPresupuestoAdmin']);
    $routes->post('allmenuitems', 'Presupuestoadmin::allItemsSelect', ['as' => 'select2ItemsOfPresupuestoAdmin']);
    $routes->post('menuitems', 'Presupuestoadmin::menuItems', ['as' => 'menuItemsOfPresupuestoAdmin']);

    $routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1');
    $routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior');
    $routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores');
    $routes->post('comparadorguardas', 'Presupuestoadmin::obtenerComparadorGuardas');
    $routes->get('papelgenerico', 'Presupuestoadmin::getPapelGenerico');
    $routes->get('papelgramaje', 'Presupuestoadmin::getGramaje');
    $routes->get('papelimpresion', 'Presupuestoadmin::getPapelImpresion');
    $routes->get('maquinas', 'Presupuestoadmin::getMaquinas');
    $routes->post('getlinea', 'Presupuestoadmin::getLineaPresupuesto');
    $routes->post('clone', 'Presupuestoadmin::datatable_2');
});
$routes->resource('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestoadmin', 'except' => 'show,new,create,update']);

$routes->group('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->get('list', 'Presupuestocliente::list', ['as' => 'listaPresupuestos']);
    $routes->post('datatable', 'Presupuestocliente::datatable', ['as' => 'datatableOfPresupuestos']);
    $routes->get('add', 'Presupuestocliente::add', ['as' => 'nuevoPresupuestoCliente']);
    $routes->post('add', 'Presupuestocliente::add', ['as' => 'crearPresupuestoCliente']);
    $routes->post('edit/(:num)', 'Presupuestocliente::edit/$1', ['as' => 'editarPresupuestoCliente']);
    $routes->get('edit/(:any)', 'Presupuestocliente::edit/$1', ['as' => 'editarPresupuestoCliente2']);
    $routes->post('getgramaje', 'Presupuestocliente::getGramaje', ['as' => 'obtenerGramaje']);
    $routes->post('presupuesto', 'Presupuestocliente::presupuesto', ['as' => 'presupuestoCliente']);
    $routes->post('getDireccionesCliente', 'Presupuestocliente::getDireccionesCliente', ['as' => 'getDirecciones']);
    $routes->post('getNuevaDireccion', 'Presupuestocliente::getNuevaDireccion', ['as' => 'nuevaDireccion']);
    $routes->post('guardar', 'Presupuestocliente::guardar', ['as' => 'guardar']);
    $routes->get('cargar/(:num)', 'Presupuestocliente::cargar/$1', ['as' => 'cargarPresupuesto']);
    $routes->post('duplicarPresupuesto', 'Presupuestocliente::duplicarPresupuesto', ['as' => 'duplicarPresupuesto']);
    $routes->post('calcular', 'Presupuestocliente::calcular', ['as' => 'calcularPresupuesto']);
    $routes->post('calcularsolapas', 'Presupuestocliente::calcularMaxSolapas', ['as' => 'calcularSolapas']);
    $routes->post('checklomo', 'Presupuestocliente::check_lomo_interior');
});
$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']);

$routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->get('getacabados', 'Presupuestoacabados::getAcabados');
    $routes->post('getvalues', 'Presupuestoacabados::getRowValues');
    $routes->post('menuitems', 'Presupuestoacabados::menuItems', ['as' => 'menuItemsOfPresupuestoAcabados']);
    $routes->post('edit/(:num)', 'Presupuestoacabados::edit/$1', ['as' => 'updatePresupuestoacabados']);
    $routes->get('cargar', 'Presupuestoacabados::cargar');
    $routes->post('update/(:num)', 'Presupuestoacabados::update/$1');
});


$routes->group('serviciosencuadernaciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->post('datatable', 'Presupuestoencuadernaciones::datatable', ['as' => 'dataTableOfPresupuestoEncuadernaciones']);
    $routes->post('getvalues', 'Presupuestoencuadernaciones::getRowValues');
    $routes->post('menuitems', 'Presupuestoencuadernaciones::menuItems', ['as' => 'menuItemsOfPresupuestoEncuadernaciones']);
    $routes->get('delete/(:num)', 'Presupuestoencuadernaciones::delete/$1', ['as' => 'deletePresupuestoencuadernaciones']);
    $routes->post('edit/(:num)', 'Presupuestoencuadernaciones::edit/$1', ['as' => 'updatePresupuestoencuadernaciones']);
    $routes->post('update/(:num)', 'Presupuestoencuadernaciones::update/$1');
});

$routes->group('serviciosmanipulados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->post('getvalues', 'Presupuestomanipulados::getRowValues');
    $routes->post('datatable', 'Presupuestomanipulados::datatable', ['as' => 'dataTableOfPresupuestoManipulados']);
    $routes->post('edit/(:num)', 'Presupuestomanipulados::edit/$1', ['as' => 'updatePresupuestomanipulados']);
    $routes->post('update/(:num)', 'Presupuestomanipulados::update/$1');
    $routes->get('serviciosolapas', 'Presupuestomanipulados::getServicioSolapas');
});

$routes->group('serviciospreimpresiones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->post('getvalues', 'Presupuestopreimpresiones::getRowValues');
    $routes->post('datatable', 'Presupuestopreimpresiones::datatable', ['as' => 'dataTableOfPresupuestoPreimpresiones']);
    $routes->post('edit/(:num)', 'Presupuestopreimpresiones::edit/$1', ['as' => 'updatePresupuestopreimpresiones']);
    $routes->get('cargar', 'Presupuestopreimpresiones::getSelect2');
});

$routes->group('serviciosextra', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->post('datatable', 'Presupuestoserviciosextra::datatable', ['as' => 'dataTableOfPresupuestoServiciosExtra']);
    $routes->post('edit/(:num)', 'Presupuestoserviciosextra::edit/$1', ['as' => 'updatePresupuestoServiciosExtra']);
    $routes->post('getvalues', 'Presupuestoserviciosextra::getRowValues');
});

$routes->group('presupuestodirecciones', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->post('datatable', 'Presupuestodirecciones::datatable', ['as' => 'dataTableOfPresupuestoDirecciones']);
    $routes->post('datatable_2', 'Presupuestodirecciones::datatable_2', ['as' => 'processDataDirecciones']);
});

$routes->group('presupuestotiradasalternativas', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
    $routes->post('datatable', 'Presupuestotiradasalternativas::datatable', ['as' => 'dataTableOfPresupuestoTiradasAlternativas']);
    $routes->post('datatable_2', 'Presupuestotiradasalternativas::datatable_2', ['as' => 'getTiradaData']);
});

$routes->group('pedidos', ['namespace' => 'App\Controllers\Pedidos'], function ($routes) {
    $routes->get('list', 'Pedido::todos', ['as' => 'listaPresupuestos']);
    $routes->get('listActivos', 'Pedido::activos', ['as' => 'listaPresupuestosActivos']);
    $routes->get('listFinalizados', 'Pedido::finalizados', ['as' => 'listaFinalizados']);
    $routes->get('listCancelados', 'Pedido::cancelados', ['as' => 'listaCancelados']);
    $routes->post('datatable', 'Pedido::datatable', ['as' => 'dataTableOfPedidos']);
    $routes->get('add', 'Pedido::add', ['as' => 'nuevoPedido']);
    $routes->post('add', 'Pedido::add', ['as' => 'crearPedido']);
    $routes->get('edit/(:any)', 'Pedido::edit/$1', ['as' => 'editarPedido']);
    $routes->post('getlineas', 'Pedido::getLineas', ['as' => 'tablaLineasPedido']);
    $routes->post('cambiarestado', 'Pedido::cambiarEstado', ['as' => 'cambiarEstadoPedido']);
    $routes->post('update/(:any)', 'Pedido::update/$1', ['as' => 'actualizarPedido']);
    $routes->get('xml/(:num)', 'Pedido::get_xml_pedido/$1', ['as' => 'getXMLPedido']);
    $routes->post('produccion/(:num)', 'Pedido::to_produccion/$1', ['as' => 'toProduccion']);
});
$routes->resource('pedidos', ['namespace' => 'App\Controllers\Pedidos', 'controller' => 'Pedido', 'except' => 'show,new,create,update']);


$routes->group('albaranes', ['namespace' => 'App\Controllers\Pedidos'], function ($routes) {
    $routes->post('add', 'Albaran::add', ['as' => 'crearAlbaranesPedido']);
    $routes->post('update/(:any)', 'Albaran::update/$1', ['as' => 'actualizarAlbaran']);
    $routes->post('updateLinea/(:any)', 'Albaran::updateLinea/$1', ['as' => 'actualizarLineaAlbaran']);
    $routes->post('deletelinea', 'Albaran::borrarlinea', ['as' => 'borrarAlbaranLinea']);
    $routes->get('delete/(:any)', 'Albaran::delete/$1', ['as' => 'borrarAlbaran']);
    $routes->get('getalbaranes/(:any)', 'Albaran::getAlbaranes/$1', ['as' => 'getAlbaranes']);
    $routes->get('nuevalinea/(:any)', 'Albaran::addLinea/$1', ['as' => 'addAlbaranLinea']);
    $routes->post('nuevalinea/(:any)', 'Albaran::addLinea/$1', ['as' => 'addIVA']);
});
$routes->resource('albaranes', ['namespace' => 'App\Controllers\Pedidos', 'controller' => 'Albaran', 'except' => 'show,new,create,update']);


$routes->group('facturas', ['namespace' => 'App\Controllers\Facturacion'], function ($routes) {

    $routes->get('list', 'Facturas::list', ['as' => 'facturasList']);
    $routes->post('datatable', 'Facturas::datatable', ['as' => 'dataTableOfFacturas']);
    $routes->get('add', 'Facturas::add', ['as' => 'newFactura']);
    $routes->post('add', 'Facturas::add', ['as' => 'createFactura']);
    $routes->get('edit/(:any)', 'Facturas::edit/$1', ['as' => 'editarFactura']);
    $routes->get('validar/(:any)', 'Facturas::validar/$1', ['as' => 'validarFactura']);
    $routes->post('update/(:any)', 'Facturas::update/$1', ['as' => 'actualizarFactura']);
    $routes->post('duplicate/(:any)', 'Facturas::duplicate/$1', ['as' => 'duplicarFactura']);
    $routes->post('datatable/(:any)', 'FacturasLineas::datatable/$1', ['as' => 'dataTableOfLineasFacturas']);
    $routes->post('menuPedidosPendientes/(:num)', 'Facturas::menuPedidosPendientes/$1', ['as' => 'menuPedidosPendientesImpresion']);
    $routes->post('addLineaPedidoImpresion/(:num)', 'Facturas::addLineaPedidoImpresion/$1', ['as' => 'addLineaPedidoImpresion2Factura']);
    $routes->post('addExcedentes/(:any)', 'Facturas::addExcedentes/$1', ['as' => 'addLineaExcedentes']);
    $routes->get('deleteLinea/(:any)', 'FacturasLineas::deleteLinea/$1', ['as' => 'deleteLineaFactura']);
    $routes->get('delete/(:any)', 'Facturas::delete/$1', ['as' => 'borrarFactura']);
    $routes->post('deleteFacturaLineaPedido', 'Facturas::deleteLineaPedidoImpresion', ['as' => 'deleteLineaPedidoImpresion']);
    $routes->post('editorLineas', 'FacturasLineas::datatable_editor', ['as' => 'editorOfLineasFacturas']);
    $routes->post('updateTotales/(:any)', 'Facturas::updateTotales/$1', ['as' => 'updateFacturaTotales']);
    $routes->post('updateCabecera/(:any)', 'Facturas::updateCabecera/$1', ['as' => 'updateCabecera']);
    $routes->post('datatablePagos/(:any)', 'FacturasPagos::datatable/$1', ['as' => 'dataTableOfPagosFacturas']);
    $routes->post('editorPagos', 'FacturasPagos::datatable_editor', ['as' => 'editorOfPagosFacturas']);
    $routes->post('datatablePedidos', 'Facturas::datatablePedidos', ['as' => 'dataTableOfFacturasPedido']);
});


$routes->group(
    'printpresupuestos',
    ['namespace' => 'App\Controllers\Pdf'],
    function ($routes) {
        $routes->get('index/(:num)', 'PrintPresupuestos::index/$1', ['as' => 'viewPresupuesto']);
        $routes->get('generar/(:num)', 'PrintPresupuestos::generar/$1', ['as' => 'presupuestoToPdf']);
    }
);

$routes->group(
    'print-albaran',
    ['namespace' => 'App\Controllers\Pdf'],
    function ($routes) {
        $routes->get('index/(:num)', 'PrintAlbaranes::index/$1', ['as' => 'viewAlbaranPDF']);
        $routes->get('generar/(:num)', 'PrintAlbaranes::generar/$1', ['as' => 'albaranToPdf']);
    }
);

$routes->group(
    'print-factura',
    ['namespace' => 'App\Controllers\Pdf'],
    function ($routes) {
        $routes->get('index/(:num)', 'PrintFacturas::index/$1', ['as' => 'viewFacturaPDF']);
        $routes->get('generar/(:num)', 'PrintFacturas::generar/$1', ['as' => 'facturaToPdf']);
    }
);

$routes->group(
    'export-giros',
    ['namespace' => 'App\Controllers\Excel'],
    function ($routes) {
        $routes->get('generar/(:num)', 'PrintGiros::generateExcel/$1', ['as' => 'girosToExcel']);
    }
);

$routes->group(
    'export-lineas',
    ['namespace' => 'App\Controllers\Excel'],
    function ($routes) {
        $routes->get('generar/(:num)', 'PrintLineas::generateExcel/$1', ['as' => 'lineasToExcel']);
    }
);

$routes->group(
    'buscadorpresupuestos',
    ['namespace' => 'App\Controllers\Presupuestos'],
    function ($routes) {
        $routes->get('', 'Buscador::list', ['as' => 'buscadorPresupuestosList']);
        $routes->post('datatable', 'Buscador::datatable', ['as' => 'dataTableOfBuscador']);
    }
);
$routes->resource('buscadorpresupuestos', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Buscador', 'except' => 'show,new,create,update']);


$routes->group(
    'papel-formato',
    ['namespace' => 'App\Controllers\Configuracion'],
    function ($routes) {
        $routes->post('menuitems', 'Papelformato::menuitems', ['as' => 'menuitems']);
        $routes->get('getSelect2', 'Papelformato::getSelect2', ['as' => 'getSelect2']);
    }
);
$routes->resource('papel-formato', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelformato', 'except' => 'show,new,create,update']);



/* Rutas para mensajeria */
$routes->group('mensajes', ['namespace' => 'App\Controllers\Mensajeria'], function ($routes) {

    /* Interna */
    $routes->group('internos', ['namespace' => 'App\Controllers\Mensajeria'], function ($routes) {

        $routes->get('', 'MensajesDirectos::index', ['as' => 'mensajeriaView']);
        $routes->get('chat/(:num)', 'MensajesDirectos::getChatInfo/$1', ['as' => 'getChatInfo']);
        /*$routes->match(['get', 'post'], 'add', 'TarifaAcabados::add', ['as' => 'tarifaAcabadoAdd']);
        $routes->match(['get', 'post'], 'edit/(:num)', 'TarifaAcabados::edit/$1', ['as' => 'tarifaAcabadoEdit']);
        $routes->get('delete/(:num)', 'TarifaAcabados::delete/$1', ['as' => 'tarifaAcabadoDelete']);
        $routes->post('datatable', 'TarifaAcabados::datatable', ['as' => 'tarifaAcabadoDT']);*/
    });
});
$routes->group('messages', ['namespace' => 'App\Controllers\Chat'], function ($routes) {
    $routes->get('datatable', 'ChatController::datatable_messages', ['as' => 'getDatatableMessages']);
    $routes->get('datatable/presupuesto', 'ChatController::datatable_presupuesto_messages', ['as' => 'getDatatablePresupuestoMessages']);
    $routes->get('datatable/pedido', 'ChatController::datatable_pedido_messages', ['as' => 'getDatatablePedidoMessages']);
    $routes->get('datatable/factura', 'ChatController::datatable_factura_messages', ['as' => 'getDatatableFacturaMessages']);

    $routes->post('direct', 'ChatController::store_new_direct_message', ['as' => 'storeNewDirectMessage']);
    $routes->post('direct/client', 'ChatController::store_new_direct_message_client', ['as' => 'storeNewDirectMessageClient']);
});
$routes->group('chat', ['namespace' => 'App\Controllers\Chat'], function ($routes) {

    $routes->get('direct/(:num)', 'ChatController::get_chat_direct_view/$1', ['as' => 'getChatDirectView']);
    $routes->get('presupuesto/(:num)', 'ChatController::get_chat_presupuesto_view/$1', ['as' => 'getChatPresupuestoView']);
    $routes->get('pedido/(:num)', 'ChatController::get_chat_pedido_view/$1', ['as' => 'getChatPedidoView']);
    $routes->get('factura/(:num)', 'ChatController::get_chat_factura_view/$1', ['as' => 'getChatFacturaView']);

    $routes->get('direct/conversation/(:num)', 'ChatController::get_chat_direct/$1', ['as' => 'getChatDirect']);
    $routes->get('direct/users/select/(:num)', 'ChatController::get_chat_direct_select_users/$1', ['as' => 'getChatDirectSelectUsers']);

    $routes->get('direct/client/users/select/presupuesto/(:num)', 'ChatController::get_presupuesto_client_users/$1/$2', ['as' => 'getPresupuestoClientUsers']);
    $routes->get('direct/client/users/select/pedido/(:num)', 'ChatController::get_pedido_client_users/$1/$2', ['as' => 'getPedidoClientUsers']);
    $routes->get('direct/client/users/select/factura/(:num)', 'ChatController::get_factura_client_users/$1/$2', ['as' => 'getFacturaClientUsers']);

    $routes->get('direct/users/(:num)', 'ChatController::get_chat_direct_users', ['as' => 'getChatDirectUsers']);
    $routes->post('direct/users/(:num)', 'ChatController::store_chat_direct_users/$1', ['as' => 'storeChatDirectUsers']);
    $routes->get('direct/messages/(:num)', 'ChatController::get_chat_direct_messages/$1', ['as' => 'getChatDirectMessages']);
    $routes->post('direct/messages/(:num)', 'ChatController::store_chat_direct_message/$1', ['as' => 'storeChatDirectMessages']);
    $routes->post('direct/messages/unread/(:num)', 'ChatController::update_chat_direct_message_unread/$1', ['as' => 'updateChatDirectMessageUnread']);


    $routes->get('departments', 'ChatController::get_chat_departments', ['as' => 'getChatDepartments']);
    $routes->get('departments/select', 'ChatController::get_chat_department_select', ['as' => 'getChatDepartmentSelect']);
    $routes->get('department/presupuesto/(:num)/(:num)', 'ChatController::get_chat_presupuesto/$1/$2', ['as' => 'getChatPresupuesto']);
    $routes->get('department/pedido/(:num)/(:num)', 'ChatController::get_chat_pedido/$1/$2', ['as' => 'getChatPedido']);
    $routes->get('department/factura/(:num)/(:num)', 'ChatController::get_chat_factura/$1/$2', ['as' => 'getChatFactura']);
    $routes->get('department/(:num)/users', 'ChatController::get_chat_department_users/$1', ['as' => 'getChatDepartmentUsers']);


    $routes->get('(:num)', 'ChatController::get_chat/$1', ['as' => 'getChat']);
    $routes->post('message/presupuesto', 'ChatController::store_chat_message_presupuesto', ['as' => 'storeChatMessagePresupuesto']);
    $routes->post('message/pedido', 'ChatController::store_chat_message_pedido', ['as' => 'storeChatMessagePedido']);
    $routes->post('message/factura', 'ChatController::store_chat_message_factura', ['as' => 'storeChatMessageFactura']);
    $routes->post('message/internal', 'ChatController::store_chat_message_single', ['as' => 'storeChatMessageSingle']);
    $routes->get('contacts', 'ChatController::get_chat_internal_contacts', ['as' => 'getChatInternalContacts']);
    $routes->get('contacts/(:num)', 'ChatController::get_chat_internal_contact/$1', ['as' => 'getChatInternalContact']);
    $routes->get('contact/(:num)/messages', 'ChatController::get_chat_internal_messages/$1', ['as' => 'getChatInternalMessages']);
    $routes->get('notifications', 'ChatController::get_chat_cliente/$1', ['as' => 'getChatCliente']);
    $routes->get('users/internal', 'ChatController::get_chat_users_internal', ['as' => 'getChatUsersInternal']);
    $routes->get('users/all', 'ChatController::get_chat_users_all', ['as' => 'getChatUsersAll']);

    $routes->post('hebra/presupuesto', 'ChatController::store_hebra_presupuesto', ['as' => 'storeHebraPresupuesto']);
    $routes->post('hebra/pedido', 'ChatController::store_hebra_pedido', ['as' => 'storeHebraPedido']);
    $routes->post('hebra/factura', 'ChatController::store_hebra_factura', ['as' => 'storeHebraFactura']);
    $routes->post('hebra/(:num)', 'ChatController::update_hebra/$1', ['as' => 'updateHebra']);
    $routes->get('hebra/presupuesto/(:num)', "ChatController::get_hebra_presupuesto/$1", ["as" => "getHebraPresupuesto"]);
    $routes->get('hebra/pedido/(:num)', "ChatController::get_hebra_pedido/$1", ["as" => "getHebraPedido"]);
    $routes->get('hebra/factura/(:num)', "ChatController::get_hebra_factura/$1", ["as" => "getHebraFactura"]);
});



$routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
    $routes->group('ordentrabajo', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
        $routes->get('', 'Ordentrabajo::index', ['as' => 'viewOrdenTrabajoIndex']);
        $routes->get('edit/(:num)', 'Ordentrabajo::edit/$1', ['as' => 'viewOrdenTrabajoEdit']);
        $routes->delete('reset/tareas/(:num)', 'Ordentrabajo::reset_tareas/$1');
        $routes->delete('tareas/(:num)', 'Ordentrabajo::delete_tarea/$1');
        $routes->get('summary/(:num)', 'Ordentrabajo::get_orden_trabajo_summary/$1', ['as' => 'getOrdenTrabajoSumary']);
        $routes->get('datatable', 'Ordentrabajo::datatable');
        $routes->get('datatable_pendientes', 'Ordentrabajo::datatable_pendientes');
        $routes->get('datatable_ferro_pendiente', 'Ordentrabajo::datatable_ferro_pendiente');
        $routes->get('datatable_ferro_ok', 'Ordentrabajo::datatable_ferro_ok');
        $routes->get('tareas/datatable/(:num)', 'Ordentrabajo::tareas_datatable/$1', ['as' => 'datatableTareasOrdenTrabajo']);
        /**======================
         *    UPDATES
         *========================**/
        $routes->post("update/tarea", 'Ordentrabajo::update_orden_trabajo_tarea');
        $routes->post("update/date", 'Ordentrabajo::update_orden_trabajo_date');
        $routes->post("update/user", 'Ordentrabajo::update_orden_trabajo_user');
        $routes->post("update", 'Ordentrabajo::update_orden_trabajo');
        $routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada');

        /**======================
         *    PDF
         *========================**/
        $routes->get('pdf/(:num)', 'Ordentrabajo::get_pdf/$1');
        $routes->get('portada/(:num)', 'Ordentrabajo::get_portada_img/$1');
        $routes->group('planning', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
            $routes->get('rotativa', 'Ordentrabajo::index_planning_rotativa');
            $routes->get('papel/datatable', 'Ordentrabajo::papel_gramaje_datatable');
            $routes->get('rotativa/datatable', 'Ordentrabajo::planning_rotativa_datatable');
        });
    });
});
/*
 * --------------------------------------------------------------------
 * APIs Route Definitions
 * --------------------------------------------------------------------
 */
$routes->post('auth/jwt', '\App\Controllers\Sistema\AuthAPIController::jwtLogin');

$routes->group(
    'api',
    [
        'namespace' => 'App\Controllers\API',
        'filter' => 'jwt'
    ],
    static function ($routes) {

        $routes->resource('items', [
            'controller' => 'ItemsController',
            'filter' => 'cors'
        ]);

        $routes->options('items', static function () { });
        $routes->options('items/(:any)', static function () { });

        $routes->post("calcular", 'ImprimelibrosApi::calcular');



        // ...
    }
);

/*
 * --------------------------------------------------------------------
 * Translation
 * --------------------------------------------------------------------
 */
$routes->group('translate', ['namespace' => 'App\Controllers'], function ($routes) {
    $routes->post('getTranslation', 'Language::getTranslation', ['as' => 'getKeys']);
});
$routes->resource('translate', ['namespace' => 'App\Controllers', 'controller' => 'Language', 'except' => '']);


/*
 * --------------------------------------------------------------------
 * Additional Routing
 * --------------------------------------------------------------------
 *
 * There will often be times that you need additional routing and you
 * need it to be able to override any defaults in this file. Environment
 * based routes is one such time. require() additional route files here
 * to make that happen.
 *
 * You will have access to the $routes object within that file without
 * needing to reload it.
 */
if (file_exists(APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php')) {
    require APPPATH . 'Config/' . ENVIRONMENT . '/Routes.php';
}
