'Inicio', 'solicitudes' => model(PrestadorSolicitudModel::class)->countSolicitudes(), 'prestadoresActivos' => model(PrestadorModel::class)->countPrestadoresActivos(), ]; return view('Admin/index', $data); } // PRESTADORES public function prestadores() { $prestadores = model(PrestadorModel::class)->getPrestadoresActivos(); // dd($prestadores[0]); return view('Admin/prestadores', ['prestadores' => $prestadores]); } // SOLICITUDES public function solicitudes() { $data = [ 'title' => 'Solicitudes', 'solicitudes' => model(PrestadorSolicitudModel::class)->getPrestadorSolicitud(), ]; return view('Admin/solicitudes', $data); } public function revisarSolicitud($id) { $model = model(ModelsPrestadorSolicitudModel::class); if (!$datos = $model->find($id)) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'Solicitud no encontrada' )); } $data = [ 'id' => $id, 'email' => user()->email, 'escuelas' => model(EscuelaModel::class)->getEscuelas(), 'departamentos' => model(DepartamentoModel::class)->getDepartamentos(), 'datos' => $datos, 'revisar' => true, ]; return view('Prestador/formulario_inicial', $data); } public function aprobarSolicitud($id) { $solicitudModel = model(ModelsPrestadorSolicitudModel::class); // Validar que la solicitud existe if (!$solicitud = $solicitudModel->find($id)) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'Solicitud no encontrada' )); } // Verificar que status de la solicitud == 0 if ($solicitud['status'] != 0) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'El status de esta solicitud no permite que sea aprobada' )); } // Encontrar usuario que mandó la solicitud if (!$user = model(UserModel::class)->findUserWithSolicitud($id)) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'Ningún usuario tiene esa solicitud registrada.' )); } // Revisar que ususario no tenga asignado ningún registro de prestador if ($user->idprestador) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'Este usuario ya ha sido aprobado.' )); } // Crear registro en la tabla prestador $prestadorModel = model(PrestadorModel::class); $solicitud = $this->completarSolicitud($solicitud); if (!$prestadorModel->save($solicitud)) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'Error al guardar nuevo registro de prestador.' )); } // Asignar id de la tabla prestador al usuario aprobado $idprestador = $prestadorModel->getInsertID(); $user->idprestador = $idprestador; model(UserModel::class)->save($user); // Cambiar status de la solicitud y eliminar datos con 'X' $this->eliminarDatosSolicitud($solicitudModel, $solicitud); // enviar correo $email = service('email'); $sent = $email ->setTo($solicitud['email']) ->setSubject('COPARMEX: Solicitud aprobada') ->setMessage(view('admin/emails/solicitudAprobada')) ->setMailType('html') ->send(); return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'success', 'body' => 'Solicitud aprobada. Se activo la cuenta del prestador.' )); } public function rechazarSolicitud($id) { // Validar que la solicitud existe $solicitudModel = model(ModelsPrestadorSolicitudModel::class); if (!$solicitud = $solicitudModel->find($id)) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'Solicitud no encontrada' )); } // Verificar que status de la solicitud == 0 if ($solicitud['status'] != 0) { return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'danger', 'body' => 'El status de esta solicitud no permite que sea rechazada' )); } // cambiar status de solicitud (2) $solicitud['status'] = 2; $solicitudModel->save($solicitud); // enviar correo $email = service('email'); $motivo = $this->request->getPost('motivo'); $sent = $email ->setTo($solicitud['email']) ->setSubject('COPARMEX: Solicitud rechazada') ->setMessage(view('admin/emails/solicitudRechazada', ['motivo' => $motivo])) ->setMailType('html') ->send(); return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'success', 'body' => 'Solicitud fue rechazada' )); } private function completarSolicitud($solicitud) { // Agregar campos para completar el registro de prestador $solicitud['idusuario_actual'] = user_id(); switch ($solicitud['turno']) { case 1: $solicitud['turno'] = 'MATUTINO'; break; case 2: $solicitud['turno'] = 'VESPERTINO'; break; case 3: $solicitud['turno'] = 'MIXTO'; break; } $solicitud['tipo'] = ($solicitud['tipo'] == 1) ? 'SERVICIO SOCIAL' : 'PRACTICAS PROFESIONALES'; return $solicitud; } private function eliminarDatosSolicitud($model, $solicitud) { $id = $solicitud['id']; foreach ($solicitud as $key => $value) { $solicitud[$key] = 'X'; } $solicitud['id'] = (int)$id; $solicitud['status'] = 1; $solicitud['email'] = 'x@x.com'; $solicitud['horas_servicio'] = 0; $model->save($solicitud); } // ENCUESTAS public function encuestas() { $data = [ 'title' => 'Encuestas', 'encuestas' => model(EncuestaModel::class)->getEncuestas(), ]; return view('Admin/encuestas.php', $data); } public function encuesta($id) { $data = [ 'id' => $id, 'encuesta' => model(EncuestaModel::class)->getEncuestas($id, true), 'preguntas' => model(PreguntaModel::class)->getPreguntas($id), ]; return view('Admin/encuesta', $data); } public function nuevaEncuesta() { // Guardar encuesta if ($this->request->getMethod() === 'post') { $encuesta = model(EncuestaModel::class); $data = $this->request->getPost(); // agregar id del usuario actual $data['user_id'] = user_id(); // Validar datos if (!$encuesta->save($data)) { return redirect()->back()->withInput()->with('errors', $encuesta->errors()); } return redirect()->route('admin_encuestas')->with('msg', array( 'type' => 'success', 'body' => 'Encuesta creada correctamente.' )); } $data = [ 'title' => 'Nueva encuesta', ]; return view('Admin/formularioEncuesta', $data); } public function editarEncuesta($id) { $encuesta = model(EncuestaModel::class); if ($this->request->getMethod() === 'post') { $data = $this->request->getPost(); if (!$encuesta->update($id, $data)) { return redirect()->back()->withInput()->with('errors', $encuesta->errors()); } return redirect()->route('admin_encuestas')->with('msg', array( 'type' => 'success', 'body' => 'Encuesta editada correctamente', )); } $data = [ 'id' => $id, 'title' => 'Modificar encuesta', 'datos' => $encuesta->getEncuestas($id), ]; return view('Admin/formularioEncuesta', $data); } public function eliminarEncuesta($id) { if (!model(EncuestaModel::class)->delete($id)) { return redirect()->route('admin_encuestas')->with('msg', array( 'type' => 'error', 'body' => 'Error al eliminar la encuesta.' )); } return redirect()->route('admin_encuestas')->with('msg', array( 'type' => 'success', 'body' => 'Encuesta eliminada correctamente.' )); } public function respuestas() { $respuestas = model(SurveyUserModel::class)->getEncuestasContestadas(); $data = [ 'respuestas' => $respuestas, ]; return view('Admin/respuestas', $data); } public function respuestasEncuesta($surveyId) { echo 'todas las respuestas de esta encuesta'; } public function respuesta($surveyId, $userId) { if (!$respuestas = model(RespuestaModel::class)->getRespuestas($surveyId, $userId)) { return redirect()->route('admin_respuestas')->with('msg', array( 'type' => 'danger', 'body' => 'No se encontraron respuestas de este usuario.', )); } // Agrupar respuestas de opción múltipe $respuestas = array_reduce($respuestas, function (array $accumulator, array $element) { $accumulator[$element['question_id']][] = $element; return $accumulator; }, []); // Datos de prestador $prestadorId = model(UserModel::class)->find($userId)->idprestador; $prestador = model(PrestadorModel::class)->find($prestadorId); $data = [ 'tituloEncuesta' => model(EncuestaModel::class)->find($surveyId)['title'], 'prestador' => $prestador, 'respuestas' => $respuestas, ]; return view('Admin/respuestaIndividual', $data); } // PREGUNTAS public function nuevaPregunta($id) { if ($this->request->getMethod() === 'post') { $pregunta = model(PreguntaModel::class); $data = $this->request->getPost(); // Relacionar encuesta($id) con pregunta(survey_id) $data['survey_id'] = $id; $data['order_by'] = 1; // Validar y guardar datos if (!$pregunta->save($data)) { return redirect()->back()->withInput()->with('errors', $pregunta->errors()); } $url = 'admin/encuesta/' . $id; return redirect()->to($url)->with('msg', array( 'type' => 'success', 'body' => 'Pregunta registrada correctamente', )); } $data = [ 'title' => 'Nueva pregunta', 'id' => $id, ]; return view('Admin/formularioPregunta', $data); } public function editarPregunta($id) { $pregunta = model(PreguntaModel::class); if ($this->request->getMethod() === 'post') { $data = $this->request->getPost(); if (!$pregunta->update($id, $data)) { return redirect()->back()->withInput()->with('errors', $pregunta->errors()); } $encuestaId = $pregunta->find($id)['survey_id']; $url = 'admin/encuesta/' . $encuestaId; return redirect()->to($url)->with('msg', array( 'type' => 'success', 'body' => 'Pregunta registrada correctamente', )); } $data = [ 'preguntaId' => $id, 'title' => 'Editar pregunta', 'datos' => $pregunta->find($id), ]; return view('Admin/formularioPregunta', $data); } public function eliminarPregunta(int $id) { $model = model('PreguntaModel'); if (!$pregunta = $model->find($id)) { throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); } $encuestaId = $pregunta['survey_id']; $model->delete($id); $url = 'admin/encuesta/' . $encuestaId; return redirect()->to($url)->with('msg', array( 'type' => 'success', 'body' => 'Pregunta eliminada correctamente', )); } public function preguntaPost() { $data = $this->request->getPost(); $data['survey_id'] = 1; $data['order_by'] = 1; var_dump($data); } // GRUPOS public function createGroup() { // $authorize = service('authorization'); // $id = $authorize->createGroup('Prestador', 'Prestadores de Servicio Social o Prácticas Profesionales'); // echo $id; } }