<?php
namespace App\Controller;
use App\Entity\Dealoblige;
use App\Entity\Deal;
use App\Entity\ChampsDeal;
use App\Form\DealobligeType;
use App\Repository\DealobligeRepository;
use App\Repository\InstallateurRepository;
use App\Repository\ObligesRepository;
use App\Repository\ChampsDefautRepository;
use App\Repository\DealRepository;
use App\Repository\ChampsDealRepository;
use App\Repository\ActiviteDealRepository;
use App\Repository\NotificationsRepository;
use App\Repository\HistoriqueDealRepository;
use App\Repository\FactureAafRepository;
use App\Repository\AppelqualiteRepository;
use App\Repository\SoustraitantRepository;
use App\Repository\ContratRepository;
use App\Repository\DepotDossierRepository;
use App\Repository\ChampsDepotDossierRepository;
use App\Repository\CommentairesControlleRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Datetime;
/**
* @Route("/dealoblige")
*/
class DealobligeController extends AbstractController
{
/**
* @Route("/", name="app_dealoblige_index", methods={"GET"})
*/
public function index(DealobligeRepository $dealobligeRepository): Response
{
if ($this->isGranted('ROLE_OBLIGE')) {
return $this->redirectToRoute('app_obliges_edit', ['id' => $this->getUser()->getObliges()->getId()], Response::HTTP_SEE_OTHER);
}
$dealoblige= $dealobligeRepository->findAll();
$tab=[];
$dealobliges=[];
// id,type as owner,client as name ,date,file ,batiment
foreach ($dealoblige as $value) {
$tab['id']=$value->getId();
$tab['name']=$value->getNom();
if ($value->getOblige()) {
$tab['owner']=$value->getOblige()->getSociete();
}
if ($value->getDatedebut()) {
$tab['industry_type']=$value->getDatedebut()->format('d-m-Y');
}
if ($value->getDatefin()) {
$tab['location']=$value->getDatefin()->format('d-m-Y');
}
$tab['employee']="dealoblige";
$dealobliges[]=$tab;
}
$clientjson = json_encode($dealobliges);
//die(json_encode($clientjson ));
file_put_contents('assets/json/dealoblige-list.json', $clientjson);
return $this->render('dealoblige/index.html.twig', [
'dealobliges' => $dealobligeRepository->findAll(),
]);
}
/**
* @Route("/new", name="app_dealoblige_new", methods={"GET", "POST"})
*/
public function new(Request $request, DealobligeRepository $dealobligeRepository,InstallateurRepository $installateurRepository,ObligesRepository $obligesRepository,
ChampsDefautRepository $champsDefautRepository, DealRepository $dealRepository,ChampsDealRepository $champsDealRepository
): Response
{
$dealoblige = new Dealoblige();
// $form = $this->createForm(DealobligeType::class, $dealoblige);
// $form->handleRequest($request);
if ($request->getMethod() == "POST") {
$form = $request->request;
$dealoblige->setNom($form->get('nom'));
$datedebut = date('d-m-Y', strtotime($form->get('datedebut'))) ;
$datetimedebut = new Datetime($datedebut);
$dealoblige->setDatedebut($datetimedebut);
$datefin = date('d-m-Y', strtotime($form->get('datefin'))) ;
$datetimefin = new Datetime($datefin);
$dealoblige->setDatefin($datetimefin);
$oblige= $obligesRepository->findOneBy(["id"=>intval($form->get('oblige'))]);
$dealoblige->setOblige($oblige);
$dealobligeRepository->add($dealoblige, true);
if ($form->get('installateur') != null) {
foreach ($form->get('installateur') as $value) {
$installateur= $installateurRepository->findOneBy(["id"=>intval($value)]);
$deal = new Deal();
$deal->setNumero($form->get('nom').'-'.$installateur->getSociete());
$deal->setInstallateur($installateur);
$deal->setStatus("Nouveau");
$deal->setDealoblige($dealoblige);
$dealRepository->add($deal, true);
foreach ($oblige->getChampsobliges() as $chmps) {
$champsDeal = new ChampsDeal();
$champsDeal->setNom($chmps->getNom());
$champsDeal->setType($chmps->getType());
if ($chmps->getType()== 'file') {
$champsDeal->setStatus('Non Transmis');
}
$champsDeal->setDurevalidite($chmps->getDurevalidite());
$champsDeal->setDeal($deal);
// dd($champsDeal);
$champsDealRepository->add($champsDeal, true);
}
// dd($deal);
}
}
return $this->redirectToRoute('app_dealoblige_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('dealoblige/new.html.twig', [
'dealoblige' => $dealoblige,
'listinstallateurs' => $installateurRepository->findAll(),
'champs' => $champsDefautRepository->findAll(),
'listobliges' => $obligesRepository->findAll(),
]);
}
/**
* @Route("/{id}", name="app_dealoblige_show", methods={"GET"})
*/
public function show(Dealoblige $dealoblige): Response
{
return $this->render('dealoblige/show.html.twig', [
'dealoblige' => $dealoblige,
]);
}
/**
* @Route("/{id}/edit", name="app_dealoblige_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Dealoblige $dealoblige, DealobligeRepository $dealobligeRepository): Response
{
// $form = $this->createForm(DealobligeType::class, $dealoblige);
// $form->handleRequest($request);
// if ($form->isSubmitted() && $form->isValid()) {
// $dealobligeRepository->add($dealoblige, true);
// return $this->redirectToRoute('app_dealoblige_index', [], Response::HTTP_SEE_OTHER);
// }
if ($request->getMethod() == "POST") {
$form = $request->request;
$dealoblige->setNom($form->get('nom'));
$datedebut = date('d-m-Y', strtotime($form->get('datedebut'))) ;
$datetimedebut = new Datetime($datedebut);
$dealoblige->setDatedebut($datetimedebut);
$datefin = date('d-m-Y', strtotime($form->get('datefin'))) ;
$datetimefin = new Datetime($datefin);
$dealoblige->setDatefin($datetimefin);
$dealobligeRepository->add($dealoblige, true);
return $this->redirectToRoute('app_dealoblige_edit', ['id' =>$dealoblige->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('dealoblige/edit.html.twig', [
'dealoblige' => $dealoblige
]);
}
/**
* @Route("/{id}", name="app_dealoblige_delete", methods={"POST"})
*/
public function delete(Request $request, Dealoblige $dealoblige, DealobligeRepository $dealobligeRepository,DealRepository $dealRepository,ChampsDealRepository $champsDealRepository,ActiviteDealRepository $activiteDealRepository
, NotificationsRepository $notificationsRepository,HistoriqueDealRepository $historiqueDealRepository,FactureAafRepository $factureAafRepository,AppelqualiteRepository $appelqualiteRepository,
SoustraitantRepository $soustraitantRepositor,ContratRepository $contratRepository,
DepotDossierRepository $depotDossierRepository,ChampsDepotDossierRepository $champsDepotDossierRepository,CommentairesControlleRepository $commentairesControlleRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$dealoblige->getId(), $request->request->get('_token'))) {
foreach ($dealoblige->getDeal() as $key => $deal) {
foreach ($deal->getChampsDeal() as $value) {
$deal->removeChampsDeal($value);
$champsDealRepository->remove($value, true);
}
foreach ($notificationsRepository->findBy(["action_id"=>$deal->getId()]) as $value) {
$notificationsRepository->remove($value, true);
}
foreach ($deal->getActiviteDeals() as $value) {
$deal->removeActiviteDeal($value);
$activiteDealRepository->remove($value, true);
}
foreach ($deal->getHistoriqueDeals() as $value) {
$deal->removeHistoriqueDeal($value);
$historiqueDealRepository->remove($value, true);
}
foreach ($deal->getOperation() as $value) {
$deal->removeOperation($value);
}
if($deal->getApporteurAffaire()){
$deal->setApporteurAffaire(NULL);
}
foreach ($deal->getDepotDossiers() as $dossier) {
foreach ($dossier->getChampsDepotDossiers() as $champdossier) {
$champsDepotDossierRepository->remove($champdossier, true);
}
foreach ($dossier->getCommentairesControlles() as $commentaire) {
$commentairesControlleRepository->remove($commentaire, true);
}
foreach ($dossier->getSoustraitants() as $value) {
$dossier->removeSoustraitant($value);
// $soustraitantRepository->remove($value, true);
}
foreach ($dossier->getFactureAafs() as $value) {
// $depotDossier->removeFactureAaf($value);
foreach ($value->getCommentaireFactureaafs() as $commentaire) {
$value->removeCommentaireFactureaaf($commentaire);
// $activiteDealRepository->remove($commentaire, true);
}
$factureAafRepository->remove($value, true);
}
foreach ($dossier->getAppelqualites() as $value) {
foreach ($value->getCommentaireAppelqualites() as $commentaire) {
$value->removeCommentaireAppelqualite($commentaire);
// $activiteDealRepository->remove($commentaire, true);
}
// $depotDossier->removeAppelqualite($value);
$appelqualiteRepository->remove($value, true);
}
$depotDossierRepository->remove($dossier, true);
}
foreach ($deal->getCommentaireDeals() as $commentaire) {
$deal->removeCommentaireDeal($commentaire);
// $activiteDealRepository->remove($commentaire, true);
}
foreach ($deal->getSoustraitants() as $soustritant) {
$deal->removeSoustraitant($soustritant);
// $activiteDealRepository->remove($commentaire, true);
}
if($deal->getContrat()){
foreach ($deal->getContrat()->getCommentaireContrats() as $commentaire) {
$deal->getContrat()->removeCommentaireContrat($commentaire);
// $activiteDealRepository->remove($commentaire, true);
}
$contratRepository->remove($deal->getContrat(), true);
}
$dealRepository->remove($deal, true);
}
$dealobligeRepository->remove($dealoblige, true);
}
return $this->redirectToRoute('app_dealoblige_index', [], Response::HTTP_SEE_OTHER);
}
}