You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

292 lines
8.4KB

  1. <?php
  2. namespace App\Controllers;
  3. use App\Entities\PrestadorSolicitudModel;
  4. use App\Models\EncuestaModel;
  5. use App\Models\PreguntaModel;
  6. use App\Models\PrestadorModel;
  7. use App\Models\PrestadorSolicitudModel as ModelsPrestadorSolicitudModel;
  8. use App\Models\UserModel;
  9. class Admin extends BaseController
  10. {
  11. public function home()
  12. {
  13. $data = [
  14. 'title' => 'Inicio',
  15. 'solicitudes' => model(PrestadorSolicitudModel::class)->countSolicitudes(),
  16. 'prestadoresActivos' => model(PrestadorModel::class)->countPrestadoresActivos(),
  17. ];
  18. return view('Admin/index', $data);
  19. }
  20. // SOLICITUDES
  21. public function solicitudes()
  22. {
  23. $data = [
  24. 'title' => 'Solicitudes',
  25. 'solicitudes' => model(PrestadorSolicitudModel::class)->getPrestadorSolicitud(),
  26. ];
  27. return view('Admin/solicitudes', $data);
  28. }
  29. public function revisarSolicitud($id)
  30. {
  31. $model = model(ModelsPrestadorSolicitudModel::class);
  32. if (!$datos = $model->find($id)) {
  33. return redirect()->route('admin_solicitudes')->with('msg', array(
  34. 'type' => 'danger',
  35. 'body' => 'Solicitud no encontrada'
  36. ));
  37. }
  38. $data = [
  39. 'id' => $id,
  40. 'email' => user()->email,
  41. 'escuelas' => model(EscuelaModel::class)->getEscuelas(),
  42. 'departamentos' => model(DepartamentoModel::class)->getDepartamentos(),
  43. 'datos' => $datos,
  44. 'revisar' => true,
  45. ];
  46. return view('Prestador/formulario_inicial', $data);
  47. }
  48. public function aprobarSolicitud($id)
  49. {
  50. $solicitudModel = model(ModelsPrestadorSolicitudModel::class);
  51. // Validar que la solicitud existe
  52. if (!$solicitud = $solicitudModel->find($id)) {
  53. return redirect()->route('admin_solicitudes')->with('msg', array(
  54. 'type' => 'danger',
  55. 'body' => 'Solicitud no encontrada'
  56. ));
  57. }
  58. // Verificar que status de la solicitud == 0
  59. if ($solicitud['status'] != 0) {
  60. return redirect()->route('admin_solicitudes')->with('msg', array(
  61. 'type' => 'danger',
  62. 'body' => 'El status de esta solicitud no permite que sea aprobada'
  63. ));
  64. }
  65. // Encontrar usuario que mandó la solicitud
  66. if (!$user = model(UserModel::class)->findUserWithSolicitud($id)) {
  67. return redirect()->route('admin_solicitudes')->with('msg', array(
  68. 'type' => 'danger',
  69. 'body' => 'Ningún usuario tiene esa solicitud registrada.'
  70. ));
  71. }
  72. // Crear registro en la tabla prestador
  73. $prestadorModel = model(PrestadorModel::class);
  74. // Asignar id de la tabla prestador al usuario aprobado
  75. // Cambiar status de la solicitud
  76. return redirect()->route('admin_solicitudes')->with('msg', array(
  77. 'type' => 'success',
  78. 'body' => 'Solicitud aprobada. Se activo la cuenta del prestador.'
  79. ));
  80. }
  81. public function rechazarSolicitud($id)
  82. {
  83. echo 'rechazandp solicitud ' . $id;
  84. }
  85. // ENCUESTAS
  86. public function encuestas()
  87. {
  88. $data = [
  89. 'title' => 'Encuestas',
  90. 'encuestas' => model(EncuestaModel::class)->getEncuestas(),
  91. ];
  92. return view('Admin/encuestas.php', $data);
  93. }
  94. public function encuesta($id)
  95. {
  96. $data = [
  97. 'id' => $id,
  98. 'encuesta' => model(EncuestaModel::class)->getEncuestas($id, true),
  99. 'preguntas' => model(PreguntaModel::class)->getPreguntas($id),
  100. ];
  101. return view('Admin/encuesta', $data);
  102. }
  103. public function nuevaEncuesta()
  104. {
  105. // Guardar encuesta
  106. if ($this->request->getMethod() === 'post') {
  107. $encuesta = model(EncuestaModel::class);
  108. $data = $this->request->getPost();
  109. // agregar id del usuario actual
  110. $data['user_id'] = user_id();
  111. // Validar datos
  112. if (!$encuesta->save($data)) {
  113. return redirect()->back()->withInput()->with('errors', $encuesta->errors());
  114. }
  115. return redirect()->route('admin_encuestas')->with('msg', array(
  116. 'type' => 'success',
  117. 'body' => 'Encuesta creada correctamente.'
  118. ));
  119. }
  120. $data = [
  121. 'title' => 'Nueva encuesta',
  122. ];
  123. return view('Admin/formularioEncuesta', $data);
  124. }
  125. public function editarEncuesta($id)
  126. {
  127. $encuesta = model(EncuestaModel::class);
  128. if ($this->request->getMethod() === 'post') {
  129. $data = $this->request->getPost();
  130. if (!$encuesta->update($id, $data)) {
  131. return redirect()->back()->withInput()->with('errors', $encuesta->errors());
  132. }
  133. return redirect()->route('admin_encuestas')->with('msg', array(
  134. 'type' => 'success',
  135. 'body' => 'Encuesta editada correctamente',
  136. ));
  137. }
  138. $data = [
  139. 'id' => $id,
  140. 'title' => 'Modificar encuesta',
  141. 'datos' => $encuesta->getEncuestas($id),
  142. ];
  143. return view('Admin/formularioEncuesta', $data);
  144. }
  145. public function eliminarEncuesta($id)
  146. {
  147. if (!model(EncuestaModel::class)->delete($id)) {
  148. return redirect()->route('admin_encuestas')->with('msg', array(
  149. 'type' => 'error',
  150. 'body' => 'Error al eliminar la encuesta.'
  151. ));
  152. }
  153. return redirect()->route('admin_encuestas')->with('msg', array(
  154. 'type' => 'success',
  155. 'body' => 'Encuesta eliminada correctamente.'
  156. ));
  157. }
  158. // PREGUNTAS
  159. public function nuevaPregunta($id)
  160. {
  161. if ($this->request->getMethod() === 'post') {
  162. $pregunta = model(PreguntaModel::class);
  163. $data = $this->request->getPost();
  164. // Relacionar encuesta($id) con pregunta(survey_id)
  165. $data['survey_id'] = $id;
  166. $data['order_by'] = 1;
  167. // Validar y guardar datos
  168. if (!$pregunta->save($data)) {
  169. return redirect()->back()->withInput()->with('errors', $pregunta->errors());
  170. }
  171. $url = 'admin/encuesta/' . $id;
  172. return redirect()->to($url)->with('msg', array(
  173. 'type' => 'success',
  174. 'body' => 'Pregunta registrada correctamente',
  175. ));
  176. }
  177. $data = [
  178. 'title' => 'Nueva pregunta',
  179. 'id' => $id,
  180. ];
  181. return view('Admin/formularioPregunta', $data);
  182. }
  183. public function editarPregunta($id)
  184. {
  185. $pregunta = model(PreguntaModel::class);
  186. if ($this->request->getMethod() === 'post') {
  187. $data = $this->request->getPost();
  188. if (!$pregunta->update($id, $data)) {
  189. return redirect()->back()->withInput()->with('errors', $pregunta->errors());
  190. }
  191. $encuestaId = $pregunta->find($id)['survey_id'];
  192. $url = 'admin/encuesta/' . $encuestaId;
  193. return redirect()->to($url)->with('msg', array(
  194. 'type' => 'success',
  195. 'body' => 'Pregunta registrada correctamente',
  196. ));
  197. }
  198. $data = [
  199. 'preguntaId' => $id,
  200. 'title' => 'Editar pregunta',
  201. 'datos' => $pregunta->find($id),
  202. ];
  203. return view('Admin/formularioPregunta', $data);
  204. }
  205. public function eliminarPregunta(int $id)
  206. {
  207. $model = model('PreguntaModel');
  208. if (!$pregunta = $model->find($id)) {
  209. throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
  210. }
  211. $encuestaId = $pregunta['survey_id'];
  212. $model->delete($id);
  213. $url = 'admin/encuesta/' . $encuestaId;
  214. return redirect()->to($url)->with('msg', array(
  215. 'type' => 'success',
  216. 'body' => 'Pregunta eliminada correctamente',
  217. ));
  218. }
  219. public function preguntaPost()
  220. {
  221. $data = $this->request->getPost();
  222. $data['survey_id'] = 1;
  223. $data['order_by'] = 1;
  224. var_dump($data);
  225. }
  226. // GRUPOS
  227. public function createGroup()
  228. {
  229. // $authorize = service('authorization');
  230. // $id = $authorize->createGroup('Prestador', 'Prestadores de Servicio Social o Prácticas Profesionales');
  231. // echo $id;
  232. }
  233. }