<?php
namespace App\Controller;
use App\Entity\Contacto;
use App\Entity\EmpresaAliada;
use App\Entity\SimbiosiIndustrial;
use App\Entity\Sector;
use App\Entity\SliderPrincipal;
use App\Entity\Usuario;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\String\Slugger\SluggerInterface;
class SiteController extends AbstractController
{
/**
* @Route("/site", name="site")
*/
public function index()
{
return $this->render('administrador/index.html.twig');
}
/**
* @Route("/empresas/{sector}", name="sectores")
*/
public function sectores($sector)
{
$em = $this->getDoctrine()->getManager();
// $sectores = $em->getRepository(Sector::class)->findBy(array('estado' => true));
$sectores = $em->getRepository(Sector::class)->findAll();
$simbiosis = $em->getRepository(SimbiosiIndustrial::class)->findAll();
return $this->render('site/sectores.html.twig', array('sectores' => $sectores, 'seleccionado' => $sector, 'simbiosis' => $simbiosis));
}
/**
* @Route("/empresa/{slug}", name="empresa_view")
*/
public function empresaView($slug)
{
$em = $this->getDoctrine()->getManager();
$empresa = $em->getRepository(Usuario::class)->findOneBy(array('slug' => $slug));
$simbiosis = $em->getRepository(SimbiosiIndustrial::class)->findBy(array('empresa' => $empresa->getId()));
return $this->render('site/sector.html.twig', array('usuario' => $empresa,'simbiosis' => $simbiosis));
}
/**
* @Route("/", name="inicio")
*/
public function inicio()
{
$em = $this->getDoctrine()->getManager();
$sectores = $em->getRepository(Sector::class)->findBy(array('estado' => true));
$sliders = $em->getRepository(SliderPrincipal::class)->findBy(array('estado' => true));
$empresas = $em->getRepository(EmpresaAliada::class)->findAll();
return $this->render('site/index.html.twig', array('sectores' => $sectores,'empresas' => $empresas,'sliders' => $sliders));
// if ($this->getUser()){
// return $this->redirectToRoute('site');
// }
// return $this->redirectToRoute('app_login');
}
/**
* @Route("/admin/editar-perfil", name="edit_perfil")
*/
public function editPerfil()
{
$em = $this->getDoctrine()->getManager();
$usuario = $this->getUser();
$user = $em->getRepository(Usuario::class)->findOneBy(array('id' => $usuario));
$sectores = $em->getRepository(Sector::class)->findBy(array('estado' => true));
return $this->render('usuario/edit_perfil.html.twig', array('usuario' => $user, 'sectores' => $sectores));
}
/**
* @Route("/admin/perfil", name="perfil")
*/
public function perfil()
{
$em = $this->getDoctrine()->getManager();
$usuario = $this->getUser();
$user = $em->getRepository(Usuario::class)->findOneBy(array('id' => $usuario));
return $this->render('usuario/perfil.html.twig', array('usuario' => $user));
}
/**
* @Route("/admin/guardar-perfil", name="guardar_perfil")
*/
public function guardarPerfil(Request $request,UserPasswordEncoderInterface $passwordEncoder, SluggerInterface $slugger){
$email = $request->request->get('email');
$empresa= $request->request->get('empresa');
$direccion= $request->request->get('direccion');
$telefono= $request->request->get('telefono');
$sitioweb= $request->request->get('sitioweb');
$password = $request->request->get('password');
//$logo= $request->request->get('logo');
$logo= $request->files->get('logo');
$reglamento= $request->files->get('reglamento');
$otro= $request->files->get('otro');
$facebook= $request->request->get('facebook');
$youtube= $request->request->get('youtube');
$instagram= $request->request->get('instagram');
$twitter= $request->request->get('twitter');
$linkedin= $request->request->get('linkedin');
$descripcion= $request->request->get('descripcion');
$descripcionCorta= $request->request->get('descripcionCorta');
$pais= $request->request->get('pais');
$provincia= $request->request->get('provincia');
$ciudad= $request->request->get('ciudad');
$slugsector= $request->request->get('sector');
//dd($nombre);
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(Usuario::class)->findOneBy(array('email' => $email));
//dd($user);
if ($user){
$user->setEmpresa($empresa);
$user->setDireccion($direccion);
$user->setTelefono($telefono);
$user->setSitioWeb($sitioweb);
$user->setFacebook($facebook);
$user->setYoutube($youtube);
$user->setInstagram($instagram);
$user->setTwitter($twitter);
$user->setLinkedin($linkedin);
$user->setDescripcion($descripcion);
$user->setDescripcionCorta($descripcionCorta);
$user->setPais($pais);
$user->setProvincia($provincia);
$user->setCiudad($ciudad);
/** @var UploadedFile $brochureFile */
$brochureFile = $logo;
/** @var UploadedFile $reglamentoFile */
$reglamentoFile = $reglamento;
/** @var UploadedFile $otroFile */
$otroFile = $otro;
// this condition is needed because the 'brochure' field is not required
// so the PDF file must be processed only when a file is uploaded
if ($brochureFile) {
$originalFilename = pathinfo($brochureFile->getClientOriginalName(), PATHINFO_FILENAME);
// this is needed to safely include the file name as part of the URL
$safeFilename = $slugger->slug($originalFilename);
$newFilename = $safeFilename.'-'.uniqid().'.'.$brochureFile->guessExtension();
// Move the file to the directory where brochures are stored
try {
$brochureFile->move(
$this->getParameter('empresa_images'),
$newFilename
);
} catch (FileException $e) {
// ... handle exception if something happens during file upload
}
// updates the 'brochureFilename' property to store the PDF file name
// instead of its contents
$user->setImagen($newFilename);
}
if ($reglamentoFile) {
$originalFilename1 = pathinfo($reglamentoFile->getClientOriginalName(), PATHINFO_FILENAME);
$safeFilename1 = $slugger->slug($originalFilename1);
$newFilename1 = $safeFilename1.'-'.uniqid().'.'.$reglamentoFile->guessExtension();
try {
$reglamentoFile->move(
$this->getParameter('proyecto_recursos'),
$newFilename1
);
} catch (FileException $e) {
}
$user->setReglamentoProveedores($newFilename1);
}
if ($otroFile) {
$originalFilename2 = pathinfo($otroFile->getClientOriginalName(), PATHINFO_FILENAME);
$safeFilename2 = $slugger->slug($originalFilename2);
$newFilename2 = $safeFilename2.'-'.uniqid().'.'.$otroFile->guessExtension();
try {
$otroFile->move(
$this->getParameter('proyecto_recursos'),
$newFilename2
);
} catch (FileException $e) {
}
$user->setOtroPdf($newFilename2);
}
if ($slugsector){
$sector = $em->getRepository(Sector::class)->findOneBy(array('slug' => $slugsector));
$user->setSector($sector);
}
if ($password){
$user->setPassword($passwordEncoder->encodePassword(
$user,
$password
));
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($user);
$entityManager->flush();
}
return $this->redirectToRoute('perfil',array('usuario' => $user));
}
/**
* @Route("/registro-exitoso", name="registro_exitoso")
*/
public function registroExitoso()
{
return $this->render('site/exitoso.html.twig');
}
/**
* @Route("/contactenos", name="contactenos")
*/
public function contactenos()
{
return $this->render('site/contactenos.html.twig');
}
/**
* @Route("/enviar-contacto", methods={"POST"}, name="enviar_contacto")
*/
public function enviarContacto(Request $request, MailerInterface $mailer)
{
$nombre = $request->request->get("nombres");
$apellido= $request->request->get("apellidos");
$telefono = $request->request->get("telefono");
$email = $request->request->get("email");
$mensaje = $request->request->get("mensaje");
$info = new Contacto();
$info->setNombre($nombre);
$info->setApellido($apellido);
$info->setTelefono($telefono);
$info->setCorreo($email);
$info->setMensaje($mensaje);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($info);
$entityManager->flush();
$email2 = (new TemplatedEmail())
->from(new Address('codegurumailer@gmail.com', 'Inclusivo'))
->to('cemdes@cemdes.org')
->cc('ycosquillo@gmail.com')
->subject('Notificacion de nuevo contacto desde Inclusivo')
->htmlTemplate('email/contacto.html.twig')
->context([
'info' => $info
])
;
$mailer->send($email2);
$this->addFlash(
'notice',
'¡Su solicitud de contacto fue enviada con éxito!'
);
$referer = $request->server->get('HTTP_REFERER');
return $this->redirect($referer);
}
/**
* @Route("/buscar-empresas", methods={"POST"}, name="buscador")
*/
public function buscador(Request $request){
$em = $this->getDoctrine()->getManager();
$valor = $request->get('producto');
$ubicacion = $request->get('ubicacion');
$repository = $em->getRepository(Usuario::class);
$repository2 = $em->getRepository(SimbiosiIndustrial::class);
$querySM = $repository->createQueryBuilder('empresa');
$querySB = $repository2->createQueryBuilder('simbiosis');
$simbiosis = array();
if($valor){
$querySM->andWhere("empresa.descripcion LIKE :texto or empresa.descripcionCorta LIKE :texto")
->setParameter('texto', '%' . $valor . '%');
$querySB->andWhere("simbiosis.descripcion LIKE :texto")
->setParameter('texto', '%' . $valor . '%');
$simbiosis = $querySB->getQuery()->getResult();
}
if ($ubicacion){
$querySM->andWhere("empresa.provincia LIKE :texto or empresa.ciudad LIKE :texto")
->setParameter('texto', '%' . $ubicacion . '%');
// $querySB ->join('simbiosis.empresa', 'emp')
// ->addSelect('emp')
// ->where('emp.provincia LIKE :texto or emp.ciudad LIKE :texto')
// ->setParameter('texto', '%' . $ubicacion . '%');
}
$empresas = $querySM->getQuery()->getResult();
return $this->render('site/busqueda.html.twig', array(
"empresas" => $empresas,
"simbiosis" => $simbiosis,
"valor" => $valor,
"ubicacion" => $ubicacion,
)
);
}
}