viewData['pageTitle'] = lang('Tarifaextra.moduleTitle'); // Se indica que este controlador trabaja con soft_delete // Breadcrumbs $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_pedidos"), 'route' => "javascript:void(0);", 'active' => false], ]; parent::initController($request, $response, $logger); } public function index() { $this->viewData['usingClientSideDataTable'] = true; $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tarifaextra.tarifaextra')]); parent::index(); } public function activos() { echo 'Pedidos Activos'; } public function finalizados() { echo 'Pedidos Finalizados'; } public function cancelados() { echo 'Pedidos Cancelados'; } public function todos() { $viewData = [ 'currentModule' => static::$controllerSlug, 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Pedidos.pedido')]), 'presupuestoEntity' => new PedidoEntity(), 'usingServerSideDataTable' => true, 'pageTitle' => lang('Pedidos.Pedidos'), 'estadoPedidos' => 'todos', ['title' => lang("App.menu_pedidos"), 'route' => site_url('pedidos/todos'), 'active' => true] ]; return view(static::$viewPath . 'viewPedidosList', $viewData); } public function edit($id=null){ if ($id == null) : return $this->redirect2listView(); endif; $id = filter_var($id, FILTER_SANITIZE_URL); $pedidoEntity = $this->model->find($id); if ($pedidoEntity == false) : $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Pedidos.pedido')), $id]); return $this->redirect2listView('sweet-error', $message); endif; $this->obtenerDatosFormulario($pedidoEntity); $this->viewData['pedidoEntity'] = $pedidoEntity; $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Pedidos.moduleTitle') . ' ' . lang('Basic.global.edit3'); return $this->displayForm(__METHOD__, $id); } 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'] ?? 0; $order = PedidoModel::SORTABLE_TODOS[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), $this->model->getResource($search)->countAllResults() )); } else { return $this->failUnauthorized('Invalid request', 403); } } private function obtenerDatosFormulario(&$pedidoEntity){ $pedidoLineaModel = model('\App\Models\Pedidos\PedidoLineaModel'); $clienteModel = model('\App\Models\Clientes\ClienteModel'); $presupuestoModel = model('\App\Models\Presupuestos\PresupuestoModel'); $linea = $pedidoLineaModel->where('pedido_id', $pedidoEntity->id)->first(); // los clientes son los mismos para todas las lineas de un mismo presupuesto $presupuesto = $presupuestoModel->find($linea->presupuesto_id); $cliente = $clienteModel->find($presupuesto->cliente_id); $pedidoEntity->cliente = $cliente->nombre; $pedidoEntity->cliente_id = $cliente->id; } }