<?php
namespace App\Controller;
use App\Entity\Adresse;
use App\Entity\InfoSalarie;
use App\Entity\Societe;
use App\Entity\Tiers;
use App\Entity\User;
use App\Tools\JsonRes;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\ObjectManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\SerializerInterface;
class TiersController extends AbstractController
{
private ?ObjectManager $em = null;
public function __construct(RequestStack $requestStack, ManagerRegistry $doctrine)
{
$request = $requestStack->getCurrentRequest();
//TODO: page erreur subdomain
if(null===$request->getSession()->get('societe')) return $this->render('misc/404.html.twig');
// on récupère le sous-domaine stocké en session pour pointer vers le bon entity manager
$subdomain = $request->getSession()->get('societe')->getBase();
$this->em = $doctrine->getManager($subdomain);
}
/**
* @Route("/tiers/select2/recherche-class/{r}", methods={"GET"}, name="select2-class")
*/
public function select2Class($r)
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$societeRepository = $this->em->getRepository(Societe::class);
$result = $societeRepository->select2(['clients','prestataires'], $r);
die(json_encode($result));
}
/**
* @Route("/tiers/select2/recherche-societe/{r}", methods={"GET"}, name="select2-societe")
*/
public function select2Societe($r)
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$societeRepository = $this->em->getRepository(Societe::class);
$result = $societeRepository->select2(['clients'], $r);
die(json_encode($result));
}
/**
* @Route("/tiers/select2/recherche-prestataire/{r}", methods={"GET"}, name="select2-prestataire")
*/
public function select2Prestataire($r)
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$societeRepository = $this->em->getRepository(Societe::class);
$result = $societeRepository->select2(['prestataires'], $r);
die(json_encode($result));
}
/**
* @Route("/tiers/select2/recherche-contact-societe/{r}", methods={"GET"}, name="select2-contact-societe")
*/
public function select2ContactSociete($r)
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$tiersRepository = $this->em->getRepository(Tiers::class);
$result = $tiersRepository->select2(2, $r);
die(json_encode($result));
}
/**
* @Route("/tiers/select2/recherche-salarie/{r}", methods={"GET"}, name="select2-salarie")
*/
public function select2Salarie($r)
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$tiersRepository = $this->em->getRepository(Tiers::class);
$result = $tiersRepository->select2(1, $r);
die(json_encode($result));
}
/**
* @Route("/tiers/select2/recherche-chef-projet/{r}", methods={"GET"}, name="select2-chef-projet")
*/
public function select2ChefProjet($r)
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$userRepository = $this->em->getRepository(User::class);
$result = $userRepository->select2($r);
die(json_encode($result));
}
/**
* @Route("/tiers/{typeTiers}", methods={"GET"}, name="gestion_tiers")
*/
public function show($typeTiers): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$tiersRepository = $this->em->getRepository(Tiers::class);
$societeRepository = $this->em->getRepository(Societe::class);
$tiersList = array();
// if('salaries'===$typeTiers) {
// $tiersList = $tiersRepository->findBy(['id_type_tiers' => 1, 'is_active'=> 1], null, 10);
// /** @var Tiers $tiers */
// foreach ($tiersList as $tiers){
// /** @var \App\Entity\InfoSalarie $infoSalarie */
// $infoSalarie = $tiers->getInfoSalarie();
// if(null!==$infoSalarie) {
// $webPath = $this->getParameter('kernel.project_dir');
// $infoSalarie->initEncryptionKey($webPath);
// $infoSalarie->decryptContent(); // déchiffrage des données info_salariés
// }
// }
// } else {
// $tiersList = $societeRepository->findBy(['classe_societe' => $typeTiers, 'is_active'=> 1], null, 10);
// }
$typeClientSelect = '
<option value="TV" selected>TV</option>
<option value="Institutionnel">Institutionnel</option>
';
return $this->render('tiers/gestion_tiers.html.twig', [
'id_menu' => 'tiers_'. $typeTiers,
'type_tiers' => $typeTiers,
'type_client_select' => $typeClientSelect,
// 'user_list' => $userRepository->findAllActive(),
// 'role_select_filtre' => $rolesRepository->getSelectOptions(),
// 'role_select' => $rolesRepository->getSelectOptions(false),
// 'role_hierarchy' => $this->getHtmlRoleHierarchy($rolesRepository),
// 'tiers_list' => $tiersList,
'adresse_list' => array(),
]);
}
/**
* @Route("/tiers/{typeTiers}/reload-list", methods={"POST"}, name="tiers_reload_list")
*/
public function reloadList($typeTiers, Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$tiersRepository = $this->em->getRepository(Tiers::class);
$societeRepository = $this->em->getRepository(Societe::class);
$filtre = $request->request->all();
$tiersList = array();
if('salaries'===$typeTiers) {
$tiersList = $tiersRepository->findByFilter($filtre);
/** @var Tiers $tiers */
foreach ($tiersList as $tiers){
/** @var \App\Entity\InfoSalarie $infoSalarie */
$infoSalarie = $tiers->getInfoSalarie();
if(null!==$infoSalarie) {
// $webPath = $this->getParameter('kernel.project_dir');
// $infoSalarie->initEncryptionKey($webPath);
// $infoSalarie->decryptContent(); // déchiffrage des données info_salariés
}
}
} else {
$tiersList = $societeRepository->findByFilter($filtre);
}
return $this->render('tiers/tiers-'. $typeTiers .'-liste.html.twig', [
'tiers_list' => $tiersList,
'type_tiers' => $typeTiers,
]);
}
/**
* @Route("/tiers/{typeTiers}/{id}", methods={"GET"}, name="tiers_data")
*/
public function dataTiers(Request $request, $typeTiers, $id)
{
// TODO: controle d'accès sécurisé à ajouter via un role
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
if($res->isSuccess()){
switch ($typeTiers){
case 'clients':
case 'prestataires':
$societeRepository = $this->em->getRepository(Societe::class);
$societe = $societeRepository->find($id);
if (null === $societe) $res->addErrMsg('ID Société inéxistant dans la base de données');
if ($res->isSuccess()) $res->setResponse($societe, 'getTiers');
break;
case 'salaries':
$tiersRepository = $this->em->getRepository(Tiers::class);
$tiers = $tiersRepository->find($id);
if (null === $tiers) $res->addErrMsg('ID Salarié inéxistant dans la base de données');
// if($tiers->getId()===1833) {
// dd($tiers->getInfoSalarie()->initEncryptionKey($this->getParameter('kernel.project_dir'))->decryptContent()->getLieuNaissance());
// }
if ($res->isSuccess()) {
$webPath = $this->getParameter('kernel.project_dir');
$res->setResponse($tiers, 'getInfoSalarie', $webPath);
}
break;
}
}
die($res->returnJson());
}
/**
* @Route("/tiers/{typeTiers}/insert", methods={"POST"}, name="insert_tiers")
*/
public function insert($typeTiers, Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
if($res->isSuccess()) {
$data = $res->getData();
switch($typeTiers){
case 'prestataires':
case 'clients':
if(!isset($data['classe_societe'])) $res->addErrMsg('champs classe_societe inconnu');
if(!isset($data['libelle_societe'])) $res->addErrMsg('champs libelle_societe inconnu');
if(!isset($data['type_societe'])) $res->addErrMsg('champs type_societe inconnu');
if(!isset($data['sigle_client'])) $res->addErrMsg('champs sigle_client inconnu');
if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
if ('clients' === $typeTiers) {
if(!isset($data['num_tva'])) $res->addErrMsg('champs num_tva inconnu');
if(!isset($data['condition_reglement'])) $res->addErrMsg('champs condition_reglement inconnu');
if(!$res->isSuccess()) $res->addErrMsg('Vider le cache du navigateur');
if(!$res->isSuccess()) $res->addErrMsg('si le problème persiste contacter l\'administrateur');
}
break;
case 'salaries':
if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
break;
}
if($res->isSuccess()) {
switch($typeTiers){
case 'clients':
if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
if(''===$data['libelle_societe']) $res->addErrMsg('Libellé société obligatoire');
if(''===$data['type_societe']) $res->addErrMsg('Type societe obligatoire : TV, Institutionnel, ...');
if(''===$data['sigle_client']) $res->addErrMsg('Sigle client obligatoire');
if(''===$data['nom']) $res->addErrMsg('Nom contact obligatoire');
if(''===$data['prenom']) $res->addErrMsg('Prénom contact obligatoire');
break;
case 'salaries':
if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
break;
case 'prestataires':
if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
if(''===$data['libelle_societe']) $res->addErrMsg('Libellé prestataire obligatoire');
if(''===$data['type_societe']) $res->addErrMsg('Type prestataire obligatoire : Matériel ou Service');
if(''===$data['nom']) $res->addErrMsg('Nom contact obligatoire');
if(''===$data['prenom']) $res->addErrMsg('Prénom contact obligatoire');
break;
}
if($res->isSuccess()) {
switch($typeTiers){
case 'clients':
$societeRepository = $this->em->getRepository(Societe::class);
$existSigle = $societeRepository->existeSigleSociete($data['sigle_client']);
if($existSigle) $res->addErrMsg('Ce sigle client existe déjà dans la base de données');
break;
case 'salaries':
case 'prestataires':
break;
}
if($res->isSuccess()) {
/** @var \App\Entity\User $currentUser */
$currentUser = $this->getUser()->getId();
// insert tiers lié
$tiers = new Tiers();
$tiers->setNomTiers(mb_strtoupper($data['nom']));
$tiers->setPrenomTiers($data['prenom']);
$tiers->setEmailTiers($data['email_tiers']);
$data['tel_fixe'] = preg_replace(['/\s+/','/\./'],'', $data['tel_fixe']);
$tiers->setTelFixeTiers($data['tel_fixe']);
$data['tel_portable'] = preg_replace(['/\s+/','/\./'],'', $data['tel_portable']);
$tiers->setTelPortableTiers($data['tel_portable']);
$tiers->setCommentaireTiers($data['commentaire']);
switch ($typeTiers) {
case 'clients':
case 'prestataires':
$tiers->setIdTypeTiers(2);
break;
case 'salaries':
$tiers->setIdTypeTiers(1);
break;
}
$tiers->setUserCrea($currentUser);
$tiers->setDateCrea(new \DateTime());
$tiers->setIsActive(true);
$this->em->persist($tiers);
$this->em->flush();
if ('salaries' === $typeTiers) {
// insert info_salarie lié
$webPath = $this->getParameter('kernel.project_dir');
$infoSalarie = new InfoSalarie($webPath);
$infoSalarie->setTarifJour($data['tarif_jour']);
$infoSalarie->setTypeSalarie($data['type_salarie']);
$infoSalarie->setDateNaissance($data['date_naissance']);
$infoSalarie->setLieuNaissance($data['lieu_naissance']);
$infoSalarie->setNationalite($data['nationalite']);
$numSS = preg_replace(['/\s+/'],'', $data['num_secu_sociale']);
$infoSalarie->setNumSecuSociale($numSS);
$infoSalarie->setNumCongesSpectacle($data['num_conges_spectacle']);
$infoSalarie->setNumCarteSejour($data['num_carte_sejour']);
$infoSalarie->setNumCartePresse($data['num_carte_presse']);
$infoSalarie->setDateVisiteMedicale($data['date_visite_medicale']);
$infoSalarie->setStatutCadre($data['statut_cadre']);
$infoSalarie->setNbEnfant($data['nb_enfant']);
$infoSalarie->setSituationFamiliale($data['situation_familiale']);
$infoSalarie->setFonction($data['fonction']);
$infoSalarie->setUserCrea($currentUser);
$infoSalarie->setDateCrea(new \DateTime());
$infoSalarie->setUserModif($currentUser);
$infoSalarie->setDateModif(new \DateTime());
$infoSalarie->secureContent();
$tiers->setInfoSalarie($infoSalarie);
$this->em->persist($tiers);
$this->em->flush();
} else {
// insert societe
$societe = new Societe();
$societe->setClasseSociete($data['classe_societe']);
$societe->setLibSociete($data['libelle_societe']);
$societe->setTypeSociete($data['type_societe']);
$societe->setNbHistoriqueProjet(0);
$societe->setDateCrea(new \DateTime());
$societe->setUserCrea($currentUser);
$societe->setIsActive(true);
$societe->addTier($tiers);
if ('prestataires' === $typeTiers) {
$societeRepository = $this->em->getRepository(Societe::class);
$sigle = $societeRepository->createSiglePrestataire();
$societe->setSigleSociete($sigle);
} else {
$societe->setSigleSociete($data['sigle_client']);
$societe->setNumTva($data['num_tva']);
$societe->setConditionReglement($data['condition_reglement']);
}
$this->em->persist($societe);
$this->em->flush();
}
$data['id_tiers'] = $tiers->getId();
switch ($typeTiers) {
case 'clients':
case 'prestataires':
$data['id_societe'] = $societe->getId();
break;
case 'salaries':
$data['id_societe'] = 0;
break;
}
$res->setData($data);
}
}
}
}
die($res->returnJson());
}
/**
* @Route("/tiers/{typeTiers}/update", methods={"POST"}, name="tiers_update")
*/
public function update($typeTiers, Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
if($res->isSuccess()) {
$data = $res->getData();
switch($typeTiers){
case 'prestataires':
case 'clients':
if(!isset($data['id_tiers'])) $res->addErrMsg('champs id_tiers inconnu');
if(!isset($data['id_societe'])) $res->addErrMsg('champs id_societe inconnu');
if(!isset($data['classe_societe'])) $res->addErrMsg('champs classe_societe inconnu');
if(!isset($data['libelle_societe'])) $res->addErrMsg('champs libelle_societe inconnu');
if(!isset($data['type_societe'])) $res->addErrMsg('champs type_societe inconnu');
if(!isset($data['sigle_client'])) $res->addErrMsg('champs sigle_client inconnu');
if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
if ('clients' === $typeTiers) {
if(!isset($data['num_tva'])) $res->addErrMsg('champs num_tva inconnu');
if(!isset($data['condition_reglement'])) $res->addErrMsg('champs condition_reglement inconnu');
if(!$res->isSuccess()) $res->addErrMsg('Vider le cache du navigateur');
if(!$res->isSuccess()) $res->addErrMsg('si le problème persiste contacter l\'administrateur');
}
break;
case 'salaries':
if(!isset($data['id_tiers'])) $res->addErrMsg('champs id_tiers inconnu');
if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
break;
}
if($res->isSuccess()) {
switch($typeTiers){
case 'clients':
if(''===$data['id_tiers']) $res->addErrMsg('id_tiers manquant');
if(0===$data['id_tiers']) $res->addErrMsg('id_tiers non valide');
if(''===$data['id_societe']) $res->addErrMsg('id_societe manquant');
if(0===$data['id_societe']) $res->addErrMsg('id_societe non valide');
if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
if(''===$data['libelle_societe']) $res->addErrMsg('Libellé société obligatoire');
if(''===$data['type_societe']) $res->addErrMsg('Type societe obligatoire : TV, Institutionnel, ...');
if(''===$data['sigle_client']) $res->addErrMsg('Sigle client obligatoire');
if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
break;
case 'salaries':
if(''===$data['id_tiers']) $res->addErrMsg('id_user manquant');
if(0===$data['id_tiers']) $res->addErrMsg('id_tiers non valide');
if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
break;
case 'prestataires':
if(''===$data['id_tiers']) $res->addErrMsg('id_tiers manquant');
if(0===$data['id_tiers']) $res->addErrMsg('id_tiers non valide');
if(''===$data['id_societe']) $res->addErrMsg('id_societe manquant');
if(0===$data['id_societe']) $res->addErrMsg('id_societe non valide');
if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
if(''===$data['libelle_societe']) $res->addErrMsg('Libellé prestataire obligatoire');
if(''===$data['type_societe']) $res->addErrMsg('Type prestataire obligatoire : Matériel ou Service');
if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
break;
}
if($res->isSuccess()) {
/** @var Tiers $tiers */
$tiers = null;
/** @var Societe $societe */
$societe = null;
switch ($typeTiers){
case 'clients':
case 'prestataires':
$societeRepository = $this->em->getRepository(Societe::class);
$societe = $societeRepository->find($data['id_societe']);
if(null===$societe) $res->addErrMsg('Société introuvable');
if(null!=$societe) $tiers = $societe->getMainTiers();
if(null===$tiers) $res->addErrMsg('Contact société introuvable');
break;
case 'salaries':
$tiersRepository = $this->em->getRepository(Tiers::class);
$tiers = $tiersRepository->find($data['id_tiers']);
if(null===$tiers) $res->addErrMsg('Salarié introuvable');
break;
}
if($res->isSuccess()) {
/** @var \App\Entity\User $currentUser */
$currentUser = $this->getUser()->getId();
// update tiers
$tiers->setNomTiers(mb_strtoupper($data['nom']));
$tiers->setPrenomTiers($data['prenom']);
$tiers->setEmailTiers($data['email_tiers']);
$data['tel_fixe'] = preg_replace(['/\s+/','/\./'],'', $data['tel_fixe']);
$tiers->setTelFixeTiers($data['tel_fixe']);
$data['tel_portable'] = preg_replace(['/\s+/','/\./'],'', $data['tel_portable']);
$tiers->setTelPortableTiers($data['tel_portable']);
$tiers->setCommentaireTiers($data['commentaire']);
$tiers->setUserModif($currentUser);
$tiers->setDateModif(new \DateTime());
$this->em->persist($tiers);
$this->em->flush();
switch ($typeTiers){
case 'clients':
case 'prestataires':
// update societe
if ('clients' === $typeTiers) {
$societe->setSigleSociete($data['sigle_client']);
$societe->setNumTva($data['num_tva']);
$societe->setConditionReglement($data['condition_reglement']);
}
$societe->setLibSociete($data['libelle_societe']);
$societe->setTypeSociete($data['type_societe']);
$societe->setDateModif(new \DateTime());
$societe->setUserModif($currentUser);
$this->em->persist($societe);
$this->em->flush();
break;
case 'salaries':
// update info_salarie lié
/** @var \App\Entity\InfoSalarie $infoSalarie */
$infoSalarie = $tiers->getInfoSalarie();
$webPath = $this->getParameter('kernel.project_dir');
if (null===$infoSalarie) {
$infoSalarie = new InfoSalarie($webPath);
$infoSalarie->setUserCrea($currentUser);
$infoSalarie->setDateCrea(new \DateTime());
}
$infoSalarie->setTarifJour($data['tarif_jour']);
$infoSalarie->setTypeSalarie($data['type_salarie']);
$infoSalarie->setDateNaissance($data['date_naissance']);
$infoSalarie->setLieuNaissance($data['lieu_naissance']);
$infoSalarie->setNationalite($data['nationalite']);
$numSS = preg_replace(['/\s+/'],'', $data['num_secu_sociale']);
$infoSalarie->setNumSecuSociale($numSS);
$infoSalarie->setNumCongesSpectacle($data['num_conges_spectacle']);
$infoSalarie->setNumCarteSejour($data['num_carte_sejour']);
$infoSalarie->setNumCartePresse($data['num_carte_presse']);
$infoSalarie->setDateVisiteMedicale($data['date_visite_medicale']);
$infoSalarie->setStatutCadre($data['statut_cadre']);
$infoSalarie->setNbEnfant($data['nb_enfant']);
$infoSalarie->setSituationFamiliale($data['situation_familiale']);
$infoSalarie->setFonction($data['fonction']);
$infoSalarie->setuserModif($currentUser);
$infoSalarie->setDateModif(new \DateTime());
$infoSalarie->initEncryptionKey($webPath);
$infoSalarie->secureContent();
$tiers->setInfoSalarie($infoSalarie);
$this->em->persist($tiers);
$this->em->flush();
break;
}
$res->setData($data);
}
}
}
}
die($res->returnJson());
}
/**
* @Route("/tiers/{typeTiers}/delete", methods={"POST"}, name="tiers_delete")
*/
public function delete($typeTiers, Request $request): Response
{
// TODO: controle d'accès sécurisé à ajouter via un role
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
$data = $res->getData();
if(empty($data['id']) || 0===$data['id']) $res->addErrMsg('id manquant');
if($res->isSuccess()){
switch ($typeTiers){
case 'clients':
case 'prestataires':
$societeRepository = $this->em->getRepository(Societe::class);
$societe = $societeRepository->find($data['id']);
$societe->setIsActive(false);
$this->em->persist($societe);
$this->em->flush();
break;
case 'salaries':
$tiersRepository = $this->em->getRepository(Tiers::class);
$tiers = $tiersRepository->find($data['id']);
$tiers->setIsActive(false);
$this->em->persist($tiers);
$this->em->flush();
break;
}
}
die($res->returnJson());
}
/**
* @Route("/tiers/adresse/reload", methods={"POST"}, name="reload_adresse_tiers")
*/
public function reloadAdresseTiers(Request $request, SerializerInterface $serializer): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$data = array_map('trim', $request->request->all());
$adresseList = array();
if($data['type_tiers']!=='' && $data['id']!=='') {
switch($data['type_tiers']) {
case 'clients':
case 'prestataires':
$societeRepository = $this->em->getRepository(Societe::class);
$societe = $societeRepository->find($data['id']);
if(null!=$societe) {
$adresseList = $societe->serializeAdresse();
}
break;
case 'salaries':
case 'tiers':
$tiersRepository = $this->em->getRepository(Tiers::class);
$tiers = $tiersRepository->find($data['id']);
if(null!=$tiers) {
$adresseList = $tiers->serializeAdresse();
}
break;
default: break;
}
}
return $this->render('module/module-adresse-list.html.twig', [
'adresse_list' => $adresseList,
]);
}
/**
* @Route("/tiers/adresse/add", methods={"POST"}, name="add_adresse_tiers")
*/
public function addAdresseTiers(Request $request, SerializerInterface $serializer): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$data = array_map('trim', $request->request->all());
$adresseList = array();
if($data['type_tiers']!=='' && $data['id']!=='' && $data['lib_adresse']!=='') {
$adresse = new Adresse();
$adresse->setLibAdresse($data['lib_adresse'])
->setLigne1($data['ligne_1'])
->setLigne2($data['ligne_2'])
->setCodePostal($data['code_postal'])
->setVille(mb_strtoupper($data['ville']))
->setPays(mb_strtoupper($data['pays']));
switch($data['type_tiers']) {
case 'clients':
case 'prestataires':
$societeRepository = $this->em->getRepository(Societe::class);
$societe = $societeRepository->find($data['id']);
if(null!=$societe) {
$adresse->setSociete($societe);
$this->em->persist($adresse);
$this->em->flush();
$adresseList = $societe->serializeAdresse();
}
break;
case 'salaries':
case 'tiers':
$tiersRepository = $this->em->getRepository(Tiers::class);
$tiers = $tiersRepository->find($data['id']);
if(null!=$tiers) {
$adresse->setTiers($tiers);
$this->em->persist($adresse);
$this->em->flush();
$adresseList = $tiers->serializeAdresse();
}
break;
default: break;
}
}
return $this->render('module/module-adresse-list.html.twig', [
'adresse_list' => $adresseList,
]);
}
/**
* @Route("/tiers/update-adresse", methods={"POST"}, name="update_adresse_tiers")
*/
public function updateAdresseTiers(Request $request, SerializerInterface $serializer): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$data = array_map('trim', $request->request->all());
$adresseRepository = $this->em->getRepository(Adresse::class);
$adresse = $adresseRepository->find($data['id_adresse']);
$adresse->setLibAdresse($data['lib_adresse'])
->setLigne1($data['ligne_1'])
->setLigne2($data['ligne_2'])
->setCodePostal($data['code_postal'])
->setVille(mb_strtoupper($data['ville']))
->setPays(mb_strtoupper($data['pays']))
;
$this->em->persist($adresse);
$this->em->flush();
$adresseList = [];
if(null!==$adresse->getTiers()) $adresseList = $adresse->getTiers()->serializeAdresse();
if(null!==$adresse->getSociete()) $adresseList = $adresse->getSociete()->serializeAdresse();
return $this->render('module/module-adresse-list.html.twig', [
'adresse_list' => $adresseList,
]);
}
/**
* @Route("/tiers/adresse/delete/{id}", methods={"GET"}, name="delete_adresse_tiers")
*/
public function deleteAdresseTiers($id): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
$adresseRepository = $this->em->getRepository(Adresse::class);
/** @var \App\Entity\Adresse $adresse */
$adresse = $adresseRepository->find($id);
$this->em->remove($adresse);
$this->em->flush();
/** @var \App\Entity\Tiers $tiers */
$tiers = $adresse->getTiers();
$adresseList = $tiers->serializeAdresse();
return $this->render('module/module-adresse-list.html.twig', [
'adresse_list' => $adresseList,
]);
}
//TODO: ajouter update adresse
}