<?php
namespace Noahtech\Sistemas\FuszionBundle\Controller;
use Noahtech\Sistemas\FuszionBundle\Handler\McUsuarioHandler;
use Noahtech\Sistemas\FuszionBundle\Handler\McMedicoHandler;
use Noahtech\Sistemas\FuszionBundle\Handler\McCursoHandler;
use Noahtech\Sistemas\FuszionBundle\Handler\McPrecioHandler;
use Noahtech\Sistemas\FuszionBundle\Utils\Codes;
use Exception;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class PublicUserController extends BaseController {
/**
* @Route("user/public/generar_clave/{token}", name="public_nueva_clave")
* @return type
*/
public function generarClaveAction($token) {
$this->setTitle("Generación de contraseña");
$band = true;
$user = $this->get(McUsuarioHandler::class)->getDataPublicUser($token, $band);
$this->data["data"] = $user;
$this->response->setData($this->data);
return $this->render(
'@NoahtechSistemasFuszion/public/usuarios/generar_clave.html.twig', $this->data
);
}
/**
* @Route("user/public/recuperar_clave", name="public_recuperar_clave")
* @return type
*/
public function recuperarClaveAction() {
$this->setTitle("Recuperar contraseña");
$this->data["data"] = null;
return $this->render(
'@NoahtechSistemasFuszion/public/usuarios/recuperar_clave.html.twig', $this->data
);
}
/**
* @Route("user/public/recuperar_clave_update/{token}", name="public_recuperar_clave_update")
* @return type
*/
public function recuperarClaveUpdateAction($token) {
$this->setTitle("Recuperación de contraseña");
$band = false;
$user = $this->get(McUsuarioHandler::class)->getDataPublicUser($token, $band);
$this->data["data"] = $user;
$this->response->setData($this->data);
return $this->render(
'@NoahtechSistemasFuszion/public/usuarios/generar_clave.html.twig', $this->data
);
}
/**
* Modifica el password de un usuario
*
* @Route("user/public/ajax/usuarios/clave", name="public_ajax_usuario_clave_update", methods={"PUT"}, condition="request.isXmlHttpRequest()")
*/
public function putClaveUpdateAction(Request $request) {
$data = $request->request->all();
//En este caso no hay usuario logueado, porque esta acción se realiza sin ingreso al sistema.
try {
$currentPersona = $this->get(McUsuarioHandler::class)->getById($data["id"]);
$currentUser = $this->get(McUsuarioHandler::class)->getUsuarioByPersona($currentPersona["persona"]["id"]);
$result = $this->container->get(McUsuarioHandler::class)->updateClave($data, $currentUser);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode($e->getCode());
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("user/public/ajax/usuario/recuperar_clave_email", name="public_ajax_usuario_recuperar_clave_email", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function recuperarClaveEmailAction(Request $request) {
$email = $request->request->get('email');
try {
$result = $this->container->get(McUsuarioHandler::class)->recuperarClaveEmail($request, $email);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode($e->getStatusCode());
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/", name="public_inicio")
* @return type
*/
public function inicioAction() {
$this->setTitle("Consejo Medico Jujuy | Home");
$this->data['title'] = "Consejo Medico Jujuy | Home";
$offset = 0;
$limit = 15;
$sortField = 'id';
$sortDirection = 'DESC';
$searchParam = 1;
$precios = $this->get(McPrecioHandler::class)->getPrecios();
$cursos = $this->get(McCursoHandler::class)->buscarCursosWeb($offset, $limit, $sortField, $sortDirection, $searchParam);
$this->data['precio'] = $precios;
$this->data['data'] = $cursos;
return $this->render('@NoahtechSistemasFuszion/public/home/inicio.html.twig', $this->data);
}
/**
* @Route("/medicos", name="public_medicos_listado")
* @return type
*/
public function medicosListadoAction() {
$this->setTitle("Listado de Médicos | Consejo Médicos de Jujuy");
$this->data['data'] = null;
return $this->render(
'@NoahtechSistemasFuszion/public/home/medicos/listado.html.twig', $this->data
);
}
/**
* consulta de productos
*
* @Route("/public/ajax/medicos/search", name="public_jax_medicos_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchAction(Request $request) {
$searchParam = $request->request->all();
$currentPage = $request->query->get('page');
$sortField = $request->query->get('sort');
$sortDirection = $request->query->get('direction');
$currentPage = null == $currentPage ? 1 : $currentPage;
$this->setTamanioPagina(20);
$offset = ($currentPage - 1) * $this->getTamanioPagina();
$limit = $this->getTamanioPagina();
try {
/** @var McMedicoHandler $handler */
$handler = $this->get(McMedicoHandler::class);
$lp = $handler->search($offset, $limit, $sortField, $sortDirection, $searchParam);
$lp->setCurrentPage($currentPage);
$lp->setPageSize($this->getTamanioPagina());
$this->response->setData($lp);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/public/registrar", name="public_registrar_alumno")
* @return type
*/
public function registrarAction(Request $request) {
$this->setTitle("Registro de Alumno | Consejo Médico");
$this->data['data'] = null;
$baseUrl = strstr($request->headers->get('referer'), 'public', true);
if ($baseUrl) {
$this->data['baseUrl'] = $baseUrl;
} else {
$this->data['baseUrl'] = $request->headers->get('referer');
}
return $this->render(
'@NoahtechSistemasFuszion/public/usuarios/registro.html.twig', $this->data
);
}
/**
* Guarda un usuario y una persona, si la misma no existe en la BD
*
* @Route("/public/ajax/usuarios", name="public_usuario_save", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function postSaveAction(Request $request) {
$data = $request->request->all();
try {
$result = $this->container->get(McUsuarioHandler::class)->save($data, null,$request);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode($e->getCode());
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
}