<?php
namespace App\Controller;
use App\Entity\RFSolicitudTipoSuministro;
use App\Repository\RFSolicitudTipoSuministroRepository;
use App\Form\RFSolicitudTipoSuministroType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/rf/solicitud/tipo/suministro')]
class RFSolicitudTipoSuministroController extends AbstractController
{
private $responseHandler;
private $documentHandler;
private $mailerCore;
private $em;
private $code = 0;
private $msj = "";
private $url = "";
private $html = "";
public function __construct(\App\Services\ResponseHandler $responseHandler, \App\Services\DocumentHandler $documentHandler, \App\Services\MailerCore $mailerCore, EntityManagerInterface $entityManager)
{
$this->responseHandler = $responseHandler;
$this->mailerCore = $mailerCore;
$this->documentHandler = $documentHandler;
$this->em = $entityManager;
}
#[Route('/{id}/listar', name: 'rf_solicitud_tipo_suministro', methods: ['GET'])]
public function index(\App\Entity\RFSolicitudSuministro $solicitudSuministro): Response
{
if (!$solicitudSuministro) {
throw $this->createNotFoundException('No se encontrĂ³ la vacante solicitada');
}
$entities = $this->em->getRepository(RFSolicitudTipoSuministro::class)->getAll([$solicitudSuministro->getId()]);
return $this->render('rf_solicitud_tipo_suministro/index.html.twig', [
'controller_name' => 'RFSolicitudTipoSuministroController',
'entities' => $entities,
'entity' => $solicitudSuministro,
]);
}
#[Route('/{id}/new', name: 'rf_solicitud_tipo_suministro_new', methods: ['GET', 'POST'])]
public function new(Request $request, EntityManagerInterface $entityManager, \App\Entity\RFSolicitudSuministro $solicitudSuministro): Response
{
if ($solicitudSuministro->getEstado()->getId() != 33) {
$this->code = 'info';
$this->msj = "Imposible continuar, el registro ya se encuentra procesado .";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
$rFSolicitudTipoSuministro = new RFSolicitudTipoSuministro();
$form = $this->createForm(RFSolicitudTipoSuministroType::class, $rFSolicitudTipoSuministro, ['method' => 'POST', 'action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $solicitudSuministro->getId()])]);
$form->remove('cantidad')
->remove('tipoSuministro');
$form->add('cantidadSuministro1', \Symfony\Component\Form\Extension\Core\Type\IntegerType::class, ['label' => 'Cantidad de Cajas', 'required' => false])
->add('cantidadSuministro2', \Symfony\Component\Form\Extension\Core\Type\IntegerType::class, ['label' => 'Cantidad de Ganchos', 'required' => false,])
->add('cantidadSuministro3', \Symfony\Component\Form\Extension\Core\Type\IntegerType::class, ['label' => 'Cantidad de Carpetas', 'required' => false,]);
$colaborador = $this->getUser()->getPersona();
$cargo = "N/A";
$proceso = "N/A";
$sede = $this->getUser()->getPersona()->getSede() != NULL ? $this->getUser()->getPersona()->getSede()->getNombre() : "N/A";
if ($colaborador->getPerfilCargo()) {
$cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
$proceso = $colaborador->getPerfilCargo()->getParProceso()->getNombre();
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
foreach ($solicitudSuministro->getSolicitudTipoSuministro() as $sts) {
if ($sts->getTipoSuministro()->getId() == $rFSolicitudTipoSuministro->getTipoSuministro()->getId()) {
$this->code = 'info';
$this->msj = "Imposible continuar, la solicitud ya cuenta con este suministro .";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
}
$rFSolicitudTipoSuministro->setSolicitudSuministro($solicitudSuministro);
$rFSolicitudTipoSuministro->setCreateAt(new \DateTime('now'));
$rFSolicitudTipoSuministro->setCreateUser($this->getUser()->getUsername());
$rFSolicitudTipoSuministro->setUpdateAt(new \DateTime('now'));
$rFSolicitudTipoSuministro->setUpdateUser($this->getUser()->getUsername());
$entityManager->persist($rFSolicitudTipoSuministro);
$entityManager->flush();
$this->code = 'success';
$this->msj = "Registro cargado exitosamente";
$this->url = $this->generateUrl('rf_solicitud_tipo_suministro', ['id' => $solicitudSuministro->getId()], 0);
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
return $this->renderForm('rf_solicitud_tipo_suministro/new.html.twig', [
'solicitudTipoSuministro' => $rFSolicitudTipoSuministro,
'solicitud' => $solicitudSuministro,
'form' => $form,
'cargo' => $cargo,
'proceso' => $proceso,
'sede' => $sede,
]);
}
#[Route('/{id}/edit', name: 'rf_solicitud_tipo_suministro_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, RFSolicitudTipoSuministro $rFSolicitudTipoSuministro, EntityManagerInterface $entityManager): Response
{
$solicitudSuministro = $rFSolicitudTipoSuministro->getSolicitudSuministro();
if ($solicitudSuministro->getEstado()->getId() != 33) {
$this->code = 'info';
$this->msj = "Imposible continuar, el registro ya se encuentra procesado .";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
$form = $this->createForm(RFSolicitudTipoSuministroType::class, $rFSolicitudTipoSuministro, ['method' => 'POST', 'action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $rFSolicitudTipoSuministro->getId()])]);
$form->remove('tipoSuministro');
$colaborador = $this->getUser()->getPersona();
$cargo = "N/A";
$proceso = "N/A";
$sede = $this->getUser()->getPersona()->getSede() != NULL ? $this->getUser()->getPersona()->getSede()->getNombre() : "N/A";
if ($colaborador->getPerfilCargo()) {
$cargo = $colaborador->getPerfilCargo()->getCargo()->getNombre();
$proceso = $colaborador->getPerfilCargo()->getParProceso()->getNombre();
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
foreach ($solicitudSuministro->getSolicitudTipoSuministro() as $sts) {
if ($sts->getTipoSuministro()->getId() == $rFSolicitudTipoSuministro->getTipoSuministro()->getId() && $sts->getId() != $rFSolicitudTipoSuministro->getId()) {
$this->code = 'info';
$this->msj = "Imposible continuar, la solicitud ya cuenta con este suministro .";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
}
$rFSolicitudTipoSuministro->setUpdateAt(new \DateTime('now'));
$rFSolicitudTipoSuministro->setUpdateUser($this->getUser()->getUsername());
$entityManager->persist($rFSolicitudTipoSuministro);
if ($rFSolicitudTipoSuministro->getCantidad() <= 0) {
$entityManager->remove($rFSolicitudTipoSuministro);
}
$entityManager->flush();
$this->code = 'success';
$this->msj = "Registro cargado exitosamente";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
return $this->renderForm('rf_solicitud_tipo_suministro/edit.html.twig', [
'solicitudTipoSuministro' => $rFSolicitudTipoSuministro,
'solicitud' => $solicitudSuministro,
'form' => $form,
'cargo' => $cargo,
'proceso' => $proceso,
'sede' => $sede,
]);
}
#[Route('/{id}/eliminar', name: 'rf_solicitud_tipo_suministro_delete', methods: ['GET', 'POST'])]
public function delete(RFSolicitudTipoSuministro $rFSolicitudTipoSuministro, EntityManagerInterface $entityManager): Response
{
if (!$rFSolicitudTipoSuministro) {
$this->code = 'info';
$this->msj = "Imposible eliminar, el registro no existe";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url]));
} else {
$entityManager->remove($rFSolicitudTipoSuministro);
$entityManager->flush();
$this->code = 'success';
$this->msj = "Registro eliminado exitosamente";
return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
}
}
}