<?php
// src/Controller/Frontend/FrontendController.php
namespace App\Controller\Frontend;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; // @dth: to encode the pass
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
class FrontendController extends AbstractController {
private $passwordEncoder;
public function __construct(UserPasswordEncoderInterface $passwordEncoder) {
$this->passwordEncoder = $passwordEncoder;
}
/**
* @Route("website/", name="homepage_website", methods={"GET", "POST"})
*/
public function homepage(EntityManagerInterface $entityManager, Request $request): Response {
$user = $request->get('user');
if ($user) {
$addUser = new \App\Entity\User();
$workArea = $entityManager->getRepository(\App\Entity\WorkArea::class)->findOneByWorkAreaId($user['workArea']);
$company = $entityManager->getRepository(\App\Entity\Company::class)->findOneByCompanyId($user['company']);
$rol = $entityManager->getRepository(\App\Entity\UserRole::class)->findOneById(4);
$addUser->setFirstName($user['first_name']);
$addUser->setLastName($user['last_name']);
$addUser->setEmail($user['email']);
$addUser->setCompany($company);
$addUser->setWorkArea($workArea);
$addUser->setUserRole($rol);
$addUser->setStatus('ACTIVO');
if ($user['address']) {
$addUser->setAddress($user['address']);
}
if ($request->get('user_password')) {
$plainpwd = $request->get('user_password');
$encoded = $this->passwordEncoder->encodePassword($addUser, $plainpwd);
$addUser->setPassword($encoded);
}
$entityManager->persist($addUser);
$entityManager->flush();
return $this->redirectToRoute('app_login', [], Response::HTTP_SEE_OTHER);
}
$company = $entityManager->getRepository(\App\Entity\Company::class)->findByIsActive(1);
return $this->render('website/register.html.twig', [
'company' => $company,
]);
}
/**
* @Route("/website/company", name="homepage_selector_1", methods={"POST"})
*/
public function getCompany(Request $request, EntityManagerInterface $entityManager): Response {
$id = $request->get("id");
$company = $entityManager->getRepository(\App\Entity\Company::class)->findOneByCompanyId($id);
$list = $entityManager->getRepository(\App\Entity\WorkArea::class)->findBy(['isActive' => 1, 'company' => $company]);
return $this->render('website/company.html.twig', [
'list' => $list
]);
}
}