|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- <?php
-
- namespace App\Controllers;
-
- use App\Entities\PrestadorSolicitudModel;
- use App\Models\EncuestaModel;
- use App\Models\PreguntaModel;
- use App\Models\PrestadorModel;
- use App\Models\PrestadorSolicitudModel as ModelsPrestadorSolicitudModel;
- use App\Models\UserModel;
-
- class Admin extends BaseController
- {
- public function home()
- {
- $data = [
- 'title' => 'Inicio',
- 'solicitudes' => model(PrestadorSolicitudModel::class)->countSolicitudes(),
- 'prestadoresActivos' => model(PrestadorModel::class)->countPrestadoresActivos(),
- ];
- return view('Admin/index', $data);
- }
-
-
- // 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.'
- ));
- }
-
- // 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;
- }
- }
|