<?php
namespace App\Controller\Contador;
use DateTime;
use App\Entity\User;
use App\Entity\Contador;
use App\Entity\DatosSindicato;
use App\Form\ContadorEditType;
use App\Entity\ContadorMensaje;
use App\Controller\ServiceController;
use App\Controller\Admin\UserController;
use Doctrine\ORM\EntityManagerInterface;
use App\Controller\Admin\ContadorController;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Routing\Annotation\Route;
use App\Controller\Admin\ContadorMensajeController;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
#[Route('/panel/contador')]
class PanelContadorController extends AbstractController
{
public function __construct(){
date_default_timezone_set("America/Buenos_Aires");
}
/**
* @return string
*/
public function generateUniqueFileName()
{
return md5(uniqid());
}
#[Route('/home', name: 'panel_contador_home')]
public function index(ContadorMensajeController $contadorMensajeController, EntityManagerInterface $em): Response
{
$arrayMensajes = Array();
$fechaHasta = new \DateTime('now');
$fechaDesde = new \DateTime('now');
$fechaDesde->modify('-2 month');
$mensajes = $em->getRepository(ContadorMensaje::class)->findByTodosLosMensajes($fechaDesde,$fechaHasta);
foreach($mensajes as $mensaje){
array_push($arrayMensajes, $contadorMensajeController->getMensaje($mensaje));
}
return $this->render('consola/panel_contador/home.html.twig',[
'arrayMensajes' => $arrayMensajes
]);
}
#[Route('/ayuda', name: 'panel_contador_ayuda')]
public function ayuda(EntityManagerInterface $em): Response
{
$datos = $em->getRepository(DatosSindicato::class)->find(1);
$arrayDatos = Array();
$arrayDatos[]=[
'email_sindicato' => $datos->getEmail(),
'telefono' => $datos->getTelefono(),
'email_sistemas' => $datos->getMailSistema(),
];
return $this->render('consola/panel_contador/ayuda.html.twig',[
'arrayDatos' => $arrayDatos
]);
}
#[Route('/show', name: 'panel_contador_show', methods: ['GET'])]
public function show(ContadorController $contadorController): Response
{
return $this->render('consola/panel_contador/contador/show.html.twig', [
'contador' => $contadorController->getArrayContador($this->getUser()),
]);
}
#[Route('/edit', name: 'panel_contador_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, EntityManagerInterface $entityManager,ServiceController $ServiceController,UserController $UserController): Response
{
$contador = $this->getUser();
//foto
$img = $contador->getFoto();
if($img != NULL){
$contador->setFoto(
new File($this->getParameter('directory_contador_img').'/'.$contador->getFoto())
);
}
//fin foto
$form = $this->createForm(ContadorEditType::class, $contador);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if($UserController->verificarCambioEmail($contador,$entityManager) == true){
$contador->setNombre($ServiceController->PrimeraLetraMayuscula($contador->getNombre()));
$contador->setApellido($ServiceController->PrimeraLetraMayuscula($contador->getApellido()));
//foto
$file = $form->get('foto')->getData();
if ($file) {
//borro
if($img != NULL){
$filesystem = new Filesystem();
$ruta=$this->getParameter('directory_contador_img').'/'.$img;
$filesystem->remove($ruta);
}
$fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
try {
$file->move($this->getParameter('directory_contador_img'),$fileName);
} catch (FileException $e) {
}
$contador->setFoto($fileName);
}else{
//es igual a null, dejo lo que esta.
if($img != NULL){
$contador->setFoto($img);
}
}
//mensaje Flash
$this->addFlash('notice', array(
'type' => 'success',
'title' => 'EDITADO!',
'message' => 'Se editaron los datos.'
));
$entityManager->flush();
return $this->redirectToRoute('panel_contador_show', [], Response::HTTP_SEE_OTHER);
}else{
//mensaje Flash
$this->addFlash('notice', array(
'type' => 'danger',
'title' => 'ERROR!',
'message' => 'El email que intenta ingresar ya esta en uso. Cambie el Email.'
));
}
}
return $this->renderForm('consola/panel_contador/contador/edit.html.twig', [
'contador' => $contador,
'form' => $form,
]);
}
}