292 regels
8.4 KiB
PHP

<?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.'
));
}
// Crear registro en la tabla prestador
$prestadorModel = model(PrestadorModel::class);
// Asignar id de la tabla prestador al usuario aprobado
// Cambiar status de la solicitud
return redirect()->route('admin_solicitudes')->with('msg', array(
'type' => 'success',
'body' => 'Solicitud aprobada. Se activo la cuenta del prestador.'
));
}
public function rechazarSolicitud($id)
{
echo 'rechazandp solicitud ' . $id;
}
// 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;
}
}