<?php
/**
* Created by PhpStorm.
*/
namespace App\Services;
use App\Entity\ActualiteProject;
use App\Entity\ActualiteProjectChild;
use App\Entity\Alert;
use App\Entity\AlertRapport;
use App\Entity\CommentEtap;
use App\Entity\CommentFinanceLoyer;
use App\Entity\CommentFinanceLoyerChild;
use App\Entity\CommentLoyer;
use App\Entity\CommentLoyerChild;
use App\Entity\CommentProject;
use App\Entity\CommentProject2;
use App\Entity\CommentProject2Child;
use App\Entity\CommentProjectRead;
use App\Entity\ContextProject;
use App\Entity\ContextProjectChild;
use App\Entity\ContratConstruction;
use App\Entity\DocUpload;
use App\Entity\Entreprise;
use App\Entity\EnvironnementProject;
use App\Entity\EnvironnementProjectChild;
use App\Entity\Etap0;
use App\Entity\Etap1;
use App\Entity\Etap121;
use App\Entity\Etap159;
use App\Entity\Etap2;
use App\Entity\Etap201;
use App\Entity\Etap23;
use App\Entity\Etap24;
use App\Entity\Etap25;
use App\Entity\Etap26;
use App\Entity\Etap24Champs;
use App\Entity\Etap3;
use App\Entity\Etap4;
use App\Entity\Etap5;
use App\Entity\Etap50;
use App\Entity\Etap6;
use App\Entity\Etap601;
use App\Entity\Etap602;
use App\Entity\Etap7;
use App\Entity\Etap71;
use App\Entity\Etap8;
use App\Entity\Etap80;
use App\Entity\Etap9;
use App\Entity\Etap10;
use App\Entity\Etap11;
use App\Entity\Etap12;
use App\Entity\Etap13;
use App\Entity\Etap14;
use App\Entity\Etap15;
use App\Entity\Etap16;
use App\Entity\Etap160;
use App\Entity\Etap161;
use App\Entity\Etap17;
use App\Entity\Etap171;
use App\Entity\Etap172;
use App\Entity\Etap173;
use App\Entity\Etap174;
use App\Entity\Etap175;
use App\Entity\Etap18;
use App\Entity\Etap19;
use App\Entity\Etap20;
use App\Entity\Etap21;
use App\Entity\Etap22;
use App\Entity\Etaps;
use App\Entity\EtapsCategory;
use App\Entity\ExportTab;
use App\Entity\FactureFinance;
use App\Entity\FamilleProject;
use App\Entity\Fournisseur;
use App\Entity\FournisseurProject;
use App\Entity\HistoryProject;
use App\Entity\ImfomationContratAchat;
use App\Entity\LoyerFinance;
use App\Entity\LoyerFinanceItem;
use App\Entity\MeltdChamps;
use App\Entity\Notification;
use App\Entity\NumeroCardi;
use App\Entity\ParametrageLoyer;
use App\Entity\ParametrageLoyerPeriode;
use App\Entity\Project;
use App\Entity\ProjectAvoir;
use App\Entity\ProjectEdit;
use App\Entity\ProjectFactureFinance;
use App\Entity\RapportCentrale;
use App\Entity\ResponcableFoncierPorject;
use App\Entity\ResponcablePorject;
use App\Entity\ResponsableDeveloppement;
use App\Entity\Spv;
use App\Entity\StatusTracker;
use App\Entity\StatusTrackerConstruction;
use App\Entity\TypologieProject;
use App\Entity\User;
use App\Entity\VisiteTerrainV2Question;
use App\Entity\SousFamilleProject;
use App\Entity\Sourcing;
use App\Entity\ZonagePlu;
use App\Entity\TypeValorisation;
use App\Form\LoyerFinanceType;
use App\Form\ParametrageLoyerType;
use App\Form\ProjectEditType;
use App\Form\ProjectType;
use App\Form\RapportCentraleType;
use App\Form\UserType;
use Doctrine\Common\Collections\ArrayCollection;
use Kunnu\Dropbox\Dropbox;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\Exceptions\DropboxClientException;
use phpDocumentor\Reflection\Types\Self_;
use PhpOffice\PhpWord\PhpWord;
use Spipu\Html2Pdf\Html2Pdf;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Twig\Environment;
use App\Entity\Centrale;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use setasign\Fpdi\PdfParser\StreamReader;
use setasign\Fpdi\Tcpdf\Fpdi;
class ProjectService
{
private $em;
private $trans;
private $params;
private $security;
private $session;
private $twig;
private $notification;
public function __construct(
Environment $twig,
SessionInterface $session,
Security $security,
ParameterBagInterface $params,
EntityManagerInterface $em,
TranslatorInterface $trans,
ValidatorInterface $validator,
FlashBagInterface $flashBag,
UserPasswordEncoderInterface $passwordEncoder,
Notifications $notifications,
EtapsService $etapsService,
\Symfony\Component\Mailer\MailerInterface $mailer,
FormFactoryInterface $form,
RouterInterface $router,
UploadService $uploadService,
UserService $userService
) {
$this->em = $em;
$this->trans = $trans;
$this->params = $params;
$this->security = $security;
$this->session = $session;
$this->twig = $twig;
$this->validator = $validator;
$this->form = $form;
$this->form = $form;
$this->flashBag = $flashBag;
$this->passwordEncoder = $passwordEncoder;
$this->notification = $notifications;
$this->etapsService = $etapsService;
$this->mailer = $mailer;
$this->router = $router;
$this->uploadService = $uploadService;
$this->userService = $userService;
}
public function uploadFileToDropbox($doc,$project,$pathTo){
$dropboxKey = $this->params->get('dropbox_key');
$dropboxSecret = $this->params->get('dropbox_secret');
$dropboxToken= $this->params->get('dropbox_token');
$app = new DropboxApp($dropboxKey,$dropboxSecret,$dropboxToken);
$dropbox = new Dropbox($app);
if(is_object($doc) && is_object($project) ) {
try {
$path = $this->params->get('uploads_directory') . '/' . $doc->getPath();
$userName = $project->getUserCreated()->getFirstname().' '.$project->getUserCreated()->getLastname();
$pathTo = "/Projets signés/".trim($project->getSpv()->getName())."/Fichiers Projets/".trim($userName)."/".trim($project->getName())."/".trim($pathTo);
$file = $dropbox->upload($path,$pathTo );
$doc->setIdDropBox($file->getId());
$doc->setPathDropbox($file->getPathDisplay());
$this->em->persist($doc);
$this->em->flush();
return true;
} catch (DropboxClientException $e) {
return false;
}
}
return true;
}
public function addProject($request,$user,$isDev = true)
{
$project = new Project();
$form = $this->form->create(ProjectType::class, $project);
/*$form->remove('contrat');
$form->remove('tranche');*/
// $form->remove('codeProject');
if($isDev){
if ($user && in_array("ROLE_RESPONSABLE", $user->getRoles())) {
}else{
$form->remove('developpeur');
}
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if(in_array('ROLE_SUPER_ADMINISTRATOR', $user->getRoles()) or in_array('ROLE_ADMIN', $user->getRoles())){
$project->setStatus(Project::STATUS_EN_COURS);
}else{
if ($user && in_array("ROLE_RESPONSABLE", $user->getRoles())) {
$project->setResponsable($user);
}
// if($isDev){
// $project->setStatus(Project::STATUS_EN_ATTENT);
// $project->setDeveloppeur($user);
// }else{
$project->setStatus(Project::STATUS_EN_COURS);
// }
}
$project->setUserCreated($user);
$project->setNumEtapEncours(Etaps::ETAP_0);
$project->setIsEnabled(true);
// Coordonnées GPS : séparateur décimal point obligatoire
if($project->getLat()){
$project->setLat(str_replace(',', '.', str_replace(' ', '', $project->getLat())));
}
if($project->getLongi()){
$project->setLongi(str_replace(',', '.', str_replace(' ', '', $project->getLongi())));
}
$fileEtudeProductibleToken = $request->get('fileEtudeProductible');
if($fileEtudeProductibleToken){
$fileEtudeProductible = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileEtudeProductibleToken]);
$project->setFileEtudeProductible($fileEtudeProductible);
// $this->uploadFileToDropbox($fileEtudeProductible,$project,"Présentation générale/".$fileEtudeProductible->getPath());
$etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project'=>$project->getId()]);
if($etap159){
$etap159->addFileEtudeProductible159Multiple($fileEtudeProductible) ;
$this->em->persist($etap159);
}
}
$filePromessebailToken = $request->get('filePromessebail');
if($filePromessebailToken){
$filePromessebail = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$filePromessebailToken]);
$project->setFilePromessebail($filePromessebail);
// $this->uploadFileToDropbox($filePromessebail,$project,"Présentation générale/".$filePromessebail->getPath());
}
$fileDocCompementaire = $request->get('fileDocCompementaire');
if($fileDocCompementaire){
$array = explode(',',$fileDocCompementaire);
foreach ($array as $item){
$fileDocCompementaireEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
$project->addFileDocCompementaire($fileDocCompementaireEntity);
// $this->uploadFileToDropbox($fileDocCompementaireEntity,$project,"Présentation générale/".$fileDocCompementaireEntity->getPath());
}
}
$filePhotoProject = $request->get('imageProject');
if($filePhotoProject and $filePhotoProject != ''){
$array = explode(',',$filePhotoProject);
foreach ($array as $item1){
$fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
$project->addImagesProject($fileMultipleEntity);
}
}
$project->setIsNewConstruction(true);
$this->em->persist($project);
$this->em->flush();
$this->addAllTimeline($project);
$this->etapsService->setCodeProject($project);
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
if($etap160){
$etap160->setLat($project->getLongi());
$etap160->setLongi($project->getLat());
$this->em->persist($etap160);
$this->em->flush();
}
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
if($etap5){
$etap5->setDateExpirationPromesseBail($project->getDateExpirationPromesseBail());
$etap5->setD1($project->getD1());
$this->em->persist($etap5);
$this->em->flush();
}
$this->etapsService->updateStatusTracker($project); // set status tracker
return [
'form' => $form->createView(),
'project' => $project,
'success' => true
];
}
return [
'form' => $form->createView(),
'success' => false,
];
}
public function EditProjectAdmin($request,$project)
{
$form = $this->form->create(ProjectType::class, $project,['edit'=>true]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Coordonnées GPS : séparateur décimal point obligatoire
if($project->getLat()){
$project->setLat(str_replace(',', '.', str_replace(' ', '', $project->getLat())));
}
if($project->getLongi()){
$project->setLongi(str_replace(',', '.', str_replace(' ', '', $project->getLongi())));
}
$fileEtudeProductibleToken = $request->get('fileEtudeProductible');
if($fileEtudeProductibleToken){
$fileEtudeProductible = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileEtudeProductibleToken]);
$project->setFileEtudeProductible($fileEtudeProductible);
// $this->uploadFileToDropbox($fileEtudeProductible,$project,"Présentation générale/".$fileEtudeProductible->getPath());
$etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project'=>$project->getId()]);
if($etap159){
$etap159->addFileEtudeProductible159Multiple($fileEtudeProductible) ;
$this->em->persist($etap159);
}
}
$filePromessebailToken = $request->get('filePromessebail');
if($filePromessebailToken){
$filePromessebail = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$filePromessebailToken]);
$project->setFilePromessebail($filePromessebail);
// $this->uploadFileToDropbox($filePromessebail,$project,"Présentation générale/".$filePromessebail->getPath());
}
$fileDocCompementaire = $request->get('fileDocCompementaire');
if($fileDocCompementaire){
$array = explode(',',$fileDocCompementaire);
foreach ($array as $item){
$fileDocCompementaireEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
$project->addFileDocCompementaire($fileDocCompementaireEntity);
// $this->uploadFileToDropbox($fileDocCompementaireEntity,$project,"Présentation générale/".$fileDocCompementaireEntity->getPath());
}
}
$this->em->persist($project);
$this->em->flush();
$etapEntity9 = $this->em->getRepository(Etap9::class)->findOneBy(['project'=>$project->getId()]);
$etapEntity5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
if($etapEntity9){
$etapEntity9->setTarifFit($project->getTarifVise());
if($project->getDateT0Date()){
$etapEntity9->setDateT0($project->getDateT0Date());
}
$this->em->persist($etapEntity9);
$this->em->flush();
}
if($etapEntity5 && $project->getLoyerVise()){
$etapEntity5->setLoyerConfirme($project->getLoyerVise());
$this->em->persist($etapEntity5);
$this->em->flush();
}
$this->etapsService->updateStatusTracker($project); // set status tracker
$this->etapsService->setCodeProject($project);
$this->updateNomenclatureDocProject($project->getToken()); // set nomenclature all doc
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
if($etap160){
$etap160->setLat($project->getLongi());
$etap160->setLongi($project->getLat());
$this->em->persist($etap160);
$this->em->flush();
}
return [
'form' => $form->createView(),
'project' => $project,
'success' => true
];
}
return [
'form' => $form->createView(),
'success' => false,
];
}
public function EditProjectValidationAdmin($project)
{
$projectEdit = $this->em->getRepository(ProjectEdit::class)->findOneBy(['project'=>$project->getId(),'isDeleted'=>0]);
if(!$projectEdit){
return [
'success' => false
];
}
$project->setName($projectEdit->getName());
$project->setFamilleProject($projectEdit->getFamilleProject());
$project->setTypologieProject($projectEdit->getTypologieProject());
$project->setAdresse($projectEdit->getAdresse());
$project->setCodePostal($projectEdit->getCodePostal());
$project->setCity($projectEdit->getCity());
$project->setLat($projectEdit->getLat());
$project->setLongi($projectEdit->getLongi());
$project->setNumParcelle($projectEdit->getNumParcelle());
$project->setCapacite($projectEdit->getCapacite());
$project->setProductible($projectEdit->getProductible());
$project->setProductibleP90($projectEdit->getProductibleP90());
$project->setDateArretePc($projectEdit->getDateArretePc());
$project->setIsArretePcNonRecu($projectEdit->getIsArretePcNonRecu());
$project->setDateT0NonRecu($projectEdit->getDateT0NonRecu());
$project->setLoyerVise($projectEdit->getLoyerVise());
$project->setDateT0Annee($projectEdit->getDateT0Annee());
$project->setDateT0Semestere($projectEdit->getDateT0Semestere());
$project->setDateT0Date($projectEdit->getDateT0Date());
$project->setSoulteVise($projectEdit->getSoulteVise());
$project->setTypeBatimentProject($projectEdit->getTypeBatimentProject());
$project->setIsPromesseBailSignee($projectEdit->getIsPromesseBailSignee());
$project->setSpv($projectEdit->getSpv());
$project->setTranche($projectEdit->getTranche());
$project->setContrat($projectEdit->getContrat());
$project->setIsDemandeModif(false);
$project->setUserDemandeModif(null);
$errors = $this->validator->validate($project);
if (count($errors) > 0) {
foreach ($errors as $error) {
$erreurs[] = $error->getMessage();
}
return array(
'erreurs' => $erreurs,
'success' => false
);
}
$this->em->persist($project);
$this->em->flush();
$this->etapsService->updateStatusTracker($project); // set status tracker
$this->etapsService->setCodeProject($project);
$projectEdit->setIsDeleted(true);
$this->em->persist($projectEdit);
$this->em->flush();
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
if($etap160){
$etap160->setLat($project->getLongi());
$etap160->setLongi($project->getLat());
$this->em->persist($etap160);
$this->em->flush();
}
$this->updateNomenclatureDocProject($project->getToken()); // set nomenclature all doc
return [
'success' => true
];
}
public function EditProjectRefuseAdmin($project)
{
$projectEdit = $this->em->getRepository(ProjectEdit::class)->findOneBy(['project'=>$project->getId(),'isDeleted'=>0]);
if(!$projectEdit){
return [
'success' => false
];
}
$project->setIsDemandeModif(false);
$project->setUserDemandeModif(null);
$this->em->persist($project);
$this->em->flush();
$projectEdit->setIsDeleted(true);
$this->em->persist($projectEdit);
$this->em->flush();
return [
'success' => true
];
}
public function EditProjectUser($request,$project,$user)
{
$projectEdit = $this->em->getRepository(ProjectEdit::class)->findOneBy(['project'=>$project->getId(),'isDeleted'=>0]);
if(!$projectEdit){
$projectEdit = new ProjectEdit();
}
$form = $this->form->create(ProjectEditType::class, $projectEdit,['project'=>$project]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$fileEtudeProductibleToken = $request->get('fileEtudeProductible');
if($fileEtudeProductibleToken){
$fileEtudeProductible = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileEtudeProductibleToken]);
$projectEdit->setFileEtudeProductible($fileEtudeProductible);
}
$fileEtudeProductibleToken = $request->get('fileEtudeProductible');
if($fileEtudeProductibleToken){
$fileEtudeProductible = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileEtudeProductibleToken]);
$projectEdit->setFileEtudeProductible($fileEtudeProductible);
}
$fileDocCompementaire = $request->get('fileDocCompementaire');
if($fileDocCompementaire){
$array = explode(',',$fileDocCompementaire);
foreach ($array as $item){
$fileDocCompementaireEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
$project->addFileDocCompementaire($fileDocCompementaireEntity);
}
}
$projectEdit->setProject($project);
$projectEdit->setUserCreated($user);
$this->em->persist($projectEdit);
$this->em->flush();
$project->setIsDemandeModif(true);
$project->setUserDemandeModif($user);
$this->em->persist($project);
$this->em->flush();
$this->etapsService->setCodeProject($project);
$this->flashBag->add(
'success',
'L\'opération a été effectuée avec succès.'
);
return [
'form' => $form->createView(),
'project' => $project,
'projectEdit' => $projectEdit,
'success' => true
];
}
return [
'form' => $form->createView(),
'project' => $project,
'projectEdit' => $projectEdit,
'success' => false,
];
}
public function addAllTimeline($project){
$etap0 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_0]); $this->setEntityEtap($project,$etap0,Etaps::STATUS_EN_COURS,'App\Entity\Etap0');
$etap1 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_1]); $this->setEntityEtap($project,$etap1,Etaps::STATUS_EN_COURS,'App\Entity\Etap1');
$etap2 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_2]); $this->setEntityEtap($project,$etap2,Etaps::STATUS_EN_COURS,'App\Entity\Etap2');
$etap3 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_3]); $this->setEntityEtap($project,$etap3,Etaps::STATUS_EN_COURS,'App\Entity\Etap3');
$etap4 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_4]); $this->setEntityEtap($project,$etap4,Etaps::STATUS_EN_COURS,'App\Entity\Etap4');
$etap5 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_5]); $this->setEntityEtap($project,$etap5,Etaps::STATUS_EN_COURS,'App\Entity\Etap5');
$etap6 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_6]); $this->setEntityEtap($project,$etap6,Etaps::STATUS_EN_COURS,'App\Entity\Etap6');
$etap601 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_601]); $this->setEntityEtap($project,$etap601,Etaps::STATUS_EN_COURS,'App\Entity\Etap601');
$etap602 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_602]); $this->setEntityEtap($project,$etap602,Etaps::STATUS_EN_COURS,'App\Entity\Etap602');
$etap7 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_7]); $this->setEntityEtap($project,$etap7,Etaps::STATUS_EN_COURS,'App\Entity\Etap7');
$etap71 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_71]); $this->setEntityEtap($project,$etap71,Etaps::STATUS_EN_COURS,'App\Entity\Etap71');
$etap8 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_8]); $this->setEntityEtap($project,$etap8,Etaps::STATUS_EN_COURS,'App\Entity\Etap8');
$etap80 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_80]); $this->setEntityEtap($project,$etap80,Etaps::STATUS_EN_COURS,'App\Entity\Etap80');
$etap9 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_9]); $this->setEntityEtap($project,$etap9,Etaps::STATUS_EN_COURS,'App\Entity\Etap9');
$etap10 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_10]); $this->setEntityEtap($project,$etap10,Etaps::STATUS_EN_COURS,'App\Entity\Etap10');
$etap11 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_11]); $this->setEntityEtap($project,$etap11,Etaps::STATUS_EN_COURS,'App\Entity\Etap11');
$etap12 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_12]); $this->setEntityEtap($project,$etap12,Etaps::STATUS_EN_COURS,'App\Entity\Etap12');
$etap121 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_121]); $this->setEntityEtap($project,$etap121,Etaps::STATUS_EN_COURS,'App\Entity\Etap121');
$etap13 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_13]); $this->setEntityEtap($project,$etap13,Etaps::STATUS_EN_COURS,'App\Entity\Etap13');
$etap14 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_14]); $this->setEntityEtap($project,$etap14,Etaps::STATUS_EN_COURS,'App\Entity\Etap14');
$etap15 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_15]); $this->setEntityEtap($project,$etap15,Etaps::STATUS_EN_COURS,'App\Entity\Etap15');
$etap159 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_159]); $this->setEntityEtap($project,$etap159,Etaps::STATUS_EN_COURS,'App\Entity\Etap159');
$etap23 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_23]); $this->setEntityEtap($project,$etap23,Etaps::STATUS_EN_COURS,'App\Entity\Etap23');
$etap160 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_160]); $this->setEntityEtap($project,$etap160,Etaps::STATUS_EN_COURS,'App\Entity\Etap160');
$etap161 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_161]); $this->setEntityEtap($project,$etap161,Etaps::STATUS_EN_COURS,'App\Entity\Etap161');
$etap16 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_16]); $this->setEntityEtap($project,$etap16,Etaps::STATUS_EN_COURS,'App\Entity\Etap16');
$etap17 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_17]); $this->setEntityEtap($project,$etap17,Etaps::STATUS_EN_COURS,'App\Entity\Etap17');
$etap171 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_171]); $this->setEntityEtap($project,$etap171,Etaps::STATUS_EN_COURS,'App\Entity\Etap171');
$etap172 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_172]); $this->setEntityEtap($project,$etap172,Etaps::STATUS_EN_COURS,'App\Entity\Etap172');
$etap173 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_173]); $this->setEntityEtap($project,$etap173,Etaps::STATUS_EN_COURS,'App\Entity\Etap173');
$etap174 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_174]); $this->setEntityEtap($project,$etap174,Etaps::STATUS_EN_COURS,'App\Entity\Etap174');
$etap175 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_175]); $this->setEntityEtap($project,$etap175,Etaps::STATUS_EN_COURS,'App\Entity\Etap175');
$etap18 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_18]); $this->setEntityEtap($project,$etap18,Etaps::STATUS_EN_COURS,'App\Entity\Etap18');
$etap19 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_19]); $this->setEntityEtap($project,$etap19,Etaps::STATUS_EN_COURS,'App\Entity\Etap19');
$etap20 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_20]); $this->setEntityEtap($project,$etap20,Etaps::STATUS_EN_COURS,'App\Entity\Etap20');
$etap201 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_201]); $this->setEntityEtap($project,$etap201,Etaps::STATUS_EN_COURS,'App\Entity\Etap201');
$etap21 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_21]); $this->setEntityEtap($project,$etap21,Etaps::STATUS_EN_COURS,'App\Entity\Etap21');
$etap22 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_22]); $this->setEntityEtap($project,$etap22,Etaps::STATUS_EN_COURS,'App\Entity\Etap22');
$etap24 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_24]); $this->setEntityEtap($project,$etap24,Etaps::STATUS_EN_COURS,'App\Entity\Etap24');
$etap25 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_25]); $this->setEntityEtap($project,$etap25,Etaps::STATUS_EN_COURS,'App\Entity\Etap25');
$etap26 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_26]); $this->setEntityEtap($project,$etap26,Etaps::STATUS_EN_COURS,'App\Entity\Etap26');
$etap50 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_50]); $this->setEntityEtap($project,$etap50,Etaps::STATUS_EN_COURS,'App\Entity\Etap50');
// set champs
$etapEntity5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
if($etapEntity5){
$etapEntity5->setLoyerConfirme($project->getLoyerVise());
$etapEntity5->setSoulteConfirme($project->getSoulteVise());
$this->em->persist($etapEntity5);
$this->em->flush();
}
$etapEntity9 = $this->em->getRepository(Etap9::class)->findOneBy(['project'=>$project->getId()]);
if($etapEntity9){
$etapEntity9->setTarifFit($project->getTarifVise());
$this->em->persist($etapEntity9);
$this->em->flush();
}
}
private function setEntityEtap($project,$etap,$status,$className){
$etapEntity = new $className();
$etapEntity->setProject($project);
$etapEntity->setEtap($etap);
$etapEntity->setStatus($status);
$this->em->persist($etapEntity);
$this->em->flush();
}
public function paginate($request,$user,$isArchive=false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$status = $request->get('statusProject');
$statusAdministratifProject = $request->get('statusAdministratifProject');
$statusTrackerProject = $request->get('statusTrackerProject');
$typologieProject = $request->get('typologieProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$constructeurEpcProject = $request->get('constructeurEpcProject');
$constructeurInstallateurProject = $request->get('constructeurInstallateurProject');
$constructeurCharpentierProject = $request->get('constructeurCharpentierProject');
$constructeurNotaireProject = $request->get('constructeurNotaireProject');
$intervenantProject = $request->get('intervenantProject');
$stadeConstruction = $request->get('stadeConstruction');
$statusUrbanisme = $request->get('statusUrbanisme');
$statusFoncier1 = $request->get('statusFoncier1');
$statusFoncier2 = $request->get('statusFoncier2');
$statusFoncier3 = $request->get('statusFoncier3');
$entrepriseProject = $request->get('entrepriseProject');
$achatLocation = $request->get('achatLocation');
$spvsTab = [];
$roles = $user->getRoles();
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvProject' => $request->get('spvProject'),
'spvsTab' => $spvsTab,
'statusAdministratifProject' => $statusAdministratifProject,
'statusTrackerProject' => $statusTrackerProject,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurProject' => $constructeurProject,
'typologieProject' => $typologieProject,
'stadeConstruction' => $stadeConstruction,
'statusUrbanisme' => $statusUrbanisme,
'statusFoncier1' => $statusFoncier1,
'statusFoncier2' => $statusFoncier2,
'statusFoncier3' => $statusFoncier3,
'intervenantProject' => $intervenantProject,
'constructeurEpcProject' => $constructeurEpcProject,
'constructeurInstallateurProject' => $constructeurInstallateurProject,
'constructeurCharpentierProject' => $constructeurCharpentierProject,
'entrepriseProject' => $entrepriseProject,
'constructeurNotaireProject' => $constructeurNotaireProject,
'achatLocation' => $achatLocation
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->search($isArchive,$status,$user,$filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Project::class)->search($isArchive,$status,$user,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Project::class)->search($isArchive,$status,$user,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
$cats = $this->em->getRepository(EtapsCategory::class)->findAll();
foreach ($projects as $project) {
$action =
$this->twig->render(
'user/project/default/bouton.html.twig', array(
'project' => $project
));
$statut =
$this->twig->render(
'user/project/default/status.html.twig', array(
'status' => $project->getStatus()
));
$statut2 =
$this->twig->render(
'admin/project/default/status3.html.twig', array(
'status' => $this->getStatusCustom($project)
));
$statut3 =
$this->twig->render(
'admin/project/default/status3.html.twig', array(
'status' => $project->getStatusAdministratif()
));
$completude =
$this->twig->render(
'user/project/default/completude-global.html.twig', array(
'completude' => $this->etapsService->completudeValideDocumentEtapProject($project),
'cats' => $cats,
'project' => $project
));
$statutTracker =
$this->twig->render(
'admin/project/default/statusTracker.html.twig', array(
'status' => $project->getStatusTrackerActuel()
));
$commentaires = null;
if(count($project->getCommentProject2())>0) {
$commentaires .= $project->getCommentProject2()[0]->getComment();
}
$inputCheckbox =
$this->twig->render(
'admin/project/default/checkbox.html.twig', array(
'project' => $project,
'user' => $user
));
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
$datePdb = '-';
if($etap5 && $etap5->getDateExpirationPromesseBail()){
$datePdb = $etap5->getDateExpirationPromesseBail()->format('d/m/Y');
}
$output['data'][] = [
'responsive_id' => '',
'inputCheckbox' => $inputCheckbox,
'id' => $project->getId(),
'capacite' => $this->espaceNumber($project->getCapacite()),
'name' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getName(),'commentaires'=>$commentaires)),
'codeProject' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCodeProject())),
'spv' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getSpv() ? $project->getSpv()->getName() : '-')) ,
'entreprise' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getEntreprise() ? $project->getEntreprise()->getName() : ($project->getDeveloppeur() && $project->getDeveloppeur()->getEntreprise() ? $project->getDeveloppeur()->getEntreprise()->getName() : '-'))) ,
'status' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut)),
'status2' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut2)),
'createdAt' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCreatedAt()?$project->getCreatedAt()->format('d/m/Y'):'-')) ,
'archiveAt' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getArchiveAt()?$project->getArchiveAt()->format('d/m/Y'):'-')) ,
'commentArchive' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCommentArchive())) ,
'statusAdministratif' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut3)) ,
'statusTrackerActuel' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statutTracker)) ,
'completude' => $completude,
'datePdb' => $datePdb,
'typologieProject' => $project->getTypologieProject()?$project->getTypologieProject()->getName():'',
'achatLocation' => $project->getAchatLocation() == Project::ACHAT ? 'Achat' : 'Location',
'action' => $action
];
}
return $output;
}
public function espaceNumber($str){
$formattedNumber = $str;
if($str and is_numeric($str)){
if(strpos($str,'.') or strpos($str,',')){
if(strpos($str,'.')){
$formattedNumber = number_format($str, 3, '.', ' ');
}else{
$formattedNumber = number_format($str, 3, ',', ' ');
}
}else{
$formattedNumber = number_format($str, 0, '0', ' ');
}
}
return $formattedNumber;
}
public function paginateAdmin($request,$isArchive=false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$status = $request->get('statusProject');
$status2 = $request->get('status2Project');
$statusAdministratifProject = $request->get('statusAdministratifProject');
$statusTrackerProject = $request->get('statusTrackerProject');
$typologieProject = $request->get('typologieProject');
$spvProject = $request->get('spvProject');
$devProject = $request->get('devProject');
$entrepriseProject = $request->get('entrepriseProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurEpcProject = $request->get('constructeurEpcProject');
$constructeurInstallateurProject = $request->get('constructeurInstallateurProject');
$constructeurCharpentierProject = $request->get('constructeurCharpentierProject');
$constructeurNotaireProject = $request->get('constructeurNotaireProject');
$intervenantProject = $request->get('intervenantProject');
$stadeConstruction = $request->get('stadeConstruction');
$statusUrbanisme = $request->get('statusUrbanisme');
$statusFoncier1 = $request->get('statusFoncier1');
$statusFoncier2 = $request->get('statusFoncier2');
$statusFoncier3 = $request->get('statusFoncier3');
$achatLocation = $request->get('achatLocation');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'devProject' => $devProject,
'entrepriseProject' => $entrepriseProject,
'spvsTab' => $spvsTab,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurEpcProject' => $constructeurEpcProject,
'constructeurInstallateurProject' => $constructeurInstallateurProject,
'constructeurCharpentierProject' => $constructeurCharpentierProject,
'constructeurNotaireProject' => $constructeurNotaireProject,
'user' => $user,
'statusAdministratifProject' => $statusAdministratifProject,
'statusTrackerProject' => $statusTrackerProject,
'intervenantProject' => $intervenantProject,
'stadeConstruction' => $stadeConstruction,
'statusUrbanisme' => $statusUrbanisme,
'statusFoncier1' => $statusFoncier1,
'statusFoncier2' => $statusFoncier2,
'statusFoncier3' => $statusFoncier3,
'achatLocation' => $achatLocation,
'typologieProject' => $typologieProject
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,$filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
$cats = $this->em->getRepository(EtapsCategory::class)->findAll();
foreach ($projects as $project) {
$inputCheckbox =
$this->twig->render(
'admin/project/default/checkbox.html.twig', array(
'project' => $project,
'user' => $user
));
$action =
$this->twig->render(
'admin/project/default/bouton.html.twig', array(
'project' => $project,
'user' => $user
));
$statut =
$this->twig->render(
'admin/project/default/status.html.twig', array(
'status' => $project->getStatus()
));
$statut2 =
$this->twig->render(
'admin/project/default/status2.html.twig', array(
'status' => $this->getStatusCustom($project)
));
$statut3 =
$this->twig->render(
'admin/project/default/status3.html.twig', array(
'status' => $project->getStatusAdministratif()
));
$statutTracker =
$this->twig->render(
'admin/project/default/statusTracker.html.twig', array(
'status' => $project->getStatusTrackerActuel()
));
$completude =
$this->twig->render(
'user/project/default/completude-global.html.twig', array(
'completude' => $this->etapsService->completudeValideDocumentEtapProject($project),
'cats' => $cats,
'project' => $project
));
$commentaires = null;
if(count($project->getCommentProject2())>0) {
foreach ($project->getCommentProject2() as $commentaire) {
$commentaires .= $commentaire->getComment().'<br>';
}
}
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
$datePdb = '-';
if($etap5 && $etap5->getDateExpirationPromesseBail()){
$datePdb = $etap5->getDateExpirationPromesseBail()->format('d/m/Y');
}
$output['data'][] = [
'responsive_id' => '',
'inputCheckbox' => $inputCheckbox,
'id' => $project->getId(),
'capacite' => $this->espaceNumber($project->getCapacite()),
'name' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getName(),'commentaires'=>$commentaires)),
'codeProject' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCodeProject())),
'spv' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getSpv() ? $project->getSpv()->getName() : '-')) ,
'developpeur' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getDeveloppeur() ? $project->getDeveloppeur()->getFirstname().' '.$project->getDeveloppeur()->getLastname() : '-')) ,
'entreprise' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getEntreprise() ? $project->getEntreprise()->getName() : ($project->getDeveloppeur() && $project->getDeveloppeur()->getEntreprise() ? $project->getDeveloppeur()->getEntreprise()->getName() : '-'))) ,
'status' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut)),
'status2' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut2)),
'statusTrackerActuel' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statutTracker)),
'createdAt' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCreatedAt()?$project->getCreatedAt()->format('d/m/Y'):'-' )),
'archiveAt' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getArchiveAt()?$project->getArchiveAt()->format('d/m/Y'):'-' )),
'commentArchive' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCommentArchive())) ,
'statusAdministratif' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut3)) ,
'completude' => $completude,
'datePdb' => $datePdb,
'typologieProject' => $project->getTypologieProject()?$project->getTypologieProject()->getName():'',
'achatLocation' => $project->getAchatLocation() == Project::ACHAT ? 'Achat' : 'Location',
'action' => $action
];
}
return $output;
}
public function paginateGestionaire($request,$isArchive=false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$status = $request->get('statusProject');
$status2 = $request->get('status2Project');
$spvProject = $request->get('spvProject');
$devProject = $request->get('devProject');
$entrepriseProject = $request->get('entrepriseProject');
$statusAdministratifProject = $request->get('statusAdministratifProject');
$statusTrackerProject = $request->get('statusTrackerProject');
$typologieProject = $request->get('typologieProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$constructeurEpcProject = $request->get('constructeurEpcProject');
$constructeurInstallateurProject = $request->get('constructeurInstallateurProject');
$constructeurCharpentierProject = $request->get('constructeurCharpentierProject');
$constructeurNotaireProject = $request->get('constructeurNotaireProject');
$stadeConstruction = $request->get('stadeConstruction');
$statusFoncier1 = $request->get('statusFoncier1');
$statusFoncier2 = $request->get('statusFoncier2');
$statusFoncier3 = $request->get('statusFoncier3');
$statusUrbanisme = $request->get('statusUrbanisme');
$achatLocation = $request->get('achatLocation');
$filters = [
'query' => trim(@$search['value']),
'devProject' => $devProject,
'entrepriseProject' => $entrepriseProject,
'statusAdministratifProject' => $statusAdministratifProject,
'statusTrackerProject' => $statusTrackerProject,
'typologieProject' => $typologieProject,
'stadeConstruction' => $stadeConstruction,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'statusUrbanisme' => $statusUrbanisme,
'statusFoncier1' => $statusFoncier1,
'statusFoncier2' => $statusFoncier2,
'statusFoncier3' => $statusFoncier3,
'constructeurProject' => $constructeurProject,
'constructeurEpcProject' => $constructeurEpcProject,
'constructeurInstallateurProject' => $constructeurInstallateurProject,
'constructeurCharpentierProject' => $constructeurCharpentierProject,
'constructeurNotaireProject' => $constructeurNotaireProject,
'achatLocation' => $achatLocation,
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,$filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
$cats = $this->em->getRepository(EtapsCategory::class)->findAll();
foreach ($projects as $project) {
$action =
$this->twig->render(
'gestionnaire-financier/project/default/bouton.html.twig', array(
'project' => $project
));
$statut =
$this->twig->render(
'gestionnaire-financier/project/default/status.html.twig', array(
'status' => $project->getStatus()
));
$statut2 =
$this->twig->render(
'admin/project/default/status2.html.twig', array(
'status' => $this->getStatusCustom($project)
));
$statut3 =
$this->twig->render(
'admin/project/default/status3.html.twig', array(
'status' => $project->getStatusAdministratif()
));
$completude =
$this->twig->render(
'user/project/default/completude-global.html.twig', array(
'completude' => $this->etapsService->completudeValideDocumentEtapProject($project),
'cats' => $cats,
'project' => $project
));
$statutTracker =
$this->twig->render(
'admin/project/default/statusTracker.html.twig', array(
'status' => $project->getStatusTrackerActuel()
));
$commentaires = null;
if(count($project->getCommentProject2())>0) {
foreach ($project->getCommentProject2() as $commentaire) {
$commentaires .= $project->getCommentProject2()[0]->getComment();
}
}
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
$datePdb = '-';
if($etap5 && $etap5->getDateExpirationPromesseBail()){
$datePdb = $etap5->getDateExpirationPromesseBail()->format('d/m/Y');
}
$output['data'][] = [
'responsive_id' => '',
'id' => $project->getId(),
'capacite' => $this->espaceNumber($project->getCapacite()),
'name' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getName(),'commentaires'=>$commentaires)),
'codeProject' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCodeProject())),
'spv' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getSpv() ? $project->getSpv()->getName() : '-')) ,
'developpeur' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getDeveloppeur() ? $project->getDeveloppeur()->getFirstname().' '.$project->getDeveloppeur()->getLastname() : '-' )),
'entreprise' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getEntreprise() ? $project->getEntreprise()->getName() : ($project->getDeveloppeur() && $project->getDeveloppeur()->getEntreprise() ? $project->getDeveloppeur()->getEntreprise()->getName() : '-'))) ,
'status' =>$this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=> $statut)),
'status2' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut2)),
'createdAt' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCreatedAt()?$project->getCreatedAt()->format('d/m/Y'):'-')) ,
'archiveAt' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getArchiveAt()?$project->getArchiveAt()->format('d/m/Y'):'-')) ,
'commentArchive' => $this->twig->render('gestionnaire-financier/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCommentArchive())) ,
'statusAdministratif' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut3)) ,
'statusTrackerActuel' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statutTracker)) ,
'completude' => $completude,
'datePdb' => $datePdb,
'typologieProject' => $project->getTypologieProject()?$project->getTypologieProject()->getName():'',
'achatLocation' => $project->getAchatLocation() == Project::ACHAT ? 'Achat' : 'Location',
'action' => $action
];
}
return $output;
}
public function getStatusCustom($project){
if($this->em->getRepository(Project::class)->searchByCustomStatus($project,Project::STATUS_CUSTOM_EN_ATTENT)){
return Project::STATUS_CUSTOM_EN_ATTENT;
}elseif($this->em->getRepository(Project::class)->searchByCustomStatus($project,Project::STATUS_CUSTOM_EXPLOITATION)){
return Project::STATUS_CUSTOM_EXPLOITATION;
}elseif($this->em->getRepository(Project::class)->searchByCustomStatus($project,Project::STATUS_CUSTOM_CONSTRUCTION)){
return Project::STATUS_CUSTOM_CONSTRUCTION;
}elseif($this->em->getRepository(Project::class)->searchByCustomStatus($project,Project::STATUS_CUSTOM_DEVELOPPEMENT)){
return Project::STATUS_CUSTOM_DEVELOPPEMENT;
}else{
return 0;
}
}
public function getStatusCustomString($project){
$status = $this->getStatusCustom($project);
if($status == Project::STATUS_CUSTOM_EN_ATTENT){
return 'En attente de validation';
}elseif($status == Project::STATUS_CUSTOM_EXPLOITATION){
return 'Exploitation';
}elseif($status == Project::STATUS_CUSTOM_CONSTRUCTION){
return 'Construction';
}elseif($status == Project::STATUS_CUSTOM_DEVELOPPEMENT){
return 'Développement';
}else{
return '';
}
}
public function getStatusAdministratifString($project){
$status = $project->getStatusAdministratif();
if($status == Project::STATUS_CUSTOM_EN_ATTENT){
return 'En attente de validation';
}elseif($status == Project::STATUS_CUSTOM_EXPLOITATION){
return 'Exploitation';
}elseif($status == Project::STATUS_CUSTOM_CONSTRUCTION){
return 'Construction';
}elseif($status == Project::STATUS_CUSTOM_DEVELOPPEMENT){
return 'Développement';
}else{
return '';
}
}
public function paginateHistory($request,$project){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$role = $request->get('role');
$date = $request->get('projectDate');
$filters = [
'query' => trim(@$search['value'])
];
$historys= $this->em->getRepository(\App\Entity\HistoryProject::class)->search($role,$date,$project,$filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\HistoryProject::class)->search($role,$date,$project,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\HistoryProject::class)->search($role,$date,$project,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
foreach ($historys as $history) {
$output['data'][] = [
'responsive_id' => '',
'id' => $history->getId(),
'action' => $history->getAction(),
'user' => $history->getUser()?$history->getUser()->getFirstname().' '.$history->getUser()->getLastname() .' ('.$history->getUser()->getRoleString().')' : '-',
'createdAt' => $history->getCreatedAt() ? $intl->format($history->getCreatedAt()).' '.$history->getCreatedAt()->format('H:i:s') :' - '
];
}
return $output;
}
public function kpiSvpProjectAdmin($request){
$spvTabKpi = $request->get('spvTabKpi');
$projectsStat = $this->em->getRepository(Project::class)->kpiProjectBySpv($spvTabKpi);
$projectsStatTotal = $this->em->getRepository(Project::class)->kpiProjectBySpvTotal($spvTabKpi);
$array =[];
$arrayTotal = [];
$i = 0;
$nbrProjectTotal = 0;
$sommeCapaciteTotal = 0;
$nbrProjectDeveloppementTotal = 0;
$sommeCapaciteDeveloppementTotal = 0;
$nbrProjectConstructionTotal = 0;
$sommeCapaciteConstructionTotal = 0;
$nbrProjectExploitationTotal = 0;
$sommeCapaciteExploitationTotal = 0;
foreach ($projectsStat as $projectStat){
$array[$i]['name'] = $projectStat['name'];
$array[$i]['nbrProject'] = (int)$projectStat['nbrProject'];
$array[$i]['moyenTarif'] = (float)$projectStat['moyenTarif'];
$array[$i]['sommeCapacite'] = (float)$projectStat['sommeCapacite'];
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectBySpvAndStatus($projectStat['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$array[$i]['nbrProjectDeveloppement'] = (int)$projectDeveloppement['nbrProjectBySpv'];
$array[$i]['sommeCapaciteDeveloppement'] = (float)$projectDeveloppement['sommeCapaciteBySpv'];
$array[$i]['valeurDeveloppement'] = ((float)$projectDeveloppement['nbrProjectBySpv'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectBySpvAndStatus($projectStat['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$array[$i]['nbrProjectConstruction'] = (int)$projectConstruction['nbrProjectBySpv'];
$array[$i]['sommeCapaciteConstruction'] = (float)$projectConstruction['sommeCapaciteBySpv'];
$array[$i]['valeurConstruction'] = ((float)$projectConstruction['nbrProjectBySpv'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectBySpvAndStatus($projectStat['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$array[$i]['nbrProjectExploitation'] = (int)$projectExploitation['nbrProjectBySpv'];
$array[$i]['sommeCapaciteExploitation'] = (float)$projectExploitation['sommeCapaciteBySpv'];
$array[$i]['valeurExploitation'] = ((float)$projectExploitation['nbrProjectBySpv'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$i++;
}
foreach ($projectsStatTotal as $projectStatTotal){
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectBySpvAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$nbrProjectDeveloppementTotal += (int)$projectDeveloppement['nbrProjectBySpv'];
$sommeCapaciteDeveloppementTotal += (float)$projectDeveloppement['sommeCapaciteBySpv'];
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectBySpvAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$nbrProjectConstructionTotal += (int)$projectConstruction['nbrProjectBySpv'];
$sommeCapaciteConstructionTotal += (float)$projectConstruction['sommeCapaciteBySpv'];
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectBySpvAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$nbrProjectExploitationTotal += (int)$projectExploitation['nbrProjectBySpv'];
$sommeCapaciteExploitationTotal += (float)$projectExploitation['sommeCapaciteBySpv'];
}
$nbrProjectTotal += (int)$projectStatTotal['nbrProject'];
$sommeCapaciteTotal += (float)$projectStatTotal['sommeCapacite'];
}
$arrayTotal['nbrProjectTotal'] = $nbrProjectTotal;
$arrayTotal['sommeCapaciteTotal'] = $sommeCapaciteTotal;
$arrayTotal['nbrProjectDeveloppementTotal'] = $nbrProjectDeveloppementTotal;
$arrayTotal['sommeCapaciteDeveloppementTotal'] = $sommeCapaciteDeveloppementTotal;
$arrayTotal['valeurDeveloppementTotal'] = $nbrProjectTotal ? ($nbrProjectDeveloppementTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectConstructionTotal'] = $nbrProjectConstructionTotal;
$arrayTotal['sommeCapaciteConstructionTotal'] = $sommeCapaciteConstructionTotal;
$arrayTotal['valeurConstructionTotal'] = $nbrProjectTotal ? ($nbrProjectConstructionTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectExploitationTotal'] = $nbrProjectExploitationTotal;
$arrayTotal['sommeCapaciteExploitationTotal'] = $sommeCapaciteExploitationTotal;
$arrayTotal['valeurExploitationTotal'] = $nbrProjectTotal ? ($nbrProjectExploitationTotal / $nbrProjectTotal) *100 : 0;
$spvs = $this->em->getRepository(Spv::class)->getSpvEnabled();
return ['arrays'=>$array,'arrayTotal'=>$arrayTotal,'spvs'=>$spvs,'name'=>'Données par SPV','name2'=>'SPV'];
}
public function kpiDevProjectAdmin($request){
$devTabKpi = $request->get('devTabKpi');
$projectsStat = $this->em->getRepository(Project::class)->kpiProjectByDev($devTabKpi);
$projectsStatTotal = $this->em->getRepository(Project::class)->kpiProjectByDevTotal();
$array =[];
$arrayTotal = [];
$i = 0;
$nbrProjectTotal = 0;
$sommeCapaciteTotal = 0;
$nbrProjectDeveloppementTotal = 0;
$sommeCapaciteDeveloppementTotal = 0;
$nbrProjectConstructionTotal = 0;
$sommeCapaciteConstructionTotal = 0;
$nbrProjectExploitationTotal = 0;
$sommeCapaciteExploitationTotal = 0;
foreach ($projectsStat as $projectStat){
$array[$i]['name'] = $projectStat['name'];
$array[$i]['nbrProject'] = (int)$projectStat['nbrProject'];
$array[$i]['moyenTarif'] = (float)$projectStat['moyenTarif'];
$array[$i]['sommeCapacite'] = (float)$projectStat['sommeCapacite'];
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByDevAndStatus($projectStat['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$array[$i]['nbrProjectDeveloppement'] = (int)$projectDeveloppement['nbrProjectByDev'];
$array[$i]['sommeCapaciteDeveloppement'] = (float)$projectDeveloppement['sommeCapaciteByDev'];
$array[$i]['valeurDeveloppement'] = ((float)$projectDeveloppement['nbrProjectByDev'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByDevAndStatus($projectStat['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$array[$i]['nbrProjectConstruction'] = (int)$projectConstruction['nbrProjectByDev'];
$array[$i]['sommeCapaciteConstruction'] = (float)$projectConstruction['sommeCapaciteByDev'];
$array[$i]['valeurConstruction'] = ((float)$projectConstruction['nbrProjectByDev'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByDevAndStatus($projectStat['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$array[$i]['nbrProjectExploitation'] = (int)$projectExploitation['nbrProjectByDev'];
$array[$i]['sommeCapaciteExploitation'] = (float)$projectExploitation['sommeCapaciteByDev'];
$array[$i]['valeurExploitation'] = ((float)$projectExploitation['nbrProjectByDev'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$i++;
}
foreach ($projectsStatTotal as $projectStatTotal){
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByDevAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$nbrProjectDeveloppementTotal += (int)$projectDeveloppement['nbrProjectByDev'];
$sommeCapaciteDeveloppementTotal += (float)$projectDeveloppement['sommeCapaciteByDev'];
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByDevAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$nbrProjectConstructionTotal += (int)$projectConstruction['nbrProjectByDev'];
$sommeCapaciteConstructionTotal += (float)$projectConstruction['sommeCapaciteByDev'];
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByDevAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$nbrProjectExploitationTotal += (int)$projectExploitation['nbrProjectByDev'];
$sommeCapaciteExploitationTotal += (float)$projectExploitation['sommeCapaciteByDev'];
}
$nbrProjectTotal += (int)$projectStatTotal['nbrProject'];
$sommeCapaciteTotal += (float)$projectStatTotal['sommeCapacite'];
}
$arrayTotal['nbrProjectTotal'] = $nbrProjectTotal;
$arrayTotal['sommeCapaciteTotal'] = $sommeCapaciteTotal;
$arrayTotal['nbrProjectDeveloppementTotal'] = $nbrProjectDeveloppementTotal;
$arrayTotal['sommeCapaciteDeveloppementTotal'] = $sommeCapaciteDeveloppementTotal;
$arrayTotal['valeurDeveloppementTotal'] = $nbrProjectTotal ? ($nbrProjectDeveloppementTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectConstructionTotal'] = $nbrProjectConstructionTotal;
$arrayTotal['sommeCapaciteConstructionTotal'] = $sommeCapaciteConstructionTotal;
$arrayTotal['valeurConstructionTotal'] = $nbrProjectTotal ? ($nbrProjectConstructionTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectExploitationTotal'] = $nbrProjectExploitationTotal;
$arrayTotal['sommeCapaciteExploitationTotal'] = $sommeCapaciteExploitationTotal;
$arrayTotal['valeurExploitationTotal'] = $nbrProjectTotal ? ($nbrProjectExploitationTotal / $nbrProjectTotal) *100 : 0;
$devs = $this->em->getRepository(User::class)->getUserByRole('ROLE_DEV');
return ['arrays'=>$array,'arrayTotal'=>$arrayTotal,'devs'=>$devs,'name'=>'Données par développeur','name2'=>'Développeur'];
}
public function kpiTypologieProjectProjectAdmin($request){
$typologieProjectTabKpi = $request->get('typologieProjectTabKpi');
$projectsStat = $this->em->getRepository(Project::class)->kpiProjectByTypologieProject($typologieProjectTabKpi);
$projectsStatTotal = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectTotal();
$array =[];
$arrayTotal = [];
$i = 0;
$nbrProjectTotal = 0;
$sommeCapaciteTotal = 0;
$nbrProjectDeveloppementTotal = 0;
$sommeCapaciteDeveloppementTotal = 0;
$nbrProjectConstructionTotal = 0;
$sommeCapaciteConstructionTotal = 0;
$nbrProjectExploitationTotal = 0;
$sommeCapaciteExploitationTotal = 0;
foreach ($projectsStat as $projectStat){
$array[$i]['name'] = $projectStat['name'];
$array[$i]['nbrProject'] = (int)$projectStat['nbrProject'];
$array[$i]['moyenTarif'] = (float)$projectStat['moyenTarif'];
$array[$i]['sommeCapacite'] = (float)$projectStat['sommeCapacite'];
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectAndStatus($projectStat['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$array[$i]['nbrProjectDeveloppement'] = (int)$projectDeveloppement['nbrProjectByTypologieProject'];
$array[$i]['sommeCapaciteDeveloppement'] = (float)$projectDeveloppement['sommeCapaciteByTypologieProject'];
$array[$i]['valeurDeveloppement'] = ((float)$projectDeveloppement['nbrProjectByTypologieProject'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectAndStatus($projectStat['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$array[$i]['nbrProjectConstruction'] = (int)$projectConstruction['nbrProjectByTypologieProject'];
$array[$i]['sommeCapaciteConstruction'] = (float)$projectConstruction['sommeCapaciteByTypologieProject'];
$array[$i]['valeurConstruction'] = ((float)$projectConstruction['nbrProjectByTypologieProject'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectAndStatus($projectStat['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$array[$i]['nbrProjectExploitation'] = (int)$projectExploitation['nbrProjectByTypologieProject'];
$array[$i]['sommeCapaciteExploitation'] = (float)$projectExploitation['sommeCapaciteByTypologieProject'];
$array[$i]['valeurExploitation'] = ((float)$projectExploitation['nbrProjectByTypologieProject'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$i++;
}
foreach ($projectsStatTotal as $projectStatTotal){
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$nbrProjectDeveloppementTotal += (int)$projectDeveloppement['nbrProjectByTypologieProject'];
$sommeCapaciteDeveloppementTotal += (float)$projectDeveloppement['sommeCapaciteByTypologieProject'];
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$nbrProjectConstructionTotal += (int)$projectConstruction['nbrProjectByTypologieProject'];
$sommeCapaciteConstructionTotal += (float)$projectConstruction['sommeCapaciteByTypologieProject'];
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByTypologieProjectAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$nbrProjectExploitationTotal += (int)$projectExploitation['nbrProjectByTypologieProject'];
$sommeCapaciteExploitationTotal += (float)$projectExploitation['sommeCapaciteByTypologieProject'];
}
$nbrProjectTotal += (int)$projectStatTotal['nbrProject'];
$sommeCapaciteTotal += (float)$projectStatTotal['sommeCapacite'];
}
$arrayTotal['nbrProjectTotal'] = $nbrProjectTotal;
$arrayTotal['sommeCapaciteTotal'] = $sommeCapaciteTotal;
$arrayTotal['nbrProjectDeveloppementTotal'] = $nbrProjectDeveloppementTotal;
$arrayTotal['sommeCapaciteDeveloppementTotal'] = $sommeCapaciteDeveloppementTotal;
$arrayTotal['valeurDeveloppementTotal'] = $nbrProjectTotal ? ($nbrProjectDeveloppementTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectConstructionTotal'] = $nbrProjectConstructionTotal;
$arrayTotal['sommeCapaciteConstructionTotal'] = $sommeCapaciteConstructionTotal;
$arrayTotal['valeurConstructionTotal'] = $nbrProjectTotal ? ($nbrProjectConstructionTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectExploitationTotal'] = $nbrProjectExploitationTotal;
$arrayTotal['sommeCapaciteExploitationTotal'] = $sommeCapaciteExploitationTotal;
$arrayTotal['valeurExploitationTotal'] = $nbrProjectTotal ? ($nbrProjectExploitationTotal / $nbrProjectTotal) *100 : 0;
$typologieProjects = $this->em->getRepository(TypologieProject::class)->findAll();
return ['arrays'=>$array,'arrayTotal'=>$arrayTotal,'typologieProjects'=>$typologieProjects,'name'=>'Données par type de projet','name2'=>'Type'];
}
public function kpiFamilleProjectProjectAdmin($request){
$familleProjectTabKpi = $request->get('familleProjectTabKpi');
$projectsStat = $this->em->getRepository(Project::class)->kpiProjectByFamilleProject($familleProjectTabKpi);
$projectsStatTotal = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectTotal();
$array =[];
$arrayTotal = [];
$i = 0;
$nbrProjectTotal = 0;
$sommeCapaciteTotal = 0;
$nbrProjectDeveloppementTotal = 0;
$sommeCapaciteDeveloppementTotal = 0;
$nbrProjectConstructionTotal = 0;
$sommeCapaciteConstructionTotal = 0;
$nbrProjectExploitationTotal = 0;
$sommeCapaciteExploitationTotal = 0;
foreach ($projectsStat as $projectStat){
$array[$i]['name'] = $projectStat['name'];
$array[$i]['nbrProject'] = (int)$projectStat['nbrProject'];
$array[$i]['moyenTarif'] = (float)$projectStat['moyenTarif'];
$array[$i]['sommeCapacite'] = (float)$projectStat['sommeCapacite'];
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectAndStatus($projectStat['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$array[$i]['nbrProjectDeveloppement'] = (int)$projectDeveloppement['nbrProjectByFamilleProject'];
$array[$i]['sommeCapaciteDeveloppement'] = (float)$projectDeveloppement['sommeCapaciteByFamilleProject'];
$array[$i]['valeurDeveloppement'] = ((float)$projectDeveloppement['nbrProjectByFamilleProject'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectAndStatus($projectStat['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$array[$i]['nbrProjectConstruction'] = (int)$projectConstruction['nbrProjectByFamilleProject'];
$array[$i]['sommeCapaciteConstruction'] = (float)$projectConstruction['sommeCapaciteByFamilleProject'];
$array[$i]['valeurConstruction'] = ((float)$projectConstruction['nbrProjectByFamilleProject'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectAndStatus($projectStat['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$array[$i]['nbrProjectExploitation'] = (int)$projectExploitation['nbrProjectByFamilleProject'];
$array[$i]['sommeCapaciteExploitation'] = (float)$projectExploitation['sommeCapaciteByFamilleProject'];
$array[$i]['valeurExploitation'] = ((float)$projectExploitation['nbrProjectByFamilleProject'] / (float) $projectStat['nbrProject'] )* 100 ;
}
$i++;
}
foreach ($projectsStatTotal as $projectStatTotal){
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$nbrProjectDeveloppementTotal += (int)$projectDeveloppement['nbrProjectByFamilleProject'];
$sommeCapaciteDeveloppementTotal += (float)$projectDeveloppement['sommeCapaciteByFamilleProject'];
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$nbrProjectConstructionTotal += (int)$projectConstruction['nbrProjectByFamilleProject'];
$sommeCapaciteConstructionTotal += (float)$projectConstruction['sommeCapaciteByFamilleProject'];
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByFamilleProjectAndStatus($projectStatTotal['id'],Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$nbrProjectExploitationTotal += (int)$projectExploitation['nbrProjectByFamilleProject'];
$sommeCapaciteExploitationTotal += (float)$projectExploitation['sommeCapaciteByFamilleProject'];
}
$nbrProjectTotal += (int)$projectStatTotal['nbrProject'];
$sommeCapaciteTotal += (float)$projectStatTotal['sommeCapacite'];
$i++;
}
$arrayTotal['nbrProjectTotal'] = $nbrProjectTotal;
$arrayTotal['sommeCapaciteTotal'] = $sommeCapaciteTotal;
$arrayTotal['nbrProjectDeveloppementTotal'] = $nbrProjectDeveloppementTotal;
$arrayTotal['sommeCapaciteDeveloppementTotal'] = $sommeCapaciteDeveloppementTotal;
$arrayTotal['valeurDeveloppementTotal'] = $nbrProjectTotal ? ($nbrProjectDeveloppementTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectConstructionTotal'] = $nbrProjectConstructionTotal;
$arrayTotal['sommeCapaciteConstructionTotal'] = $sommeCapaciteConstructionTotal;
$arrayTotal['valeurConstructionTotal'] = $nbrProjectTotal ? ($nbrProjectConstructionTotal / $nbrProjectTotal) *100 : 0;
$arrayTotal['nbrProjectExploitationTotal'] = $nbrProjectExploitationTotal;
$arrayTotal['sommeCapaciteExploitationTotal'] = $sommeCapaciteExploitationTotal;
$arrayTotal['valeurExploitationTotal'] = $nbrProjectTotal ? ($nbrProjectExploitationTotal / $nbrProjectTotal) *100 : 0;
$familleProjects = $this->em->getRepository(FamilleProject::class)->findAll();
return ['arrays'=>$array,'arrayTotal'=>$arrayTotal,'familleProjects'=>$familleProjects,'name'=>'Données par famille de projet','name2'=>'Famille du projet'];
}
public function kpiStatusProjectAdmin($request){
$array =[];
$totalNbr = 0;
$totalCapacite = 0;
$projectDeveloppement = $this->em->getRepository(Project::class)->kpiProjectByStatus(Project::STATUS_CUSTOM_DEVELOPPEMENT);
if($projectDeveloppement){
$array['nbrProjectDeveloppement'] = (int)$projectDeveloppement['nbrProjectByStatus'];
$array['sommeCapaciteDeveloppement'] = (float)$projectDeveloppement['sommeCapaciteByStatus'];
$totalNbr += (int)$projectDeveloppement['nbrProjectByStatus'];
$totalCapacite += (float)$projectDeveloppement['sommeCapaciteByStatus'];
}
$projectConstruction = $this->em->getRepository(Project::class)->kpiProjectByStatus(Project::STATUS_CUSTOM_CONSTRUCTION);
if($projectConstruction){
$array['nbrProjectConstruction'] = (int)$projectConstruction['nbrProjectByStatus'];
$array['sommeCapaciteConstruction'] = (float)$projectConstruction['sommeCapaciteByStatus'];
$totalNbr += (int)$projectConstruction['nbrProjectByStatus'];
$totalCapacite += (float)$projectConstruction['sommeCapaciteByStatus'];
}
$projectExploitation = $this->em->getRepository(Project::class)->kpiProjectByStatus(Project::STATUS_CUSTOM_EXPLOITATION);
if($projectExploitation){
$array['nbrProjectExploitation'] = (int)$projectExploitation['nbrProjectByStatus'];
$array['sommeCapaciteExploitation'] = (float)$projectExploitation['sommeCapaciteByStatus'];
$totalNbr += (int)$projectExploitation['nbrProjectByStatus'];
$totalCapacite += (float)$projectExploitation['sommeCapaciteByStatus'];
}
$array['totalNbr'] = $totalNbr;
$array['totalCapacite'] = $totalCapacite;
return $array;
}
public function getProjectByRequest($request,$isArchive = false){
$spvProject = $request->get('spvProject');
$search = $request->get('search');
$status = $request->get('btnStatusTab');
$user = $this->security->getUser();
$dev = null;
$epc = null;
if(in_array('ROLE_DEV',$user->getRoles())){
$dev = $user;
}
if(in_array('ROLE_EPC',$user->getRoles())){
$epc = $user;
}
$user = $this->security->getUser();
$projects= $this->em->getRepository(\App\Entity\Project::class)->getProjectsGlobal($isArchive,$spvProject,$search,$dev,$epc,$status,$user);
return $projects;
}
public function getProjectByRequestSelectAll($request,$isArchive = false){
$user = $this->security->getUser();
$roles = $user->getRoles();
if (in_array("ROLE_DEV", $roles) or in_array("ROLE_EPC", $roles) or in_array("ROLE_RESPONSABLE", $roles)) {
$search = $request->get('search');
$status = $request->get('statusProject');
$statusAdministratifProject = $request->get('statusAdministratifProject');
$statusTrackerProject = $request->get('statusTrackerProject');
$typologieProject = $request->get('typologieProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$constructeurEpcProject = $request->get('constructeurEpcProject');
$constructeurInstallateurProject = $request->get('constructeurInstallateurProject');
$constructeurCharpentierProject = $request->get('constructeurCharpentierProject');
$constructeurNotaireProject = $request->get('constructeurNotaireProject');
$stadeConstruction = $request->get('stadeConstruction');
$statusUrbanisme = $request->get('statusUrbanisme');
$statusFoncier1 = $request->get('statusFoncier1');
$statusFoncier2 = $request->get('statusFoncier2');
$statusFoncier3 = $request->get('statusFoncier3');
$entrepriseProject = $request->get('entrepriseProject');
$achatLocation = $request->get('achatLocation');
$filters = [
'query' => trim(@$search['value']),
'spvProject' => $request->get('spvProject'),
'statusAdministratifProject' => $statusAdministratifProject,
'statusTrackerProject' => $statusTrackerProject,
'typologieProject' => $typologieProject,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurProject' => $constructeurProject,
'constructeurEpcProject' => $constructeurEpcProject,
'constructeurInstallateurProject' => $constructeurInstallateurProject,
'constructeurCharpentierProject' => $constructeurCharpentierProject,
'constructeurNotaireProject' => $constructeurNotaireProject,
'stadeConstruction' => $stadeConstruction,
'statusUrbanisme' => $statusUrbanisme,
'statusFoncier1' => $statusFoncier1,
'statusFoncier2' => $statusFoncier2,
'statusFoncier3' => $statusFoncier3,
'entrepriseProject' => $entrepriseProject,
'achatLocation' => $achatLocation,
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->search($isArchive,$status,$user,$filters);
}else{
$search = $request->get('search');
$status = $request->get('statusProject');
$status2 = $request->get('status2Project');
$statusAdministratifProject = $request->get('statusAdministratifProject');
$spvProject = $request->get('spvProject');
$devProject = $request->get('devProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$statusTrackerProject = $request->get('statusTrackerProject');
$typologieProject = $request->get('typologieProject');
$constructeurEpcProject = $request->get('constructeurEpcProject');
$constructeurInstallateurProject = $request->get('constructeurInstallateurProject');
$constructeurCharpentierProject = $request->get('constructeurCharpentierProject');
$constructeurNotaireProject = $request->get('constructeurNotaireProject');
$stadeConstruction = $request->get('stadeConstruction');
$statusUrbanisme = $request->get('statusUrbanisme');
$statusFoncier1 = $request->get('statusFoncier1');
$statusFoncier2 = $request->get('statusFoncier2');
$statusFoncier3 = $request->get('statusFoncier3');
$entrepriseProject = $request->get('entrepriseProject');
$achatLocation = $request->get('achatLocation');
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'devProject' => $devProject,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurProject' => $constructeurProject,
'spvsTab' => $spvsTab,
'user' => $user,
'statusAdministratifProject' => $statusAdministratifProject,
'statusTrackerProject' => $statusTrackerProject,
'typologieProject' => $typologieProject,
'constructeurEpcProject' => $constructeurEpcProject,
'constructeurInstallateurProject' => $constructeurInstallateurProject,
'constructeurCharpentierProject' => $constructeurCharpentierProject,
'constructeurNotaireProject' => $constructeurNotaireProject,
'stadeConstruction' => $stadeConstruction,
'statusUrbanisme' => $statusUrbanisme,
'statusFoncier1' => $statusFoncier1,
'statusFoncier2' => $statusFoncier2,
'statusFoncier3' => $statusFoncier3,
'entrepriseProject' => $entrepriseProject,
'achatLocation' => $achatLocation,
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchAdmin($isArchive,$status,$status2,$spvProject,$filters);
}
return $projects;
}
public function duplicateProject($project,$name)
{
$projectExist = $this->em->getRepository(Project::class)->findOneBy(['name'=>$name]);
if($projectExist){
return array(
'erreur' => 'Il existe déjà un projet avec ce nom',
'success' => false
);
}
$newProject = clone $project;
$newProject->setName($name);
$newProject->setCreatedAt( new \DateTime());
$newProject->setToken( md5(uniqid()));
$newProject->setUserCreated( $this->security->getUser());
$this->em->persist($newProject);
$this->em->flush();
$commentsEtaps = $this->em->getRepository(CommentEtap::class)->findBy(['project'=>$project->getId()]);
foreach ($commentsEtaps as $commentsEtap){
$commentsEtapNew = clone $commentsEtap;
$commentsEtapNew->setProject($newProject);
$this->em->persist($commentsEtapNew);
$this->em->flush();
}
$etap0 = $this->em->getRepository(Etap0::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap0,$newProject);
$etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap1,$newProject);
$etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap2,$newProject);
$etap3 = $this->em->getRepository(Etap3::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap3,$newProject);
$etap4 = $this->em->getRepository(Etap4::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap4,$newProject);
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap5,$newProject);
$etap6 = $this->em->getRepository(Etap6::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap6,$newProject);
$etap601 = $this->em->getRepository(Etap601::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap601,$newProject);
$etap602 = $this->em->getRepository(Etap602::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap602,$newProject);
$etap7 = $this->em->getRepository(Etap7::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap7,$newProject);
$etap71 = $this->em->getRepository(Etap71::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap71,$newProject);
$etap8 = $this->em->getRepository(Etap8::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap8,$newProject);
$etap80 = $this->em->getRepository(Etap80::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap80,$newProject);
$etap9 = $this->em->getRepository(Etap9::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap9,$newProject);
$etap10 = $this->em->getRepository(Etap10::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap10,$newProject);
$etap11 = $this->em->getRepository(Etap11::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap11,$newProject);
$etap12 = $this->em->getRepository(Etap12::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap12,$newProject);
$etap121 = $this->em->getRepository(Etap121::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap121,$newProject);
$etap13 = $this->em->getRepository(Etap13::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap13,$newProject);
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap14,$newProject);
$etap15 = $this->em->getRepository(Etap15::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap15,$newProject);
$etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap159,$newProject);
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap160,$newProject);
$etap161 = $this->em->getRepository(Etap161::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap161,$newProject);
$etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap16,$newProject);
$etap17 = $this->em->getRepository(Etap17::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap17,$newProject);
$etap171 = $this->em->getRepository(Etap171::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap171,$newProject);
$etap172 = $this->em->getRepository(Etap172::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap172,$newProject);
$etap173 = $this->em->getRepository(Etap173::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap173,$newProject);
$etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap174,$newProject);
$etap175 = $this->em->getRepository(Etap175::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap175,$newProject);
$etap18 = $this->em->getRepository(Etap18::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap18,$newProject);
$etap19 = $this->em->getRepository(Etap19::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap19,$newProject);
$etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap20,$newProject);
$etap201 = $this->em->getRepository(Etap201::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap201,$newProject);
$etap21 = $this->em->getRepository(Etap21::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap21,$newProject);
$etap22 = $this->em->getRepository(Etap22::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap22,$newProject);
$etap23 = $this->em->getRepository(Etap23::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap23,$newProject);
$etap24 = $this->em->getRepository(Etap24::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap24,$newProject);
$etap25 = $this->em->getRepository(Etap25::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap25,$newProject);
$etap26 = $this->em->getRepository(Etap26::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap26,$newProject);
$etap50 = $this->em->getRepository(Etap50::class)->findOneBy(['project' => $project->getId()]); $this->cloneEtap($etap50,$newProject);
return [
'success' => true
];
}
private function cloneEtap($etap,$newProject){
if($etap){
$newEtap = clone $etap;
$newEtap->setProject($newProject);
$this->em->persist($newEtap);
$this->em->flush();
}
}
public function paginateDocListProject($request,$isArchive=false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$spvProject = $request->get('spvProject');
$devProject = $request->get('devProject');
$docsProject = $request->get('docsProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'devProject' => $devProject,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurProject' => $constructeurProject,
'spvsTab' => $spvsTab,
'user' => $user
];
$projectsPreFilter = $this->em->getRepository(\App\Entity\Project::class)->searchByDocPreFilter($spvProject,$filters);
$array = [];
if($projectsPreFilter){
$array = [];
foreach ($projectsPreFilter as $projectPreFilter){
if($docsProject){
foreach ($docsProject as $docs){
$str = explode("__", $docs);
$etapNum = $str[0];
$fileName = $str[1];
$nameChampManyToMany = isset($str[2])?$str[2]:null;
$nameChampManyToMany2 = isset($str[3])?$str[3]:null;
$etapClass = 'App\\Entity\\Etap'.$etapNum;
$etap = $this->em->getRepository($etapClass)->findOneBy(['project'=>$projectPreFilter->getId()]);
if($etap){
$classMetadata = $this->em->getClassMetadata($etapClass);
if($nameChampManyToMany){
$associationMappings = $classMetadata->getAssociationMapping($nameChampManyToMany);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_MANY){
$nameGeteurFiled = 'get'.ucfirst($nameChampManyToMany);
$filedValue = $etap->{$nameGeteurFiled}();
if(!$filedValue->isEmpty()){
foreach ($filedValue as $item){
if($nameChampManyToMany2){
$nameGeteurFiledLevel2 = 'get'.ucfirst($nameChampManyToMany2);
$filedValueLevel2 = $item->{$nameGeteurFiledLevel2}();
if(!$filedValueLevel2->isEmpty()){
foreach ($filedValueLevel2 as $itemLevel2){
$nameGeteurFiled2 = 'get'.ucfirst($fileName);
$filedValue2 = $itemLevel2->{$nameGeteurFiled2}();
if(!$filedValue2->isEmpty()) {
foreach ($filedValue2 as $item2) {
if (!$item2->getIsArchived()) {
$array[$projectPreFilter->getId()] = $projectPreFilter;
}
}
}
}
}
}else{
$nameGeteurFiled2 = 'get'.ucfirst($fileName);
$filedValue2 = $item->{$nameGeteurFiled2}();
if(!$filedValue2->isEmpty()) {
foreach ($filedValue2 as $item2) {
if ($item2->getIsArchived()) {
} else {
$array[$projectPreFilter->getId()] = $projectPreFilter;
}
}
}
}
}
}
}
}else{
$associationMappings = $classMetadata->getAssociationMapping($fileName);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY){
$nameGeteurFiled = 'get'.ucfirst($fileName);
$filedValue = $etap->{$nameGeteurFiled}();
if(!$filedValue->isEmpty()){
foreach ($filedValue as $item){
if($item->getIsArchived()){
// condition is promesse de bail
if($fileName == 'filePromessebailMultiple'){
if($projectPreFilter->getFilePromessebail() and !$projectPreFilter->getFilePromessebail()->getIsArchived()){
$array[$projectPreFilter->getId()] = $projectPreFilter;
}
}
}else{
$array[$projectPreFilter->getId()] = $projectPreFilter;
}
}
}
}else{
$nameGeteurFiled = 'get'.ucfirst($fileName);
$filedValue = $etap->{$nameGeteurFiled}();
if($filedValue && !$filedValue->getIsArchived()){
$array[$projectPreFilter->getId()] = $projectPreFilter;
}
}
}
}
}
}
}
}
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchByIds($array, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Project::class)->searchByIds($array, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Project::class)->searchByIds($array, $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
$cats = $this->em->getRepository(EtapsCategory::class)->findAll();
foreach ($projects as $project) {
$statut3 =
$this->twig->render(
'admin/project/default/status3.html.twig', array(
'status' => $project->getStatusAdministratif()
));
$action = '<div class="btn-group"><input type="checkbox" class="selectProjectDocsExportation ml-2" value="'.$project->getToken().'" name="selectProjectDocsExportation[]"></div>';
$output['data'][] = [
'responsive_id' => '',
'id' => $project->getId(),
'capacite' => $this->espaceNumber($project->getCapacite()),
'name' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getName())),
'spv' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getSpv() ? $project->getSpv()->getName() : '-')) ,
'developpeur' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getDeveloppeur() ? $project->getDeveloppeur()->getFirstname().' '.$project->getDeveloppeur()->getLastname() : '-')) ,
'entreprise' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getEntreprise() ? $project->getEntreprise()->getName() : ($project->getDeveloppeur() && $project->getDeveloppeur()->getEntreprise() ? $project->getDeveloppeur()->getEntreprise()->getName() : '-'))) ,
'createdAt' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getCreatedAt()?$project->getCreatedAt()->format('d/m/Y'):'-' )),
'statusAdministratif' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$statut3)) ,
'action' => $action ,
];
}
return $output;
}
public function docsListProject($request){
$spvProject = $request->get('spvProject');
$docsProject = $request->get('docsProject');
$projectIds = $request->get('projectIds');
$devProject = $request->get('devProject');
$projects= $this->em->getRepository(\App\Entity\Project::class)->getProjectDocs($docsProject,$spvProject,$projectIds,$devProject);
if($projects){
$array = [];
foreach ($projects as $project){
if($docsProject){
$zip = new \ZipArchive();
$zipfile = $this->params->get('zips_directory') . '/project-' . $project->getName() .'.zip';
if (file_exists($zipfile)) unlink($zipfile);
if ($zip->open($zipfile, \ZipArchive::CREATE) === TRUE) {
foreach ($docsProject as $docs){
$str = explode("__", $docs);
$etapNum = $str[0];
$fileName = $str[1];
$nameChampManyToMany = isset($str[2])?$str[2]:null;
$nameChampManyToMany2 = isset($str[3])?$str[3]:null;
$etapClass = 'App\\Entity\\Etap'.$etapNum;
$etap = $this->em->getRepository($etapClass)->findOneBy(['project'=>$project->getId()]);
if($etap){
$classMetadata = $this->em->getClassMetadata($etapClass);
if($nameChampManyToMany){
$associationMappings = $classMetadata->getAssociationMapping($nameChampManyToMany);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_MANY){
$nameGeteurFiled = 'get'.ucfirst($nameChampManyToMany);
$filedValue = $etap->{$nameGeteurFiled}();
if(!$filedValue->isEmpty()){
foreach ($filedValue as $item){
if($nameChampManyToMany2){
$nameGeteurFiledLevel2 = 'get'.ucfirst($nameChampManyToMany2);
$filedValueLevel2 = $item->{$nameGeteurFiledLevel2}();
if(!$filedValueLevel2->isEmpty()){
foreach ($filedValueLevel2 as $itemLevel2){
$nameGeteurFiled2 = 'get'.ucfirst($fileName);
$filedValue2 = $itemLevel2->{$nameGeteurFiled2}();
if(!$filedValue2->isEmpty()) {
foreach ($filedValue2 as $item2) {
if (!$item2->getIsArchived()) {
$fileNameInZip = $item2->getNomenclature() ? $item2->getNomenclature() : $item2->getPath();
$filePath = $this->params->get('uploads_directory') . '/' . $item2->getPath();
// éviter l'écrasement quand plusieurs items etap26Champs ont un fichier de même nom
if($zip->locateName($fileNameInZip) !== false){
$ext = pathinfo($fileNameInZip, PATHINFO_EXTENSION);
$base = $ext ? substr($fileNameInZip, 0, -(strlen($ext)+1)) : $fileNameInZip;
$suffix = 1;
do {
$fileNameInZip = $base.'_'.$suffix.($ext ? '.'.$ext : '');
$suffix++;
} while($zip->locateName($fileNameInZip) !== false);
}
$zip->addFile($filePath, $fileNameInZip);
}
}
}
}
}
}else{
$nameGeteurFiled2 = 'get'.ucfirst($fileName);
$filedValue2 = $item->{$nameGeteurFiled2}();
if(!$filedValue2->isEmpty()) {
foreach ($filedValue2 as $item2) {
if ($item2->getIsArchived()) {
} else {
$fileNameInZip = $item2->getNomenclature() ? $item2->getNomenclature() : $item2->getPath();
$filePath = $this->params->get('uploads_directory') . '/' . $item2->getPath();
$zip->addFile($filePath, $fileNameInZip);
}
}
}
}
}
}
}
}else{
$associationMappings = $classMetadata->getAssociationMapping($fileName);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY){
$nameGeteurFiled = 'get'.ucfirst($fileName);
$filedValue = $etap->{$nameGeteurFiled}();
if(!$filedValue->isEmpty()){
foreach ($filedValue as $item){
if($item->getIsArchived()){
// condition is promesse de bail
if($fileName == 'filePromessebailMultiple'){
if($project->getFilePromessebail() and !$project->getFilePromessebail()->getIsArchived()){
$fileNameInZip = $project->getFilePromessebail()->getNomenclature()? $project->getFilePromessebail()->getNomenclature(): $project->getFilePromessebail()->getPath();
$filePath = $this->params->get('uploads_directory').'/'.$project->getFilePromessebail()->getPath();
$zip->addFile($filePath,$fileNameInZip);
}
}
}else{
$fileNameInZip = $item->getNomenclature()? $item->getNomenclature(): $item->getPath();
$filePath = $this->params->get('uploads_directory').'/'.$item->getPath();
$zip->addFile($filePath,$fileNameInZip);
}
}
}
}else{
$nameGeteurFiled = 'get'.ucfirst($fileName);
$filedValue = $etap->{$nameGeteurFiled}();
if($filedValue && !$filedValue->getIsArchived()){
$fileNameInZip = $filedValue->getNomenclature()? $filedValue->getNomenclature(): $filedValue->getPath();
$filePath = $this->params->get('uploads_directory').'/'.$filedValue->getPath();
$zip->addFile($filePath,$fileNameInZip);
}
}
}
}
}
$zip->close();
}
$array[$project->getName()]['path'] = $zipfile;
$array[$project->getName()]['name'] = $project->getName();
}
}
return $array ;
}
return 0 ;
}
public function docsListProjectAll($request){
$search = $request->get('search');
$spvProject = $request->get('spvProject');
$devProject = $request->get('devProject');
$docsProject = $request->get('docsProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'devProject' => $devProject,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurProject' => $constructeurProject,
'spvsTab' => $spvsTab,
'user' => $user
];
$projects = $this->em->getRepository(\App\Entity\Project::class)->searchByDocPreFilter($spvProject,$filters);
if($projects){
$array = [];
foreach ($projects as $project){
if($docsProject){
$zip = new \ZipArchive();
$zipfile = $this->params->get('zips_directory') . '/project-' . $project->getName() .'.zip';
if (file_exists($zipfile)) unlink($zipfile);
if ($zip->open($zipfile, \ZipArchive::CREATE) === TRUE) {
foreach ($docsProject as $docs){
$str = explode("__", $docs);
$etapNum = $str[0];
$fileName = $str[1];
$nameChampManyToMany = isset($str[2])?$str[2]:null;
$nameChampManyToMany2 = isset($str[3])?$str[3]:null;
$etapClass = 'App\\Entity\\Etap'.$etapNum;
$etap = $this->em->getRepository($etapClass)->findOneBy(['project'=>$project->getId()]);
if($etap){
$classMetadata = $this->em->getClassMetadata($etapClass);
if($nameChampManyToMany){
$associationMappings = $classMetadata->getAssociationMapping($nameChampManyToMany);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_MANY){
$nameGeteurFiled = 'get'.ucfirst($nameChampManyToMany);
$filedValue = $etap->{$nameGeteurFiled}();
if(!$filedValue->isEmpty()){
foreach ($filedValue as $item){
if($nameChampManyToMany2){
$nameGeteurFiledLevel2 = 'get'.ucfirst($nameChampManyToMany2);
$filedValueLevel2 = $item->{$nameGeteurFiledLevel2}();
if(!$filedValueLevel2->isEmpty()){
foreach ($filedValueLevel2 as $itemLevel2){
$nameGeteurFiled2 = 'get'.ucfirst($fileName);
$filedValue2 = $itemLevel2->{$nameGeteurFiled2}();
if(!$filedValue2->isEmpty()) {
foreach ($filedValue2 as $item2) {
if (!$item2->getIsArchived()) {
$fileNameInZip = $item2->getNomenclature() ? $item2->getNomenclature() : $item2->getPath();
$filePath = $this->params->get('uploads_directory') . '/' . $item2->getPath();
// éviter l'écrasement quand plusieurs items etap26Champs ont un fichier de même nom
if($zip->locateName($fileNameInZip) !== false){
$ext = pathinfo($fileNameInZip, PATHINFO_EXTENSION);
$base = $ext ? substr($fileNameInZip, 0, -(strlen($ext)+1)) : $fileNameInZip;
$suffix = 1;
do {
$fileNameInZip = $base.'_'.$suffix.($ext ? '.'.$ext : '');
$suffix++;
} while($zip->locateName($fileNameInZip) !== false);
}
$zip->addFile($filePath, $fileNameInZip);
}
}
}
}
}
}else{
$nameGeteurFiled2 = 'get'.ucfirst($fileName);
$filedValue2 = $item->{$nameGeteurFiled2}();
if(!$filedValue2->isEmpty()) {
foreach ($filedValue2 as $item2) {
if ($item2->getIsArchived()) {
} else {
$fileNameInZip = $item2->getNomenclature() ? $item2->getNomenclature() : $item2->getPath();
$filePath = $this->params->get('uploads_directory') . '/' . $item2->getPath();
$zip->addFile($filePath, $fileNameInZip);
}
}
}
}
}
}
}
}else{
$associationMappings = $classMetadata->getAssociationMapping($fileName);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY){
$nameGeteurFiled = 'get'.ucfirst($fileName);
$filedValue = $etap->{$nameGeteurFiled}();
if(!$filedValue->isEmpty()){
foreach ($filedValue as $item){
if($item->getIsArchived()){
// condition is promesse de bail
if($fileName == 'filePromessebailMultiple'){
if($project->getFilePromessebail() and !$project->getFilePromessebail()->getIsArchived()){
$fileNameInZip = $project->getFilePromessebail()->getNomenclature()? $project->getFilePromessebail()->getNomenclature(): $project->getFilePromessebail()->getPath();
$filePath = $this->params->get('uploads_directory').'/'.$project->getFilePromessebail()->getPath();
$zip->addFile($filePath,$fileNameInZip);
}
}
}else{
$fileNameInZip = $item->getNomenclature()? $item->getNomenclature(): $item->getPath();
$filePath = $this->params->get('uploads_directory').'/'.$item->getPath();
$zip->addFile($filePath,$fileNameInZip);
}
}
}
}else{
$nameGeteurFiled = 'get'.ucfirst($fileName);
$filedValue = $etap->{$nameGeteurFiled}();
if($filedValue && !$filedValue->getIsArchived()){
$fileNameInZip = $filedValue->getNomenclature()? $filedValue->getNomenclature(): $filedValue->getPath();
$filePath = $this->params->get('uploads_directory').'/'.$filedValue->getPath();
$zip->addFile($filePath,$fileNameInZip);
}
}
}
}
}
$zip->close();
}
$array[$project->getName()]['path'] = $zipfile;
$array[$project->getName()]['name'] = $project->getName();
}
}
return $array ;
}
return 0 ;
}
public function addDocsInEtaps($array){
if($array){
foreach ($array as $item){
$tokenProject = $item['tokenproject'];
$tokenFile = $item['tokenFile'];
$etapData = $item['etapData'];
$isProjectFile = $item['isProjectFile'];
$etapsFilesManyToManyName = isset($item['etapsFilesManyToManyName'])?$item['etapsFilesManyToManyName']:0;
if($etapData){
if($isProjectFile == 1){
$project = $this->em->getRepository(Project::class)->findOneBy(['token' => $tokenProject]);
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
if ($project && $docUpload) {
$etapClass = 'App\\Entity\\Project';
$classMetadata = $this->em->getClassMetadata($etapClass);
$associationMappings = $classMetadata->getAssociationMapping($etapData);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY) {
$nameGeteurFiled = 'add' . ucfirst($etapData);
$project->{$nameGeteurFiled}($docUpload);
} else {
$nameGeteurFiled = 'set' . ucfirst($etapData);
$project->{$nameGeteurFiled}($docUpload);
}
$this->em->persist($project);
$this->em->flush();
$this->etapsService->updateStatusTracker($project); // set status tracker
}
}else {
$str = explode("__", $etapData);
if (isset($str[1])) {
$project = $this->em->getRepository(Project::class)->findOneBy(['token' => $tokenProject]);
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
if ($project && $docUpload) {
$etapNum = $str[0];
$fileName = $str[1];
$fileNameStr = $str[2];
$etapClass = 'App\\Entity\\Etap' . $etapNum;
$etap = $this->em->getRepository($etapClass)->findOneBy(['project' => $project->getId()]);
if ($etap) {
if(is_string($etapsFilesManyToManyName)){
$etapsFilesManyToManyName = ucfirst($etapsFilesManyToManyName);
$getEntityManyToMany = 'get'.$etapsFilesManyToManyName;
if(count($etap->{$getEntityManyToMany}()) > 0 ){
$valManyToMany = $etap->{$getEntityManyToMany}()[0];
}else{
$classNew = "App\\Entity\\$etapsFilesManyToManyName";
$valManyToMany = new $classNew();
}
$classMetadata = $this->em->getClassMetadata("App\\Entity\\$etapsFilesManyToManyName");
$associationMappings = $classMetadata->getAssociationMapping($fileName);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY) {
$nameGeteurFiled = 'add' . ucfirst($fileName);
} else {
$nameGeteurFiled = 'set' . ucfirst($fileName);
}
$valManyToMany->{$nameGeteurFiled}($docUpload);
$nameGeteurFiledClass = 'add' . ucfirst($etapsFilesManyToManyName);
$etap->{$nameGeteurFiledClass}($valManyToMany);
$this->em->persist($etap);
$this->em->flush();
$this->etapsService->getNomenclature($etap, $docUpload, $fileNameStr);
}else{
$classMetadata = $this->em->getClassMetadata($etapClass);
$associationMappings = $classMetadata->getAssociationMapping($fileName);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY) {
if($fileName == 'fileDiagnostiqueCharpente159Multiple'){
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
$etap160->addFileDiagnostiqueCharpenteMultiple($docUpload);
$this->em->persist($etap160);
$this->em->flush();
}elseif ($fileName == 'fileDiagnostiqueCharpenteMultiple'){
$etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project'=>$project->getId()]);
$etap159->addFileDiagnostiqueCharpente159Multiple($docUpload);
$this->em->persist($etap159);
$this->em->flush();
}
$nameGeteurFiled = 'add' . ucfirst($fileName);
$etap->{$nameGeteurFiled}($docUpload);
} else {
$nameGeteurFiled = 'set' . ucfirst($fileName);
$etap->{$nameGeteurFiled}($docUpload);
}
if ($etap->getStatus() == Etaps::STATUS_FERMEE) {
$etap->setStatus(Etaps::STATUS_EN_COURS);
}
$this->em->persist($etap);
$this->em->flush();
$this->etapsService->getNomenclature($etap, $docUpload, $fileNameStr);
}
}
$this->etapsService->updateStatusTracker($project); // set status tracker
}
}
}
}
}
}
}
public function addPhotoInEtaps($array){
if($array){
foreach ($array as $item){
$tokenProject = $item['tokenproject'];
$tokenFile = $item['tokenFile'];
$tokenEtap = $item['tokenEtap'];
$numEtap = $item['numEtap'];
if($tokenEtap && $tokenProject){
$etapClass = 'App\\Entity\\Etap' . $numEtap;
$etap = $this->em->getRepository($etapClass)->findOneBy(['token'=>$tokenEtap]);
$project = $this->em->getRepository(Project::class)->findOneBy(['token' => $tokenProject]);
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
if($etap){
$etap->addFilePhotosMultiple($docUpload);
$this->em->persist($etap);
}
}
}
$this->em->flush();
}
}
public function getDocsName($project = null){
$array = [];
$array[1]['name_category'] = 'Urbanisme';
$array[2]['name_category'] = 'Foncier';
$array[3]['name_category'] = 'Raccordement';
$array[4]['name_category'] = 'Construction';
$array[5]['name_category'] = 'Valorisation';
$etapsCat1 = [];
$etapsCat1[1]['etapNum'] = '0';
$etapsCat1[1]['name'] = 'Préparation dossier PC';
$etapsCat1Files = [];
$etapsCat1Files[1]['nameFile'] = 'Infos pour archi';
$etapsCat1Files[1]['nameFileDB'] = 'fileInfoArchiMultiple';
$etapsCat1Files[2]['nameFile'] = 'MSA Attestation';
$etapsCat1Files[2]['nameFileDB'] = 'fileMsaAttestationMultiple';
$etapsCat1Files[3]['nameFile'] = 'MSA Relevé d’exploitation';
$etapsCat1Files[3]['nameFileDB'] = 'fileMsaReleveExploitationMultiple';
$etapsCat1Files[4]['nameFile'] = 'Fiche de besoins agricoles';
$etapsCat1Files[4]['nameFileDB'] = 'fileFicheBesoinAgricoleMultiple';
$etapsCat1Files[5]['nameFile'] = 'Lettre de motivation';
$etapsCat1Files[5]['nameFileDB'] = 'fileLettreMotivationMultiple';
$etapsCat1Files[6]['nameFile'] = 'ICPE';
$etapsCat1Files[6]['nameFileDB'] = 'fileICPEMultiple';
$etapsCat1Files[7]['nameFile'] = 'Règlement d’urbanisme';
$etapsCat1Files[7]['nameFileDB'] = 'fileReglementUrbanismeMultiple';
$etapsCat1Files[8]['nameFile'] = 'Autre (CDPENAF, Natura 2000…)';
$etapsCat1Files[8]['nameFileDB'] = 'fileAutreEtap0Multiple';
$etapsCat1[1]['etapsFiles'] = $etapsCat1Files;
$etapsCat1[2]['etapNum'] = '1';
$etapsCat1[2]['name'] = 'Dossier PC/DP et Arrêté PC/DP';
$etapsCat1Files = [];
$etapsCat1Files[1]['nameFile'] = 'Dossier PC/DP';
$etapsCat1Files[1]['nameFileDB'] = 'fileDossierPcDpMultiple';
$etapsCat1Files[2]['nameFile'] = 'arrêté PC/DP';
$etapsCat1Files[2]['nameFileDB'] = 'fileArretePcDpMultiple';
$etapsCat1Files[3]['nameFile'] = 'Récépissé dépôt PC';
$etapsCat1Files[3]['nameFileDB'] = 'fileRecepisseDepotPcMultiple';
$etapsCat1Files[4]['nameFile'] = 'Demande compléments pc';
$etapsCat1Files[4]['nameFileDB'] = 'fileDemandeComplementPcMultiple';
$etapsCat1Files[5]['nameFile'] = 'Récépissé compléments pc';
$etapsCat1Files[5]['nameFileDB'] = 'fileRecepisseComplementPcMultiple';
$etapsCat1Files[6]['nameFile'] = 'Autre (prolongation délai d’instruction)';
$etapsCat1Files[6]['nameFileDB'] = 'fileAutreDocPcMultiple';
$etapsCat1Files[7]['nameFile'] = 'Certificat de non-opposition';
$etapsCat1Files[7]['nameFileDB'] = 'fileCertificatNonOppositionEtap1Multiple';
$etapsCat1[2]['etapsFiles'] = $etapsCat1Files;
$etapsCat1[2]['class'] = 'Etap1Pcm';
$etapsCat1[2]['etapsFilesManyToManyName'] = 'etap1Pcm';
$etapsCat1FilesManyToMany = [];
$etapsCat1FilesManyToMany[1]['nameFile'] = 'Autre dossier PC/DP';
$etapsCat1FilesManyToMany[1]['nameFileDB'] = 'fileDossierPcmpMultiple';
$etapsCat1FilesManyToMany[2]['nameFile'] = 'Arrêté PC/DP';
$etapsCat1FilesManyToMany[2]['nameFileDB'] = 'fileArretePcmMultiple';
$etapsCat1FilesManyToMany[3]['nameFile'] = 'Récépissé dépôt PC/DP';
$etapsCat1FilesManyToMany[3]['nameFileDB'] = 'fileRecepisseDepotPcmMultiple';
$etapsCat1FilesManyToMany[4]['nameFile'] = 'Demande compléments PC/DP';
$etapsCat1FilesManyToMany[4]['nameFileDB'] = 'fileDemandeComplementPcmMultiple';
$etapsCat1FilesManyToMany[5]['nameFile'] = 'Récépissé compléments PC/DP';
$etapsCat1FilesManyToMany[5]['nameFileDB'] = 'fileRecepisseComplementPcmMultiple';
$etapsCat1FilesManyToMany[6]['nameFile'] = 'Autre (prolongation délai d’instruction) PC/DP';
$etapsCat1FilesManyToMany[6]['nameFileDB'] = 'fileAutreDocPcmMultiple';
$etapsCat1[2]['etapsFilesManyToMany'] = $etapsCat1FilesManyToMany;
$etapsCat1[3]['etapNum'] = '2';
$etapsCat1[3]['name'] = 'PC/DP purgé';
$etapsCat1Files = [];
$etapsCat1Files[1]['nameFile'] = 'PV passage huissier';
$etapsCat1Files[1]['nameFileDB'] = 'filePVPassageHuissierMultiple';
$etapsCat1Files[2]['nameFile'] = 'Certificat de non-recours (Tribunal Administratif)';
$etapsCat1Files[2]['nameFileDB'] = 'fileCertificatNonRecoursMultiple';
$etapsCat1Files[3]['nameFile'] = 'Certificat de non-retrait (Mairie)';
$etapsCat1Files[3]['nameFileDB'] = 'fileCertificatNonRetraitMultiple';
$etapsCat1Files[4]['nameFile'] = 'Demande d’ANR Mairie';
$etapsCat1Files[4]['nameFileDB'] = 'fileDemandeAnrMarieMultiple';
$etapsCat1Files[5]['nameFile'] = 'Demande d’ANR TA';
$etapsCat1Files[5]['nameFileDB'] = 'fileDemandeAnrTaMultiple';
$etapsCat1Files[6]['nameFile'] = 'Attestation sur l’honneur ANR Mairie / TA';
$etapsCat1Files[6]['nameFileDB'] = 'fileAttestationHonneurAnrMairieTaMultiple';
$etapsCat1[3]['etapsFiles'] = $etapsCat1Files;
$etapsCat1[3]['class'] = 'Etap2Pcm';
$etapsCat1[3]['etapsFilesManyToManyName'] = 'etap2Pcm';
$etapsCat1FilesManyToMany = [];
$etapsCat1FilesManyToMany[1]['nameFile'] = 'PV passage huissier PC/DP ';
$etapsCat1FilesManyToMany[1]['nameFileDB'] = 'filePVPassageHuissierPcmMultiple';
$etapsCat1FilesManyToMany[2]['nameFile'] = 'Certificat de non-recours (Tribunal Administratif) PC/DP ';
$etapsCat1FilesManyToMany[2]['nameFileDB'] = 'fileCertificatNonRecoursPcmMultiple';
$etapsCat1FilesManyToMany[3]['nameFile'] = 'Certificat de non-retrait (Mairie) PC/DP ';
$etapsCat1FilesManyToMany[3]['nameFileDB'] = 'fileCertificatNonRetraitPcmMultiple';
$etapsCat1FilesManyToMany[4]['nameFile'] = 'Demande d’ANR Mairie PC/DP ';
$etapsCat1FilesManyToMany[4]['nameFileDB'] = 'fileDemandeAnrMariePcmMultiple';
$etapsCat1FilesManyToMany[5]['nameFile'] = 'Demande d’ANR TA PC/DP ';
$etapsCat1FilesManyToMany[5]['nameFileDB'] = 'fileDemandeAnrTaPcmMultiple';
$etapsCat1FilesManyToMany[6]['nameFile'] = 'Attestation sur l’honneur ANR Mairie / TA PC/DP ';
$etapsCat1FilesManyToMany[6]['nameFileDB'] = 'fileAttestationHonneurAnrMairieTaPcmMultiple';
$etapsCat1[3]['etapsFilesManyToMany'] = $etapsCat1FilesManyToMany;
$etapsCat1[4]['etapNum'] = '3';
$etapsCat1[4]['name'] = 'DOC / DROC';
$etapsCat1Files = [];
$etapsCat1Files[1]['nameFile'] = 'DOC | DROC';
$etapsCat1Files[1]['nameFileDB'] = 'fileDocDrocMultiple';
$etapsCat1[4]['etapsFiles'] = $etapsCat1Files;
$etapsCat1[5]['etapNum'] = '4';
$etapsCat1[5]['name'] = 'DAACT';
$etapsCat1Files = [];
$etapsCat1Files[1]['nameFile'] = 'DAACT';
$etapsCat1Files[1]['nameFileDB'] = 'fileDaactMultiple';
$etapsCat1Files[2]['nameFile'] = 'CERFA envoyé';
$etapsCat1Files[2]['nameFileDB'] = 'fileCerfaEnvoyeMultiple';
$etapsCat1Files[3]['nameFile'] = 'LRAR';
$etapsCat1Files[3]['nameFileDB'] = 'fileLrarMultiple';
$etapsCat1[5]['etapsFiles'] = $etapsCat1Files;
$array[1]['etaps'] = $etapsCat1;
$etapsCat2 = [];
$etapsCat2[1]['etapNum'] = '5';
$etapsCat2[1]['name'] = 'Promesse de bail';
$etapsCat2Files = [];
$etapsCat2Files[1]['nameFile'] = 'Promesse de bail';
$etapsCat2Files[1]['nameFileDB'] = 'filePromessebailMultiple';
$etapsCat2Files[2]['nameFile'] = 'Levée d’option';
$etapsCat2Files[2]['nameFileDB'] = 'fileLeveeOptionMultiple';
$etapsCat2Files[3]['nameFile'] = 'Acte de substitution';
$etapsCat2Files[3]['nameFileDB'] = 'fileActeSubstitutionMultiple';
$etapsCat2Files[4]['nameFile'] = 'LOI';
$etapsCat2Files[4]['nameFileDB'] = 'fileLoiMultiple';
$etapsCat2Files[5]['nameFile'] = 'Promesse d\'achat';
$etapsCat2Files[5]['nameFileDB'] = 'filePromesseAchatMultiple';
$etapsCat2[1]['etapsFiles'] = $etapsCat2Files;
$etapsCat2[2]['etapNum'] = '6';
$etapsCat2[2]['name'] = 'Documents pour annexes de bail';
$etapsCat2Files = [];
$etapsCat2Files[2]['nameFile'] = 'Etat hypothécaire';
$etapsCat2Files[2]['nameFileDB'] = 'fileEtatHypothecaireMultiple';
$etapsCat2Files[4]['nameFile'] = 'Titre de propriété';
$etapsCat2Files[4]['nameFileDB'] = 'fileTitreProprieteMultiple';
$etapsCat2Files[5]['nameFile'] = 'Autres (Cession de bail, projet de bail…) ';
$etapsCat2Files[5]['nameFileDB'] = 'fileAutreEtap6';
$etapsCat2Files[6]['nameFile'] = 'Statuts';
$etapsCat2Files[6]['nameFileDB'] = 'fileStatuts';
$etapsCat2Files[7]['nameFile'] = 'Kbis';
$etapsCat2Files[7]['nameFileDB'] = 'fileKbis';
$etapsCat2Files[8]['nameFile'] = 'Accord ML ';
$etapsCat2Files[8]['nameFileDB'] = 'fileAccordMl';
$etapsCat2Files[9]['nameFile'] = 'Livret de famille ';
$etapsCat2Files[9]['nameFileDB'] = 'fileLivretFamille';
$etapsCat2Files[10]['nameFile'] = 'Carte d’identité ';
$etapsCat2Files[10]['nameFileDB'] = 'fileCarteIdentite';
$etapsCat2Files[11]['nameFile'] = 'Extrait de matrice cadastrale ';
$etapsCat2Files[11]['nameFileDB'] = 'fileExtraitMatriceCadastrale';
$etapsCat2[2]['etapsFiles'] = $etapsCat2Files;
$etapsCat2[3]['etapNum'] = '7';
$etapsCat2[3]['name'] = 'Bail signé';
$etapsCat2Files = [];
$etapsCat2Files[1]['nameFile'] = 'Bail signé (avec l’ensemble des annexes)';
$etapsCat2Files[1]['nameFileDB'] = 'fileBailSigneMultiple';
$etapsCat2Files[2]['nameFile'] = 'Avenant au Bail';
$etapsCat2Files[2]['nameFileDB'] = 'fileAvenantBailMultiple';
$etapsCat2Files[3]['nameFile'] = 'Preuve de publications SPF';
$etapsCat2Files[3]['nameFileDB'] = 'filePreuvePublicationsSPFMultiple';
$etapsCat2[3]['etapsFiles'] = $etapsCat2Files;
$etapsCat2[4]['etapNum'] = '601';
$etapsCat2[4]['name'] = 'Géomètre ';
$etapsCat2Files = [];
$etapsCat2Files[1]['nameFile'] = 'DA / EDDV';
$etapsCat2Files[1]['nameFileDB'] = 'fileEtatDecriptifMultiple';
$etapsCat2Files[2]['nameFile'] = 'Plan de servitudes';
$etapsCat2Files[2]['nameFileDB'] = 'filePlanServitudesMultiple';
$etapsCat2[4]['etapsFiles'] = $etapsCat2Files;
$etapsCat2[5]['etapNum'] = '602';
$etapsCat2[5]['name'] = 'Avancement du bail ';
$etapsCat2Files = [];
$etapsCat2Files[1]['nameFile'] = 'Procuration Bailleur';
$etapsCat2Files[1]['nameFileDB'] = 'fileProcurationBailleur';
$etapsCat2[5]['etapsFiles'] = $etapsCat2Files;
$array[2]['etaps'] = $etapsCat2;
$etapsCat3 = [];
$etapsCat3[0]['etapNum'] = '80';
$etapsCat3[0]['name'] = 'Faisabilité du raccordement';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'IPR';
$etapsCat3Files[1]['nameFileDB'] = 'fileIPR';
$etapsCat3Files[2]['nameFile'] = 'PRAC';
$etapsCat3Files[2]['nameFileDB'] = 'filePRAC';
$etapsCat3[0]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[1]['etapNum'] = '8';
$etapsCat3[1]['name'] = 'Création Etablissement secondaire';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'Kbis de l’ETS';
$etapsCat3Files[1]['nameFileDB'] = 'fileKbisEtsMultiple';
$etapsCat3[1]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[2]['etapNum'] = '9';
$etapsCat3[2]['name'] = 'Date T0';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'Mail d’ENEDIS de confirmation';
$etapsCat3Files[1]['nameFileDB'] = 'fileMailEnedisConfirmationMultiple';
$etapsCat3Files[2]['nameFile'] = 'Demande de raccordement';
$etapsCat3Files[2]['nameFileDB'] = 'fileDemandeRaccordementMultiple';
// $etapsCat3Files[3]['nameFile'] = 'Garantie bancaire';
// $etapsCat3Files[3]['nameFileDB'] = 'fileGarantieBancaireMultiple';
$etapsCat3[2]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[3]['etapNum'] = '10';
$etapsCat3[3]['name'] = 'PTF / CRD';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'PTF';
$etapsCat3Files[1]['nameFileDB'] = 'filePtfMultiple';
$etapsCat3Files[2]['nameFile'] = 'CRD signée';
$etapsCat3Files[2]['nameFileDB'] = 'fileCrdSigneeMultiple';
$etapsCat3Files[3]['nameFile'] = 'Preuve de virement';
$etapsCat3Files[3]['nameFileDB'] = 'filePreuveVirementMultiple';
$etapsCat3Files[4]['nameFile'] = 'Avenant CRD';
$etapsCat3Files[4]['nameFileDB'] = 'fileAvenantCrdMultiple';
$etapsCat3Files[5]['nameFile'] = 'Avenant CRD pour MES ';
$etapsCat3Files[5]['nameFileDB'] = 'fileAvenantCrdMesMultiple';
// $etapsCat3Files[4]['nameFile'] = 'CRD signée';
// $etapsCat3Files[4]['nameFileDB'] = 'fileCrdSigneeSansPtfMultiple';
// $etapsCat3Files[5]['nameFile'] = 'Preuve de virement';
// $etapsCat3Files[5]['nameFileDB'] = 'filePreuveVirementSansPtfMultiple';
$etapsCat3[3]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[4]['etapNum'] = '12';
$etapsCat3[4]['name'] = 'CEX + CARDi';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'CEX signé';
$etapsCat3Files[1]['nameFileDB'] = 'fileCexSigneMultiple';
$etapsCat3Files[2]['nameFile'] = 'CARDi signé';
$etapsCat3Files[2]['nameFileDB'] = 'fileCardiSigneMultiple';
$etapsCat3Files[3]['nameFile'] = 'Avenant CARDi';
$etapsCat3Files[3]['nameFileDB'] = 'fileAvenantCardiMultiple';
$etapsCat3[4]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[5]['etapNum'] = '13';
$etapsCat3[5]['name'] = 'Consuel';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'Consuel';
$etapsCat3Files[1]['nameFileDB'] = 'fileConsuelMultiple';
$etapsCat3Files[2]['nameFile'] = 'Attestation bureau de contrôle S21';
$etapsCat3Files[2]['nameFileDB'] = 'fileAttestationBureauControleMultiple';
$etapsCat3Files[3]['nameFile'] = 'DRE';
$etapsCat3Files[3]['nameFileDB'] = 'fileDREMultiple';
$etapsCat3[5]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[6]['etapNum'] = '14';
$etapsCat3[6]['name'] = 'Mise en service';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'Attestation de mise en service';
$etapsCat3Files[1]['nameFileDB'] = 'fileDoeMultiple';
$etapsCat3Files[2]['nameFile'] = 'ARPE';
$etapsCat3Files[2]['nameFileDB'] = 'fileARPE';
$etapsCat3Files[3]['nameFile'] = 'DEIE';
$etapsCat3Files[3]['nameFileDB'] = 'fileDEIE';
$etapsCat3Files[4]['nameFile'] = 'Attestation S21 (attestation de conformité)';
$etapsCat3Files[4]['nameFileDB'] = 'fileAttestationS21Multiple';
$etapsCat3[6]['etapsFiles'] = $etapsCat3Files;
// $etapsCat3[7]['etapNum'] = '15';
// $etapsCat3[7]['name'] = 'Contrat d’achat';
// $etapsCat3Files = [];
// $etapsCat3Files[1]['nameFile'] = 'Contrat d’achat signé';
// $etapsCat3Files[1]['nameFileDB'] = 'fileContratAchatSigneMultiple';
// $etapsCat3Files[2]['nameFile'] = 'Attestation de producteur';
// $etapsCat3Files[2]['nameFileDB'] = 'fileAttestionProducteurMultiple';
// $etapsCat3Files[3]['nameFile'] = 'Attestation de l’installateur';
// $etapsCat3Files[3]['nameFileDB'] = 'fileAttestionInstallateurMultiple';
// $etapsCat3Files[4]['nameFile'] = 'AR Contrat d’achat';
// $etapsCat3Files[4]['nameFileDB'] = 'fileArContratAchatMultiple';
// $etapsCat3[7]['etapsFiles'] = $etapsCat3Files;
$etapsCat3[8]['etapNum'] = '121';
$etapsCat3[8]['name'] = 'Installation PDL';
$etapsCat3Files = [];
$etapsCat3Files[1]['nameFile'] = 'Installation PDL';
$etapsCat3Files[1]['nameFileDB'] = 'fileDocument121Multiple';
$etapsCat3[8]['etapsFiles'] = $etapsCat3Files;
$array[3]['etaps'] = $etapsCat3;
$etapsCat4[0]['etapNum'] = '159';
$etapsCat4[0]['name'] = 'Dossier de Consultation';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Visite technique';
$etapsCat4Files[1]['nameFileDB'] = 'fileVisiteTechnique159Multiple';
$etapsCat4Files[2]['nameFile'] = 'Etude de productible';
$etapsCat4Files[2]['nameFileDB'] = 'fileEtudeProductible159Multiple';
$etapsCat4Files[3]['nameFile'] = 'Etude de sol';
$etapsCat4Files[3]['nameFileDB'] = 'fileGeotechnique159Multiple';
$etapsCat4Files[4]['nameFile'] = 'Diagnostic charpente';
$etapsCat4Files[4]['nameFileDB'] = 'fileDiagnostiqueCharpente159Multiple';
$etapsCat4Files[5]['nameFile'] = 'Design pré-CRD';
$etapsCat4Files[5]['nameFileDB'] = 'fileDesignPreCRD159Multiple';
$etapsCat4Files[6]['nameFile'] = 'Design post-CRD';
$etapsCat4Files[6]['nameFileDB'] = 'fileDesignPostCRD159Multiple';
$etapsCat4Files[7]['nameFile'] = 'Plan de masse et de situation avec tranchée';
$etapsCat4Files[7]['nameFileDB'] = 'filePlanMasseSituationTranchee159Multiple';
$etapsCat4Files[8]['nameFile'] = 'Plan de calepinage';
$etapsCat4Files[8]['nameFileDB'] = 'filePlanCalepinage159Multiple';
$etapsCat4Files[9]['nameFile'] = 'Schéma unifilaire';
$etapsCat4Files[9]['nameFileDB'] = 'fileSchemaUnifilaire159Multiple';
$etapsCat4Files[10]['nameFile'] = 'Plans Autocad';
$etapsCat4Files[10]['nameFileDB'] = 'filePlansAutocadMultiple';
$etapsCat4Files[10]['nameFile'] = 'Plans dwg';
$etapsCat4Files[10]['nameFileDB'] = 'filePlansDwgMultiple';
$etapsCat4[0]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[1]['etapNum'] = '160';
$etapsCat4[1]['name'] = 'Informations Techniques';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Diagnostic charpente';
$etapsCat4Files[1]['nameFileDB'] = 'fileDiagnostiqueCharpenteMultiple';
$etapsCat4Files[2]['nameFile'] = 'Étude de sol';
$etapsCat4Files[2]['nameFileDB'] = 'fileEtudeSoleMultiple';
$etapsCat4Files[3]['nameFile'] = 'Notices hydrauliques ou études gestion eaux pluviales';
$etapsCat4Files[3]['nameFileDB'] = 'fileNoticesHydrauliquesMultiple';
$etapsCat4Files[4]['nameFile'] = 'Evaluation carbone des modules';
$etapsCat4Files[4]['nameFileDB'] = 'fileEvaluationCarboneModuleMultiple';
$etapsCat4Files[5]['nameFile'] = 'Fiche technique modules';
$etapsCat4Files[5]['nameFileDB'] = 'fileFicheTechniqueModuleMultiple';
$etapsCat4Files[6]['nameFile'] = 'Fiche technique onduleurs';
$etapsCat4Files[6]['nameFileDB'] = 'fileFicheTechniqueOnduleurMultiple';
$etapsCat4Files[7]['nameFile'] = 'Attestation de bridage';
$etapsCat4Files[7]['nameFileDB'] = 'fileAttestationBrigageOnduleurMultiple';
$etapsCat4Files[8]['nameFile'] = 'Fiches de garantie onduleur';
$etapsCat4Files[8]['nameFileDB'] = 'fileFicheGarantiOnduleurMultiple';
$etapsCat4Files[9]['nameFile'] = 'Fiche technique système d’intégration ';
$etapsCat4Files[9]['nameFileDB'] = 'fileFicheSystemeIntegrationMultiple';
$etapsCat4[1]['etapsFiles'] = $etapsCat4Files;
$user = $this->security->getUser();
if($user and (!in_array('ROLE_DEV',$user->getRoles()) or !in_array('ROLE_EPC',$user->getRoles()))){
$etapsCat4[2]['etapNum'] = '161';
$etapsCat4[2]['name'] = 'Devis fournisseurs et sous-traitants';
$etapsCat4[3]['etapNum'] = '16';
$etapsCat4[3]['name'] = 'Contrat de construction';
$etapsCat4[3]['class'] = 'ContratConstruction';
$etapsCat4[3]['etapsFilesManyToManyName'] = 'contratConstruction';
$etapsCat4FilesManyToMany = [];
$etapsCat4FilesManyToMany[1]['nameFile'] = 'Contrat de construction';
$etapsCat4FilesManyToMany[1]['nameFileDB'] = 'fileContratEpcMultiple';
$etapsCat4FilesManyToMany[2]['nameFile'] = 'Annexes (fiches techniques…)';
$etapsCat4FilesManyToMany[2]['nameFileDB'] = 'fileAnnexesMultiple';
$etapsCat4FilesManyToMany[3]['nameFile'] = 'Demande d’agrément';
$etapsCat4FilesManyToMany[3]['nameFileDB'] = 'fileDemandeAgrementMultiple';
$etapsCat4[3]['etapsFilesManyToMany'] = $etapsCat4FilesManyToMany;
// $etapsCat4Files = [];
// $etapsCat4Files[1]['nameFile'] = 'Contrat EPC';
// $etapsCat4Files[1]['nameFileDB'] = 'fileContratEpcMultiple';
// $etapsCat4Files[2]['nameFile'] = 'Annexes (fiches techniques…)';
// $etapsCat4Files[2]['nameFileDB'] = 'fileAnnexesMultiple';
// $etapsCat4[3]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[4]['etapNum'] = '171';
$etapsCat4[4]['name'] = 'Pré-requis avant démarage de la construction';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'PV de démarrage';
$etapsCat4Files[1]['nameFileDB'] = 'filePVDemarrageMultiple';
$etapsCat4Files[2]['nameFile'] = 'DOC';
$etapsCat4Files[2]['nameFileDB'] = 'fileDocEtap171Multiple';
$etapsCat4Files[3]['nameFile'] = 'Ordre de service';
$etapsCat4Files[3]['nameFileDB'] = 'fileOrderServiceMultiple';
$etapsCat4Files[4]['nameFile'] = 'Planning prévisionnel ';
$etapsCat4Files[4]['nameFileDB'] = 'filePlanningPrevisionnelMultiple';
$etapsCat4Files[5]['nameFile'] = 'PGC';
$etapsCat4Files[5]['nameFileDB'] = 'filePGCMultiple';
$etapsCat4Files[6]['nameFile'] = 'Rapport de visite SPS';
$etapsCat4Files[6]['nameFileDB'] = 'fileRapportVisiteSpsMultiple';
$etapsCat4Files[7]['nameFile'] = 'DIUO';
$etapsCat4Files[7]['nameFileDB'] = 'fileDIUOMultiple';
$etapsCat4Files[8]['nameFile'] = 'Rapport de mission L/LE';
$etapsCat4Files[8]['nameFileDB'] = 'fileMissionLLEMultiple';
$etapsCat4Files[9]['nameFile'] = 'Harmonisation';
$etapsCat4Files[9]['nameFileDB'] = 'fileHarmonisationMultiple';
$etapsCat4Files[10]['nameFile'] = 'PPSPS';
$etapsCat4Files[10]['nameFileDB'] = 'filePPSPSMultiple';
$etapsCat4Files[11]['nameFile'] = 'Photos de la plateforme';
$etapsCat4Files[11]['nameFileDB'] = 'filePhotosPlateformeMultiple';
$etapsCat4[4]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[5]['etapNum'] = '172';
$etapsCat4[5]['name'] = 'LOT Génie civil et fondations';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Note de calcul béton et féraillage';
$etapsCat4Files[1]['nameFileDB'] = 'fileNoteCalculBetonFeraillageMultiple';
$etapsCat4Files[2]['nameFile'] = 'Plan implantation bâtiment avec dalle béton du local onduleur';
$etapsCat4Files[2]['nameFileDB'] = 'filePlanImplantationBatimentAvecDalleBetonMultiple';
$etapsCat4Files[3]['nameFile'] = 'PV de réception ';
$etapsCat4Files[3]['nameFileDB'] = 'filePVReceptionMultiple';
$etapsCat4Files[4]['nameFile'] = 'Fondations terminées';
$etapsCat4Files[4]['nameFileDB'] = 'fileFondationTermineesMultiple';
$etapsCat4Files[5]['nameFile'] = 'Dalle béton shelter';
$etapsCat4Files[5]['nameFileDB'] = 'fileDalleBetonShelterMultiple';
$etapsCat4Files[6]['nameFile'] = 'Chemin d’accès';
$etapsCat4Files[6]['nameFileDB'] = 'fileCheminAccesMultiple';
$etapsCat4Files[7]['nameFile'] = 'Photos de la plateforme';
$etapsCat4Files[7]['nameFileDB'] = 'filePhotosPlateformeMultiple';
$etapsCat4[5]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[6]['etapNum'] = '173';
$etapsCat4[6]['name'] = 'LOT Charpente et couverture / bardage';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Notes de calcul charpente';
$etapsCat4Files[1]['nameFileDB'] = 'fileNoteCalculCharpente173Multiple';
// $etapsCat4Files[2]['nameFile'] = 'Photos de renforcement charpente';
// $etapsCat4Files[2]['nameFileDB'] = 'filePhotoRenforcementcharpente173Multiple';
$etapsCat4Files[3]['nameFile'] = 'Plan de bardage';
$etapsCat4Files[3]['nameFileDB'] = 'fileOssatureSecondaireBardage173Multiple';
// $etapsCat4Files[4]['nameFile'] = 'Photos de renforcement des bardages';
// $etapsCat4Files[4]['nameFileDB'] = 'filePhotoRenforcementBardage173Multiple';
$etapsCat4Files[5]['nameFile'] = 'PV réception lot charpente / couverture / bardage';
$etapsCat4Files[5]['nameFileDB'] = 'filePVreception173Multiple';
// $etapsCat4Files[6]['nameFile'] = 'Photos de renforcement de la couverture terminée';
// $etapsCat4Files[6]['nameFileDB'] = 'filePhotoRenforcementCouvertureTermine173Multiple';
$etapsCat4Files[6]['nameFile'] = 'Plans de charpente';
$etapsCat4Files[6]['nameFileDB'] = 'filePlansCharpente173Multiple';
$etapsCat4Files[7]['nameFile'] = 'Plans de charpente signé par le bailleur';
$etapsCat4Files[7]['nameFileDB'] = 'filePlansCharpente173SigneMultiple';
// $etapsCat4Files[8]['nameFile'] = 'Vues 3D';
// $etapsCat4Files[8]['nameFileDB'] = 'fileVues3d173Multiple';
// $etapsCat4Files[9]['nameFile'] = 'Plan de couverture';
// $etapsCat4Files[9]['nameFileDB'] = 'filePlanCouverture173Multiple';
// $etapsCat4Files[10]['nameFile'] = 'Plan et descriptifs des travaux de renforcement de charpente';
// $etapsCat4Files[10]['nameFileDB'] = 'filePlanDescriptionTravauxRenforcementCharpente173Multiple';
// $etapsCat4Files[11]['nameFile'] = 'Plan et descriptifs des travaux de dépose/ repose de couverture';
// $etapsCat4Files[11]['nameFileDB'] = 'filePlanDescriptionTravauxDeposeCouverture173Multiple';
$etapsCat4[6]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[7]['etapNum'] = '174';
$etapsCat4[7]['name'] = 'LOT photovoltaïque et élec';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Plan de calepinage / câblage';
$etapsCat4Files[1]['nameFileDB'] = 'filePlanCalepinageModule174Multiple';
// $etapsCat4Files[2]['nameFile'] = 'Plan de câblage des strings';
// $etapsCat4Files[2]['nameFileDB'] = 'filePlanCaplageStrings174Multiple';
$etapsCat4Files[3]['nameFile'] = 'Note de calcul sous Lise PV ';
$etapsCat4Files[3]['nameFileDB'] = 'fileNoteCalculSousLisePV174Multiple';
$etapsCat4Files[4]['nameFile'] = 'Schéma Unifilaire de l’installation';
$etapsCat4Files[4]['nameFileDB'] = 'fileSchemaUnifilaireInstallation174Multiple';
$etapsCat4Files[5]['nameFile'] = 'Schéma d’agencement du shelter ou photos';
$etapsCat4Files[5]['nameFileDB'] = 'fileShemaAgencementShelterPhotos174Multiple';
// $etapsCat4Files[6]['nameFile'] = 'Test de PR à la mise en service';
// $etapsCat4Files[6]['nameFileDB'] = 'fileTestPrMiseService174Multiple';
$etapsCat4Files[7]['nameFile'] = 'Schéma unifilaire du système de monitoring';
$etapsCat4Files[7]['nameFileDB'] = 'fileShemaUnifilaireSystemeMonitoring174Multiple';
$etapsCat4Files[8]['nameFile'] = 'Tests et vérifications des travaux électriques, fiche d’auto-contrôle de l’installateur';
$etapsCat4Files[8]['nameFileDB'] = 'fileTestVerificationTravauxElectriqueFiche174Multiple';
$etapsCat4Files[9]['nameFile'] = 'PV de réception lot photovoltaïque/ élec / AMO';
$etapsCat4Files[9]['nameFileDB'] = 'filePVReception174Multiple';
$etapsCat4Files[10]['nameFile'] = 'Photos de la centrale solaire';
$etapsCat4Files[10]['nameFileDB'] = 'filePhotosGenerateur174Multiple';
$etapsCat4Files[11]['nameFile'] = 'Pv terminées';
$etapsCat4Files[11]['nameFileDB'] = 'filePvTerminees174Multiple';
$etapsCat4Files[12]['nameFile'] = 'Descentes de câbles';
$etapsCat4Files[12]['nameFileDB'] = 'fileDescentesCables174Multiple';
$etapsCat4Files[13]['nameFile'] = 'Raccordement du local onduleur';
$etapsCat4Files[13]['nameFileDB'] = 'fileRaccordementLocalOnduleur174Multiple';
$etapsCat4[7]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[8]['etapNum'] = '175';
$etapsCat4[8]['name'] = 'LOT Raccordement, liaison PDL';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Notes de calcul des câbles AC de la liaison';
$etapsCat4Files[1]['nameFileDB'] = 'fileNoteCalculCableAcLiaison175Multiple';
$etapsCat4Files[2]['nameFile'] = 'Plans de la tranchée (coupe et plan de localisation)';
$etapsCat4Files[2]['nameFileDB'] = 'filePlanTranchee175Multiple';
// $etapsCat4Files[3]['nameFile'] = 'DAACT : cerfa signé tamponné mairie';
// $etapsCat4Files[3]['nameFileDB'] = 'fileDaact175Multiple';
// $etapsCat4Files[4]['nameFile'] = 'PV de réception';
// $etapsCat4Files[4]['nameFileDB'] = 'filePVReception175Multiple';
// $etapsCat4Files[5]['nameFile'] = 'Photos de la liaison terminée';
// $etapsCat4Files[5]['nameFileDB'] = 'filePhotosLiaisonTerminee175Multiple';
$etapsCat4[8]['etapsFiles'] = $etapsCat4Files;
}
$etapsCat4[9]['etapNum'] = '20';
$etapsCat4[9]['name'] = 'Consuel';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Consuel';
$etapsCat4Files[1]['nameFileDB'] = 'fileConsuelEtap20Multiple';
$etapsCat4[9]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[10]['etapNum'] = '21';
$etapsCat4[10]['name'] = 'Raccordement et tests de réception';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Tests de réception';
$etapsCat4Files[1]['nameFileDB'] = 'fileTestReceptionMultiple';
$etapsCat4[10]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[11]['etapNum'] = '22';
$etapsCat4[11]['name'] = 'Tests de PR à 2 ans';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'Tests de PR';
$etapsCat4Files[1]['nameFileDB'] = 'fileTestPrMultiple';
$etapsCat4[11]['etapsFiles'] = $etapsCat4Files;
$etapsCat4[12]['etapNum'] = '201';
$etapsCat4[12]['name'] = 'Dossier des Ouvrages Exécutés (DOE)';
$etapsCat4Files = [];
$etapsCat4Files[1]['nameFile'] = 'DOE';
$etapsCat4Files[1]['nameFileDB'] = 'fileDoeEtap201Multiple';
$etapsCat4[12]['etapsFiles'] = $etapsCat4Files;
// $etapsCat4[13]['etapNum'] = '23';
// $etapsCat4[13]['name'] = 'Compte-rendus';
// $etapsCat4[13]['class'] = 'VisiteTerrain';
// $etapsCat4[13]['etapsFilesManyToManyName'] = 'visiteTerrain';
// $etapsCat4FilesManyToMany = [];
// $etapsCat4FilesManyToMany[1]['nameFile'] = 'compte-rendus';
// $etapsCat4FilesManyToMany[1]['nameFileDB'] = 'fileCompteRendusMultiple';
// $etapsCat4FilesManyToMany[2]['nameFile'] = 'pré-visites';
// $etapsCat4FilesManyToMany[2]['nameFileDB'] = 'filePreVisiteMultiple';
// $etapsCat4FilesManyToMany[3]['nameFile'] = 'photos visite terrain';
// $etapsCat4FilesManyToMany[3]['nameFileDB'] = 'filePhotosVisiteTerainMultiple';
// $etapsCat4[13]['etapsFilesManyToMany'] = $etapsCat4FilesManyToMany;
$array[4]['etaps'] = $etapsCat4;
$etapsCat5 = [];
$etapsCat5[1]['etapNum'] = '5';
$etapsCat5[1]['name'] = 'Promesse de bail';
$etapsCat2Files = [];
$etapsCat2Files[1]['nameFile'] = 'Promesse de bail';
$etapsCat2Files[1]['nameFileDB'] = 'filePromessebailMultiple';
$etapsCat2Files[2]['nameFile'] = 'Levée d’option';
$etapsCat2Files[2]['nameFileDB'] = 'fileLeveeOptionMultiple';
$etapsCat2Files[3]['nameFile'] = 'Acte de substitution';
$etapsCat2Files[3]['nameFileDB'] = 'fileActeSubstitutionMultiple';
$etapsCat2Files[4]['nameFile'] = 'LOI';
$etapsCat2Files[4]['nameFileDB'] = 'fileLoiMultiple';
$etapsCat2Files[5]['nameFile'] = 'Promesse d\'achat';
$etapsCat2Files[5]['nameFileDB'] = 'filePromesseAchatMultiple';
$etapsCat2[1]['etapsFiles'] = $etapsCat2Files;
$etapsCat5 = [];
$etapsCat5[1]['etapNum'] = '25';
$etapsCat5[1]['name'] = 'Avancée de la valorisation';
$etapsCat5Files = [];
$etapsCat5[1]['class'] = 'Etap24Champs';
$etapsCat5[1]['etapsFilesManyToManyName'] = 'etap24Champs';
$etapsCat5FilesManyToMany = [];
$etapsCat5FilesManyToMany[1]['nameFile'] = 'Demande de raccordement ';
$etapsCat5FilesManyToMany[1]['nameFileDB'] = 'fileDemandeRaccordementEtap25Multiple';
$etapsCat5FilesManyToMany[2]['nameFile'] = 'Mail d’ENEDIS de confirmation';
$etapsCat5FilesManyToMany[2]['nameFileDB'] = 'fileMailEnedisConfirmationEtap25Multiple';
$etapsCat5FilesManyToMany[3]['nameFile'] = 'Garantie bancaire';
$etapsCat5FilesManyToMany[3]['nameFileDB'] = 'fileGarantieBancaireEtap25Multiple';
$etapsCat5FilesManyToMany[4]['nameFile'] = 'Récépissé demande AO';
$etapsCat5FilesManyToMany[4]['nameFileDB'] = 'fileRecepisseDemandeAoMultiple';
$etapsCat5FilesManyToMany[5]['nameFile'] = 'Lettre de lauréat';
$etapsCat5FilesManyToMany[5]['nameFileDB'] = 'fileLettreLaureaMultiple';
$etapsCat5[1]['etapsFiles'] = $etapsCat5Files;
$etapsCat5[1]['etapsFilesManyToMany'] = $etapsCat5FilesManyToMany;
$etapsCat5[2]['etapNum'] = '26';
$etapsCat5[2]['name'] = 'Contrat d’achat';
$etapsCat5Files = [];
$etapsCat5[2]['class'] = 'Etap24Champs';
$etapsCat5[2]['etapsFilesManyToManyName'] = 'etap24Champs';
$etapsCat5[2]['class2'] = 'Etap26Champs';
$etapsCat5[2]['etapsFilesManyToManyName2'] = 'etap26Champs';
$etapsCat5FilesManyToMany = [];
$etapsCat5FilesManyToMany[1]['nameFile'] = 'Contrat d’achat signé';
$etapsCat5FilesManyToMany[1]['nameFileDB'] = 'fileContratAchatSigneEtap25Multiple';
$etapsCat5FilesManyToMany[2]['nameFile'] = 'Attestation de producteur';
$etapsCat5FilesManyToMany[2]['nameFileDB'] = 'fileAttestionProducteurEtap25Multiple';
$etapsCat5FilesManyToMany[3]['nameFile'] = 'Attestation de l’installateur';
$etapsCat5FilesManyToMany[3]['nameFileDB'] = 'fileAttestionInstallateurEtap25Multiple';
$etapsCat5FilesManyToMany[4]['nameFile'] = 'AR Contrat d’achat';
$etapsCat5FilesManyToMany[4]['nameFileDB'] = 'fileArContratAchatEtap25Multiple';
$etapsCat5[2]['etapsFiles'] = $etapsCat5Files;
$etapsCat5[2]['etapsFilesManyToMany'] = [];
$etapsCat5[2]['etapsFilesManyToMany2'] = $etapsCat5FilesManyToMany;
$array[5]['etaps'] = $etapsCat5;
return $array;
}
public function paginateAlert($request,$isArchive=false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$typeAlert = $request->get('typeAlert');
$devProject = $request->get('devProject');
$searchDate = $request->get('searchDate');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'devProject' => $devProject,
'typeAlert' => $typeAlert,
'searchDate' => $searchDate,
'user' => $user
];
$alerts= $this->em->getRepository(\App\Entity\Alert::class)->search($isArchive,$filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Alert::class)->search($isArchive,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Alert::class)->search($isArchive,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
foreach ($alerts as $alert) {
$etapCat2 = null;
if($alert->getTypeAlert() == Alert::ALERT_BAIL){
$typeAlert = 'Promesse de bail' ;
$etapCat2 = $this->getEtapByNumAndProject(Etaps::ETAP_5, $alert->getProject());
}elseif ($alert->getTypeAlert() == Alert::ALERT_PC_CONSUEL){
$typeAlert = 'PC/DP' ;
$etapCat2 = $this->getEtapByNumAndProject(Etaps::ETAP_13, $alert->getProject());
}elseif ($alert->getTypeAlert() == Alert::ALERT_T0){
$typeAlert = 'Date de T0 - Date limite d’achèvement' ;
$etapCat2 = $this->getEtapByNumAndProject(Etaps::ETAP_13, $alert->getProject());
}elseif ($alert->getTypeAlert() == Alert::ALERT_Etap1And2){
$typeAlert = 'Avancement étape 1 et étape 2 timeline urbanisme' ;
$etapCat2 = $this->getEtapByNumAndProject(Etaps::ETAP_1, $alert->getProject());
}else{
$typeAlert = '';
}
$action =
$this->twig->render(
'admin/alert/default/bouton.html.twig', array(
'alert' => $alert,
'user' => $user
));
$btnSelect =
$this->twig->render(
'admin/alert/default/btnSelect.html.twig', array(
'alert' => $alert
));
$status =
$this->twig->render(
'admin/alert/default/status.html.twig', array(
'alert' => $alert
));
$urlShow = null;
if ($etapCat2) {
$params = [
'token' => $alert->getProject()->getToken(),
'tokenEtap'=> $etapCat2->getToken(),
'etapNum' => $etapCat2->getEtap()->getNum(),
];
if ($this->security->isGranted('ROLE_SUPER_ADMINISTRATOR', $user) || $this->security->isGranted('ROLE_ADMIN', $user)) {
$urlShow = $this->router->generate('admin_project_etaps_view', $params);
} elseif ($this->security->isGranted('ROLE_EPC', $user) || $this->security->isGranted('ROLE_DEV', $user)) {
$urlShow = $this->router->generate('user_project_etaps_view', $params);
} elseif ($this->security->isGranted('ROLE_GESTION_FINANCIER', $user)) {
$urlShow = $this->router->generate('gestionnaire_financier_project_etaps_view', $params);
} elseif ($this->security->isGranted('ROLE_ADMINISTRATEUR_FINANCIER', $user) || $this->security->isGranted('ROLE_OPERATEUR_FINANCIER', $user)) {
$urlShow = $this->router->generate('gestionnaire_financier_project_etaps_view', $params);
}
}
$output['data'][] = [
'responsive_id' => '',
'id' => $alert->getId(),
'project' => "<a style='color: #4A4A68 !important; href='".$urlShow."'>".$alert->getProject()->getName()."</a>",
'spv' => $alert->getProject()->getSpv()?$alert->getProject()->getSpv()->getName():'',
'status' => $status,
'typeAlert' => $typeAlert,
'dateLimit' => $alert->getDateLimit() ? $alert->getDateLimit()->format('d/m/Y') : '',
'delaiRestant' => $this->delaiRestantDateExpirationPromesseBail($alert),
'btnSelect' => $btnSelect,
'action' => $action,
'urlShow' => $urlShow
];
}
return $output;
}
public function addStyleToCellDate($cell,$row,$string,$spreadsheet){
if($string){
$spreadsheet->getActiveSheet()->setCellValue($cell.$row,Date::PHPToExcel($string->format('d/m/Y')) );
$spreadsheet->getActiveSheet()->getStyle($cell.$row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_DDMMYYYY);
}else{
$spreadsheet->getActiveSheet()->setCellValue($cell.$row,'-' );
}
return $spreadsheet;
}
public function extractAlerts($alerts,$request){
$file= $this->params->get('zips_directory')."/extraire_alert.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"Projet")
->setCellValue('B1',"SPV")
->setCellValue('C1',"Développeur")
->setCellValue('D1',"Capacité")
->setCellValue('E1',"Typologie")
->setCellValue('F1',"Type d'alerte")
->setCellValue('G1',"Délai restant")
->setCellValue('H1',"Date limite")
->setCellValue('I1',"Date PDB")
->setCellValue('J1',"Délai PDB")
->setCellValue('K1',"Date T0")
->setCellValue('L1',"Date arrêté PC/Dp")
->setCellValue('M1',"Statut administratif")
->setCellValue('N1',"Statut tracker");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(30);
$spreadsheet->getActiveSheet()->getStyle('A1:N1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($alerts as $item){
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$item->getProject()->getId()]);
$etap9 = $this->em->getRepository(Etap9::class)->findOneBy(['project'=>$item->getProject()->getId()]);
$etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$item->getProject()->getId()]);
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $item->getProject()->getName())
->setCellValue('B'.$row , $item->getProject()->getSpv()?$item->getProject()->getSpv()->getName():'')
->setCellValue('C'.$row , $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().''.$item->getProject()->getDeveloppeur()->getLastname():'')
->setCellValue('D'.$row , $item->getProject()->getCapacite())
->setCellValue('E'.$row , $item->getProject()->getTypologieProject()?$item->getProject()->getTypologieProject()->getName():'')
->setCellValue('F'.$row , $item->getTypeAlertStr())
->setCellValue('G'.$row , $this->delaiRestantDateExpirationPromesseBail($item))
->setCellValue('M'.$row , $item->getProject()->getStatusAdministratifNum())
->setCellValue('N'.$row , $item->getProject()->getStatusTrackerStr())
;
$spreadsheet = $this->addStyleToCellDate('H',$row,$item->getDateLimit(),$spreadsheet);
$dateExpirationPromesseBail = $etap5->getDateExpirationPromesseBail();
$nbr = (int)$etap5->getD1() + (int)$etap5->getD2() ;
if($nbr == 0){
$nbr = 24;
}
$spreadsheet = $this->addStyleToCellDate('I',$row,$dateExpirationPromesseBail,$spreadsheet);
$spreadsheet->getActiveSheet()->setCellValue('J'.$row , $nbr.' mois');
$spreadsheet = $this->addStyleToCellDate('K',$row,$etap9->getDateT0(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('L',$row,$etap1->getDateArretePcDp(),$spreadsheet);
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":N".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function delaiRestantDateExpirationPromesseBail($alert){
$str = '-';
if(is_object($alert)){
$dateLimit = $alert->getDateLimit();
$dateTime = new \DateTime('now');
if($dateLimit >= $dateTime){
$interval = $dateTime->diff($dateLimit);
$str = $this->formatInterval($interval);
}else{
$str = '-';
}
}
return $str;
}
public function formatInterval($interval){
$str = '';
if(is_object($interval)){
$days = $interval->d;
$mounths = $interval->m;
$years = $interval->y;
$hours = $interval->h;
$strDay = '' ;
$strMounth = '' ;
$strYear = '' ;
$strh = '' ;
if($days && $days > 0){
$strDay = ' '.$days." jours";
}
if($mounths && $mounths > 0){
$strMounth = ' '.$mounths." mois";
}
if($years && $years > 0){
$strYear = ' '.$years." an";
}
if($hours && $hours > 0){
$strh = ' '." 1 jour";
}
$str = $strYear.$strMounth.$strDay;
if(empty($str)){
$str = $strh;
}
}
return $str;
}
public function importProjects($filename)
{
$file = $this->params->get('uploads_directory')."/".$filename;
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f,0,";")) !== false) {
if($flag) {
$header = [];
foreach ($line as $key1 => $cell) {
$header[] = mb_convert_encoding(trim($cell), 'UTF-8', 'ISO-8859-1');
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]]= mb_convert_encoding(trim($cell), 'UTF-8', 'ISO-8859-1');
}
$i++ ;
}
fclose($f);
foreach ($array as &$item){
$item['project'] = 0;
if(isset($item['Nom du projet'])){
$name = $item['Nom du projet'];
$project = $this->em->getRepository(Project::class)->findOneBy(['name'=>$name]);
if($project){
$item['project'] = $project->getId();
$item['action'] = 1;
}
else{
$item['action'] = 0;
}
}else{
$item['action'] = 0;
}
}
return ['headerTab' => $header,'bodyTab'=>$array];
}
public function importProjectsSubmit($object)
{
foreach (json_decode($object) as $item){
if($item->project->id != 0){
$project = $this->em->getRepository(Project::class)->find($item->project->id);
if($project){
$etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project' => $project->getId()]);
$etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project' => $project->getId()]);
$etap3 = $this->em->getRepository(Etap3::class)->findOneBy(['project' => $project->getId()]);
$etap4 = $this->em->getRepository(Etap4::class)->findOneBy(['project' => $project->getId()]);
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project' => $project->getId()]);
$etap6 = $this->em->getRepository(Etap6::class)->findOneBy(['project' => $project->getId()]);
$etap7 = $this->em->getRepository(Etap7::class)->findOneBy(['project' => $project->getId()]);
$etap8 = $this->em->getRepository(Etap8::class)->findOneBy(['project' => $project->getId()]);
$etap9 = $this->em->getRepository(Etap9::class)->findOneBy(['project' => $project->getId()]);
$etap10 = $this->em->getRepository(Etap10::class)->findOneBy(['project' => $project->getId()]);
$etap11 = $this->em->getRepository(Etap11::class)->findOneBy(['project' => $project->getId()]);
$etap12 = $this->em->getRepository(Etap12::class)->findOneBy(['project' => $project->getId()]);
$etap13 = $this->em->getRepository(Etap13::class)->findOneBy(['project' => $project->getId()]);
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
$etap15 = $this->em->getRepository(Etap15::class)->findOneBy(['project' => $project->getId()]);
$etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project' => $project->getId()]);
$etap17 = $this->em->getRepository(Etap17::class)->findOneBy(['project' => $project->getId()]);
$etap18 = $this->em->getRepository(Etap18::class)->findOneBy(['project' => $project->getId()]);
$etap19 = $this->em->getRepository(Etap19::class)->findOneBy(['project' => $project->getId()]);
$etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project' => $project->getId()]);
$etap21 = $this->em->getRepository(Etap21::class)->findOneBy(['project' => $project->getId()]);
$etap22 = $this->em->getRepository(Etap22::class)->findOneBy(['project' => $project->getId()]);
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project' => $project->getId()]);
$etap161 = $this->em->getRepository(Etap161::class)->findOneBy(['project' => $project->getId()]);
$etap171 = $this->em->getRepository(Etap171::class)->findOneBy(['project' => $project->getId()]);
$etap172 = $this->em->getRepository(Etap172::class)->findOneBy(['project' => $project->getId()]);
$etap173 = $this->em->getRepository(Etap173::class)->findOneBy(['project' => $project->getId()]);
$etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project' => $project->getId()]);
$etap175 = $this->em->getRepository(Etap175::class)->findOneBy(['project' => $project->getId()]);
$etap201 = $this->em->getRepository(Etap201::class)->findOneBy(['project' => $project->getId()]);
$etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project' => $project->getId()]);
$etap0 = $this->em->getRepository(Etap0::class)->findOneBy(['project' => $project->getId()]);
$etap23 = $this->em->getRepository(Etap23::class)->findOneBy(['project' => $project->getId()]);
$etap80 = $this->em->getRepository(Etap80::class)->findOneBy(['project' => $project->getId()]);
$etap121 = $this->em->getRepository(Etap121::class)->findOneBy(['project' => $project->getId()]);
$etap601 = $this->em->getRepository(Etap601::class)->findOneBy(['project' => $project->getId()]);
$etap602 = $this->em->getRepository(Etap602::class)->findOneBy(['project' => $project->getId()]);
foreach ($item->project->value as $value){
$arrayOneToManyString = [];
$champsEntity = $value->champ;
$champsValue = $value->value;
$champsEntityTab = explode("-", $champsEntity);
if(isset($champsEntityTab[3]) && $champsEntityTab[1] == 0){
$nameSeteurFiled = 'set'.ucfirst($champsEntityTab[4]);
if(${'etap'.$champsEntityTab[3]}){
$etapEntityClass = 'App\\Entity\\Etap' . $champsEntityTab[3];
$classMetadata = $this->em->getClassMetadata($etapEntityClass);
if($classMetadata->hasAssociation($champsEntityTab[4])){
$associationMappings = $classMetadata->getAssociationMapping($champsEntityTab[4]);
if($associationMappings && $associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_ONE){
$target = $this->em->getRepository($associationMappings['targetEntity'])->findOneBy(['name'=>$champsValue]);
if($target){
${'etap'.$champsEntityTab[3]}->{$nameSeteurFiled}($target);
}
}elseif ($associationMappings && $associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_MANY){
if(isset($champsEntityTab[6])and isset($champsEntityTab[7])){
$nameGeteurFiled = 'get'.ucfirst($champsEntityTab[4]);
$nameSeteurFiledChild = 'set'.ucfirst($champsEntityTab[6]);
$nameSeteurFiledEtap = 'setEtap'.$champsEntityTab[3];
$nameSeteurFiledClass = ucfirst($champsEntityTab[7]);
$this->em->refresh(${'etap'.$champsEntityTab[3]});
if(count(${'etap'.$champsEntityTab[3]}->{$nameGeteurFiled}())> 0){
$value0 = ${'etap'.$champsEntityTab[3]}->{$nameGeteurFiled}()[0];
$value0->{$nameSeteurFiledChild}($champsValue);
$this->em->persist($value0);
$this->em->flush();
//
}
else{
$classEntity = 'App\\Entity\\' .$nameSeteurFiledClass;
$value0 = new $classEntity();
$value0->{$nameSeteurFiledChild}($champsValue);
$value0->{$nameSeteurFiledEtap}(${'etap'.$champsEntityTab[3]});
$this->em->persist($value0);
$this->em->flush();
}
}else{
if($nameSeteurFiled == "setNumeroCardiMultiple"){
$numeroCardiEntity = ${'etap'.$champsEntityTab[3]}->getNumeroCardiMultiple();
if(isset($champsEntityTab[6])){
if($champsEntityTab[6] == 'numeroCardi'){
if(count($numeroCardiEntity)> 0){
$numeroCardi = $numeroCardiEntity[0];
}else{
$numeroCardi = new NumeroCardi();
}
$numeroCardi->setNumeroCardi($champsValue);
$numeroCardi->setEtap12(${'etap'.$champsEntityTab[3]});
$this->em->persist($numeroCardi);
}else if($champsEntityTab[6] == 'identifiantEnedis'){
if(count($numeroCardiEntity)> 0){
$numeroCardi = $numeroCardiEntity[0];
}else{
$numeroCardi = new NumeroCardi();
}
$numeroCardi->setIdentifiantEnedis($champsValue);
$numeroCardi->setEtap12(${'etap'.$champsEntityTab[3]});
$this->em->persist($numeroCardi);
}
}
}
if($nameSeteurFiled == "setInformationMultiple"){
if(isset($champsEntityTab[6])){
if($champsEntityTab[6] == 'numeroContratAchat'){
if($etap15){
if(count($etap15->getInformationMultiple())> 0){
$value0 = $etap15->getInformationMultiple()[0];
$value0->setNumeroContratAchat($champsValue);
$this->em->persist($value0);
}
else{
$value0 = new ImfomationContratAchat();
$value0->setNumeroContratAchat($champsValue);
$value0->setEtap15($etap15);
$this->em->persist($value0);
}
}
}
if($champsEntityTab[6] == 'typeContrat'){
if($etap15){
if(count($etap15->getInformationMultiple())> 0){
$value0 = $etap15->getInformationMultiple()[0];
$value0->setTypeContrat($champsValue);
$this->em->persist($value0);
}
else{
$value0 = new ImfomationContratAchat();
$value0->setTypeContrat($champsValue);
$value0->setEtap15($etap15);
$this->em->persist($value0);
}
}
}
}
}
if($nameSeteurFiled == "setVisiteTerrainV2"){
if(isset($champsEntityTab[6]) && $champsEntityTab[6] == 'dateVisiteTerrain' && $etap23){
$dateStrTab = explode("/", $champsValue);
if(isset($dateStrTab[2]) && strlen($dateStrTab[2]) == 2){
$dateVisite = \DateTime::createFromFormat('d/m/y', $champsValue );
}else{
$dateVisite = \DateTime::createFromFormat('d/m/Y', $champsValue );
}
if($dateVisite && count($etap23->getVisiteTerrainV2()) > 0){
$visiteTerrainV2 = $etap23->getVisiteTerrainV2()[0];
$visiteTerrainV2->setDateVisiteTerrain($dateVisite);
$this->em->persist($visiteTerrainV2);
}
}
}
}
}
}else{
if(isset($champsEntityTab[5]) && $champsEntityTab[5] == 1){
$dateStrTab = explode("/", $champsValue);
if(isset($dateStrTab[2]) && strlen($dateStrTab[2]) == 2){
$date = \DateTime::createFromFormat('d/m/y', $champsValue );
}else{
$date = \DateTime::createFromFormat('d/m/Y', $champsValue );
}
if($date){
if(method_exists( ${'etap'.$champsEntityTab[3]},$nameSeteurFiled)){
${'etap'.$champsEntityTab[3]}->{$nameSeteurFiled}($date);
}
if($nameSeteurFiled == "setDateT0"){
$project->setDateT0Date($date);
}
if($nameSeteurFiled == "setDateArretePcDp"){
$project->setDateArretePc($date);
}
if($nameSeteurFiled == "setDateMiseEnService"){
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
$etap21 = $this->em->getRepository(Etap21::class)->findOneBy(['project'=>$project->getId()]);
$project->setDateMiseEnService($date);
$etap14->setDateMiseEnService($date);
$etap21->setDateMiseEnService($date);
}
if($nameSeteurFiled == "setDateConsuel"){
$etap20->setDateConsuelEtap20($date);
}
if($nameSeteurFiled == "setDateConsuelEtap20"){
$etap20->setDateConsuel($date);
}
}
}else{
if(method_exists( ${'etap'.$champsEntityTab[3]},$nameSeteurFiled)){
${'etap'.$champsEntityTab[3]}->{$nameSeteurFiled}($champsValue);
}
}
if($nameSeteurFiled == "setNumParcelleEtablissement"){
$project->setNumParcelle($champsValue);
}
if($nameSeteurFiled == "setTarifFit"){
$project->setTarifRevente($champsValue);
}
if($nameSeteurFiled == "setLoyerConfirme"){
$project->setLoyerVise($champsValue);
}
if($nameSeteurFiled == "setSoulteConfirme"){
$project->setSoulteVise($champsValue);
}
}
}
}
if(isset($champsEntityTab[1]) && $champsEntityTab[1] != 0){
$nameSeteurFiled = 'set'.ucfirst($champsEntityTab[4]);
$etapEntityClass = 'App\\Entity\\Project';
$classMetadata = $this->em->getClassMetadata($etapEntityClass);
if($classMetadata->hasAssociation($champsEntityTab[4])){
$associationMappings = $classMetadata->getAssociationMapping($champsEntityTab[4]);
if($associationMappings && $associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_ONE){
if($nameSeteurFiled == "setFournisseur"){
if($project->getSchemaConstruction() == 'EPC'){
$fournisseur = $this->em->getRepository(Fournisseur::class)->findOneBy(['email'=>$champsValue]);
if($fournisseur){
$this->addEpcFournisseur($project,$fournisseur);
}
}
}else {
$target = $this->em->getRepository($associationMappings['targetEntity'])->findOneBy(['name' => $champsValue]);
if ($target) {
$project->{$nameSeteurFiled}($target);
}
}
}elseif ($associationMappings && $associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_MANY){
if($nameSeteurFiled == "setCommentProject2"){
if(isset($champsEntityTab[6])){
if($champsEntityTab[6] == 'comment'){
$entityComment = new CommentProject2();
$entityComment->setComment($champsValue);
$entityComment->setProject($project);
$entityComment->setUser($this->security->getUser());
$this->em->persist($entityComment);
}
}
}
if($nameSeteurFiled == "setResponsableUser"){
$user = $this->em->getRepository(User::class)->findOneBy(['email'=>$champsValue]);
if($user){
$checkResponcableConstructeur = $this->em->getRepository(ResponcablePorject::class)->findOneBy(['responsable'=>$user->getId(),'project'=>$project->getId()]);
if(!$checkResponcableConstructeur){
$projectResponsable = new ResponcablePorject();
$projectResponsable->setResponsable($user);
$projectResponsable->setProject($project);
$this->em->persist($projectResponsable);
$this->em->flush();
}
}
}
if($nameSeteurFiled == "setFournisseurProject"){
if(isset($champsEntityTab[5]) && $champsEntityTab[5] == 'Installateur'){
$fournisseurInstallateur = $this->em->getRepository(Fournisseur::class)->findOneBy(['name'=>$champsValue]);
if($fournisseurInstallateur){
if($project->getSchemaConstruction() == 'Lots séparés') {
$fournisseurProjectInstallateur = $this->em->getRepository(FournisseurProject::class)->findOneBy(['fournisseur' => $fournisseurInstallateur->getId(), 'titre' => 'Installateur','project'=>$project->getId()]);
if (!$fournisseurProjectInstallateur) {
$projectFournisseurInstallateur = new FournisseurProject();
$projectFournisseurInstallateur->setFournisseur($fournisseurInstallateur);
$projectFournisseurInstallateur->setTitre('Installateur');
$projectFournisseurInstallateur->setProject($project);
$this->em->persist($projectFournisseurInstallateur);
$this->em->flush();
$this->addInstalateurCharpentier('Installateur', $project);
}
}
}
}
if(isset($champsEntityTab[5]) && $champsEntityTab[5] == 'Charpentier'){
$fournisseurCharpentier = $this->em->getRepository(Fournisseur::class)->findOneBy(['name'=>$champsValue]);
if($fournisseurCharpentier){
if($project->getSchemaConstruction() == 'Lots séparés') {
$fournisseurProjectCharpentier = $this->em->getRepository(FournisseurProject::class)->findOneBy(['fournisseur' => $fournisseurCharpentier->getId(), 'titre' => 'Charpentier','project'=>$project->getId()]);
if (!$fournisseurProjectCharpentier) {
$projectFournisseurCharpentier = new FournisseurProject();
$projectFournisseurCharpentier->setFournisseur($fournisseurCharpentier);
$projectFournisseurCharpentier->setTitre('Charpentier');
$projectFournisseurCharpentier->setProject($project);
$this->em->persist($projectFournisseurCharpentier);
$this->em->flush();
$this->addInstalateurCharpentier('Charpentier', $project);
}
}
}
}
if(isset($champsEntityTab[5]) && $champsEntityTab[5] == 'Mainteneur'){
$fournisseurMainteneur = $this->em->getRepository(Fournisseur::class)->findOneBy(['name'=>$champsValue]);
if($fournisseurMainteneur){
$fournisseurProjectMainteneur = $this->em->getRepository(FournisseurProject::class)->findOneBy(['fournisseur' => $fournisseurMainteneur->getId(), 'titre' => 'Mainteneur','project'=>$project->getId()]);
if (!$fournisseurProjectMainteneur) {
$projectFournisseurMainteneur = new FournisseurProject();
$projectFournisseurMainteneur->setFournisseur($fournisseurMainteneur);
$projectFournisseurMainteneur->setTitre('Mainteneur');
$projectFournisseurMainteneur->setProject($project);
$this->em->persist($projectFournisseurMainteneur);
$this->em->flush();
}
}
}
}
}elseif ($associationMappings && $associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY){
$targetManyToMany = $this->em->getRepository($associationMappings['targetEntity'])->findOneBy(['name' => trim($champsValue)]);
$adderManyToMany = 'add'.ucfirst($champsEntityTab[4]);
if($targetManyToMany && method_exists($project, $adderManyToMany)){
$project->{$adderManyToMany}($targetManyToMany);
}
}
}else{
if(isset($champsEntityTab[5]) && $champsEntityTab[5] == 1){
$dateStrTab = explode("/", $champsValue);
if(isset($dateStrTab[2]) && strlen($dateStrTab[2]) == 2){
$date = \DateTime::createFromFormat('d/m/y', $champsValue );
}else{
$date = \DateTime::createFromFormat('d/m/Y', $champsValue );
}
if($date){
if(method_exists($project,$nameSeteurFiled)){
$project->{$nameSeteurFiled}($date);
}
if($nameSeteurFiled == "setDateT0Date"){
$etap9->setDateT0($date);
}
if($nameSeteurFiled == "setDateMiseEnService"){
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
$etap21 = $this->em->getRepository(Etap21::class)->findOneBy(['project'=>$project->getId()]);
$project->setDateMiseEnService($date);
$etap14->setDateMiseEnService($date);
$etap21->setDateMiseEnService($date);
}
}
}else{
if($nameSeteurFiled == "setAchatLocation"){
$achatLocationValue = mb_strtolower(trim($champsValue));
if($achatLocationValue == 'achat'){
$project->setAchatLocation(Project::ACHAT);
}elseif($achatLocationValue == 'location'){
$project->setAchatLocation(Project::LOCATION);
}elseif(in_array($achatLocationValue, ['1','2'])){
$project->setAchatLocation((int)$achatLocationValue);
}
}elseif(method_exists($project,$nameSeteurFiled)){
if(trim($champsValue)){
$project->{$nameSeteurFiled}(trim($champsValue));
if($nameSeteurFiled == "setNumParcelle"){
$etap8->setNumParcelleEtablissement($champsValue);
}
}
if($nameSeteurFiled == "setStadeConstruction"){
$project->{$nameSeteurFiled}(trim($champsValue));
$project->setStadeConstructionDate(new \DateTime());
}
}
}
}
}
$this->em->persist($etap1);
$this->em->persist($etap2);
$this->em->persist($etap3);
$this->em->persist($etap4);
$this->em->persist($etap5);
$this->em->persist($etap6);
$this->em->persist($etap7);
$this->em->persist($etap8);
$this->em->persist($etap9);
$this->em->persist($etap10);
$this->em->persist($etap11);
$this->em->persist($etap12);
$this->em->persist($etap13);
$this->em->persist($etap14);
$this->em->persist($etap15);
$this->em->persist($etap16);
$this->em->persist($etap17);
$this->em->persist($etap18);
$this->em->persist($etap19);
$this->em->persist($etap20);
$this->em->persist($etap21);
$this->em->persist($etap22);
$this->em->persist($etap160);
$this->em->persist($etap161);
$this->em->persist($etap171);
$this->em->persist($etap172);
$this->em->persist($etap173);
$this->em->persist($etap174);
$this->em->persist($etap175);
$this->em->persist($etap159);
if($etap0){
$this->em->persist($etap0);
}
if($etap23){
$this->em->persist($etap23);
}
if($etap80){
$this->em->persist($etap80);
}
if($etap121){
$this->em->persist($etap121);
}
if($etap601){
$this->em->persist($etap601);
}
if($etap602){
$this->em->persist($etap602);
}
$this->em->persist($project);
$this->em->flush();
$this->etapsService->updateStatusTracker($project); // set status tracker
}
}
}
}
}
public function importProjectsDev5($filename)
{
$file = $this->params->get('uploads_directory')."/".$filename;
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f,0,";")) !== false) {
if($flag) {
$header = [];
foreach ($line as $cell) {
$header[] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$i++ ;
}
fclose($f);
foreach ($array as &$item){
if(isset($item['Nom du projet'])){
$name = $item['Nom du projet'];
$project = $this->em->getRepository(Project::class)->findOneBy(['name'=>$name]);
if($project){
$this->etapsService->updateStatusTracker($project,true); // set status tracker
$item['action'] = 1;
}else{
$item['action'] = 0;
}
}else{
$item['action'] = 0;
}
}
return ['headerTab' => $header,'bodyTab'=>$array];
}
public function getRapportData($date1,$date2,$developpeur=null){
$dev0 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_0,$developpeur);
$dev1 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_1,$developpeur);
$dev2 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_2,$developpeur);
$dev3 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_3,$developpeur);
$dev4 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_4,$developpeur);
$dev5 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_5,$developpeur);
$dev6 = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_6,$developpeur);
$dev0Identifie = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_0_identifie,$developpeur);
$dev0Bis = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_0_bis,$developpeur);
$dev2New = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_2_new,$developpeur);
$dev4New = $this->getDataRapportByStatusAndDate($date1,$date2,StatusTracker::STATUS_dev_4_new,$developpeur);
$miseEnserviceProjects = $this->em->getRepository(Project::class)->findAllProjectActiveMiseEnService($date1,$date2,$developpeur);
$stadeConstructionProjects = $this->em->getRepository(Project::class)->findAllProjectByStadeConstruction('Go consultation',$date1,$date2,$developpeur);
$bailSignesProjects = $this->em->getRepository(Project::class)->findAllProjectActiveBailSigne($date1,$date2,$developpeur);
$archivesProjects = $this->em->getRepository(Project::class)->findAllArchives($date1,$date2,$developpeur);
$annulesProjects = $this->em->getRepository(Project::class)->findAllAnnules($date1,$date2,$developpeur);
$newProjects = $this->em->getRepository(Project::class)->findAllProjectActiveNew($date1,$date2,$developpeur);
$statuDev0CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev0['date1Result']);
$statuDev0CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev0['date2Result']);
$statuDev1CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev1['date1Result']);
$statuDev1CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev1['date2Result']);
$statuDev2CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev2['date1Result']);
$statuDev2CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev2['date2Result']);
$statuDev3CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev3['date1Result']);
$statuDev3CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev3['date2Result']);
$statuDev4CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev4['date1Result']);
$statuDev4CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev4['date2Result']);
$statuDev5CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev5['date1Result']);
$statuDev5CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev5['date2Result']);
$statuDev6CapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev6['date1Result']);
$statuDev6CapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev6['date2Result']);
$statuDev0IdentifieCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev0Identifie['date1Result']);
$statuDev0IdentifieCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev0Identifie['date2Result']);
$statuDev0BisCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev0Bis['date1Result']);
$statuDev0BisCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev0Bis['date2Result']);
$statuDev2NewCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev2New['date1Result']);
$statuDev2NewCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev2New['date2Result']);
$statuDev4NewCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($dev4New['date1Result']);
$statuDev4NewCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($dev4New['date2Result']);
$arrayCapacite = [
'statusDev0Identifie' => [
'date1' => $statuDev0IdentifieCapaciteDate1,
'date2' => $statuDev0IdentifieCapaciteDate2
],
'statusDev0Bis' => [
'date1' => $statuDev0BisCapaciteDate1,
'date2' => $statuDev0BisCapaciteDate2
],
'statusDev2New' => [
'date1' => $statuDev2NewCapaciteDate1,
'date2' => $statuDev2NewCapaciteDate2
],
'statusDev4New' => [
'date1' => $statuDev4NewCapaciteDate1,
'date2' => $statuDev4NewCapaciteDate2
],
'statusDev0' => [
'date1' => $statuDev0CapaciteDate1,
'date2' => $statuDev0CapaciteDate2
],
'statusDev1' => [
'date1' => $statuDev1CapaciteDate1,
'date2' => $statuDev1CapaciteDate2
],
'statusDev2' => [
'date1' => $statuDev2CapaciteDate1,
'date2' => $statuDev2CapaciteDate2
],
'statusDev3' => [
'date1' => $statuDev3CapaciteDate1,
'date2' => $statuDev3CapaciteDate2
],
'statusDev4' => [
'date1' => $statuDev4CapaciteDate1,
'date2' => $statuDev4CapaciteDate2
],
'statusDev5' => [
'date1' => $statuDev5CapaciteDate1,
'date2' => $statuDev5CapaciteDate2
],
'statusDev6' => [
'date1' => $statuDev6CapaciteDate1,
'date2' => $statuDev6CapaciteDate2
]
] ;
return [
'rapportDev0Identifie' => $dev0Identifie,
'rapportDev0Bis' => $dev0Bis,
'rapportDev0' => $dev0,
'rapportDev2New' => $dev2New,
'rapportDev1' => $dev1,
'rapportDev4New' => $dev4New,
'rapportDev2' => $dev2,
'rapportDev3' => $dev3,
'rapportDev4' => $dev4,
'rapportDev5' => $dev5,
'rapportDev6' => $dev6,
'arrayCapacite' => $arrayCapacite,
'totalCapaciteDate1' => floatval($statuDev0IdentifieCapaciteDate1) + floatval($statuDev0BisCapaciteDate1) + floatval($statuDev2NewCapaciteDate1) + floatval($statuDev4NewCapaciteDate1) + floatval($statuDev0CapaciteDate1) + floatval($statuDev1CapaciteDate1) + floatval($statuDev2CapaciteDate1) +floatval($statuDev3CapaciteDate1) +floatval($statuDev4CapaciteDate1) +floatval($statuDev5CapaciteDate1) + floatval($statuDev6CapaciteDate1),
'totalCapaciteDate2' => floatval($statuDev0IdentifieCapaciteDate2) + floatval($statuDev0BisCapaciteDate2) + floatval($statuDev2NewCapaciteDate2) + floatval($statuDev4NewCapaciteDate2) + floatval($statuDev0CapaciteDate2) + floatval($statuDev1CapaciteDate2) + floatval($statuDev2CapaciteDate2) +floatval($statuDev3CapaciteDate2) +floatval($statuDev4CapaciteDate2) +floatval($statuDev5CapaciteDate2) + floatval($statuDev6CapaciteDate2),
'totalDate1' => count($dev0Identifie['date1Result']) + count($dev0Bis['date1Result']) + count($dev2New['date1Result']) + count($dev4New['date1Result']) + count($dev0['date1Result']) + count($dev1['date1Result']) + count($dev2['date1Result']) + count($dev3['date1Result']) + count($dev4['date1Result']) + count($dev5['date1Result']) + count($dev6['date1Result']) ,
'totalDate2' => count($dev0Identifie['date2Result']) + count($dev0Bis['date2Result']) + count($dev2New['date2Result']) + count($dev4New['date2Result']) + count($dev0['date2Result']) + count($dev1['date2Result']) + count($dev2['date2Result']) + count($dev3['date2Result']) + count($dev4['date2Result']) +count($dev5['date2Result']) + count($dev6['date2Result']) ,
'date' => $date1,
'date2' => $date2,
'alertRapportTab' => $this->getAlertRapportTab($developpeur),
'alertRapportTabAnnexe' => $this->getAlertRapportTabAnnexe($developpeur),
'alertRapportTabDevs' => $this->getAlertRapportTabDevs($developpeur),
'miseEnserviceProjects' => $miseEnserviceProjects,
'bailSignesProjects' => $bailSignesProjects,
'archivesProjects' => $archivesProjects,
'annulesProjects' => $annulesProjects,
'stadeConstructionProjects' => $stadeConstructionProjects,
'developpeur' => $developpeur,
'newProjects' => $newProjects,
];
}
public function getAlertRapportTab($developpeur = null,$responsableConstruction=null,$spv=null,$schemaConstruction=null){
$alertT0Noires = $this->em->getRepository(AlertRapport::class)->findByStatut('T0',AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBNoires = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB',AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPNoires = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP',AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertT0Rouges = $this->em->getRepository(AlertRapport::class)->findByStatut('T0',AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBRouges = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB',AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPRouges = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP',AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertT0Oranges = $this->em->getRepository(AlertRapport::class)->findByStatut('T0',AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBOranges = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB',AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPOranges = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP',AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$arrays = [];
foreach ($alertT0Noires as $item){
$arrays['alertNoire'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertNoire'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['T0']['project'][] = $item->getProject();
}
foreach ($alertPDBNoires as $item){
$arrays['alertNoire'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertNoire'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['PDB']['project'][] = $item->getProject();
}
foreach ($alertPCDPNoires as $item){
$arrays['alertNoire'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertNoire'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['PCDP']['project'][] = $item->getProject();
}
foreach ($alertT0Rouges as $item){
$arrays['alertRouge'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertRouge'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['T0']['project'][] = $item->getProject();
}
foreach ($alertPDBRouges as $item){
$arrays['alertRouge'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertRouge'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['PDB']['project'][] = $item->getProject();
}
foreach ($alertPCDPRouges as $item){
$arrays['alertRouge'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertRouge'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['PCDP']['project'][] = $item->getProject();
}
foreach ($alertT0Oranges as $item){
$arrays['alertOrange'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertOrange'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['T0']['project'][] = $item->getProject();
}
foreach ($alertPDBOranges as $item){
$arrays['alertOrange'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertOrange'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['PDB']['project'][] = $item->getProject();
}
foreach ($alertPCDPOranges as $item){
$arrays['alertOrange'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays['alertOrange'][$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['PCDP']['project'][] = $item->getProject();
}
if(isset($arrays['alertNoire'])){
foreach ($arrays['alertNoire'] as &$item){
$item = $this->getMaxValueTabAlert($item);
}
}
if(isset($arrays['alertRouge'])){
foreach ($arrays['alertRouge'] as &$item){
$item =$this->getMaxValueTabAlert($item);
}
}
if(isset($arrays['alertOrange'])){
foreach ($arrays['alertOrange'] as &$item){
$item = $this->getMaxValueTabAlert($item);
}
}
return $arrays;
}
private function getMaxValueTabAlert(&$item){
$tab = [];
if(isset($item['T0'])){
$tab[] = count($item['T0']['project']);
}
if(isset($item['PDB'])){
$tab[] = count($item['PDB']['project']);
}
if(isset($item['PCDP'])){
$tab[] = count($item['PCDP']['project']);
}
if($tab){
$heightGlobal = 189;
$max = max($tab);
$item['max'] = $max;
if(isset($item['T0'])){
$item['T0']['count'] = count($item['T0']['project']);
$item['T0']['pourcentage'] = (count($item['T0']['project']) / $max) *100;
$item['T0']['height'] = (((count($item['T0']['project']) / $max) *100) / 100) *$heightGlobal;
}
if(isset($item['PDB'])){
$item['PDB']['count'] = count($item['PDB']['project']);
$item['PDB']['pourcentage'] = (count($item['PDB']['project']) / $max) *100;
$item['PDB']['height'] = (((count($item['PDB']['project']) / $max) *100) / 100) *$heightGlobal;
}
if(isset($item['PCDP'])){
$item['PCDP']['count'] = count($item['PCDP']['project']);
$item['PCDP']['pourcentage'] = (count($item['PCDP']['project']) / $max) *100;
$item['PCDP']['height'] = (((count($item['PCDP']['project']) / $max) *100) / 100) *$heightGlobal;
}
}
return $item;
}
public function getAlertRapportTabDevs($developpeur = null,$responsableConstruction=null,$spv=null,$schemaConstruction=null)
{
$alertT0Noires = $this->em->getRepository(AlertRapport::class)->findByStatut('T0', AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBNoires = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB', AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPNoires = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP', AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertT0Rouges = $this->em->getRepository(AlertRapport::class)->findByStatut('T0', AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBRouges = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB', AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPRouges = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP', AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertT0Oranges = $this->em->getRepository(AlertRapport::class)->findByStatut('T0', AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBOranges = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB', AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPOranges = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP', AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$arrays = [];
foreach ($alertT0Noires as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertPDBNoires as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertPCDPNoires as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertT0Rouges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertPDBRouges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertPCDPRouges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertT0Oranges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertPDBOranges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
foreach ($alertPCDPOranges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['id']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0 ;
}
return $arrays;
}
public function getAlertRapportTabAnnexe($developpeur = null,$responsableConstruction=null,$spv=null,$schemaConstruction=null){
$alertT0Noires = $this->em->getRepository(AlertRapport::class)->findByStatut('T0',AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBNoires = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB',AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPNoires = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP',AlertRapport::statut_noire,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertT0Rouges = $this->em->getRepository(AlertRapport::class)->findByStatut('T0',AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBRouges = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB',AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPRouges = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP',AlertRapport::statut_rouge,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertT0Oranges = $this->em->getRepository(AlertRapport::class)->findByStatut('T0',AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPDBOranges = $this->em->getRepository(AlertRapport::class)->findByStatut('PDB',AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$alertPCDPOranges = $this->em->getRepository(AlertRapport::class)->findByStatut('PCDP',AlertRapport::statut_orange,$developpeur,$responsableConstruction,$spv,$schemaConstruction);
$arrays = [];
foreach ($alertT0Noires as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte T0';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinT0();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertNoire'][] = $tab;
}
foreach ($alertPDBNoires as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte PDB';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinPDB();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertNoire'][] = $tab;
}
foreach ($alertPCDPNoires as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte PC/DP';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinPCDP();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertNoire'][] =$tab;
}
foreach ($alertT0Rouges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte T0';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinT0();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertRouge'][] = $tab;
}
foreach ($alertPDBRouges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte PDB';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinPDB();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertRouge'] = $tab;
}
foreach ($alertPCDPRouges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte PC/DP';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinPCDP();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertRouge'][] = $tab;
}
foreach ($alertT0Oranges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte T0';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinT0();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertOrange'][] = $tab;
}
foreach ($alertPDBOranges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte PDB';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinPDB();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertOrange'][] = $tab;
}
foreach ($alertPCDPOranges as $item){
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['dev']= $item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getFirstname().' '.$item->getProject()->getDeveloppeur()->getLastname(): ' -- ' ;
$tab = [];
$tab['statusCustom'] = 'Alerte PC/DP';
$tab['project'] = $item->getProject();
$tab['dateFin'] = $item->getDateFinPCDP();
$arrays[$item->getProject()->getDeveloppeur()?$item->getProject()->getDeveloppeur()->getId():0]['alertOrange'][] = $tab;
}
return $arrays;
}
public function getRapportConstructionData($date1,$date2,$responsableConstruction=null,$spv=null,$schemaConstruction=null,$constructeurRapport =null){
$statusGo_Consultation = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Go_Consultation,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusAttente_Devis = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Attente_Devis,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusBudget_Capex = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Budget_Capex,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusContrat_Construction = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Contrat_Construction,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusOrder_demarrage_envoye = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Order_demarrage_envoye,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusConstruction_Demarree = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Construction_Demarree,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusConstruction_Achevee_Non_Raccordable = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Construction_Achevee_Non_Raccordable,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusConstruction_Achevee_A_Raccorder = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Construction_Achevee_A_Raccorder,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusConstruction_Achevee_Raccordee = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Construction_Achevee_Raccordee,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusPassage_dre = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Passage_dre,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusConsuel_obtenu = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Consuel_obtenu,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusOperating = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Operating,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusBillable = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Billable,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusInvoiced = $this->getDataRapportConstructionByStatusAndDate($date1,$date2,StatusTrackerConstruction::Invoiced,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$statusGo_ConsultationCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusGo_Consultation['date1Result']);
$statusGo_ConsultationCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusGo_Consultation['date2Result']);
$statusAttente_DevisCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusAttente_Devis['date1Result']);
$statusAttente_DevisCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusAttente_Devis['date2Result']);
$statusBudget_CapexCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusBudget_Capex['date1Result']);
$statusBudget_CapexCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusBudget_Capex['date2Result']);
$statusContrat_ConstructionCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusContrat_Construction['date1Result']);
$statusContrat_ConstructionCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusContrat_Construction['date2Result']);
$statusOrder_demarrage_envoyeCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusOrder_demarrage_envoye['date1Result']);
$statusOrder_demarrage_envoyeCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusOrder_demarrage_envoye['date2Result']);
$statusConstruction_DemarreeCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Demarree['date1Result']);
$statusConstruction_DemarreeCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Demarree['date2Result']);
$statusConstruction_Achevee_Non_RaccordableCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Achevee_Non_Raccordable['date1Result']);
$statusConstruction_Achevee_Non_RaccordableCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Achevee_Non_Raccordable['date2Result']);
$statusConstruction_Achevee_A_RaccorderCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Achevee_A_Raccorder['date1Result']);
$statusConstruction_Achevee_A_RaccorderCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Achevee_A_Raccorder['date2Result']);
$statusConstruction_Achevee_RaccordeeCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Achevee_Raccordee['date1Result']);
$statusConstruction_Achevee_RaccordeeCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusConstruction_Achevee_Raccordee['date2Result']);
$statusPassage_dreCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusPassage_dre['date1Result']);
$statusPassage_dreCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusPassage_dre['date2Result']);
$statusConsuel_obtenuCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusConsuel_obtenu['date1Result']);
$statusConsuel_obtenuCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusConsuel_obtenu['date2Result']);
$statusOperatingCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusOperating['date1Result']);
$statusOperatingCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusOperating['date2Result']);
$statusBillableCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusBillable['date1Result']);
$statusBillableCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusBillable['date2Result']);
$statusInvoicedCapaciteDate1 = $this->getCapaciteByStatusTrackerConstruction($statusInvoiced['date1Result']);
$statusInvoicedCapaciteDate2 = $this->getCapaciteByStatusTrackerConstruction($statusInvoiced['date2Result']);
$arrayCapacite = [
'statusGo_Consultation' => [
'date1' => $statusGo_ConsultationCapaciteDate1,
'date2' => $statusGo_ConsultationCapaciteDate2
],
'statusAttente_Devis' => [
'date1' => $statusAttente_DevisCapaciteDate1,
'date2' => $statusAttente_DevisCapaciteDate2
],
'statusBudget_Capex' => [
'date1' => $statusBudget_CapexCapaciteDate1,
'date2' => $statusBudget_CapexCapaciteDate2
],
'statusContrat_Construction' => [
'date1' => $statusContrat_ConstructionCapaciteDate1,
'date2' => $statusContrat_ConstructionCapaciteDate2
],
'statusOrder_demarrage_envoye' => [
'date1' => $statusOrder_demarrage_envoyeCapaciteDate1,
'date2' => $statusOrder_demarrage_envoyeCapaciteDate2
],
'statusConstruction_Demarree' => [
'date1' => $statusConstruction_DemarreeCapaciteDate1,
'date2' => $statusConstruction_DemarreeCapaciteDate2
],
'statusConstruction_Achevee_Non_Raccordable' => [
'date1' => $statusConstruction_Achevee_Non_RaccordableCapaciteDate1,
'date2' => $statusConstruction_Achevee_Non_RaccordableCapaciteDate2
],
'statusConstruction_Achevee_A_Raccorder' => [
'date1' => $statusConstruction_Achevee_A_RaccorderCapaciteDate1,
'date2' => $statusConstruction_Achevee_A_RaccorderCapaciteDate2
],
'statusConstruction_Achevee_Raccordee' => [
'date1' => $statusConstruction_Achevee_RaccordeeCapaciteDate1,
'date2' => $statusConstruction_Achevee_RaccordeeCapaciteDate2
],
'statusPassage_dre' => [
'date1' => $statusPassage_dreCapaciteDate1,
'date2' => $statusPassage_dreCapaciteDate2
],
'statusConsuel_obtenu' => [
'date1' => $statusConsuel_obtenuCapaciteDate1,
'date2' => $statusConsuel_obtenuCapaciteDate2
],
'statusOperating' => [
'date1' => $statusOperatingCapaciteDate1,
'date2' => $statusOperatingCapaciteDate2
],
'statusBillable' => [
'date1' => $statusBillableCapaciteDate1,
'date2' => $statusBillableCapaciteDate2
]
,
'statusInvoiced' => [
'date1' => $statusInvoicedCapaciteDate1,
'date2' => $statusInvoicedCapaciteDate2
]
] ;
$totalDeveloppement = [
'date1' => [
'project'=> count($statusGo_Consultation['date1Result']) + count($statusAttente_Devis['date1Result']) + count($statusBudget_Capex['date1Result']) + count($statusContrat_Construction['date1Result']) + count($statusOrder_demarrage_envoye['date1Result']) ,
'capacite'=> floatval($statusGo_ConsultationCapaciteDate1) + floatval($statusAttente_DevisCapaciteDate1) + floatval($statusBudget_CapexCapaciteDate1) +floatval($statusContrat_ConstructionCapaciteDate1) +floatval($statusOrder_demarrage_envoyeCapaciteDate1)
],
'date2' => [
'project'=> count($statusGo_Consultation['date2Result']) + count($statusAttente_Devis['date2Result']) + count($statusBudget_Capex['date2Result']) + count($statusContrat_Construction['date2Result']) + count($statusOrder_demarrage_envoye['date2Result']) ,
'capacite'=> floatval($statusGo_ConsultationCapaciteDate2) + floatval($statusAttente_DevisCapaciteDate2) + floatval($statusBudget_CapexCapaciteDate2) +floatval($statusContrat_ConstructionCapaciteDate2) +floatval($statusOrder_demarrage_envoyeCapaciteDate2)
]
];
$totalConstruction = [
'date1' => [
'project'=> count($statusConstruction_Demarree['date1Result']) + count($statusConstruction_Achevee_Non_Raccordable['date1Result']) + count($statusConstruction_Achevee_A_Raccorder['date1Result']) + count($statusConstruction_Achevee_Raccordee['date1Result']) + count($statusPassage_dre['date1Result']) + count($statusConsuel_obtenu['date1Result']) ,
'capacite'=> floatval($statusConstruction_DemarreeCapaciteDate1) + floatval($statusConstruction_Achevee_Non_RaccordableCapaciteDate1) + floatval($statusConstruction_Achevee_A_RaccorderCapaciteDate1) +floatval($statusConstruction_Achevee_RaccordeeCapaciteDate1) +floatval($statusPassage_dreCapaciteDate1) +floatval($statusConsuel_obtenuCapaciteDate1)
],
'date2' => [
'project'=> count($statusConstruction_Demarree['date2Result']) + count($statusConstruction_Achevee_Non_Raccordable['date2Result']) + count($statusConstruction_Achevee_A_Raccorder['date2Result']) + count($statusConstruction_Achevee_Raccordee['date2Result']) + count($statusPassage_dre['date2Result']) + count($statusConsuel_obtenu['date2Result']) ,
'capacite'=> floatval($statusConstruction_DemarreeCapaciteDate2) + floatval($statusConstruction_Achevee_Non_RaccordableCapaciteDate2) + floatval($statusConstruction_Achevee_A_RaccorderCapaciteDate2) +floatval($statusConstruction_Achevee_RaccordeeCapaciteDate2) +floatval($statusPassage_dreCapaciteDate2) +floatval($statusConsuel_obtenuCapaciteDate2)
]
];
$totalOperation = [
'date1' => [
'project'=> count($statusOperating['date1Result']) + count($statusBillable['date1Result']) + count($statusInvoiced['date1Result']) ,
'capacite'=> floatval($statusOperatingCapaciteDate1) + floatval($statusBillableCapaciteDate1) + floatval($statusInvoicedCapaciteDate1)
],
'date2' => [
'project'=> count($statusOperating['date2Result']) + count($statusBillable['date2Result']) + count($statusInvoiced['date2Result']) ,
'capacite'=> floatval($statusOperatingCapaciteDate2) + floatval($statusBillableCapaciteDate2) + floatval($statusInvoicedCapaciteDate2)
]
];
$miseEnserviceProjects = $this->em->getRepository(Project::class)->findAllProjectActiveMiseEnService($date1,$date2,null,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$stadeConstructionProjects = $this->em->getRepository(Project::class)->findAllProjectByStadeConstruction('Go consultation',$date1,$date2,null);
$bailSignesProjects = $this->em->getRepository(Project::class)->findAllProjectActiveBailSigne($date1,$date2,null,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$archivesProjects = $this->em->getRepository(Project::class)->findAllArchives($date1,$date2,null,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$annulesProjects = $this->em->getRepository(Project::class)->findAllAnnules($date1,$date2,null,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$newProjects = $this->em->getRepository(Project::class)->findAllProjectActiveNew($date1,$date2,null,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
return [
'rapportGo_Consultation' => $statusGo_Consultation,
'rapportAttente_Devis' => $statusAttente_Devis,
'rapportBudget_Capex' => $statusBudget_Capex,
'rapportContrat_Construction' => $statusContrat_Construction,
'rapportOrder_demarrage_envoye' => $statusOrder_demarrage_envoye,
'rapportConstruction_Demarree' => $statusConstruction_Demarree,
'rapportConstruction_Achevee_Non_Raccordable' => $statusConstruction_Achevee_Non_Raccordable,
'rapportConstruction_Achevee_A_Raccorder' => $statusConstruction_Achevee_A_Raccorder,
'rapportConstruction_Achevee_Raccordee' => $statusConstruction_Achevee_Raccordee,
'rapportPassage_dre' => $statusPassage_dre,
'rapportConsuel_obtenu' => $statusConsuel_obtenu,
'rapportOperating' => $statusOperating,
'rapportBillable' => $statusBillable,
'rapportInvoiced' => $statusInvoiced,
'arrayCapacite' => $arrayCapacite,
'totalDate1' => count($statusGo_Consultation['date1Result']) + count($statusAttente_Devis['date1Result']) + count($statusBudget_Capex['date1Result']) + count($statusContrat_Construction['date1Result']) + count($statusOrder_demarrage_envoye['date1Result']) + count($statusConstruction_Demarree['date1Result']) + count($statusConstruction_Achevee_Non_Raccordable['date1Result']) + count($statusConstruction_Achevee_A_Raccorder['date1Result']) + count($statusConstruction_Achevee_Raccordee['date1Result']) + count($statusPassage_dre['date1Result']) + count($statusConsuel_obtenu['date1Result']) + count($statusOperating['date1Result']) + count($statusBillable['date1Result']) + count($statusInvoiced['date1Result']) ,
'totalDate2' => count($statusGo_Consultation['date2Result']) + count($statusAttente_Devis['date2Result']) + count($statusBudget_Capex['date2Result']) + count($statusContrat_Construction['date2Result']) + count($statusOrder_demarrage_envoye['date2Result']) + count($statusConstruction_Demarree['date2Result']) +count($statusConstruction_Achevee_Non_Raccordable['date2Result']) + count($statusConstruction_Achevee_A_Raccorder['date2Result']) + count($statusConstruction_Achevee_Raccordee['date2Result']) + count($statusPassage_dre['date2Result']) + count($statusConsuel_obtenu['date2Result']) + count($statusOperating['date2Result']) + count($statusBillable['date2Result']) + count($statusInvoiced['date2Result']),
'totalCapaciteDate1' => floatval($statusGo_ConsultationCapaciteDate1) + floatval($statusAttente_DevisCapaciteDate1) + floatval($statusBudget_CapexCapaciteDate1) +floatval($statusContrat_ConstructionCapaciteDate1) +floatval($statusOrder_demarrage_envoyeCapaciteDate1) +floatval($statusConstruction_DemarreeCapaciteDate1) + floatval($statusConstruction_Achevee_Non_RaccordableCapaciteDate1) + floatval($statusConstruction_Achevee_A_RaccorderCapaciteDate1) +floatval($statusConstruction_Achevee_RaccordeeCapaciteDate1) +floatval($statusPassage_dreCapaciteDate1) +floatval($statusConsuel_obtenuCapaciteDate1) +floatval($statusOperatingCapaciteDate1) + floatval($statusBillableCapaciteDate1) + floatval($statusInvoicedCapaciteDate1),
'totalCapaciteDate2' => floatval($statusGo_ConsultationCapaciteDate2) + floatval($statusAttente_DevisCapaciteDate2) + floatval($statusBudget_CapexCapaciteDate2) +floatval($statusContrat_ConstructionCapaciteDate2) +floatval($statusOrder_demarrage_envoyeCapaciteDate2) +floatval($statusConstruction_DemarreeCapaciteDate2) + floatval($statusConstruction_Achevee_Non_RaccordableCapaciteDate2) + floatval($statusConstruction_Achevee_A_RaccorderCapaciteDate2) +floatval($statusConstruction_Achevee_RaccordeeCapaciteDate2) +floatval($statusPassage_dreCapaciteDate2) +floatval($statusConsuel_obtenuCapaciteDate2) +floatval($statusOperatingCapaciteDate2) + floatval($statusBillableCapaciteDate2) + floatval($statusInvoicedCapaciteDate2),
'date' => $date1,
'date2' => $date2,
'totalDeveloppement' => $totalDeveloppement,
'totalConstruction' => $totalConstruction,
'totalOperation' => $totalOperation,
'alertRapportTab' => $this->getAlertRapportTab(null,$responsableConstruction,$spv,$schemaConstruction),
'alertRapportTabAnnexe' => $this->getAlertRapportTabAnnexe(null,$responsableConstruction,$spv,$schemaConstruction),
'alertRapportTabDevs' => $this->getAlertRapportTabDevs(null,$responsableConstruction,$spv,$schemaConstruction),
'miseEnserviceProjects' => $miseEnserviceProjects,
'bailSignesProjects' => $bailSignesProjects,
'archivesProjects' => $archivesProjects,
'annulesProjects' => $annulesProjects,
'stadeConstructionProjects' => $stadeConstructionProjects,
'developpeur' => null,
'responsable' => $responsableConstruction ? $this->em->getRepository(User::class)->find($responsableConstruction):null,
'newProjects' => $newProjects,
];
}
public function getStatusTrackerStr($status){
if($status == StatusTracker::STATUS_dev_0_identifie){
return 'Dev.0 - Identifié' ;
}elseif($status == StatusTracker::STATUS_dev_0_bis){
return 'Dev 0.bis - LOI' ;
}elseif ($status == StatusTracker::STATUS_dev_0){
return 'Dev.1 - Sécurisé' ;
}elseif ($status == StatusTracker::STATUS_dev_2_new){
return 'Dev.2 - PC/DP déposé' ;
}elseif ($status == StatusTracker::STATUS_dev_1){
return 'Dev.3 - PC/DP accepté' ;
}elseif ($status == StatusTracker::STATUS_dev_4_new){
return 'Dev.4 - PC/ DP purgé' ;
}elseif ($status == StatusTracker::STATUS_dev_2){
return 'Dev.5 - Raccordement obtenu' ;
}elseif ($status == StatusTracker::STATUS_dev_3){
return 'Dev.6 - RTB tarifé (Ready to Build)' ;
}elseif ($status == StatusTracker::STATUS_dev_4){
return 'Dev.7 - Construction en cours' ;
}elseif ($status == StatusTracker::STATUS_dev_5){
return 'Dev.8 - Construction terminée' ;
}elseif ($status == StatusTracker::STATUS_dev_6){
return 'Dev.9 - Consuel obtenu' ;
}elseif ($status == StatusTracker::STATUS_operating){
return 'En opération' ;
}else {
return '';
}
}
public function getStatusTrackerConstructionStr($status){
if($status == StatusTrackerConstruction::Go_Consultation){
return 'Go consultation' ;
}elseif($status == StatusTrackerConstruction::Attente_Devis){
return 'Attente devis' ;
}elseif ($status == StatusTrackerConstruction::Budget_Capex){
return 'Budget / Capex validé' ;
}elseif ($status == StatusTrackerConstruction::Contrat_Construction){
return 'Contrat de construction signé' ;
}elseif ($status == StatusTrackerConstruction::Order_demarrage_envoye){
return 'Ordre de démarrage envoyé' ;
}elseif ($status == StatusTrackerConstruction::Construction_Demarree){
return 'Construction Démarrée' ;
}elseif ($status == StatusTrackerConstruction::Construction_Achevee_Non_Raccordable){
return 'Construction Achevée Non Raccordable' ;
}elseif ($status == StatusTrackerConstruction::Construction_Achevee_A_Raccorder){
return 'Construction Achevée à Raccorder' ;
}elseif ($status == StatusTrackerConstruction::Construction_Achevee_Raccordee){
return 'Construction Achevée Raccordée' ;
}elseif ($status == StatusTrackerConstruction::Passage_dre){
return 'DRE Obtenu' ;
}elseif ($status == StatusTrackerConstruction::Consuel_obtenu){
return 'Consuel obtenu' ;
}elseif ($status == StatusTrackerConstruction::Operating){
return 'Operation' ;
}elseif ($status == StatusTrackerConstruction::Billable){
return 'Billable' ;
}elseif ($status == StatusTrackerConstruction::Invoiced){
return 'Invoiced' ;
}else {
return '';
}
}
private function getDataRapportByStatusAndDate($date1,$date2,$status,$developpeur=null){
$devDate1 = $this->em->getRepository(StatusTracker::class)->getRapportByStatusTrackerAndDate($date1,$status,$developpeur);
$devDate2 = $this->em->getRepository(StatusTracker::class)->getRapportByStatusTrackerAndDate($date2,$status,$developpeur);
$resultMoins = array_diff($this->formatArrayIdsProjects($devDate1), $this->formatArrayIdsProjects($devDate2));
$resultPlus = array_diff($this->formatArrayIdsProjects($devDate2), $this->formatArrayIdsProjects($devDate1));
$resultMoinsPlusMoins = $resultMoins ? $this->em->getRepository(StatusTracker::class)->getRapportByDate($date2,$resultMoins,$developpeur) : [];
$date1Result = $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate1)) ? $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate1)) : array();
$date2Result = $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate2)) ? $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate2)) : array();
$resultMoins = $this->formatObjectsProjectByIds($resultMoins) ? $this->formatObjectsProjectByIds($resultMoins) : array();
$resultPlus = $this->formatObjectsProjectByIds($resultPlus) ? $this->formatObjectsProjectByIds($resultPlus) : array();
// $resultMoinsPlusMoins = array_diff($this->formatObjectsStatusTracker($devDate1), $this->formatObjectsStatusTracker($devDate2));
// $resultMoinsPlusMoins = $this->formatObjectsStatusTrackerByIds($resultMoinsPlusMoins) ? $this->formatObjectsStatusTrackerByIds($resultMoinsPlusMoins) : array();
$countGloble = count($date1Result) + count($resultPlus);
$pourcentageDate1 = $countGloble ? (count($date1Result)/$countGloble *100) : 0;
$pourcentageDate2 = $countGloble ? (count($date2Result)/$countGloble *100) : 0;
$pourcentageResultMoins = $countGloble ? (($countGloble - count($resultMoins))/$countGloble *100) : 0;
$pourcentageResultPlus = $pourcentageDate1;
return [
'date1Result' => $date1Result,
'date2Result' => $date2Result,
'resultMoins' => $resultMoins,
'resultMoinsPlusMoins' => $resultMoinsPlusMoins,
'resultPlus' => $resultPlus,
'pourcentageDate1' => $pourcentageDate1,
'pourcentageDate2' => $pourcentageDate2,
'pourcentageResultMoins' => $pourcentageResultMoins,
'pourcentageResultPlus' => $pourcentageResultPlus,
];
}
private function getCapaciteByStatusTrackerConstruction($tabStatus){
$capacite = 0 ;
if($tabStatus){
foreach ($tabStatus as $project){
$capacite += (float)(str_replace(',','.',$project->getCapacite()));
}
}
return $capacite;
}
private function getDataRapportConstructionByStatusAndDate($date1,$date2,$status,$responsableConstruction=null,$spv=null,$schemaConstruction=null,$constructeurRapport=null){
$devDate1 = $this->em->getRepository(StatusTrackerConstruction::class)->getRapportByStatusTrackerAndDate($date1,$status,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$devDate2 = $this->em->getRepository(StatusTrackerConstruction::class)->getRapportByStatusTrackerAndDate($date2,$status,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport);
$resultMoins = array_diff($this->formatArrayIdsProjects($devDate1), $this->formatArrayIdsProjects($devDate2));
$resultPlus = array_diff($this->formatArrayIdsProjects($devDate2), $this->formatArrayIdsProjects($devDate1));
$resultMoinsPlusMoins = $resultMoins ? $this->em->getRepository(StatusTrackerConstruction::class)->getRapportByDate($date2,$resultMoins,$responsableConstruction,$spv,$schemaConstruction,$constructeurRapport) : [];
$date1Result = $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate1)) ? $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate1)) : array();
$date2Result = $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate2)) ? $this->formatObjectsProjectByIds($this->formatArrayIdsProjects($devDate2)) : array();
$resultMoins = $this->formatObjectsProjectByIds($resultMoins) ? $this->formatObjectsProjectByIds($resultMoins) : array();
$resultPlus = $this->formatObjectsProjectByIds($resultPlus) ? $this->formatObjectsProjectByIds($resultPlus) : array();
$countGloble = count($date1Result) + count($resultPlus);
$pourcentageDate1 = $countGloble ? (count($date1Result)/$countGloble *100) : 0;
$pourcentageDate2 = $countGloble ? (count($date2Result)/$countGloble *100) : 0;
$pourcentageResultMoins = $countGloble ? (($countGloble - count($resultMoins))/$countGloble *100) : 0;
$pourcentageResultPlus = $pourcentageDate1;
return [
'date1Result' => $date1Result,
'date2Result' => $date2Result,
'resultMoins' => $resultMoins,
'resultMoinsPlusMoins' => $resultMoinsPlusMoins,
'resultPlus' => $resultPlus,
'pourcentageDate1' => $pourcentageDate1,
'pourcentageDate2' => $pourcentageDate2,
'pourcentageResultMoins' => $pourcentageResultMoins,
'pourcentageResultPlus' => $pourcentageResultPlus,
];
}
private function formatArrayIdsProjects($arrays){
$arrayIds = [];
foreach ( $arrays as $item){
$arrayIds[] = $item->getProject()->getId();
}
return $arrayIds;
}
private function formatObjectsProjectByIds($ids){
if($ids){
$projects = $this->em->getRepository(Project::class)->findBy(['id'=>$ids]);
return $projects;
}
return null;
}
private function formatObjectsStatusTrackerByIds($ids){
if($ids){
$projects = $this->em->getRepository(StatusTracker::class)->findBy(['id'=>$ids]);
return $projects;
}
return null;
}
private function formatObjectsStatusTracker($arrays){
$arrayIds = [];
foreach ( $arrays as $item){
$arrayIds[] = $item->getId();
}
return $arrayIds;
}
public function addPdfRapport($date1Rapport,$date2Rapport,$developpeur = null){
if($date1Rapport && $date2Rapport){
$data = $this->getRapportData($date1Rapport,$date2Rapport,$developpeur);
$html = $this->twig->render('admin/project/rapport.html.twig',array('data'=>$data));
$html2pdf = new Html2Pdf('L', array(502 , 286), 'fr', true, 'UTF-8', array('0','0','0','0'));
$html2pdf->getSecurityService()->disableCheckAllowedHosts();
$html2pdf->pdf->SetAuthor('prejeance');
$html2pdf->pdf->SetTitle('Rapport');
$html2pdf->pdf->SetSubject('Rapport');
$html2pdf->pdf->SetKeywords('Rapport');
$html2pdf->pdf->SetDisplayMode('real');
$html2pdf->WriteHTML($html);
$nameFichier = 'rapport'.time().'.pdf';
$path_pdf = $this->params->get('images_directory').'/rapport/'.$nameFichier;
$html2pdf->Output($path_pdf,'F');
return $nameFichier ;
}
return false;
}
public function addCommentProject($project,$commentText,$user){
$comment = new CommentProject();
$comment->setProject($project);
$comment->setComment($commentText);
$comment->setUser($user);
$this->em->persist($comment);
$this->em->flush();
$this->notification->notifChatProjectAllUser($project,$user,$comment); // notif
return $comment ;
}
public function getTimeComment($datetime){
$dateNow = new \DateTime();
if($dateNow->format('d/m/Y') == $datetime->format('d/m/Y')){
return $datetime->format('H:i');
}else{
return $datetime->format('d/m/Y H:i');
}
}
public function getCommentsProject($project){
$comments = $this->em->getRepository(CommentProject::class)->getCommentsProject($project);
return $comments;
}
public function getLastComment($project,$idLastComment){
$comments = $this->em->getRepository(CommentProject::class)->getLastCommentsProject($project,$idLastComment);
return $comments;
}
public function paginateCentrale($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = $request->get('spvsTab');
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$isParametrer = $request->get('isParametrer');
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'dateTab' => $request->get('dateTab'),
'user' => $user,
'isParametrer' => $isParametrer
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchCentrale($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Project::class)->searchCentrale($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Project::class)->searchCentrale(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
foreach ($projects as $project) {
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
if( $project && $project->getDateMiseEnService()){
$strDate = $project->getDateMiseEnService()->format('d/m/Y');
}else{
if( $etap14 && $etap14->getDateMiseEnService()){
$strDate = $etap14->getDateMiseEnService()->format('d/m/Y');
}else{
$strDate = '';
}
}
$parametrageLoyer = $this->em->getRepository(ParametrageLoyer::class)->findOneBy(['centrale'=>$project->getId()]);
if($parametrageLoyer){
if($parametrageLoyer->getIsLoyer()){
$isLoyer = "<span style='color:green'>Oui</span>" ;
}else{
$isLoyer = "<span style='color:red'>Non</span>" ;
}
$isAlert = false;
}else{
$isLoyer = '';
$isAlert = true;
}
$action =
$this->twig->render(
'admin/exploitation/default/bouton.html.twig', array(
'project' => $project,
'isAlert' => $isAlert
));
$output['data'][] = [
'responsive_id' => '',
'id' => $project->getId(),
'capacite' => $this->espaceNumber($project->getCapacite()),
'name' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getName())),
'spv' => $this->twig->render('admin/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getSpv() ? $project->getSpv()->getName() : '-')) ,
'dateMiseEnService' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$strDate)) ,
'isLoyer' => $isLoyer ,
'action' => $action
];
}
return $output;
}
public function paginateRapport($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$centrale = $request->get('centrale');
$suivi = $request->get('suivi');
$isPerteProduction = $request->get('isPerteProduction');
$interventionObject = $request->get('interventionObject');
$centraleToken = $request->get('centraleToken');
$centraleEntiry = null;
if($centraleToken && $centraleToken != 0){
$centraleEntiry = $this->em->getRepository(Project::class)->findOneBy(['token' => $centraleToken]);
}
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'centraleToken' => $centraleToken,
'user' => $user
];
$rapports= $this->em->getRepository(\App\Entity\RapportCentrale::class)->search($isPerteProduction,$centrale,$suivi,$interventionObject,$filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\RapportCentrale::class)->search($isPerteProduction,$centrale,$suivi,$interventionObject,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\RapportCentrale::class)->search($isPerteProduction,$centrale,$suivi,$interventionObject,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
foreach ($rapports as $rapport) {
$action =
$this->twig->render(
'admin/exploitation/default/bouton2.html.twig', array(
'rapport' => $rapport,
'centraleEntiry'=>$centraleEntiry
));
$suivi =
$this->twig->render(
'admin/exploitation/default/suivi.html.twig', array(
'rapport' => $rapport,
'centraleEntiry'=>$centraleEntiry
));
$select =
$this->twig->render(
'admin/exploitation/default/selectAll.html.twig', array(
'rapport' => $rapport,
'centraleEntiry'=>$centraleEntiry
));
$perteProduction =
$this->twig->render(
'admin/exploitation/default/perte-production.html.twig', array(
'rapport' => $rapport,
'centraleEntiry'=>$centraleEntiry
));
$output['data'][] = [
'responsive_id' => '',
'name' => $rapport->getName(),
'project' => $rapport->getProject()->getName(),
'objectIntervention' => $rapport->getObjectInterventionSrc(),
'dateIntervention' => $rapport->getDateIntervention()?$rapport->getDateIntervention()->format('d/m/Y') : '-',
'isSuiviNecessaire' => $suivi ,
'isPerteProduction' => $perteProduction ,
'coutIntervention' => $rapport->getObjectIntervention() == RapportCentrale::INTERVENTION_CURATIVE ? $rapport->getCoutIntervention() ? $rapport->getCoutIntervention() .'€' : '' : '' ,
'action' => $action,
'selectRapport' => $select
];
}
return $output;
}
public function addRapportCentrale($request,$token =null)
{
$rapport = new RapportCentrale();
$form = $this->form->create(RapportCentraleType::class, $rapport);
$centrale = null;
if($token){
$centrale = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
$form->remove('project');
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$rapportToken = $request->get('fileRapport');
if($rapportToken) {
$fileRapport = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $rapportToken]);
$rapport->setRapport($fileRapport);
}
if($centrale){
$rapport->setProject($centrale);
}
$constructeurId = $request->get('rapport_centrale_constructeur');
if($constructeurId != 0){
$constructeur = $this->em->getRepository(Fournisseur::class)->find($constructeurId);
if($constructeur){
$rapport->setConstructeur($constructeur);
}
}else{
$rapport->setConstructeur(null);
}
$this->em->persist($rapport);
$this->em->flush();
return [
'form' => $form->createView(),
'rapport' => $rapport,
'success' => true,
'centrale' => $centrale
];
}
return [
'form' => $form->createView(),
'centrale' => $centrale,
'success' => false,
];
}
public function editRapportCentrale($request,$token)
{
$rapport = $this->em->getRepository(RapportCentrale::class)->findOneBy(['token'=> $token]);
$form = $this->form->create(RapportCentraleType::class, $rapport);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$rapportToken = $request->get('fileRapport');
if($rapportToken) {
$fileRapport = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $rapportToken]);
$rapport->setRapport($fileRapport);
}
$constructeurId = $request->get('rapport_centrale_constructeur');
if($constructeurId != 0){
$constructeur = $this->em->getRepository(Fournisseur::class)->find($constructeurId);
if($constructeur){
$rapport->setConstructeur($constructeur);
}
}else{
$rapport->setConstructeur(null);
}
$this->em->persist($rapport);
$this->em->flush();
return [
'form' => $form->createView(),
'rapport' => $rapport,
'success' => true
];
}
return [
'form' => $form->createView(),
'rapport' => $rapport,
'success' => false,
];
}
public function tabOfMeltdClavus(){
$array = [];
$array['date.decision.urbanisme'] = 'project-0-etap-1-'.MeltdChamps::TYPE_DATE.'-dateArretePcDp' ;
$array['date.decision.urbanisme'] = 'project-0-etap-1-'.MeltdChamps::TYPE_DATE.'-dateArretePcDp' ;
$array['notary.office'] = 'project-0-etap-6-'.MeltdChamps::TYPE_STRING.'-nomNotaire' ;
$array['etablissement.secondaire.siret'] = 'project-0-etap-8-'.MeltdChamps::TYPE_STRING.'-siretEts' ;
$array['cp.postal.address'] = 'project-0-etap-14-'.MeltdChamps::TYPE_STRING.'-codePostalMiseEnService' ;
$array['adresses.identiques'] = 'project-0-etap-14-'.MeltdChamps::TYPE_STRING.'-cityMiseEnService' ;
$array['bta.raccordement'] = 'project-0-etap-15-'.MeltdChamps::TYPE_STRING_MANYTOMANY.'-informationMultiple-numeroContratAchat' ;
$array['floor-width'] = 'project-0-etap-160-'.MeltdChamps::TYPE_STRING_MANYTOMANY.'-dimension-largeur' ;
$array['floor-length'] = 'project-0-etap-160-'.MeltdChamps::TYPE_STRING_MANYTOMANY.'-dimension-langueur' ;
$array['docs']['Accord Mairie (PC ou CNO)'] = 'project-0-etap-1-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDossierPcDpMultiple' ;
$array['docs']['accord.mairie'] = 'project-0-etap-1-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDossierPcDpMultiple' ;
$array['docs']['Acte de passage huissier'] = 'project-0-etap-2-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePVPassageHuissierMultiple' ;
$array['docs']['acte.passage.huissier'] = 'project-0-etap-2-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePVPassageHuissierMultiple' ;
$array['docs']['acte.passage.huissier'] = 'project-0-etap-2-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePVPassageHuissierMultiple' ;
$array['docs']['attestation.conformite.chantier'] = 'project-0-etap-14-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileAttestationS21Multiple' ;
$array['docs']['attestation.s21'] = 'project-0-etap-14-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileAttestationS21Multiple' ;
$array['docs']['attestation.de.non.recours'] = 'project-0-etap-2-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileCertificatNonRecoursMultiple' ;
$array['docs']['attestation.non.retrait.juridique'] = 'project-0-etap-2-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileCertificatNonRetraitMultiple' ;
$array['docs']['bail.et.pdb'] = 'project-0-etap-7-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileBailSigneMultiple' ;
$array['docs']['consuel'] = 'project-0-etap-20-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileConsuelEtap20Multiple' ;
$array['docs']['consuel.dossier.technique.chantier'] = 'project-0-etap-20-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileConsuelEtap20Multiple' ;
$array['docs']['crd.final.raccordement'] = 'project-0-etap-10-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileCrdSigneeMultiple' ;
$array['docs']['crd.provisoire.raccordement'] = 'project-0-etap-10-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePtfMultiple' ;
$array['docs']['DOC'] = 'project-0-etap-3-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocDrocMultiple' ;
$array['docs']['doc'] = 'project-0-etap-3-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocDrocMultiple' ;
$array['docs']['dact'] = 'project-0-etap-4-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDaactMultiple' ;
$array['docs']['DACT'] = 'project-0-etap-4-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDaactMultiple' ;
$array['docs']['doe'] = 'project-0-etap-201-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDoeEtap201Multiple' ;
$array['docs']['DOE'] = 'project-0-etap-201-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDoeEtap201Multiple' ;
$array['docs']['etude.sol./.etude.structure'] = 'project-0-etap-160-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileEtudeSoleMultiple' ;
$array['docs']['ICPE'] = 'project-0-etap-0-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileICPEMultiple' ;
$array['docs']['PV réception fin de chantier'] = 'project-0-etap-21-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileTestReceptionMultiple' ;
$array['docs']['Justificatif agricole'] = 'project-0-etap-0-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileFicheBesoinAgricoleMultiple' ;
$array['docs']['justify.agri'] = 'project-0-etap-0-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileFicheBesoinAgricoleMultiple' ;
$array['docs']['kbis'] = 'project-0-etap-8-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileKbisEtsMultiple' ;
$array['docs']['KBIS'] = 'project-0-etap-8-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileKbisEtsMultiple' ;
$array['docs']['pc.doc'] = 'project-0-etap-1-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileArretePcDpMultiple' ;
$array['docs']['pdb.signee'] = 'project-0-etap-5-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePromessebailMultiple' ;
$array['docs']['promesse_bail'] = 'project-0-etap-5-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePromessebailMultiple' ;
$array['docs']['plan.masse.commercial'] = 'project-0-etap-159-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePlanMasseSituationTranchee159MultipleBtn' ;
$array['docs']['productible.rapport'] = 'project-0-etap-159-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileEtudeProductible159Multiple' ;
$array['docs']['pv.fin.chantier'] = 'project-0-etap-172-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePVReceptionMultiple' ;
$array['docs']['pv.suivi.installation.pdl'] = 'project-0-etap-121-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocument121Multiple' ;
$array['docs']['rapport.final.geometre.juridique'] = 'project-0-etap-17-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocumentGeometre' ;
$array['docs']['rapport.rapport.geometre'] = 'project-0-etap-17-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocumentGeometre' ;
$array['docs']['rapport.rapport.geometre'] = 'project-0-etap-17-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocumentGeometre' ;
$array['docs']['rapport.provisoire.geometre.juridique'] = 'project-0-etap-17-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDocumentGeometre' ;
$array['docs']['Relevé d’exploitation'] = 'project-0-etap-0-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileMsaReleveExploitationMultiple' ;
$array['docs']['titre.propriete'] = 'project-0-etap-6-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileTitreProprieteMultiple' ;
$array['docs']['pv.mise.en.service'] = 'project-0-etap-14-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileDoeMultiple' ;
$array['docs']['Rapport de VT'] = 'project-0-etap-159-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-fileVisiteTechnique159Multiple' ;
$array['docs']['rapport.reception.electrique'] = 'project-0-etap-174-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePVReception174Multiple' ;
$array['docs']['rapport.reception.mecanique'] = 'project-0-etap-173-'.MeltdChamps::TYPE_FILE_MANYTOMANY.'-filePVreception173Multiple' ;
$array['acompte'] = 'project-0-etap-10-'.MeltdChamps::TYPE_STRING.'-montantAcompte' ;
$array['acompte'] = 'project-0-etap-10-'.MeltdChamps::TYPE_STRING.'-montantAcompteSansPtf' ;
$array['crd.raccordement'] = 'project-0-etap-10-'.MeltdChamps::TYPE_STRING.'-montantCrdSansPtf' ;
$array['date.envoi.dact'] = 'project-0-etap-4-'.MeltdChamps::TYPE_DATE.'-dateDaact' ;
return $array ;
}
public function getFileJson(){
$local_file = 'erpi.json';
$server_file = 'erpi.json';
$path = '/httpdocs/prejeance-industrial/public/clavus';
$ftp_server="87.98.140.172";
$ftp_user_name="erpi.prejeanceindust_20gzzzf6in4";
$ftp_user_pass="VLmyuR#706";
$conn_id = ftp_ssl_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true) or die("Cannot switch to passive mode");
if (ftp_get($conn_id, $this->params->get('images_directory') . "/".$local_file, $path.'/'.$server_file, FTP_BINARY)) {
$file = $this->params->get('images_directory') . "/".$local_file;
$array = [];
$f = file_get_contents($file);
return json_decode($f);
}
else {
return false;
}
ftp_close($conn_id);
}
public function updateProjectViaJson($data){
$tabOfMeltdClavus = $this->tabOfMeltdClavus();
if($data){
foreach ($data as $item){
$arrayObject = (array)$item ;
$project = $this->em->getRepository(Project::class)->findOneBy(['name'=>$arrayObject['script.folderIdDynamic']]);
if($project){
$updateAt = new \DateTime($arrayObject['updatedAt']);
if($updateAt){
$updateAtFormat = $updateAt->format('y-m-d H:i:s');
$updateAtProjectFormat = $project->getUpdateAtClavus() ? $project->getUpdateAtClavus()->format('y-m-d H:i:s'): null;
if($updateAtFormat != $updateAtProjectFormat){
$isNotif = false;
$isNotifVide = true;
$project->setUpdateAtClavus($updateAt);
$this->em->persist($project);
$this->em->flush();
foreach ($arrayObject as $key => $value){
if(isset($tabOfMeltdClavus[$key])){
if($value != '') {
$strProjectEtap = $tabOfMeltdClavus[$key];
if($key == 'docs'){
$arrayObjectDocs = (array)$value ;
foreach ($arrayObjectDocs as $key2 => $value2) {
if (isset($tabOfMeltdClavus[$key][$key2])) {
if ($value2 != '') {
$strProjectEtap2 = $tabOfMeltdClavus[$key][$key2];
$tab = explode("-", $strProjectEtap2);
if ($tab[1] == 1) {
$nameChamp = $tab[5];
$typeChamp = $tab[4];
$meltd = $this->em->getRepository(MeltdChamps::class)->findOneBy(['project' => $project->getId(), 'champName' => $nameChamp, 'isProject' => true]);
$persist = true;
if ($meltd) {
if ($meltd->getChampValue() == $value2) {
$persist = false;
}
} else {
$meltd = new MeltdChamps();
}
$checkExistValue = $this->getProjectViaJsonInput($nameChamp,$value2,$typeChamp,true,$project,0,null);
if ($persist && $checkExistValue) {
$isNotifVide =false;
$meltd->setProject($project);
$meltd->setChampName($nameChamp);
$meltd->setChampType($typeChamp);
$meltd->setChampValue($value2);
if (isset($arrayObject['createdAt'])) {
$meltd->setCreatedAt(new \DateTime($arrayObject['createdAt']));
}
if (isset($arrayObject['updatedAt'])) {
$meltd->setUpdateAt(new \DateTime($arrayObject['updatedAt']));
}
$meltd->setIsProject(true);
$meltd->setIsValid(false);
$meltd->setIsEmpty(true);
$this->em->persist($meltd);
$this->em->flush();
$isNotif = true;
}
} else {
$numEtap = $tab[3];
$nameChamp = $tab[5];
$typeChamp = $tab[4];
$meltd = $this->em->getRepository(MeltdChamps::class)->findOneBy(['project' => $project->getId(), 'numEtap' => $numEtap, 'champName' => $nameChamp]);
$persist = true;
if ($meltd) {
if ($meltd->getChampValue() == $value2) {
$persist = false;
}
} else {
$meltd = new MeltdChamps();
}
$checkExistValue = $this->getProjectViaJsonInput($nameChamp,$value2,$typeChamp,false,$project,$numEtap,null);
if ($persist && $checkExistValue) {
$isNotifVide =false;
$meltd->setProject($project);
$meltd->setNumEtap($numEtap);
$meltd->setChampName($nameChamp);
$meltd->setChampType($typeChamp);
$meltd->setChampValue($value2);
if (isset($arrayObject['createdAt'])) {
$meltd->setCreatedAt(new \DateTime($arrayObject['createdAt']));
}
if (isset($arrayObject['updatedAt'])) {
$meltd->setUpdateAt(new \DateTime($arrayObject['updatedAt']));
}
$meltd->setIsProject(false);
$meltd->setIsValid(false);
$meltd->setIsEmpty(true);
$this->em->persist($meltd);
$this->em->flush();
$isNotif = true;
}
}
}
}
}
}else{
$tab = explode("-", $strProjectEtap);
if ($tab[1] == 1) {
if(isset($tab[6])){
$nameChampRelation = $tab[5];
$nameChamp = $tab[6];
$typeChamp = $tab[4];
}else{
$nameChampRelation = '';
$nameChamp = $tab[5];
$typeChamp = $tab[4];
}
$meltd = $this->em->getRepository(MeltdChamps::class)->findOneBy(['project' => $project->getId(), 'champName' => $nameChamp, 'isProject' => true]);
$persist = true;
if ($meltd) {
if ($meltd->getChampValue() == $value) {
$persist = false;
}
} else {
$meltd = new MeltdChamps();
}
$checkExistValue = $this->getProjectViaJsonInput($nameChamp,$value,$typeChamp,true,$project,null,$nameChampRelation);
if ($persist && $checkExistValue) {
$isNotifVide =false;
$meltd->setProject($project);
$meltd->setNameChampRelation($nameChampRelation);
$meltd->setChampName($nameChamp);
$meltd->setChampType($typeChamp);
$meltd->setChampValue($value);
if (isset($arrayObject['createdAt'])) {
$meltd->setCreatedAt(new \DateTime($arrayObject['createdAt']));
}
if (isset($arrayObject['updatedAt'])) {
$meltd->setUpdateAt(new \DateTime($arrayObject['updatedAt']));
}
$meltd->setIsProject(true);
$meltd->setIsValid(false);
$checkEmptyValue = $this->getProjectViaJsonInputNotEmpty($nameChamp,$value,$typeChamp,true,$project,null,$nameChampRelation);
$meltd->setIsEmpty($checkEmptyValue);
$this->em->persist($meltd);
$this->em->flush();
$isNotif = true;
}
} else {
if(isset($tab[6])){
$nameChampRelation = $tab[5];
$nameChamp = $tab[6];
$typeChamp = $tab[4];
}else{
$nameChampRelation = '';
$nameChamp = $tab[5];
$typeChamp = $tab[4];
}
$numEtap = $tab[3];
$meltd = $this->em->getRepository(MeltdChamps::class)->findOneBy(['project' => $project->getId(), 'numEtap' => $numEtap, 'champName' => $nameChamp]);
$persist = true;
if ($meltd) {
if ($meltd->getChampValue() == $value) {
$persist = false;
}
} else {
$meltd = new MeltdChamps();
}
$checkExistValue = $this->getProjectViaJsonInput($nameChamp,$value,$typeChamp,false,$project,$numEtap,$nameChampRelation);
if ($persist && $checkExistValue) {
$isNotifVide =false;
$meltd->setProject($project);
$meltd->setNameChampRelation($nameChampRelation);
$meltd->setNumEtap($numEtap);
$meltd->setChampName($nameChamp);
$meltd->setChampType($typeChamp);
$meltd->setChampValue($value);
if (isset($arrayObject['createdAt'])) {
$meltd->setCreatedAt(new \DateTime($arrayObject['createdAt']));
}
if (isset($arrayObject['updatedAt'])) {
$meltd->setUpdateAt(new \DateTime($arrayObject['updatedAt']));
}
$meltd->setIsProject(false);
$meltd->setIsValid(false);
$checkEmptyValue = $this->getProjectViaJsonInputNotEmpty($nameChamp,$value,$typeChamp,false,$project,$numEtap,$nameChampRelation);
$meltd->setIsEmpty($checkEmptyValue);
$this->em->persist($meltd);
$this->em->flush();
$isNotif = true;
}
}
}
}
}
}
if($isNotif){
$admin = $this->em->getRepository(User::class)->findOneBy(['email' => $this->params->get('admin_login')]);
$string = '<span class="spanNotif" >le projet ' . $project->getName() . '</span> vient d’être mise à jour à partir de CLAVIUS - MELTD';
$usersAdmin = $this->em->getRepository(User::class)->getUserByNotRoleAndIsNotif(['ROLE_DEV', 'ROLE_EPC'], 'isNotifClavus');
foreach ($usersAdmin as $item) {
$this->notification->addNotification($item, $admin, $string, $project,false,false,false,false,false,null,Notification::STATUS_PROJECT_COMPLETED);
}
}
if($isNotifVide){
$admin = $this->em->getRepository(User::class)->findOneBy(['email' => $this->params->get('admin_login')]);
$string = '<span class="spanNotif" >le projet ' . $project->getName() . '</span> vient d’être mise à jour à partir de CLAVIUS - MELTD sans changement';
$usersAdmin = $this->em->getRepository(User::class)->getUserByNotRoleAndIsNotif(['ROLE_DEV', 'ROLE_EPC'], 'isNotifClavus');
foreach ($usersAdmin as $item) {
$this->notification->addNotification($item, $admin, $string, $project,false,false,false,false,false,null,Notification::STATUS_PROJECT_COMPLETED);
}
}
}
}
}
}
}
}
public function deleteProjectViaJsonInput($melted){
if($melted){
$this->em->remove($melted);
$this->em->flush();
}
}
public function getProjectViaJsonInput($champName,$champValue,$champType,$isProject,$project,$numEtap,$nameChampRelation){
$return = true ;
if($project){
$nameGeteurFiled = 'get'.ucfirst($champName);
if($isProject){
if($champType == MeltdChamps::TYPE_STRING){
if($project->{$nameGeteurFiled}() == $champValue){
$return = false ;
}
}else if ($champType == MeltdChamps::TYPE_DATE){
if($project->{$nameGeteurFiled}()){
$dateValue = new \DateTime( $champValue);
if($project->{$nameGeteurFiled}()->format('y-m-d') == $dateValue->format('y-m-d')){
$return = false ;
}
}
}else if ($champType == MeltdChamps::TYPE_FILE_MANYTOMANY){
if(count($project->{$nameGeteurFiled}()) > 0){
$isNotefileArchive = false;
foreach ($project->{$nameGeteurFiled}() as $value){
if(!$value->getIsArchived()){
$isNotefileArchive = true;
}
}
if($isNotefileArchive){
$return = false ;
}
}
}
}else{
$etapClass = 'App\\Entity\\Etap'.$numEtap;
$etap = $this->em->getRepository($etapClass)->findOneBy(['project'=>$project->getId()]);
if($champType == MeltdChamps::TYPE_STRING){
if($etap->{$nameGeteurFiled}() == $champValue){
$return = false ;
}
}else if ($champType == MeltdChamps::TYPE_DATE){
if($etap->{$nameGeteurFiled}()){
$dateValue = new \DateTime( $champValue);
if($etap->{$nameGeteurFiled}()->format('y-m-d') == $dateValue->format('y-m-d')){
$return = false ;
}
}
}else if($champType == MeltdChamps::TYPE_STRING_MANYTOMANY){
$nameGeteurFiled = 'get'.ucfirst($nameChampRelation);
if($etap->$nameGeteurFiled()){
if(count($etap->$nameGeteurFiled()) > 0 && $etap->$nameGeteurFiled()[0]){
$entity = $etap->$nameGeteurFiled()[0];
$nameGeteurFiled2 = 'get'.ucfirst($champName);
if($entity->{$nameGeteurFiled2}() == $champValue){
$return = false ;
}
}
}
}else if ($champType == MeltdChamps::TYPE_FILE_MANYTOMANY){
if(count($etap->{$nameGeteurFiled}()) > 0){
$isNotefileArchive = false;
foreach ($etap->{$nameGeteurFiled}() as $value){
if(!$value->getIsArchived()){
$isNotefileArchive = true;
}
}
if($isNotefileArchive){
$return = false ;
}
}
}
}
return $return;
}
}
public function getProjectViaJsonInputNotEmpty($champName,$champValue,$champType,$isProject,$project,$numEtap,$nameChampRelation){
$return = false ;
if($project){
$nameGeteurFiled = 'get'.ucfirst($champName);
if($isProject){
if($champType == MeltdChamps::TYPE_STRING){
if(!$project->{$nameGeteurFiled}() || $project->{$nameGeteurFiled}() == '' ){
$return = true ;
}
}else if ($champType == MeltdChamps::TYPE_DATE){
if(!$project->{$nameGeteurFiled}()){
$return = true ;
}
}
}else{
$etapClass = 'App\\Entity\\Etap'.$numEtap;
$etap = $this->em->getRepository($etapClass)->findOneBy(['project'=>$project->getId()]);
if($champType == MeltdChamps::TYPE_STRING){
if(!$etap->{$nameGeteurFiled}() || $etap->{$nameGeteurFiled}() == ''){
$return = true ;
}
}else if ($champType == MeltdChamps::TYPE_DATE){
if(!$etap->{$nameGeteurFiled}()){
$return = true ;
}
}else if($champType == MeltdChamps::TYPE_STRING_MANYTOMANY){
$nameGeteurFiled = 'get'.ucfirst($nameChampRelation);
if($etap->$nameGeteurFiled()){
if(count($etap->$nameGeteurFiled()) > 0 && $etap->$nameGeteurFiled()[0]){
$entity = $etap->$nameGeteurFiled()[0];
$nameGeteurFiled2 = 'get'.ucfirst($champName);
if(!$entity->{$nameGeteurFiled2}()){
$return = true ;
}
}
}
}
}
return $return;
}
}
public function updateProjectViaJsonInputEmpty(){
$melteds = $this->em->getRepository(MeltdChamps::class)->findBy(['isEmpty'=>true]);
if($melteds){
foreach ($melteds as $melted){
$this->updateProjectViaJsonInput($melted);
}
}
}
public function updateProjectViaJsonInput($melted){
if($melted){
$nameGeteurFiled = 'set'.ucfirst($melted->getChampName());
if($melted->getIsProject()){
if($melted->getChampType() == MeltdChamps::TYPE_STRING){
$melted->getProject()->{$nameGeteurFiled}($melted->getChampValue());
$melted->setIsValid(true);
$melted->setIsEmpty(false);
}else if ($melted->getChampType() == MeltdChamps::TYPE_DATE){
$melted->getProject()->{$nameGeteurFiled}(new \DateTime( $melted->getChampValue()));
$melted->setIsValid(true);
$melted->setIsEmpty(false);
}
$this->em->persist($melted->getProject());
}else{
$etapClass = 'App\\Entity\\Etap'.$melted->getNumEtap();
$etap = $this->em->getRepository($etapClass)->findOneBy(['project'=>$melted->getProject()->getId()]);
if($melted->getChampType() == MeltdChamps::TYPE_STRING){
$etap->{$nameGeteurFiled}($melted->getChampValue());
$melted->setIsValid(true);
$melted->setIsEmpty(false);
}else if ($melted->getChampType() == MeltdChamps::TYPE_DATE){
$etap->{$nameGeteurFiled}(new \DateTime( $melted->getChampValue()));
$melted->setIsValid(true);
$melted->setIsEmpty(false);
}else if ($melted->getChampType() == MeltdChamps::TYPE_FILE_MANYTOMANY){
$fileEntity = $this->getFileViaMeltdApi($melted->getChampValue(),$melted);
$nameGeteurFiled = 'add'.ucfirst($melted->getChampName());
$etap->{$nameGeteurFiled}($fileEntity);
$melted->setIsValid(true);
$melted->setIsEmpty(false);
}
else if ($melted->getChampType() == MeltdChamps::TYPE_FILE_MANYTOONE){
$fileEntity = $this->getFileViaMeltdApi($melted->getChampValue(),$melted);
$nameGeteurFiled = 'set'.ucfirst($melted->getChampName());
$etap->{$nameGeteurFiled}($fileEntity);
$melted->setIsValid(true);
$melted->setIsEmpty(false);
}else if($melted->getChampType() == MeltdChamps::TYPE_STRING_MANYTOMANY){
$nameGeteurFiled = 'get'.ucfirst($melted->getNameChampRelation());
$nameSeteurFiled = 'set'.ucfirst($melted->getChampName());
if($etap->$nameGeteurFiled()){
if(count($etap->$nameGeteurFiled()) > 0 && $etap->$nameGeteurFiled()[0]){
$entity = $etap->$nameGeteurFiled()[0];
$entity->{$nameSeteurFiled}($melted->getChampValue());
$melted->setIsValid(true);
$melted->setIsEmpty(false);
$this->em->persist($entity);
}
}
}
$this->em->persist($etap);
}
$this->em->persist($melted);
$this->em->flush();
}
}
private function getAnnotationOptions($entity,$champ, $annotationName)
{
$reflector = new \ReflectionClass($entity);
$property = $reflector->getProperty($champ);
$annotations = $property->getDocComment();
$pattern = '/@' . preg_quote($annotationName) . '\((.*?)\)/';
preg_match($pattern, $annotations, $matches);
if (isset($matches[1])) {
return trim($matches[1], '"');
}
return null;
}
public function getFileViaMeltdApi($id,$melted){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-v2.clavus.io/api/downloadFile',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"fileId": "'.$id.'"
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3bUlkIjoiY2t5aG4yenFyMTYwMTY1MWZxbGVveGk0b2p0IiwidWlkIjoiNDVhYzgxYTctYzY3ZC00MDY4LWJmYjktN2U4ODljMDFjMTEwIiwiaWF0IjoxNjg4NTQ3NTEzfQ.2Hq-Kkf9zOgzFx3CktIubDa39hqAlIMC9v6jLK-ZJOs',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
$res = json_decode($response);
if($res->status == 'success'){
$urlFile = $res->data->s3Url ;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $urlFile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$filename = md5(uniqid()).'.pdf';
$localFilename = $this->params->get('uploads_directory') . '/'.$filename;
$fh = fopen($localFilename, "wb");
curl_setopt($curl, CURLOPT_FILE, $fh);
curl_exec($curl);
curl_close($curl);
if($melted->getIsProject()){
$entity = $melted->getProject();
}else{
$etapClass = 'App\\Entity\\Etap'.$melted->getNumEtap();
$entity = $this->em->getRepository($etapClass)->findOneBy(['project'=>$melted->getProject()->getId()]);
}
$docUpload = new DocUpload();
$champsName = $this->getAnnotationOptions($entity,$melted->getChampName(),'CustomAnnotation');
$docUpload->setName($champsName.'.pdf');
$docUpload->setPath($filename);
$docUpload->setUserCreated($this->security->getUser());
$this->em->persist($docUpload);
$this->em->flush();
if($melted->getIsProject()){
}else{
$this->etapsService->getNomenclature($entity,$docUpload,$champsName);
}
return $docUpload;
}
curl_close($curl);
return false;
}
public function getFileViaMeltdApiUrl($id){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-v2.clavus.io/api/downloadFile',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"fileId": "'.$id.'"
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3bUlkIjoiY2t5aG4yenFyMTYwMTY1MWZxbGVveGk0b2p0IiwidWlkIjoiNDVhYzgxYTctYzY3ZC00MDY4LWJmYjktN2U4ODljMDFjMTEwIiwiaWF0IjoxNjg4NTQ3NTEzfQ.2Hq-Kkf9zOgzFx3CktIubDa39hqAlIMC9v6jLK-ZJOs',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
$res = json_decode($response);
if($res->status == 'success'){
$urlFile = $res->data->s3Url ;
return $urlFile;
}
curl_close($curl);
return false;
}
public function getNameChampGlobale($meltedId){
$melted = $this->em->getRepository(MeltdChamps::class)->find($meltedId);
if($melted->getIsProject()){
$entity = $melted->getProject();
$champsName = $this->getAnnotationOptions($entity,$melted->getChampName(),'CustomAnnotation') ;
}else{
$etapClass = 'App\\Entity\\Etap'.$melted->getNumEtap();
$entity = $this->em->getRepository($etapClass)->findOneBy(['project'=>$melted->getProject()->getId()]);
$description = 'Étap '.$entity->getEtap()->getName().' Timeline '.$entity->getEtap()->getCategory()->getName();
$champsName = $this->getAnnotationOptions($entity,$melted->getChampName(),'CustomAnnotation').' ('.$description.')' ;
}
return $champsName;
}
public function getTabFacturationParProject($project){
$developpementFactures = $this->em->getRepository(ProjectFactureFinance::class)->findSuiviByProject($project,'DEVEX');
$constructionFactures = $this->em->getRepository(ProjectFactureFinance::class)->findSuiviByProject($project,'CAPEX');
$exploitationFactures = $this->em->getRepository(ProjectFactureFinance::class)->findSuiviByProject($project,'OPEX');
$developpementAvoirs = $this->em->getRepository(ProjectAvoir::class)->findSuiviByProject($project,'DEVEX');
$constructionAvoirs = $this->em->getRepository(ProjectAvoir::class)->findSuiviByProject($project,'CAPEX');
$exploitationAvoirs = $this->em->getRepository(ProjectAvoir::class)->findSuiviByProject($project,'OPEX');
$mantantHtDeveloppement = 0;
$mantantHtConstruction = 0;
$mantantHtExploitation = 0;
$mantantHtTotal = 0;
$mantantHtBudgetDeveloppement = $project->getBudgetDeveloppement();
$mantantHtBudgetConstruction = $project->getBudgetConstruction();
$mantantHtBudgetExploitation = $project->getBudgetExploitation();
$isDepasseDeveloppement = false;
$isDepasseConstruction = false;
$isDepasseExploitation = false;
$isDepasseTotal = false;
$pourcentageDeveloppement = 0;
$pourcentageConstruction = 0;
$pourcentageExploitation = 0;
$pourcentageTotal = 0;
foreach ($developpementFactures as $facture){
$mantantHtDeveloppement += (float)$facture->getMontantHt();
}
foreach ($constructionFactures as $facture){
$mantantHtConstruction += (float)$facture->getMontantHt();
}
foreach ($exploitationFactures as $facture){
$mantantHtExploitation += (float)$facture->getMontantHt();
}
foreach ($developpementAvoirs as $facture){
$mtHt = $facture->getMontantHt()?$facture->getMontantHt():$facture->getAvoir()->getMonatantHt();
$mantantHtDeveloppement -= (float)$mtHt;
}
foreach ($constructionAvoirs as $facture){
$mtHt = $facture->getMontantHt()?$facture->getMontantHt():$facture->getAvoir()->getMonatantHt();
$mantantHtConstruction -= (float)$mtHt;
}
foreach ($exploitationAvoirs as $facture){
$mtHt = $facture->getMontantHt()?$facture->getMontantHt():$facture->getAvoir()->getMonatantHt();
$mantantHtExploitation -= (float)$mtHt;
}
if((float)$mantantHtBudgetDeveloppement > 0 ){
if((float)$mantantHtBudgetDeveloppement < $mantantHtDeveloppement){
$isDepasseDeveloppement = true;
}
}else{
$mantantHtBudgetDeveloppement = 0;
}
if($isDepasseDeveloppement){
$pourcentageDeveloppement = $mantantHtDeveloppement ? ($mantantHtBudgetDeveloppement / $mantantHtDeveloppement * 100) : 0;
}else{
$pourcentageDeveloppement = $mantantHtBudgetDeveloppement ? ($mantantHtDeveloppement / $mantantHtBudgetDeveloppement * 100) : 0;
}
if((float)$mantantHtBudgetConstruction > 0 ){
if((float)$mantantHtBudgetConstruction < $mantantHtConstruction){
$isDepasseConstruction = true;
}
}else{
$mantantHtBudgetConstruction = 0;
}
if($isDepasseConstruction){
$pourcentageConstruction = $mantantHtConstruction ? ($mantantHtBudgetConstruction / $mantantHtConstruction * 100) : 0;
}else{
$pourcentageConstruction = $mantantHtBudgetConstruction ? ($mantantHtConstruction / $mantantHtBudgetConstruction * 100) : 0;
}
$mantantHtBudgetTotal = $mantantHtBudgetConstruction + $mantantHtBudgetDeveloppement;
$mantantHtTotal = $mantantHtDeveloppement + $mantantHtConstruction;
if((float)$mantantHtBudgetTotal > 0 ){
if((float)$mantantHtBudgetTotal < $mantantHtTotal){
$isDepasseTotal = true;
}
}else{
$mantantHtBudgetTotal = 0;
}
if($isDepasseTotal){
$pourcentageTotal = $mantantHtTotal ? ($mantantHtBudgetTotal / $mantantHtTotal * 100) : 0;
}else{
$pourcentageTotal = $mantantHtBudgetTotal ? ($mantantHtTotal / $mantantHtBudgetTotal * 100) : 0;
}
if((float)$mantantHtBudgetExploitation > 0 ){
if((float)$mantantHtBudgetExploitation < $mantantHtExploitation){
$isDepasseExploitation = true;
}
}else{
$mantantHtBudgetExploitation = 0;
}
if($isDepasseExploitation){
$pourcentageExploitation = $mantantHtExploitation ? ($mantantHtBudgetExploitation / $mantantHtExploitation * 100) : 0;
}else{
$pourcentageExploitation = $mantantHtBudgetExploitation ? ($mantantHtExploitation / $mantantHtBudgetExploitation * 100) : 0;
}
return [
'developpement' => ['factures'=>$developpementFactures,'avoirs'=>$developpementAvoirs,'montant'=>$mantantHtDeveloppement,'budget'=>$mantantHtBudgetDeveloppement,'pourcentage'=>$pourcentageDeveloppement,'isDepasse'=>$isDepasseDeveloppement] ,
'construction' => ['factures'=>$constructionFactures,'avoirs'=>$constructionAvoirs,'montant'=>$mantantHtConstruction,'budget'=>$mantantHtBudgetConstruction,'pourcentage'=>$pourcentageConstruction,'isDepasse'=>$isDepasseConstruction] ,
'exploitation' => ['factures'=>$exploitationFactures,'avoirs'=>$exploitationAvoirs,'montant'=>$mantantHtExploitation,'budget'=>$mantantHtBudgetExploitation,'pourcentage'=>$pourcentageExploitation,'isDepasse'=>$isDepasseExploitation],
'total' => ['factures'=>[],'montant'=>$mantantHtTotal,'budget'=>$mantantHtBudgetTotal,'pourcentage'=>$pourcentageTotal,'isDepasse'=>$isDepasseTotal],
'projet' => ['name'=>$project->getName()]
];
}
public function getPdfDoe($project){
$etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$project->getId()]);
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
$etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project'=>$project->getId()]);
$etap161 = $this->em->getRepository(Etap161::class)->findOneBy(['project'=>$project->getId()]);
$etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project'=>$project->getId()]);
$html = $this->twig->render('admin/project/first-pdf-doe.html.twig',['project'=>$project,'etap14'=>$etap14,'etap160'=>$etap160]);
$html2pdf = new Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array('5','5','5','5'));
$html2pdf->getSecurityService()->disableCheckAllowedHosts();
$html2pdf->pdf->SetAuthor('Prejeace-Industrial');
$html2pdf->pdf->SetTitle('DOE');
$html2pdf->pdf->SetSubject('DOE');
$html2pdf->pdf->SetKeywords('DOE');
$html2pdf->pdf->SetDisplayMode('real');
$html2pdf->WriteHTML($html);
$nameFichier = 'DOE-info'.time().'.pdf';
$path_pdf = $this->params->get('uploads_directory').'/'.$nameFichier;
$html2pdf->Output($path_pdf,'F');
$filesDossierPcDpMultiple = [];
$filesPlanDeCalepinageCablage = [];
$filesModulePhotvoltaiques = [];
$filesOnduleurs = [];
$filesStructureIntegration = [];
$filesGarantie = [];
$filesCertificats = [];
$filesConsuel = [];
$filesPhotos = [];
if($etap1){
if(count($etap1->getFileDossierPcDpMultiple())>0){
foreach ($etap1->getFileDossierPcDpMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesDossierPcDpMultiple[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
}
if($etap174){
if(count($etap174->getFilePlanCaplageStrings174Multiple())>0){
foreach ($etap174->getFilePlanCaplageStrings174Multiple() as $item){
if($item->getIsArchived()){}
else{
$filesPlanDeCalepinageCablage[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap174->getFilePlanCalepinageModule174Multiple())>0){
foreach ($etap174->getFilePlanCalepinageModule174Multiple() as $item){
if($item->getIsArchived()){}
else{
$filesPlanDeCalepinageCablage[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap174->getFileSchemaUnifilaireInstallation174Multiple())>0){
foreach ($etap174->getFileSchemaUnifilaireInstallation174Multiple() as $item){
if($item->getIsArchived()){}
else{
$filesPlanDeCalepinageCablage[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
}
if($etap160){
if(count($etap160->getFileEvaluationCarboneModuleMultiple())>0){
foreach ($etap160->getFileEvaluationCarboneModuleMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesModulePhotvoltaiques[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap160->getFileFicheTechniqueModuleMultiple())>0){
foreach ($etap160->getFileFicheTechniqueModuleMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesModulePhotvoltaiques[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap160->getFileFicheTechniqueOnduleurMultiple())>0){
foreach ($etap160->getFileFicheTechniqueOnduleurMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesOnduleurs[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap160->getFileAttestationBrigageOnduleurMultiple())>0){
foreach ($etap160->getFileAttestationBrigageOnduleurMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesOnduleurs[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap160->getFileFicheSystemeIntegrationMultiple())>0){
foreach ($etap160->getFileFicheSystemeIntegrationMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesStructureIntegration[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap160->getFileFicheGarantiOnduleurMultiple())>0){
foreach ($etap160->getFileFicheGarantiOnduleurMultiple() as $item){
if($item->getIsArchived()){}
else{
$filesGarantie[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
}
if($etap14) {
if (count($etap14->getFileAttestationS21Multiple()) > 0) {
foreach ($etap14->getFileAttestationS21Multiple() as $item) {
if ($item->getIsArchived()) {
} else {
$filesCertificats[] = $this->params->get('uploads_directory') . '/' . $item->getPath();
}
}
}
}
if($etap161) {
if (count($etap161->getFileQualiPVInstallateurMultiple()) > 0) {
foreach ($etap161->getFileQualiPVInstallateurMultiple() as $item) {
if ($item->getIsArchived()) {
} else {
$filesCertificats[] = $this->params->get('uploads_directory') . '/' . $item->getPath();
}
}
}
}
if($etap20) {
if (count($etap20->getFileConsuelEtap20Multiple()) > 0) {
foreach ($etap20->getFileConsuelEtap20Multiple() as $item) {
if ($item->getIsArchived()) {
} else {
$filesConsuel[] = $this->params->get('uploads_directory') . '/' . $item->getPath();
}
}
}
}
if($etap174){
if(count($etap174->getFilePhotosGenerateur174Multiple())>0){
foreach ($etap174->getFilePhotosGenerateur174Multiple() as $item){
if($item->getIsArchived()){}
else{
$filesPhotos[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
if(count($etap174->getFileShemaAgencementShelterPhotos174Multiple())>0){
foreach ($etap174->getFileShemaAgencementShelterPhotos174Multiple() as $item){
if($item->getIsArchived()){}
else{
$filesPhotos[] = $this->params->get('uploads_directory') . '/'.$item->getPath();
}
}
}
}
$pdf = new Fpdi();
$fileContent = file_get_contents($path_pdf);
$pageCount = $pdf->setSourceFile(StreamReader::createByString($fileContent));
for ($i = 0; $i < $pageCount; $i++) {
$pdf->setPrintHeader(false);
$tpl = $pdf->importPage($i + 1, '/MediaBox');
$pdf->addPage();
$pdf->useTemplate($tpl,0,0,null,null,true);
}
$pdfFile = $this->addPagePdfStr('Le dossier PC/DP du projet ',$filesDossierPcDpMultiple); $pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesDossierPcDpMultiple as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Plan de calepinage et de câblage ',$filesPlanDeCalepinageCablage); $pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesPlanDeCalepinageCablage as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Documentation technique modules photovoltaiques',$filesModulePhotvoltaiques);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesModulePhotvoltaiques as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Documentation technique onduleurs',$filesOnduleurs);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesOnduleurs as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Documentation technique structure d’intégration',$filesStructureIntegration);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesStructureIntegration as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Documentation de garantie',$filesGarantie);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesGarantie as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Certificats',$filesCertificats);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesCertificats as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Consuel',$filesConsuel);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesConsuel as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
$pdfFile = $this->addPagePdfStr('Photos',$filesPhotos);$pdf = $this->addPdfFpdi($pdf,$pdfFile);
foreach ($filesPhotos as $file) {$pdf = $this->addPdfFpdi($pdf,$file);}
if(file_exists($path_pdf)){
unlink($path_pdf);
}
return $pdf;
}
public function addZipArray($zip,$namePath,$array){
$name = $namePath;
if(count($array)>0){
foreach ($array as $item){
$name = $namePath.($item->getNomenclature()? $item->getCreatedAt()->format('d-m-Y H:i:s').' - '.$item->getNomenclature(): $item->getPath());
$path = $this->params->get('uploads_directory').'/'.$item->getPath();
$zip->addFile($path,$name);
}
}else{
$zip->addEmptyDir($name);
}
return $zip;
}
public function getZipBail($project){
$data = $this->getBailListFile($project);
$zip = new \ZipArchive();
$zipfile = $this->params->get('zips_directory') . '/bail-' . $project->getName() .'.zip';
if (file_exists($zipfile)) unlink($zipfile);
if ($zip->open($zipfile, \ZipArchive::CREATE) === TRUE) {
foreach ($data as $key => $datum){
if($key == 'filesDossierPcDpMultiple'){
$name = 'Urbanisme/Dossier PC - DP/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesArretePcDpMultiple'){
$name = 'Urbanisme/Arrêté PC/DP/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesPVPassageHuissierMultiple'){
$name = 'Urbanisme/PV passage huissier/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesCertificatNonRecoursMultiple'){
$name = 'Urbanisme/Certificat de non-recours/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesCertificatNonRetraitMultiple'){
$name = 'Urbanisme/Certificat de non-retrait/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesPromessebailMultiple'){
$name = 'Foncier/Promesse de bail/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesEtatHypothecaireMultiple'){
$name = 'Foncier/Etat hypothécaire/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesTitreProprieteMultiple'){
$name = 'Foncier/Titre de propriété/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesAutreEtap6'){
$name = 'Foncier/Autres (Cession de bail, projet de bail…)/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesExtraitMatriceCadastrale'){
$name = 'Foncier/Extrait de matrice cadastrale/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesCarteIdentite'){
$name = 'Foncier/Carte d’identité/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesLivretFamille'){
$name = 'Foncier/Livret de famille/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesAccordMl'){
$name = 'Foncier/Accord ML/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesKbis'){
$name = 'Foncier/Kbis/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesStatuts'){
$name = 'Foncier/Statuts/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesEtatDecriptifMultiple'){
$name = 'Foncier/DA - EDDV/'; $zip = $this->addZipArray($zip,$name,$datum);
}
if($key == 'filesPlanServitudesMultiple'){
$name = 'Foncier/Plan de servitudes/'; $zip = $this->addZipArray($zip,$name,$datum);
}
}
}
return $zipfile;
}
private function addPdfFpdi($pdf,$file){
$fileContent = file_get_contents($file);
if(strpos(mime_content_type($file),'image/') === 0){
$pdf->addPage();
$pdf->Image($file);
}else if(strpos(mime_content_type($file),'application/pdf') === 0){
$pageCount = $pdf->setSourceFile(StreamReader::createByString($fileContent));
for ($i = 0; $i < $pageCount; $i++) {
$tpl = $pdf->importPage($i + 1, '/MediaBox');
$pdf->addPage();
$pdf->useTemplate($tpl,0,0,null,null,true);
}
}
return $pdf;
}
private function addPagePdfStr($str,$array){
$html = $this->twig->render('admin/project/page-pdf-str.html.twig',['str'=>$str,'array'=>$array]);
$html2pdf = new Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array('5','5','5','5'));
$html2pdf->getSecurityService()->disableCheckAllowedHosts();
$html2pdf->pdf->SetAuthor('Prejeace-Industrial');
$html2pdf->pdf->SetTitle('DOE');
$html2pdf->pdf->SetSubject('DOE');
$html2pdf->pdf->SetKeywords('DOE');
$html2pdf->pdf->SetDisplayMode('real');
$html2pdf->WriteHTML($html);
$nameFichier = 'page-pdf-str.pdf';
$path_pdf = $this->params->get('uploads_directory').'/'.$nameFichier;
$html2pdf->Output($path_pdf,'F');
return $path_pdf ;
}
public function addComment2($request,$user,$idComment=null)
{
$comment = $request->get('comment');
$token = $request->get('token');
if($comment and $token){
$project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
if($project && $user){
if($idComment){
$commentEntity = $this->em->getRepository(CommentProject2::class)->find($idComment);
$commentEntity->setUpdateAt(new \DateTime());
$commentChild = $commentEntity->getComment();
$userChild = $commentEntity->getUser();
$createdAt = $commentEntity->getCreatedAt();
$commentEntityChild = new CommentProject2Child();
$commentEntityChild->setUser($userChild);
$commentEntityChild->setComment($commentChild);
$commentEntityChild->setCommentProject2($commentEntity);
$commentEntityChild->setCreatedAt($createdAt);
$this->em->persist($commentEntityChild);
$this->em->flush();
}else{
$commentEntity = new CommentProject2();
}
$commentEntity->setProject($project);
$commentEntity->setUser($user);
$commentEntity->setComment($comment);
$this->em->persist($commentEntity);
$this->em->flush();
$this->notification->notifCommentProjectAllUser($project,$user);
return [
'commentEntity' => $commentEntity,
'project' => $project,
'success' => true
];
}
}
return [
'success' => false
];
}
public function deleteComment2($idComment)
{
if($idComment){
$commentEntity = $this->em->getRepository(CommentProject2::class)->find($idComment);
if($commentEntity) {
$this->em->remove($commentEntity);
$this->em->flush();
}
return [
'success' => true
];
}
return [
'success' => false
];
}
public function getDoeListFile($project){
$etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$project->getId()]);
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
$etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project'=>$project->getId()]);
$etap161 = $this->em->getRepository(Etap161::class)->findOneBy(['project'=>$project->getId()]);
$etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project'=>$project->getId()]);
$filesDossierPcDpMultiple = [];
$filesPlanDeCalepinageCablage = [];
$filesModulePhotvoltaiques = [];
$filesOnduleurs = [];
$filesStructureIntegration = [];
$filesGarantie = [];
$filesCertificats = [];
$filesConsuel = [];
$filesPhotos = [];
if($etap1){
if(count($etap1->getFileDossierPcDpMultiple())>0){
foreach ($etap1->getFileDossierPcDpMultiple() as $item){
$filesDossierPcDpMultiple[] = $item;
}
}
}
if($etap174){
if(count($etap174->getFilePlanCaplageStrings174Multiple())>0){
foreach ($etap174->getFilePlanCaplageStrings174Multiple() as $item){
$filesPlanDeCalepinageCablage[] = $item ;
}
}
if(count($etap174->getFilePlanCalepinageModule174Multiple())>0){
foreach ($etap174->getFilePlanCalepinageModule174Multiple() as $item){
$filesPlanDeCalepinageCablage[] = $item ;
}
}
if(count($etap174->getFileSchemaUnifilaireInstallation174Multiple())>0){
foreach ($etap174->getFileSchemaUnifilaireInstallation174Multiple() as $item){
$filesPlanDeCalepinageCablage[] = $item ;
}
}
}
if($etap160){
if(count($etap160->getFileEvaluationCarboneModuleMultiple())>0){
foreach ($etap160->getFileEvaluationCarboneModuleMultiple() as $item){
$filesModulePhotvoltaiques[] = $item ;
}
}
if(count($etap160->getFileFicheTechniqueModuleMultiple())>0){
foreach ($etap160->getFileFicheTechniqueModuleMultiple() as $item){
$filesModulePhotvoltaiques[] = $item ;
}
}
if(count($etap160->getFileFicheTechniqueOnduleurMultiple())>0){
foreach ($etap160->getFileFicheTechniqueOnduleurMultiple() as $item){
$filesOnduleurs[] = $item ;
}
}
if(count($etap160->getFileAttestationBrigageOnduleurMultiple())>0){
foreach ($etap160->getFileAttestationBrigageOnduleurMultiple() as $item){
$filesOnduleurs[] = $item ;
}
}
if(count($etap160->getFileFicheSystemeIntegrationMultiple())>0){
foreach ($etap160->getFileFicheSystemeIntegrationMultiple() as $item){
$filesStructureIntegration[] = $item ;
}
}
if(count($etap160->getFileFicheGarantiOnduleurMultiple())>0){
foreach ($etap160->getFileFicheGarantiOnduleurMultiple() as $item){
$filesGarantie[] = $item ;
}
}
}
if($etap14) {
if (count($etap14->getFileAttestationS21Multiple()) > 0) {
foreach ($etap14->getFileAttestationS21Multiple() as $item) {
$filesCertificats[] = $item ;
}
}
}
if($etap161) {
if (count($etap161->getFileQualiPVInstallateurMultiple()) > 0) {
foreach ($etap161->getFileQualiPVInstallateurMultiple() as $item) {
$filesCertificats[] = $item ;
}
}
}
if($etap20) {
if (count($etap20->getFileConsuelEtap20Multiple()) > 0) {
foreach ($etap20->getFileConsuelEtap20Multiple() as $item) {
$filesConsuel[] = $item ;
}
}
}
if($etap174){
if(count($etap174->getFilePhotosGenerateur174Multiple())>0){
foreach ($etap174->getFilePhotosGenerateur174Multiple() as $item){
$filesPhotos[] = $item ;
}
}
if(count($etap174->getFileShemaAgencementShelterPhotos174Multiple())>0){
foreach ($etap174->getFileShemaAgencementShelterPhotos174Multiple() as $item){
$filesPhotos[] = $item ;
}
}
}
return [
'filesDossierPcDpMultiple' => $filesDossierPcDpMultiple,
'filesPlanDeCalepinageCablage' => $filesPlanDeCalepinageCablage,
'filesModulePhotvoltaiques' => $filesModulePhotvoltaiques,
'filesOnduleurs' => $filesOnduleurs,
'filesStructureIntegration' => $filesStructureIntegration,
'filesGarantie' => $filesGarantie,
'filesCertificats' => $filesCertificats,
'filesConsuel' => $filesConsuel,
'filesPhotos' => $filesPhotos
];
}
public function getBailListFile($project){
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
$etap6 = $this->em->getRepository(Etap6::class)->findOneBy(['project'=>$project->getId()]);
$etap601 = $this->em->getRepository(Etap601::class)->findOneBy(['project'=>$project->getId()]);
$etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$project->getId()]);
$etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project'=>$project->getId()]);
$filesDossierPcDpMultiple = [];
$filesArretePcDpMultiple = [];
$filesPVPassageHuissierMultiple = [];
$filesCertificatNonRecoursMultiple = [];
$filesCertificatNonRetraitMultiple= [];
$filesPromessebailMultiple = [];
$filesEtatHypothecaireMultiple = [];
$filesTitreProprieteMultiple = [];
$filesAutreEtap6 = [];
$filesExtraitMatriceCadastrale = [];
$filesCarteIdentite = [];
$filesLivretFamille = [];
$filesAccordMl = [];
$filesKbis = [];
$filesStatuts = [];
$filesEtatDecriptifMultiple = [];
$filesPlanServitudesMultiple = [];
if($etap1){
if(count($etap1->getFileDossierPcDpMultiple())>0){
foreach ($etap1->getFileDossierPcDpMultiple() as $item){
$filesDossierPcDpMultiple[] = $item;
}
}
if(count($etap1->getFileArretePcDpMultiple())>0){
foreach ($etap1->getFileArretePcDpMultiple() as $item){
$filesArretePcDpMultiple[] = $item;
}
}
}
if($etap2){
if(count($etap2->getFilePVPassageHuissierMultiple())>0){
foreach ($etap2->getFilePVPassageHuissierMultiple() as $item){
$filesPVPassageHuissierMultiple[] = $item;
}
}
if(count($etap2->getFileCertificatNonRecoursMultiple())>0){
foreach ($etap2->getFileCertificatNonRecoursMultiple() as $item){
$filesCertificatNonRecoursMultiple[] = $item;
}
}
if(count($etap2->getFileCertificatNonRetraitMultiple())>0){
foreach ($etap2->getFileCertificatNonRetraitMultiple() as $item){
$filesCertificatNonRetraitMultiple[] = $item;
}
}
}
if($etap5){
if(count($etap5->getFilePromessebailMultiple())>0){
foreach ($etap5->getFilePromessebailMultiple() as $item){
$filesPromessebailMultiple[] = $item;
}
}
}
if($etap6){
if(count($etap6->getFileEtatHypothecaireMultiple())>0){
foreach ($etap6->getFileEtatHypothecaireMultiple() as $item){
$filesEtatHypothecaireMultiple[] = $item;
}
}
if(count($etap6->getFileTitreProprieteMultiple())>0){
foreach ($etap6->getFileTitreProprieteMultiple() as $item){
$filesTitreProprieteMultiple[] = $item;
}
}
if(count($etap6->getFileAutreEtap6())>0){
foreach ($etap6->getFileAutreEtap6() as $item){
$filesAutreEtap6[] = $item;
}
}
if(count($etap6->getFileExtraitMatriceCadastrale())>0){
foreach ($etap6->getFileExtraitMatriceCadastrale() as $item){
$filesExtraitMatriceCadastrale[] = $item;
}
}
if(count($etap6->getFileCarteIdentite())>0){
foreach ($etap6->getFileCarteIdentite() as $item){
$filesCarteIdentite[] = $item;
}
}
if(count($etap6->getFileLivretFamille())>0){
foreach ($etap6->getFileLivretFamille() as $item){
$filesLivretFamille[] = $item;
}
}
if(count($etap6->getFileAccordMl())>0){
foreach ($etap6->getFileAccordMl() as $item){
$filesAccordMl[] = $item;
}
}
if(count($etap6->getFileKbis())>0){
foreach ($etap6->getFileKbis() as $item){
$filesKbis[] = $item;
}
}
if(count($etap6->getFileStatuts())>0){
foreach ($etap6->getFileStatuts() as $item){
$filesStatuts[] = $item;
}
}
}
if($etap601){
if(count($etap601->getFileEtatDecriptifMultiple())>0){
foreach ($etap601->getFileEtatDecriptifMultiple() as $item){
$filesEtatDecriptifMultiple[] = $item;
}
}
if(count($etap601->getFilePlanServitudesMultiple())>0){
foreach ($etap601->getFilePlanServitudesMultiple() as $item){
$filesPlanServitudesMultiple[] = $item;
}
}
}
return [
'filesDossierPcDpMultiple' => $filesDossierPcDpMultiple,
'filesArretePcDpMultiple' => $filesArretePcDpMultiple,
'filesPVPassageHuissierMultiple' => $filesPVPassageHuissierMultiple,
'filesCertificatNonRecoursMultiple' => $filesCertificatNonRecoursMultiple,
'filesCertificatNonRetraitMultiple' => $filesCertificatNonRetraitMultiple,
'filesPromessebailMultiple' => $filesPromessebailMultiple,
'filesEtatHypothecaireMultiple' => $filesEtatHypothecaireMultiple,
'filesTitreProprieteMultiple' => $filesTitreProprieteMultiple,
'filesAutreEtap6' => $filesAutreEtap6,
'filesExtraitMatriceCadastrale' => $filesExtraitMatriceCadastrale,
'filesCarteIdentite' => $filesCarteIdentite,
'filesLivretFamille' => $filesLivretFamille,
'filesAccordMl' => $filesAccordMl,
'filesKbis' => $filesKbis,
'filesStatuts' => $filesStatuts,
'filesEtatDecriptifMultiple' => $filesEtatDecriptifMultiple,
'filesEtatDecriptifMultiple' => $filesEtatDecriptifMultiple,
'filesPlanServitudesMultiple' => $filesPlanServitudesMultiple,
];
}
public function extractBudget($projects,$request){
$file= $this->params->get('zips_directory')."/extraire_budgets.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"Nom du projet")
->setCellValue('B1',"Budget développement")
->setCellValue('C1',"Montant dépenses développement")
->setCellValue('D1',"Budget Construction")
->setCellValue('E1',"Montant factures Construction")
->setCellValue('F1',"Total DEVEX - CAPEX")
->setCellValue('G1',"Montant dépenses DEVEX - CAPEX")
->setCellValue('H1',"Exploitation");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(16);
$spreadsheet->getActiveSheet()->getStyle('A1:H1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($projects as $project){
$tab = $this->getTabFacturationParProject($project);
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $tab['projet']['name'])
->setCellValue('B'.$row , $tab['developpement']['budget'])
->setCellValue('C'.$row , $tab['developpement']['montant'])
->setCellValue('D'.$row , $tab['construction']['budget'])
->setCellValue('E'.$row , $tab['construction']['montant'])
->setCellValue('F'.$row , $tab['total']['budget'])
->setCellValue('G'.$row , $tab['total']['montant'])
->setCellValue('H'.$row , $tab['exploitation']['montant'])
;
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":H".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function extractRapports($rapports,$request){
$file= $this->params->get('zips_directory')."/extraire_rapports.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"Centrale")
->setCellValue('B1',"Objet d’intervention")
->setCellValue('C1',"Nom du rapport")
->setCellValue('D1',"Date de l’intervention")
->setCellValue('E1',"Description de l’intervention")
->setCellValue('F1',"Suivi nécessaire")
->setCellValue('G1',"Commentaire Suivi")
->setCellValue('H1',"Chargé intervention corrective")
->setCellValue('I1',"Devis à recevoir")
->setCellValue('J1',"Constructeur")
->setCellValue('K1',"Pertes de production")
->setCellValue('L1',"Date de début de perte")
->setCellValue('M1',"Date de fin de perte")
->setCellValue('N1',"Coût de l’intervention")
->setCellValue('O1',"Numero facture")
->setCellValue('P1',"Document url")
;
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(30);
$spreadsheet->getActiveSheet()->getStyle('A1:P1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($rapports as $rapport){
$urlDocumment = $rapport->getRapport()?$rapport->getRapport()->getPath() : null;
$nameDocumment = $rapport->getRapport()?$rapport->getRapport()->getNomenclature()?$rapport->getRapport()->getNomenclature():$rapport->getRapport()->getName():null;
$factureNum = '';
$j = 1;
$jCount = count($rapport->getFinanceFacture());
if($jCount>0){
foreach ($rapport->getFinanceFacture() as $item){
$trait = $jCount == $j ? ' ' : "\n";
$factureNum .= $item->getNumeroFacture().$trait;
$j++;
}
$spreadsheet->getActiveSheet()->setCellValue('O'.$row , $factureNum );
}
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getAlignment()->setWrapText(true);
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $rapport->getProject()?$rapport->getProject()->getName():'')
->setCellValue('B'.$row , $rapport->getObjectInterventionSrc())
->setCellValue('C'.$row , $rapport->getName())
->setCellValue('E'.$row , $rapport->getDescriptionIntervention())
->setCellValue('F'.$row , $rapport->getIsSuiviNecessaire()? 'Oui': 'Non')
->setCellValue('G'.$row , $rapport->getCommentaireSuivi())
->setCellValue('H'.$row , $rapport->getChargeInterventionCorrectiveStrAll())
->setCellValue('I'.$row , $rapport->getDevisARecevoir()? 'Oui': 'Non')
->setCellValue('J'.$row , $rapport->getConstructeur()? $rapport->getConstructeur()->getName() : '-')
->setCellValue('K'.$row , $rapport->getIsPerteProduction()? 'Oui': 'Non')
->setCellValue('N'.$row , $rapport->getCoutIntervention() ? $rapport->getCoutIntervention().'€' : '0€')
;
$spreadsheet = $this->addStyleToCellDate('D',$row,$rapport->getDateIntervention(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('L',$row,$rapport->getIsPerteProduction()?$rapport->getDateDebutPerteProduction():null,$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('M',$row,$rapport->getIsPerteProduction()?$rapport->getDateFinDebutPerteProduction():null,$spreadsheet);
;
if($urlDocumment){
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$spreadsheet->getActiveSheet()->setCellValue('P'.$row ,$nameDocumment);
$spreadsheet->getActiveSheet()->getCell('P'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlDocumment);
}
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":L".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function getRapportByRequestSelectAll($request){
$search = $request->get('search');
$centrale = $request->get('centrale');
$suivi = $request->get('suivi');
$isPerteProduction = $request->get('isPerteProduction');
$interventionObject = $request->get('interventionObject');
$centraleToken = $request->get('centraleToken');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'centraleToken' => $centraleToken,
'user' => $user
];
$rapports= $this->em->getRepository(\App\Entity\RapportCentrale::class)->search($isPerteProduction,$centrale,$suivi,$interventionObject,$filters);
return $rapports;
}
public function updateNomenclatureDocProject($token){
$project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
$nameDocEtaps = $this->getDocsName();
if($project){
foreach ($nameDocEtaps as $value){
foreach ($value['etaps'] as $etap){
if(isset($etap['etapsFiles'])) {
$etapNum = $etap['etapNum'];
$class = 'App\Entity\Etap' . $etapNum;
$etapEntity = $this->em->getRepository($class)->findOneBy(['project' => $project->getId()]);
if ($etapEntity) {
foreach ($etap['etapsFiles'] as $docName) {
$nameFileDB = $docName['nameFileDB'];
$nameFile = $docName['nameFile'];
$classMetadata = $this->em->getClassMetadata($class);
$associationMappings = $classMetadata->getAssociationMapping($nameFileDB);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY) {
$nameGeteurFiled = 'get' . ucfirst($nameFileDB);
$filedValue = $etapEntity->{$nameGeteurFiled}();
if (!$filedValue->isEmpty()) {
foreach ($filedValue as $item) {
$this->etapsService->getNomenclature($etapEntity, $item, $nameFile);
}
}
} else {
$nameGeteurFiled = 'get' . ucfirst($nameFileDB);
$filedValue = $etapEntity->{$nameGeteurFiled}();
if ($filedValue) {
$this->etapsService->getNomenclature($etapEntity, $filedValue, $nameFile);
}
}
}
}
}
}
}
}
}
public function getNomenclatureDocProjectDifferentSpv($project){
$notPositon = false;
$nameDocEtaps = $this->getDocsName();
if($project){
foreach ($nameDocEtaps as $value){
foreach ($value['etaps'] as $etap){
if(isset($etap['etapsFiles'])) {
$etapNum = $etap['etapNum'];
$class = 'App\Entity\Etap' . $etapNum;
$etapEntity = $this->em->getRepository($class)->findOneBy(['project' => $project->getId()]);
if ($etapEntity) {
foreach ($etap['etapsFiles'] as $docName) {
$nameFileDB = $docName['nameFileDB'];
$nameFile = $docName['nameFile'];
$classMetadata = $this->em->getClassMetadata($class);
$associationMappings = $classMetadata->getAssociationMapping($nameFileDB);
if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY) {
$nameGeteurFiled = 'get' . ucfirst($nameFileDB);
$filedValue = $etapEntity->{$nameGeteurFiled}();
if (!$filedValue->isEmpty()) {
foreach ($filedValue as $item) {
if($project->getSpv() and (strpos($item->getNomenclature(),$project->getSpv()->getName()) === false)){
$notPositon = true;
}
}
}
} else {
$nameGeteurFiled = 'get' . ucfirst($nameFileDB);
$filedValue = $etapEntity->{$nameGeteurFiled}();
if ($filedValue) {
if($project->getSpv() and (strpos($filedValue->getNomenclature(),$project->getSpv()->getName()) === false)){
$notPositon = true;
}
}
}
}
}
}
}
}
}
if($notPositon){
return $project;
}else{
return false;
}
}
public function checkParametrageLoyer($request,$token =null)
{
$centrale = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
$parametrageLoyer = $this->em->getRepository(ParametrageLoyer::class)->findOneBy(['centrale'=>$centrale->getId()]);
if(!$parametrageLoyer){
$parametrageLoyer = new ParametrageLoyer();
}
$originalTags = null;
if($parametrageLoyer->getId()){
$originalTags = new ArrayCollection();
foreach ($parametrageLoyer->getParametrageLoyerPeriode() as $tag) {
$originalTags->add($tag);
}
}
$form = $this->form->create(ParametrageLoyerType::class, $parametrageLoyer);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if($originalTags){
foreach ($originalTags as $tag) {
if (!$parametrageLoyer->getParametrageLoyerPeriode()->contains($tag)) {
if($this->checkLoyerFinance($tag)){
return true;
}else{
}
}
}
}
}
return true;
}
public function checkLoyerFinance($parametrageLoyerPeriode){
$isFactureAssocie = false;
if($parametrageLoyerPeriode){
$loyerPeriodes = $this->em->getRepository(LoyerFinance::class)->findBy(['parametrageLoyerPeriode'=>$parametrageLoyerPeriode->getId()]);
if($loyerPeriodes){
return true;
}
}
return false;
}
public function addParametrageLoyer($request,$token =null)
{
$centrale = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
$parametrageLoyer = $this->em->getRepository(ParametrageLoyer::class)->findOneBy(['centrale'=>$centrale->getId()]);
if(!$parametrageLoyer){
$parametrageLoyer = new ParametrageLoyer();
}
$originalTags = null;
if($parametrageLoyer->getId()){
$originalTags = new ArrayCollection();
foreach ($parametrageLoyer->getParametrageLoyerPeriode() as $tag) {
$originalTags->add($tag);
}
}
$form = $this->form->create(ParametrageLoyerType::class, $parametrageLoyer);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if($originalTags){
foreach ($originalTags as $tag) {
if (!$parametrageLoyer->getParametrageLoyerPeriode()->contains($tag)) {
if($this->deleteLoyerFinance($tag)){
$this->flashBag->add(
'success',
'⚠️ Nouveau paramétrage du loyer. Les anciennes données sont supprimées.'
);
}else{
// $this->flashBag->add(
// 'danger',
// 'Facture associé à certaines lignes de loyers !'
// );
// return [
// 'form' => $form->createView(),
// 'parametrageLoyer' => $parametrageLoyer,
// 'loyersFinance' => $this->em->getRepository(LoyerFinance::class)->getByParametrageLoyer($parametrageLoyer),
// 'centrale' => $centrale,
// 'success' => false,
// 'erreurMsg' => 'Facture associé à certaines lignes de loyers !',
// 'action' => $this->router->generate('admin_exploitation_parametrage_layer_view',['token'=>$token]),
// ];
}
}
}
}
if($centrale){
$parametrageLoyer->setCentrale($centrale);
}
$this->em->persist($parametrageLoyer);
$this->em->flush();
$this->addLoyerPeride($parametrageLoyer);
return [
'form' => $form->createView(),
'parametrageLoyer' => $parametrageLoyer,
'success' => true,
'centrale' => $centrale
];
}
return [
'form' => $form->createView(),
'parametrageLoyer' => $parametrageLoyer,
'loyersFinance' => $this->em->getRepository(LoyerFinance::class)->getByParametrageLoyer($parametrageLoyer),
'centrale' => $centrale,
'success' => false,
'action' => $this->router->generate('admin_exploitation_parametrage_layer_view',['token'=>$token]),
];
}
public function deleteLoyerFinance($parametrageLoyerPeriode){
$isFactureAssocie = false;
if($parametrageLoyerPeriode){
$loyerPeriodes = $this->em->getRepository(LoyerFinance::class)->findBy(['parametrageLoyerPeriode'=>$parametrageLoyerPeriode->getId()]);
if($loyerPeriodes){
// foreach ($loyerPeriodes as $item){
// if($item->getFinanceFacture()){
// $isFactureAssocie = true;
// }
// }
// if($isFactureAssocie){
// return false;
// }else{
// foreach ($loyerPeriodes as $item){
// $this->em->remove($item);
// }
// $this->em->flush();
// return true;
// }
foreach ($loyerPeriodes as $item){
$this->em->remove($item);
}
$this->em->flush();
return true;
}
}
return false;
}
public function addLoyerPeride($parametrageLoyer){
$arrayLoyerIds = [];
if($parametrageLoyer->getParametrageLoyerPeriode()){
foreach ($parametrageLoyer->getParametrageLoyerPeriode() as $loyerPeriode){
$dateDebut = $loyerPeriode->getDateDebut();
$dateFin = $loyerPeriode->getDateFin();
$echeance = $loyerPeriode->getEcheance();
if($echeance == ParametrageLoyerPeriode::echeance_mensuelle){
$i=0;
$dateDebutLoyer = new \DateTime($dateDebut->format('Y-m-d'));
while ($dateDebutLoyer < $dateFin) {
$i += 1;
$date = new \DateTime($dateDebut->format('Y-m-d'));
$dateFinLoyer = new \DateTime($date->modify('+ '.$i.'month')->format('Y-m-d'));
if($dateFinLoyer > $dateFin){
$dateFinLoyer = new \DateTime($dateFin->format('Y-m-d'));
}
$date = new \DateTime($dateDebut->format('Y-m-d'));
$arrayLoyerIds[] = $this->addLoyerFinance($dateDebutLoyer,$dateFinLoyer,$loyerPeriode);
$dateDebutLoyer = new \DateTime($date->modify('+ '.$i.'month')->format('Y-m-d'));
}
}elseif ($echeance == ParametrageLoyerPeriode::echeance_semestrielle){
$i=0;
$dateDebutLoyer = new \DateTime($dateDebut->format('Y-m-d'));
while ($dateDebutLoyer < $dateFin) {
$i += 6;
$date = new \DateTime($dateDebut->format('Y-m-d'));
$dateFinLoyer = new \DateTime($date->modify('+ '.$i.'month')->format('Y-m-d'));
if($dateFinLoyer > $dateFin){
$dateFinLoyer = new \DateTime($dateFin->format('Y-m-d'));
}
$arrayLoyerIds[] = $this->addLoyerFinance($dateDebutLoyer,$dateFinLoyer,$loyerPeriode);
$date = new \DateTime($dateDebut->format('Y-m-d'));
$dateDebutLoyer = new \DateTime($date->modify('+ '.$i.'month')->format('Y-m-d'));
}
}elseif ($echeance == ParametrageLoyerPeriode::echeance_annuelle){
$i=0;
$dateDebutLoyer = new \DateTime($dateDebut->format('Y-m-d'));
while ($dateDebutLoyer < $dateFin) {
$i += 12;
$date = new \DateTime($dateDebut->format('Y-m-d'));
$dateFinLoyer = new \DateTime($date->modify('+ '.$i.'month')->format('Y-m-d'));
if($dateFinLoyer > $dateFin){
$dateFinLoyer = new \DateTime($dateFin->format('Y-m-d'));
}
$date = new \DateTime($dateDebut->format('Y-m-d'));
$arrayLoyerIds[] = $this->addLoyerFinance($dateDebutLoyer,$dateFinLoyer,$loyerPeriode);
$dateDebutLoyer = new \DateTime($date->modify('+ '.$i.'month')->format('Y-m-d'));
}
}
}
}
if($arrayLoyerIds){
$loyerFinanceNotPeriode = $this->em->getRepository(LoyerFinance::class)->getLoyerFinanceNotIds($arrayLoyerIds,$parametrageLoyer->getId());
if($loyerFinanceNotPeriode){
foreach ($loyerFinanceNotPeriode as $value){
$this->em->remove($value);
$this->em->flush();
}
}
}
$this->displayLoyerPeriode();
}
private function addLoyerFinance($dateDebut,$dateFin,$loyerPeriode){
if($loyerPeriode->getEcheance() == ParametrageLoyerPeriode::echeance_mensuelle){
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'MMMM');
$echeanceStr = 'Loyer '.$dateFin->format('Y').' - '.$intl->format($dateFin);
}elseif ($loyerPeriode->getEcheance() == ParametrageLoyerPeriode::echeance_semestrielle){
if($dateFin->format('m') > 6){
if($dateFin->format('m') == 7 && $dateFin->format('d') < 10){
$echeanceStr = 'Loyer '.$dateFin->format('Y').' - S1';
}else{
$echeanceStr = 'Loyer '.$dateFin->format('Y').' - S2';
}
}else{
$echeanceStr = 'Loyer '.$dateFin->format('Y').' - S1';
}
}elseif ($loyerPeriode->getEcheance() == ParametrageLoyerPeriode::echeance_annuelle){
$echeanceStr = 'Loyer '.$dateFin->format('Y');
}
$loyerPeriodeOld = $this->em->getRepository(LoyerFinance::class)->getByDateAndPeriode($dateDebut,$dateFin,$loyerPeriode);
if($loyerPeriodeOld) {
$loyerFinance = $loyerPeriodeOld[0];
}else {
$loyerFinance = new LoyerFinance();
}
$loyerFinance->setDateDebut($dateDebut);
$loyerFinance->setDateFin($dateFin);
$loyerFinance->setEcheanceStr($echeanceStr);
$loyerFinance->setMontantHt($loyerPeriode->getMontant());
$loyerFinance->setParametrageLoyerPeriode($loyerPeriode);
$loyerFinance->setParametrageLoyer($loyerPeriode->getParametrageLoyer());
$loyerFinance->setIsDisplay(false);
$this->em->persist($loyerFinance);
$this->em->flush();
// $namefile = $this->getHtmlLoyerFacture($loyerFinance->getToken());
// $loyerFinance->setPdfFile($namefile);
// $this->em->persist($loyerFinance);
// $this->em->flush();
return $loyerFinance->getId();
}
public function updateFinanceLoyer($request,$token =null)
{
$loyerFinance = $this->em->getRepository(LoyerFinance::class)->findOneBy(['token'=>$token]);
$form = $this->form->create(LoyerFinanceType::class, $loyerFinance);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->em->persist($loyerFinance);
$this->em->flush();
if(count($loyerFinance->getLoyerFinanceItem()) > 0){
foreach ($loyerFinance->getLoyerFinanceItem() as $item){
$namefile = $this->getHtmlLoyerFacture($item);
$item->setPdfFile($namefile);
$fileLoyerToken = $item->getTokenFileLoyer();
if($fileLoyerToken){
$fileLoyer = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileLoyerToken]);
$item->setFileLoyer($fileLoyer);
}
$this->em->persist($item);
$this->em->flush();
}
}
return [
'form' => $form->createView(),
'loyerFinance' => $loyerFinance,
'success' => true,
];
}
return [
'form' => $form->createView(),
'loyerFinance' => $loyerFinance,
'success' => false,
'action' => $this->router->generate('admin_exploitation_finance_loyer_view',['token'=>$token]),
];
}
public function updateAllFinanceLoyer($request)
{
$loyerFinances = $this->em->getRepository(LoyerFinance::class)->findAll();
foreach ($loyerFinances as $finance){
$facture = $finance->getFinanceFacture();
if($facture){
$itemFacture = $this->em->getRepository(LoyerFinanceItem::class)->findOneBy(['financeFacture'=>$facture->getId(),'loyerFinance'=>$finance->getId()]);
if($itemFacture){
$itemFacture->setFinanceFacture($facture);
$itemFacture->setLoyerFinance($finance);
$itemFacture->setDateReglement($facture->getDatePaiement());
$itemFacture->setNumeroLoyer($facture->getNumeroFacture());
$itemFacture->setMontant($facture->getMonatantTtc());
$itemFacture->setMontantHt($facture->getMonatantHt());
$itemFacture->setMontantTva($facture->getTva());
$this->em->persist($itemFacture);
$this->em->flush();
$namefile = $this->getHtmlLoyerFacture($itemFacture);
$itemFacture->setPdfFile($namefile);
$this->em->persist($itemFacture);
$this->em->flush();
}
}
}
}
public function paginateFinanceLoyer($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'centrales' => $request->get('centraleToken'),
'spvLoyers' => $request->get('spvToken'),
'isFactureReglee' => $request->get('isFactureReglee'),
'user' => $user
];
$loyers= $this->em->getRepository(\App\Entity\LoyerFinance::class)->searchLoyerFinance($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\LoyerFinance::class)->searchLoyerFinance($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\LoyerFinance::class)->searchLoyerFinance(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
foreach ($loyers as $loyer) {
$action = $this->twig->render(
'admin/exploitation/default/boutonLoyer.html.twig', array(
'loyer' => $loyer
));
$select = $this->twig->render(
'admin/exploitation/default/checkboxLoyer.html.twig', array(
'loyer' => $loyer
));
$commentaires = $loyer->getCommentFinanceLoyer();
$facturesFinance = '';
$numeroLoyer = '';
$montantHt = 0;
$dateReglement = '';
if(count($loyer->getLoyerFinanceItem())>0){
foreach ($loyer->getLoyerFinanceItem() as $item){
$facturesFinance = $facturesFinance.' '. $item->getFinanceFacture()->getNumeroFacture()."<br>" ;
$numeroLoyer = $numeroLoyer.' '.$item->getNumeroLoyer()."<br>";
if($item->getDateReglement()){
$dateReglement = $dateReglement .' '.$item->getDateReglement()->format('d/m/Y')."<br>";
}
$montantHt = $montantHt + $item->getMontantHt();
}
}
if($montantHt != 0){
$montantHtTotal = $this->espaceNumber($montantHt);
}else{
$montantHtTotal = $this->espaceNumber($loyer->getMontant());
}
if($facturesFinance == ''){
$facturesFinance = $loyer->getFinanceFacture() ?$loyer->getFinanceFacture()->getNumeroFacture():'';
}
$output['data'][] = [
'responsive_id' => '',
'id' => $loyer->getId(),
'centrale' => $this->twig->render('admin/exploitation/default/nameCentraleLoyer.html.twig', array( 'string'=>$loyer->getParametrageLoyer()->getCentrale()->getName(),'commentaires'=>$commentaires)),
'spv' => $loyer->getParametrageLoyer()->getCentrale()->getSpv()?$loyer->getParametrageLoyer()->getCentrale()->getSpv()->getName():'',
'echeanceStr' => $loyer->getEcheanceStr(),
'dateDebut' => $loyer->getDateDebut()->format('d/m/Y'),
'dateFin' => $loyer->getDateFin()->format('d/m/Y'),
'montant' => $montantHtTotal,
'financeFacture' => $facturesFinance,
'isFactureReglee' => $loyer->getIsFactureReglee() ?"<span style='color:green;'>Oui</span>":"<span style='color:red;'>Non</span>",
'action' => $action,
'selectLoyer' => $select
];
}
return $output;
}
public function extractFactureLoyer($loyers,$request){
$file= $this->params->get('zips_directory')."/extraire_loyers.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"Centrale")
->setCellValue('B1',"SPV")
->setCellValue('C1',"Échéance du loyer ")
->setCellValue('D1',"Date de début de période ")
->setCellValue('E1',"Date de fin de période ")
->setCellValue('F1',"Montant")
->setCellValue('G1',"Facture associée")
->setCellValue('H1',"numéro de facture ")
->setCellValue('I1',"Facture réglée ")
->setCellValue('J1',"Date de règlement");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(20);
$spreadsheet->getActiveSheet()->getStyle('A1:J1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($loyers as $loyer){
$facturesFinance = '';
$numeroLoyer = '';
$montantHt = 0;
$dateReglement = '';
if(count($loyer->getLoyerFinanceItem())>0){
foreach ($loyer->getLoyerFinanceItem() as $item){
$facturesFinance = $facturesFinance.' '. $item->getFinanceFacture()->getNumeroFacture()."\n" ;
$numeroLoyer = $numeroLoyer.' '.$item->getNumeroLoyer()."\n";
if($item->getDateReglement()){
$dateReglement = $dateReglement .' '.$item->getDateReglement()->format('d/m/Y')."\n";
}
$montantHt = $montantHt + $item->getMontantHt();
}
}
if($montantHt != 0){
$montantHtTotal = $this->espaceNumber($montantHt);
}else{
$montantHtTotal = $this->espaceNumber($loyer->getMontant());
}
if($facturesFinance == ''){
$facturesFinance = $loyer->getFinanceFacture() ?$loyer->getFinanceFacture()->getNumeroFacture():'';
}else{
$facturesFinance = rtrim($facturesFinance, "\n");
}
if($numeroLoyer == ''){
$numeroLoyer = $loyer->getNumeroLoyer();
}else{
$numeroLoyer = rtrim($numeroLoyer, "\n");
}
if($dateReglement == ''){
$dateReglement = $loyer->getDateReglement() ? $loyer->getDateReglement()->format('d/m/Y') : '';
}else{
$dateReglement = rtrim($dateReglement, "\n");
}
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , (string)$loyer->getParametrageLoyer()->getCentrale()->getName())
->setCellValue('B'.$row , $loyer->getParametrageLoyer()->getCentrale()->getSpv()?$loyer->getParametrageLoyer()->getCentrale()->getSpv()->getName():'')
->setCellValue('C'.$row , (string)$loyer->getEcheanceStr())
->setCellValue('F'.$row , $montantHtTotal)
->setCellValue('G'.$row , $facturesFinance)
->setCellValue('H'.$row , $numeroLoyer)
->setCellValue('I'.$row , $loyer->getIsFactureReglee() ?"Oui":"Non")
->setCellValue('J'.$row , $dateReglement)
;
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getAlignment()->setWrapText(true);
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getAlignment()->setWrapText(true);
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getAlignment()->setWrapText(true);
$spreadsheet = $this->addStyleToCellDate('D',$row,$loyer->getDateDebut(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('E',$row,$loyer->getDateFin(),$spreadsheet);
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":J".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function getLoyersByRequestSelectAll($request){
$user = $this->security->getUser();
$roles = $user->getRoles();
$search = $request->get('search');
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'isFactureReglee' => $request->get('isFactureReglee'),
'centrales' => $request->get('centraleToken'),
'spvLoyers' => $request->get('spvToken'),
'user' => $user
];
$loyers= $this->em->getRepository(\App\Entity\LoyerFinance::class)->searchLoyerFinance($filters);
return $loyers;
}
public function getPdfLoyerFacture($token){
$loyer = $this->em->getRepository(LoyerFinance::class)->findOneBy(['token'=>$token]);
if($loyer){
$html = $this->twig->render('admin/exploitation/pdf-loyer.html.twig',array('data'=>$loyer));
$title = 'Loyer';
$html2pdf = new Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array('5','5','5','5'));
$html2pdf->getSecurityService()->disableCheckAllowedHosts();
$html2pdf->pdf->SetAuthor('prejeance');
$html2pdf->pdf->SetTitle($title);
$html2pdf->pdf->SetSubject($title);
$html2pdf->pdf->SetKeywords($title);
$html2pdf->pdf->SetDisplayMode('real');
$html2pdf->WriteHTML($html);
$nameFichier = 'LOYER-FACTURE-'.time().$loyer->getId().'.pdf';
$path_pdf = $this->params->get('justificatif_finance_directory').'/'.$nameFichier;
$html2pdf->Output($path_pdf,'F');
return $nameFichier;
}
return null;
}
public function getHtmlLoyerFacture($loyerItem){
if($loyerItem){
$html = $this->twig->render('admin/exploitation/word-loyer.html.twig',array('data'=>$loyerItem));
$phpWord = new PhpWord();
$section = $phpWord->addSection();
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $html, false, false);
$nameFichier = 'LOYER-FACTURE-'.time().$loyerItem->getLoyerFinance()->getId().'-'.$loyerItem->getId().'.docx';
$path_pdf = $this->params->get('justificatif_finance_directory').'/'.$nameFichier;
$phpWord->save($path_pdf,'Word2007');
return $nameFichier;
}
return null;
}
/**
* GENERATE RANDOM PASSWORD ON CREATE USER
* @return string
*/
function randomPassword() {
$alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = array(); //remember to declare $pass as an array
$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
for ($i = 0; $i < 8; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass); //turn the array into a string
}
public function addUserFournisseurInProject($fournisseur){
$name = $fournisseur->getName();
$email = $fournisseur->getEmail();
if(!$fournisseur->getUser()){
if($email) {
$user = new User();
// encode the plain password
$password = $this->randomPassword();
$user->setPassword(
$this->passwordEncoder->encodePassword(
$user,
$password
)
);
$user->setRoles(array('ROLE_FOURNISSEUR'));
$user->setFirstname($name);
$user->setLastname($name);
$user->setEmail($email);
$user->setAcces(User::ACCES_ECRETURE);
if ($fournisseur->getId()) {
$user->setIsEnabled($fournisseur->getIsEnabled());
} else {
$user->setIsEnabled(true);
}
$errors = $this->validator->validate($user);
if (count($errors) > 0) {
foreach ($errors as $error) {
$erreurs[] = $error->getMessage();
}
return array(
'erreurs' => $erreurs,
'success' => false
);
}
$this->em->persist($user);
$this->em->flush();
$this->notification->createUser($user, $password);
}else{
return array(
'success' => false,
'erreurs' => 'Erreur email !',
);
}
}
return array(
'success' => true,
'user' => $user
);
}
public function getLogsSpv($str){
$logs = $this->em->getRepository(HistoryProject::class)->getLogByStr($str);
return $logs;
}
public function getLogsSpvProject($str,$tokenProjects){
$logs = $this->em->getRepository(HistoryProject::class)->getLogByStrProject($str,$tokenProjects);
return $logs;
}
public function getLogSpvXlsx($logs,$request){
$file= $this->params->get('zips_directory')."/extraire_log_spv.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"Projet")
->setCellValue('B1',"Date de changement")
->setCellValue('C1',"Ancienne SPV")
->setCellValue('D1',"Nouvelle SPV")
->setCellValue('E1',"personne en charge")
;
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getStyle('A1:E1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($logs as $item){
$matches = [];
preg_match_all("/`([^`]+)`/", $item->getAction(), $matches);
$spvOld = '';
$spvNew = '';
if(isset($matches[1])){
if(isset($matches[1][1])){
$spvOld = isset($matches[1][0])?$matches[1][0]:null;
$spvNew = isset($matches[1][1])?$matches[1][1]:null;
}else{
$spvOld = '';
$spvNew = isset($matches[1][0])?$matches[1][0]:null;
}
}
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $item->getProject()->getName())
->setCellValue('C'.$row , $spvOld)
->setCellValue('D'.$row , $spvNew)
->setCellValue('E'.$row , $item->getUser() ? $item->getUser()->getFirstname() .' '.$item->getUser()->getLastname() : '')
;
$spreadsheet = $this->addStyleToCellDate('B',$row,$item->getCreatedAt(),$spreadsheet);
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":E".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function addInstalateurCharpentier($fournisseurTitre,$project){
if($fournisseurTitre == 'Installateur'){
$etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
if($etap16 && count($etap16->getContratConstruction())>0){
$contratConstructeurs = $etap16->getContratConstruction();
$isContratLotPv = false;
$installateur = $this->em->getRepository(FournisseurProject::class)->findOneBy(['project'=>$project->getId(),'titre'=>'Installateur']);
foreach ($contratConstructeurs as $constructeur){
if($constructeur->getTitre() == 'Contrat lot PV'){
if($installateur){
$constructeur->setFournisseur($installateur->getFournisseur());
$this->em->persist($constructeur);
$this->em->flush();
}
$isContratLotPv == true;
}
}
if(!$isContratLotPv && $installateur){
if($contratConstructeurs[0]->getTitre()){
if(isset($contratConstructeurs[1])){
if($contratConstructeurs[1]->getTitre()){
}else{
$contratConstructeurs[1]->setFournisseur($installateur->getFournisseur());
$contratConstructeurs[1]->setTitre('Contrat lot PV');
$this->em->persist($contratConstructeurs[0]);
$this->em->flush();
}
}
}else {
$contratConstructeurs[0]->setFournisseur($installateur->getFournisseur());
$contratConstructeurs[0]->setTitre('Contrat lot PV');
$this->em->persist($contratConstructeurs[0]);
$this->em->flush();
}
}
}
}
if($fournisseurTitre == 'Charpentier'){
$etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
if($etap16 && count($etap16->getContratConstruction())>0){
$contratConstructeurs = $etap16->getContratConstruction();
$isContratLotBatiment = false;
$charpentier = $this->em->getRepository(FournisseurProject::class)->findOneBy(['project'=>$project->getId(),'titre'=>'Charpentier']);
foreach ($contratConstructeurs as $constructeur){
if($constructeur->getTitre() == 'Contrat lot Bâtiment'){
if($charpentier){
$constructeur->setFournisseur($charpentier->getFournisseur());
$this->em->persist($constructeur);
$this->em->flush();
$isContratLotBatiment == true;
}
}
}
if(!$isContratLotBatiment && $charpentier){
if($contratConstructeurs[0]->getTitre()){
if(isset($contratConstructeurs[1])){
if($contratConstructeurs[1]->getTitre()){
}else{
$contratConstructeurs[1]->setFournisseur($charpentier->getFournisseur());;
$contratConstructeurs[1]->setTitre('Contrat lot Bâtiment');
$this->em->persist($contratConstructeurs[1]);
$this->em->flush();
}
}
}else {
$contratConstructeurs[0]->setFournisseur($charpentier->getFournisseur());
$contratConstructeurs[0]->setTitre('Contrat lot Bâtiment');
$this->em->persist($contratConstructeurs[0]);
$this->em->flush();
}
}
}
}
}
public function addEpcFournisseur($project,$epc){
$etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
$constructeurEntity = null;
$isContratEpc= false;
if($etap16 && count($etap16->getContratConstruction())>0){
$contratConstructeurs = $etap16->getContratConstruction();
foreach ($contratConstructeurs as $constructeur){
if($constructeur->getTitre() == 'Contrat EPC'){
$isContratEpc == true;
$constructeurEntity = $constructeur;
}
}
if(!$isContratEpc){
if($contratConstructeurs[0]){
$constructeurEntity = $contratConstructeurs[0];
}
}
}
if($epc){
$project->setFournisseur($epc);
$this->em->persist($project);
$this->em->flush();
if($constructeurEntity) {
$constructeurEntity->setFournisseur($epc);
$constructeurEntity->setTitre('Contrat EPC');
$this->em->persist($constructeurEntity);
$this->em->flush();
}
}else{
$project->setFournisseur(null);
$this->em->persist($project);
$this->em->flush();
if($constructeurEntity) {
$constructeurEntity->setFournisseur(null);
$constructeurEntity->setTitre('Contrat EPC');
$this->em->persist($constructeurEntity);
$this->em->flush();
}
}
}
public function getRapportPreventiveCase($project,$annee,$anneeMiseEnService){
$isDisabled = false;
$statusRapport = 'KO';
$rapport = null;
if($anneeMiseEnService <= $annee){
$rapports = $this->em->getRepository(\App\Entity\RapportCentrale::class)->getRapportPreventiveByAnnee($project,$annee);
if($rapports){
$statusRapport = 'OK';
$rapport = $rapports[0];
}
}else{
$isDisabled = true;
}
return $this->twig->render('admin/exploitation/default/rapportPreventiveCase.html.twig',
array(
'isDisabled'=>$isDisabled,
'statusRapport'=>$statusRapport,
'rapport'=>$rapport
)
);
}
public function paginateCentraleSuiviMaintenance($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$centraleRapportSuivi= $request->get('centraleRapportSuivi');
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'user' => $user,
'centraleRapportSuivi' => $centraleRapportSuivi,
];
$centrales = $this->em->getRepository(\App\Entity\Project::class)->getCentrales($filters);
$arrayIdCentrale = array();
foreach ($centrales as $project) {
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
if ($project && $project->getDateMiseEnService()) {
$dateMiseEnservice = $project->getDateMiseEnService();
} else {
if ($etap14 && $etap14->getDateMiseEnService()) {
$dateMiseEnservice = $etap14->getDateMiseEnService();
}
}
if($dateMiseEnservice){
$annee= $request->get('anneeRapport');
$status= $request->get('status');
if($status && $annee){
if($dateMiseEnservice->format('Y') <= $annee){
$rapport = $this->em->getRepository(\App\Entity\RapportCentrale::class)->getRapportPreventiveByAnnee($project,$annee);
if($status == 'OK' and $rapport){
$arrayIdCentrale[] = $project->getId();
}
if($status == 'KO' and !$rapport){
$arrayIdCentrale[] = $project->getId();
}
}
}else{
$arrayIdCentrale[] = $project->getId();
}
}
}
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchCentraleRapportById($arrayIdCentrale, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\Project::class)->searchCentraleRapportById($arrayIdCentrale, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\Project::class)->searchCentraleRapportById($arrayIdCentrale, $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
foreach ($projects as $project) {
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
if ($project && $project->getDateMiseEnService()) {
$dateMiseEnservice = $project->getDateMiseEnService();
} else {
if ($etap14 && $etap14->getDateMiseEnService()) {
$dateMiseEnservice = $etap14->getDateMiseEnService();
}
}
$dataNow = new \DateTime();
$anneRapport4 = (int)$dataNow->format('Y');
$anneRapport3 = $anneRapport4 - 1;
$anneRapport2 = $anneRapport4 - 2;
$anneRapport1 = $anneRapport4 - 3;
if($dateMiseEnservice){
$output['data'][] = [
'responsive_id' => '',
'id' => $project->getId(),
'name' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$project->getName())),
'dateMiseEnService' => $this->twig->render('user/project/default/link.html.twig', array( 'project'=>$project,'string'=>$dateMiseEnservice->format('d/m/Y'))) ,
'date1' => $this->getRapportPreventiveCase($project,$anneRapport1,$dateMiseEnservice->format('Y')),
'date2' => $this->getRapportPreventiveCase($project,$anneRapport2,$dateMiseEnservice->format('Y')),
'date3' => $this->getRapportPreventiveCase($project,$anneRapport3,$dateMiseEnservice->format('Y')),
'date4' => $this->getRapportPreventiveCase($project,$anneRapport4,$dateMiseEnservice->format('Y'))
];
}
}
return $output;
}
public function getRapportPreventiveCaseStr($project,$annee,$anneeMiseEnService){
$isDisabled = false;
$statusRapport = 'KO';
$rapport = null;
if($anneeMiseEnService <= $annee){
$rapports = $this->em->getRepository(\App\Entity\RapportCentrale::class)->getRapportPreventiveByAnnee($project,$annee);
if($rapports){
$statusRapport = 'OK';
$rapport = $rapports[0];
}
}else{
$isDisabled = true;
}
return
array(
'isDisabled'=>$isDisabled,
'statusRapport'=>$statusRapport,
'rapport'=>$rapport
);
}
public function getCentraleSuiviMaintenanceBySelect($request){
$search = $request->get('search');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => trim(@$search['value']),
'spvsTab' => $spvsTab,
'user' => $user,
];
$centrales = $this->em->getRepository(\App\Entity\Project::class)->getCentrales($filters);
$arrayIdCentrale = array();
foreach ($centrales as $project) {
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
if ($project && $project->getDateMiseEnService()) {
$dateMiseEnservice = $project->getDateMiseEnService();
} else {
if ($etap14 && $etap14->getDateMiseEnService()) {
$dateMiseEnservice = $etap14->getDateMiseEnService();
}
}
if($dateMiseEnservice){
$annee= $request->get('anneeRapport');
$status= $request->get('status');
if($status && $annee){
if($dateMiseEnservice->format('Y') <= $annee){
$rapport = $this->em->getRepository(\App\Entity\RapportCentrale::class)->getRapportPreventiveByAnnee($project,$annee);
if($status == 'OK' and $rapport){
$arrayIdCentrale[] = $project->getId();
}
if($status == 'KO' and !$rapport){
$arrayIdCentrale[] = $project->getId();
}
}
}else{
$arrayIdCentrale[] = $project->getId();
}
}
}
$output = [];
$projects= $this->em->getRepository(\App\Entity\Project::class)->getCentraleRapportById($arrayIdCentrale);
foreach ($projects as $project) {
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
if ($project && $project->getDateMiseEnService()) {
$dateMiseEnservice = $project->getDateMiseEnService();
} else {
if ($etap14 && $etap14->getDateMiseEnService()) {
$dateMiseEnservice = $etap14->getDateMiseEnService();
}
}
$dataNow = new \DateTime();
$anneRapport4 = (int)$dataNow->format('Y');
$anneRapport3 = $anneRapport4 - 1;
$anneRapport2 = $anneRapport4 - 2;
$anneRapport1 = $anneRapport4 - 3;
if($dateMiseEnservice){
$output[] = [
'responsive_id' => '',
'id' => $project->getId(),
'name' => $project->getName(),
'dateMiseEnService' => $dateMiseEnservice ,
'date1' => $this->getRapportPreventiveCaseStr($project,$anneRapport1,$dateMiseEnservice->format('Y')),
'date2' => $this->getRapportPreventiveCaseStr($project,$anneRapport2,$dateMiseEnservice->format('Y')),
'date3' => $this->getRapportPreventiveCaseStr($project,$anneRapport3,$dateMiseEnservice->format('Y')),
'date4' => $this->getRapportPreventiveCaseStr($project,$anneRapport4,$dateMiseEnservice->format('Y'))
];
}
}
return $output;
}
public function extractRapportsSuivPreventive($rapports,$request){
$file= $this->params->get('zips_directory')."/extraire_rapports_preventive.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$dataNow = new \DateTime();
$anneRapport4 = (int)$dataNow->format('Y');
$anneRapport3 = $anneRapport4 - 1;
$anneRapport2 = $anneRapport4 - 2;
$anneRapport1 = $anneRapport4 - 3;
$sheet->setCellValue('A1',"Centrale")
->setCellValue('B1',"Date de mise en service")
->setCellValue('C1',"Rapport ".$anneRapport1)
->setCellValue('D1',"Rapport ".$anneRapport2)
->setCellValue('E1',"Rapport ".$anneRapport3)
->setCellValue('F1',"Rapport ".$anneRapport4)
;
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($rapports as $rapport){
$spreadsheet->getActiveSheet()->setCellValue('A'.$row , $rapport['name']);
$spreadsheet = $this->addStyleToCellDate('B',$row,$rapport['dateMiseEnService'],$spreadsheet);
$arrayStyleRed = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'ff0000'
]
],
];
$arrayStyleGreen = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '00fd00'
]
],
];
$arrayStyleDesabled = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '707070'
]
],
];
// Date 1
if($rapport['date1']['isDisabled']){
$spreadsheet->getActiveSheet()->getStyle('C' . $row)->applyFromArray($arrayStyleDesabled);
}else{
if($rapport['date1']['statusRapport'] == 'OK'){
$spreadsheet->getActiveSheet()->setCellValue('C' . $row, $rapport['date1']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('C' . $row)->applyFromArray($arrayStyleGreen);
}else{
$spreadsheet->getActiveSheet()->setCellValue('C' . $row, $rapport['date1']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('C' . $row)->applyFromArray($arrayStyleRed);
}
}
// Date 2
if($rapport['date2']['isDisabled']){
$spreadsheet->getActiveSheet()->getStyle('D' . $row)->applyFromArray($arrayStyleDesabled);
}else{
if($rapport['date2']['statusRapport'] == 'OK'){
$spreadsheet->getActiveSheet()->setCellValue('D' . $row, $rapport['date2']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('D' . $row)->applyFromArray($arrayStyleGreen);
}else{
$spreadsheet->getActiveSheet()->setCellValue('D' . $row, $rapport['date2']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('D' . $row)->applyFromArray($arrayStyleRed);
}
}
// Date 3
if($rapport['date3']['isDisabled']){
$spreadsheet->getActiveSheet()->getStyle('E' . $row)->applyFromArray($arrayStyleDesabled);
}else{
if($rapport['date3']['statusRapport'] == 'OK'){
$spreadsheet->getActiveSheet()->setCellValue('E' . $row, $rapport['date3']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('E' . $row)->applyFromArray($arrayStyleGreen);
}else{
$spreadsheet->getActiveSheet()->setCellValue('E' . $row, $rapport['date3']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('E' . $row)->applyFromArray($arrayStyleRed);
}
}
// Date 4
if($rapport['date4']['isDisabled']){
$spreadsheet->getActiveSheet()->getStyle('F' . $row)->applyFromArray($arrayStyleDesabled);
}else{
if($rapport['date4']['statusRapport'] == 'OK'){
$spreadsheet->getActiveSheet()->setCellValue('F' . $row, $rapport['date4']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('F' . $row)->applyFromArray($arrayStyleGreen);
}else{
$spreadsheet->getActiveSheet()->setCellValue('F' . $row, $rapport['date4']['statusRapport']);
$spreadsheet->getActiveSheet()->getStyle('F' . $row)->applyFromArray($arrayStyleRed);
}
}
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":F".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function addProjectExiste($token){
$project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
$this->addAllTimeline($project);
$this->etapsService->updateStatusTracker($project); // set status tracker
$this->etapsService->setCodeProject($project);
$etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
if($etap160){
$etap160->setLat($project->getLongi());
$etap160->setLongi($project->getLat());
$this->em->persist($etap160);
$this->em->flush();
}
}
public function addCommentParametrageLoyer($request,$user,$idComment=null)
{
$comment = $request->get('comment');
$token = $request->get('token');
if($comment and $token){
$centrale = $this->em->getRepository(Project::class)->findOneBy(['token'=>$token]);
$parametrageLoyer = $this->em->getRepository(ParametrageLoyer::class)->findOneBy(['centrale'=>$centrale->getId()]);
if($parametrageLoyer && $user){
if($idComment){
$commentEntity = $this->em->getRepository(CommentLoyer::class)->find($idComment);
$commentEntity->setUpdateAt(new \DateTime());
$commentChild = $commentEntity->getComment();
$userChild = $commentEntity->getUser();
$createdAt = $commentEntity->getCreatedAt();
$commentEntityChild = new CommentLoyerChild();
$commentEntityChild->setUser($userChild);
$commentEntityChild->setComment($commentChild);
$commentEntityChild->setCommentLoyer($commentEntity);
$commentEntityChild->setCreatedAt($createdAt);
$this->em->persist($commentEntityChild);
$this->em->flush();
}else{
$commentEntity = new CommentLoyer();
}
$commentEntity->setParametrageLoyer($parametrageLoyer);
$commentEntity->setUser($user);
$commentEntity->setComment($comment);
$this->em->persist($commentEntity);
$this->em->flush();
return [
'commentEntity' => $commentEntity,
'parametrageLoyer' => $parametrageLoyer,
'success' => true
];
}
}
return [
'success' => false
];
}
public function deleteCommentParametrageLoyer($idComment)
{
if($idComment){
$commentEntity = $this->em->getRepository(CommentLoyer::class)->find($idComment);
if($commentEntity) {
$this->em->remove($commentEntity);
$this->em->flush();
}
return [
'success' => true
];
}
return [
'success' => false
];
}
public function displayLoyerPeriode()
{
$loyers = $this->em->getRepository(LoyerFinance::class)->getLoyerFinanceNotDisplay();
$dateNow = new \DateTime();
$dateNow->modify('+1 month');
$user = $this->security->getUser();
$admins = $this->em->getRepository(User::class)->getUserByRoles(['ROLE_SUPER_ADMINISTRATOR']);
if($loyers){
$i = 1;
foreach ($loyers as $loyer){
$string = '<span class="spanNotif" >'.$loyer->getParametrageLoyer()->getCentrale()->getName().' - '.$loyer->getEcheanceStr().' </span> a été créé';
if($loyer->getParametrageLoyerPeriode()->getMethodeReglement() == 'A échoir'){
if($loyer->getDateDebut() <= $dateNow ){
$loyer->setIsDisplay(true);
$this->em->persist($loyer);
foreach ($admins as $admin){
$this->notification->addNotification($admin,$user, $string, null,false,null,false,false,true,$loyer,Notification::FACTURE);
}
}
}
if($loyer->getParametrageLoyerPeriode()->getMethodeReglement() == 'Echu'){
if($loyer->getDateFin() <= $dateNow ){
$loyer->setIsDisplay(true);
$this->em->persist($loyer);
foreach ($admins as $admin){
$this->notification->addNotification($admin,$user, $string, null,false,null,false,false,true,$loyer,Notification::FACTURE);
}
}
}
if(($i % 1000) == 0 or (count($loyers) == $i)){
$this->em->flush();
}
$i++;
}
}
}
public function addCommentFinanceLoyer($request,$user,$idComment=null)
{
$comment = $request->get('comment');
$token = $request->get('token');
if($comment and $token){
$loyerFinance = $this->em->getRepository(LoyerFinance::class)->findOneBy(['token'=>$token]);
if($loyerFinance && $user){
if($idComment){
$commentEntity = $this->em->getRepository(CommentFinanceLoyer::class)->find($idComment);
$commentEntity->setUpdateAt(new \DateTime());
$commentChild = $commentEntity->getComment();
$userChild = $commentEntity->getUser();
$createdAt = $commentEntity->getCreatedAt();
$commentEntityChild = new CommentFinanceLoyerChild();
$commentEntityChild->setUser($userChild);
$commentEntityChild->setComment($commentChild);
$commentEntityChild->setCommentFinanceLoyer($commentEntity);
$commentEntityChild->setCreatedAt($createdAt);
$this->em->persist($commentEntityChild);
$this->em->flush();
}else{
$commentEntity = new CommentFinanceLoyer();
}
$commentEntity->setLoyerFinance($loyerFinance);
$commentEntity->setUser($user);
$commentEntity->setComment($comment);
$this->em->persist($commentEntity);
$this->em->flush();
return [
'commentEntity' => $commentEntity,
'loyerFinance' => $loyerFinance,
'success' => true
];
}
}
return [
'success' => false
];
}
public function deleteCommentFinanceLoyer($idComment)
{
if($idComment){
$commentEntity = $this->em->getRepository(CommentFinanceLoyer::class)->find($idComment);
if($commentEntity) {
$this->em->remove($commentEntity);
$this->em->flush();
}
return [
'success' => true
];
}
return [
'success' => false
];
}
public function getProjectsForCarte($request){
$search = $request->get('search');
$status = $request->get('statusProject');
$status2 = $request->get('status2Project');
$statusAdministratifProject = $request->get('statusAdministratifProject');
$statusTrackerProject = $request->get('statusTrackerProject');
$typologieProject = $request->get('typologieProject');
$spvProject = $request->get('spvProject');
$devProject = $request->get('devProject');
$entrepriseProject = $request->get('entrepriseProject');
$responsableProject = $request->get('responsableProject');
$responsableFoncierProject = $request->get('responsableFoncierProject');
$responsableDevProject = $request->get('responsableDevProject');
$constructeurProject = $request->get('constructeurProject');
$constructeurEpcProject = $request->get('constructeurEpcProject');
$constructeurInstallateurProject = $request->get('constructeurInstallateurProject');
$constructeurCharpentierProject = $request->get('constructeurCharpentierProject');
$constructeurNotaireProject = $request->get('constructeurNotaireProject');
$intervenantProject = $request->get('intervenantProject');
$stadeConstruction = $request->get('stadeConstruction');
$statusUrbanisme = $request->get('statusUrbanisme');
$statusFoncier1 = $request->get('statusFoncier1');
$statusFoncier2 = $request->get('statusFoncier2');
$statusFoncier3 = $request->get('statusFoncier3');
$achatLocation = $request->get('achatLocation');
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$filters = [
'query' => $search,
'devProject' => $devProject,
'entrepriseProject' => $entrepriseProject,
'spvsTab' => $spvsTab,
'responsableProject' => $responsableProject,
'responsableFoncierProject' => $responsableFoncierProject,
'responsableDevProject' => $responsableDevProject,
'constructeurProject' => $constructeurProject,
'constructeurEpcProject' => $constructeurEpcProject,
'constructeurInstallateurProject' => $constructeurInstallateurProject,
'constructeurCharpentierProject' => $constructeurCharpentierProject,
'constructeurNotaireProject' => $constructeurNotaireProject,
'user' => $user,
'statusAdministratifProject' => $statusAdministratifProject,
'statusTrackerProject' => $statusTrackerProject,
'intervenantProject' => $intervenantProject,
'stadeConstruction' => $stadeConstruction,
'statusUrbanisme' => $statusUrbanisme,
'statusFoncier1' => $statusFoncier1,
'statusFoncier2' => $statusFoncier2,
'statusFoncier3' => $statusFoncier3,
'achatLocation' => $achatLocation,
'typologieProject' => $typologieProject
];
$projects= $this->em->getRepository(\App\Entity\Project::class)->searchForCarte(false,$status,$status2,$spvProject,$filters);
$output = array();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
$cats = $this->em->getRepository(EtapsCategory::class)->findAll();
foreach ($projects as $project) {
$outputDetail = [];
if($project[0]->getLat()){
$outputDetail['lat'] = str_replace([','], ".", str_replace([' '], "", $project[0]->getLongi())) ;
}else{
$outputDetail['lat'] = isset($project['lat'])? $project['lat'] : null ;
}
if($project[0]->getLongi()){
$outputDetail['longi'] = str_replace([','], ".", str_replace([' '], "", $project[0]->getLat())) ;
}else{
$outputDetail['longi'] = isset($project['longi'])? $project['longi'] : null ;
}
// $outputDetail['adresse'] = $project[0]->getAdresse();
// $outputDetail['codePostale'] = $project[0]->getCodePostal();
// $outputDetail['city'] = $project[0]->getCity();
$outputDetail['spv'] = $project[0]->getSpv()?$project[0]->getSpv()->getName():'';
// $outputDetail['tokenProject'] = $project[0]->getToken();
$outputDetail['name'] = $project[0]->getName();
$outputDetail['lien'] = $this->router->generate('admin_project_view_recap',['token'=>$project[0]->getToken()]) ;
// $outputDetail['image'] = $project[0]->getImageProject() ? $baseurl.'/uploads/'.$project[0]->getImageProject()->getPath(): 0;
$outputDetail['firstnameProprietaire'] = isset($project['firstnameProprietaire'])? $project['firstnameProprietaire'] : '' ;
$outputDetail['lastnameProprietaire'] = isset($project['lastnameProprietaire'])? $project['lastnameProprietaire'] : '' ;
$outputDetail['phoneProprietaire'] = isset($project['phoneProprietaire'])? $project['phoneProprietaire'] : '' ;
if($project[0]->getStatusAdministratif() == Project::STATUS_CUSTOM_DEVELOPPEMENT){
$outputDetail['status'] = Project::STATUS_CUSTOM_DEVELOPPEMENT ;
}elseif ($project[0]->getStatusAdministratif() == Project::STATUS_CUSTOM_CONSTRUCTION){
$outputDetail['status'] = Project::STATUS_CUSTOM_CONSTRUCTION ;
}elseif ($project[0]->getStatusAdministratif() == Project::STATUS_CUSTOM_EXPLOITATION){
$outputDetail['status'] = Project::STATUS_CUSTOM_EXPLOITATION ;
}else{
$outputDetail['status'] = Project::STATUS_CUSTOM_EN_ATTENT ;
}
$output[] = $outputDetail;
}
return $output;
}
public function getDashboardAlert($user)
{
$response = [];
$filters = ['user' => $user];
$alerts = $this->em->getRepository(\App\Entity\Alert::class)->search(false,$filters, 0, 4, true,'id', 'desc');
$now = new \DateTime();
foreach ($alerts as $alert) {
if($alert->getTypeAlert() == Alert::ALERT_BAIL){
$typeAlert = 'Promesse de bail' ;
$typeAlertId = Alert::ALERT_BAIL ;
}elseif ($alert->getTypeAlert() == Alert::ALERT_PC_CONSUEL){
$typeAlert = 'PC/DP' ;
$typeAlertId = Alert::ALERT_PC_CONSUEL ;
}elseif ($alert->getTypeAlert() == Alert::ALERT_T0){
$typeAlert = 'Date de T0 - Date limite d’achèvement' ;
$typeAlertId = Alert::ALERT_T0 ;
}elseif ($alert->getTypeAlert() == Alert::ALERT_Etap1And2){
$typeAlert = 'Avancement étape 1 et étape 2 timeline urbanisme' ;
$typeAlertId = Alert::ALERT_Etap1And2 ;
}else{
$typeAlert = '';
$typeAlertId = null ;
}
$dateLimit = $alert->getDateLimit();
$alertClass = 'alert-primary';
if (is_object($dateLimit)) {
$diff = $now->diff($dateLimit);
$isPast = $dateLimit < $now;
if ($isPast) {
$alertClass = 'alert-danger';
} elseif ($diff->days <= 15) {
$alertClass = 'alert-warning';
}
}
array_push($response, [
'responsive_id' => '',
'id' => $alert->getId(),
'token' => $alert->getToken(),
'projectEntity' => $alert->getProject(),
'project' => $alert->getProject()->getName(),
'spv' => $alert->getProject()->getSpv()?$alert->getProject()->getSpv()->getName():'',
'status' => $alert->getProject()->getStatusAdministratifNum() .'('.$alert->getProject()->getStatusTrackerStr().')',
'typeAlert' => $typeAlert,
'typeAlertId' => $typeAlertId,
'dateLimit' => $alert->getDateLimit() ? $alert->getDateLimit()->format('d/m/Y') : '',
'createdAt' => $alert->getCreatedAt()->format('H:m - d/m/Y'),
'delaiRestant' => $this->delaiRestantDateExpirationPromesseBail($alert),
'alertClass' => $alertClass
]);
}
return $response;
}
public function addPhotoInQuestion($array){
if($array){
foreach ($array as $item){
$tokenQuestion = $item['tokenQustion'];
$tokenFile = $item['tokenFile'];
if($tokenFile && $tokenQuestion){
$question = $this->em->getRepository(VisiteTerrainV2Question::class)->findOneBy(['token' => $tokenQuestion]);
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
if($question){
$question->addFilePhotosMultiple($docUpload);
$this->em->persist($question);
}
}
}
$this->em->flush();
}
}
public function getEtapByNumAndProject(int $num, Project $project)
{
$etapEntity = 'App\\Entity\\Etap' . $num;
if($project){
return $this->em->getRepository($etapEntity)->findOneBy(['project' => $project->getId()]);
}else{
return null;
}
}
public function addEditInfoProject($entity,$className){
if($className == 'ActualiteProject'){
$entityProject = new ActualiteProjectChild();
$entityProject->setActualiteProject($entity);
}elseif ($className == 'ContextProject'){
$entityProject = new ContextProjectChild();
$entityProject->setContextProject($entity);
}elseif ($className == 'EnvironnementProject'){
$entityProject = new EnvironnementProjectChild();
$entityProject->setEnvironnementProject($entity);
}
$entityProject->setComment($entity->getComment());
$entityProject->setCreatedAt($entity->getCreatedAt());
$entityProject->setUser($entity->getUser());
$this->em->persist($entityProject);
$this->em->flush();
}
public function importProjectsAltaria($filename)
{
$file = $this->params->get('uploads_directory')."/".$filename;
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f,0,";")) !== false) {
if($flag) {
$header = [];
foreach ($line as $key1 => $cell) {
$header[] = trim(preg_replace('/^\xEF\xBB\xBF/', '', $cell));
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]]= trim($cell);
}
$i++ ;
}
fclose($f);
$entreprise = $this->em->getRepository(Entreprise::class)->findOneBy(['isAlteria'=>true]);
$admins = $this->em->getRepository(User::class)->getUserByRoles(['ROLE_SUPER_ADMINISTRATOR']);
$admin = $admins[0];
foreach ($array as $item){
if(isset($item['Code du projet']) and $item['Code du projet']){
$project = $this->em->getRepository(Project::class)->findOneBy(['codeProject'=>$item['Code du projet']]);
if(!$project){
$project = new Project();
}
// add or update timeline
$etap0 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_0]); $etapEntity0 = $this->setOrAddEntityEtap($project,$etap0,Etaps::STATUS_EN_COURS,'App\Entity\Etap0');
$etap1 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_1]); $etapEntity1 = $this->setOrAddEntityEtap($project,$etap1,Etaps::STATUS_EN_COURS,'App\Entity\Etap1');
$etap2 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_2]); $etapEntity2 = $this->setOrAddEntityEtap($project,$etap2,Etaps::STATUS_EN_COURS,'App\Entity\Etap2');
$etap3 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_3]); $etapEntity3 = $this->setOrAddEntityEtap($project,$etap3,Etaps::STATUS_EN_COURS,'App\Entity\Etap3');
$etap4 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_4]); $etapEntity4 = $this->setOrAddEntityEtap($project,$etap4,Etaps::STATUS_EN_COURS,'App\Entity\Etap4');
$etap5 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_5]); $etapEntity5 = $this->setOrAddEntityEtap($project,$etap5,Etaps::STATUS_EN_COURS,'App\Entity\Etap5');
$etap6 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_6]); $etapEntity6 = $this->setOrAddEntityEtap($project,$etap6,Etaps::STATUS_EN_COURS,'App\Entity\Etap6');
$etap601 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_601]); $etapEntity601 = $this->setOrAddEntityEtap($project,$etap601,Etaps::STATUS_EN_COURS,'App\Entity\Etap601');
$etap602 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_602]); $etapEntity602 = $this->setOrAddEntityEtap($project,$etap602,Etaps::STATUS_EN_COURS,'App\Entity\Etap602');
$etap7 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_7]); $etapEntity7 = $this->setOrAddEntityEtap($project,$etap7,Etaps::STATUS_EN_COURS,'App\Entity\Etap7');
$etap71 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_71]); $etapEntity71 = $this->setOrAddEntityEtap($project,$etap71,Etaps::STATUS_EN_COURS,'App\Entity\Etap71');
$etap8 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_8]); $etapEntity8 = $this->setOrAddEntityEtap($project,$etap8,Etaps::STATUS_EN_COURS,'App\Entity\Etap8');
$etap80 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_80]); $etapEntity80 = $this->setOrAddEntityEtap($project,$etap80,Etaps::STATUS_EN_COURS,'App\Entity\Etap80');
$etap9 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_9]); $etapEntity9 = $this->setOrAddEntityEtap($project,$etap9,Etaps::STATUS_EN_COURS,'App\Entity\Etap9');
$etap10 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_10]); $etapEntity10 = $this->setOrAddEntityEtap($project,$etap10,Etaps::STATUS_EN_COURS,'App\Entity\Etap10');
$etap11 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_11]); $etapEntity11 = $this->setOrAddEntityEtap($project,$etap11,Etaps::STATUS_EN_COURS,'App\Entity\Etap11');
$etap12 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_12]); $etapEntity12 = $this->setOrAddEntityEtap($project,$etap12,Etaps::STATUS_EN_COURS,'App\Entity\Etap12');
$etap121 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_121]); $etapEntity121 = $this->setOrAddEntityEtap($project,$etap121,Etaps::STATUS_EN_COURS,'App\Entity\Etap121');
$etap13 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_13]); $etapEntity13 = $this->setOrAddEntityEtap($project,$etap13,Etaps::STATUS_EN_COURS,'App\Entity\Etap13');
$etap14 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_14]); $etapEntity14 = $this->setOrAddEntityEtap($project,$etap14,Etaps::STATUS_EN_COURS,'App\Entity\Etap14');
$etap15 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_15]); $etapEntity15 = $this->setOrAddEntityEtap($project,$etap15,Etaps::STATUS_EN_COURS,'App\Entity\Etap15');
$etap159 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_159]); $etapEntity159 = $this->setOrAddEntityEtap($project,$etap159,Etaps::STATUS_EN_COURS,'App\Entity\Etap159');
$etap23 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_23]); $etapEntity23 = $this->setOrAddEntityEtap($project,$etap23,Etaps::STATUS_EN_COURS,'App\Entity\Etap23');
$etap160 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_160]); $etapEntity160 = $this->setOrAddEntityEtap($project,$etap160,Etaps::STATUS_EN_COURS,'App\Entity\Etap160');
$etap161 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_161]); $etapEntity161 = $this->setOrAddEntityEtap($project,$etap161,Etaps::STATUS_EN_COURS,'App\Entity\Etap161');
$etap16 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_16]); $etapEntity16 = $this->setOrAddEntityEtap($project,$etap16,Etaps::STATUS_EN_COURS,'App\Entity\Etap16');
$etap17 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_17]); $etapEntity17 = $this->setOrAddEntityEtap($project,$etap17,Etaps::STATUS_EN_COURS,'App\Entity\Etap17');
$etap171 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_171]); $etapEntity171 = $this->setOrAddEntityEtap($project,$etap171,Etaps::STATUS_EN_COURS,'App\Entity\Etap171');
$etap172 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_172]); $etapEntity172 = $this->setOrAddEntityEtap($project,$etap172,Etaps::STATUS_EN_COURS,'App\Entity\Etap172');
$etap173 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_173]); $etapEntity173 = $this->setOrAddEntityEtap($project,$etap173,Etaps::STATUS_EN_COURS,'App\Entity\Etap173');
$etap174 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_174]); $etapEntity174 = $this->setOrAddEntityEtap($project,$etap174,Etaps::STATUS_EN_COURS,'App\Entity\Etap174');
$etap175 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_175]); $etapEntity175 = $this->setOrAddEntityEtap($project,$etap175,Etaps::STATUS_EN_COURS,'App\Entity\Etap175');
$etap18 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_18]); $etapEntity18 = $this->setOrAddEntityEtap($project,$etap18,Etaps::STATUS_EN_COURS,'App\Entity\Etap18');
$etap19 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_19]); $etapEntity19 = $this->setOrAddEntityEtap($project,$etap19,Etaps::STATUS_EN_COURS,'App\Entity\Etap19');
$etap20 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_20]); $etapEntity20 = $this->setOrAddEntityEtap($project,$etap20,Etaps::STATUS_EN_COURS,'App\Entity\Etap20');
$etap201 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_201]); $etapEntity201 = $this->setOrAddEntityEtap($project,$etap201,Etaps::STATUS_EN_COURS,'App\Entity\Etap201');
$etap21 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_21]); $etapEntity21 = $this->setOrAddEntityEtap($project,$etap21,Etaps::STATUS_EN_COURS,'App\Entity\Etap21');
$etap22 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_22]); $etapEntity22 = $this->setOrAddEntityEtap($project,$etap22,Etaps::STATUS_EN_COURS,'App\Entity\Etap22');
$etap24 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_24]); $etapEntity24 = $this->setOrAddEntityEtap($project,$etap24,Etaps::STATUS_EN_COURS,'App\Entity\Etap24');
$etap25 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_25]); $etapEntity25 = $this->setOrAddEntityEtap($project,$etap25,Etaps::STATUS_EN_COURS,'App\Entity\Etap25');
$etap26 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_26]); $etapEntity26 = $this->setOrAddEntityEtap($project,$etap26,Etaps::STATUS_EN_COURS,'App\Entity\Etap26');
$project->setCodeProject($item['Code du projet']);
if(isset($item['Nom du projet']) and $item['Nom du projet']){$project->setName($item['Nom du projet']);}
if(isset($item['Date de sourcing']) and $item['Date de sourcing']){
$b = explode(' au ',$item['Date de sourcing']);
$dateSourcing = new \Datetime($b[0]);
$project->setDateSourcing($dateSourcing);
}
if(isset($item['Sourcing']) and $item['Sourcing']){
$sourcing = $this->em->getRepository(Sourcing::class)->findOneBy(['name'=>$item['Sourcing']]);
if(!$sourcing){
$sourcing = new Sourcing();
$sourcing->setName($item['Sourcing']);
$this->em->persist($sourcing);
}
$project->setSourcing($sourcing);
}
if(isset($item['Ville']) and $item['Ville']){$project->setCity($item['Ville']);}
if(isset($item['Productible (P50)']) and $item['Productible (P50)']){$project->setProductible($item['Productible (P50)']);}
if(isset($item['Typologie du projet']) and $item['Typologie du projet']){}
if(isset($item['Famille du projet']) and $item['Famille du projet']){
}
if(isset($item['Sous-famille du projet']) and $item['Sous-famille du projet']){
$tabSousFamille = explode(',',$item['Sous-famille du projet']);
if($tabSousFamille){
foreach ($tabSousFamille as $itemSousFamille){
$sousFamille = $this->em->getRepository(SousFamilleProject::class)->findOneBy(['name'=>$itemSousFamille]);
if(!$sousFamille){
$sousFamille = new SousFamilleProject();
$sousFamille->setName($itemSousFamille);
$this->em->persist($sousFamille);
}
$project->addSousFamilleProject($sousFamille);
}
}
}
if(isset($item['Surface disponible (EN HA)']) and $item['Surface disponible (EN HA)']){$project->setSurfaceDisponible(floatval(str_replace(',','.',$item['Surface disponible (EN HA)'])));}
if(isset($item['Surface exploitable (EN HA)']) and $item['Surface exploitable (EN HA)']){$project->setSurfaceExploitable(floatval(str_replace(',','.',$item['Surface exploitable (EN HA)'])));}
if(isset($item['Capacité installée (kWc)']) and $item['Capacité installée (kWc)']){$project->setCapacite(floatval(str_replace(',','.',$item['Capacité installée (kWc)'])));}
if(isset($item['Actualité']) and $item['Actualité']){
$actualite = $this->em->getRepository(ActualiteProject::class)->findOneBy(['project'=>$project->getId()]);
if(!$actualite){
$actualite = new ActualiteProject();
}
$actualite->setComment($item['Actualité']);
$actualite->setCreatedAt(new \DateTime());
$actualite->setUser($admin);
$actualite->setProject($project);
$this->em->persist($actualite);
}
if(isset($item['Situation foncière']) and $item['Situation foncière']){
$etapEntity6->setSituationFonciere($item['Situation foncière']);
$this->em->persist($etapEntity6);
}
if(isset($item['Type de développement (ou boutons Achat / Location)']) and $item['Type de développement (ou boutons Achat / Location)']){
if($item['Type de développement (ou boutons Achat / Location)'] == 'LOCATION'){
$project->setAchatLocation(Project::LOCATION);
}elseif($item['Type de développement (ou boutons Achat / Location)'] == 'ACHAT'){
$project->setAchatLocation(Project::ACHAT);
}
}
if(isset($item['Zonage PLU']) and $item['Zonage PLU']){
$zonagePlu = $this->em->getRepository(ZonagePlu::class)->findOneBy(['name'=>$item['Zonage PLU']]);
if(!$zonagePlu){
$zonagePlu = new ZonagePlu();
$zonagePlu->setName($item['Zonage PLU']);
$this->em->persist($zonagePlu);
}
$project->addZonagePlu($zonagePlu);
}
if(isset($item['Numéro de parcelle']) and $item['Numéro de parcelle']){$project->setNumParcelle($item['Numéro de parcelle']);}
if(isset($item['Nature du raccordement']) and $item['Nature du raccordement']){
$etapEntity80->setNatureRaccordement($item['Nature du raccordement']);
$this->em->persist($etapEntity80);
}
if(isset($item['Distance Poste Source']) and $item['Distance Poste Source']){
$etapEntity80->setDistancePdl($item['Distance Poste Source']);
$this->em->persist($etapEntity80);
}
if(isset($item['date de fin d’exclusivité loi']) and $item['date de fin d’exclusivité loi']){
$b = explode(' au ',$item['date de fin d’exclusivité loi']);
$dateFinExclusiviteLoi = new \Datetime($b[0]);
$etapEntity5->setDateFinExclusiviteLoi($dateFinExclusiviteLoi);
$this->em->persist($etapEntity5);
}
if(isset($item['Date PDB']) and $item['Date PDB']){
$b = explode(' au ',$item['Date PDB']);
$datePdb = new \Datetime($b[0]);
$project->setDateExpirationPromesseBail($datePdb);
$etapEntity5->setDateExpirationPromesseBail($datePdb);
$this->em->persist($etapEntity5);
}
if(isset($item['Validité PDB']) and $item['Validité PDB']){
}
if(isset($item['Durée du bail en année']) and $item['Durée du bail en année']){
$etapEntity5->setDureeBail($item['Durée du bail en année']);
$this->em->persist($etapEntity5);
}
if(isset($item['Date de dépôt PC']) and $item['Date de dépôt PC']){
$b = explode(' au ',$item['Date de dépôt PC']);
$dateDepotPc = new \Datetime($b[0]);
$project->setDateDepotPc($dateDepotPc);
$etapEntity1->setDateDepotPc($dateDepotPc);
$this->em->persist($etapEntity1);
}
if(isset($item['Date PC/DP purgé']) and $item['Date PC/DP purgé']){
$b = explode(' au ',$item['Date PC/DP purgé']);
$datePcDpPurge = new \Datetime($b[0]);
$etapEntity2->setDatePcDpPurge($datePcDpPurge);
$this->em->persist($etapEntity2);
}
if(isset($item['Date T0']) and $item['Date T0']){
$b = explode(' au ',$item['Date T0']);
$dateT0 = new \Datetime($b[0]);
$etapEntity9->setDateT0($dateT0);
$this->em->persist($etapEntity9);
}
if(isset($item['Date de signature du bail']) and $item['Date de signature du bail']){
$b = explode(' au ',$item['Date de signature du bail']);
$dateSignatureBail = new \Datetime($b[0]);
$etapEntity7->setDateSignatureBail($dateSignatureBail);
$this->em->persist($etapEntity7);
}
if(isset($item['Durée d’exploitation']) and $item['Durée d’exploitation']){$project->setDureeExploitation($item['Durée d’exploitation']);}
if(isset($item['Loyer en €/an']) and $item['Loyer en €/an']){
$project->setLoyerVise(floatval(str_replace(',','.',$item['Loyer en €/an'])));
$etapEntity5->setLoyerConfirme(floatval(str_replace(',','.',$item['Loyer en €/an'])));
$this->em->persist($etapEntity5);
}
if(isset($item['Rémunération exploitant agricole']) and $item['Rémunération exploitant agricole']){
$project->setRemunerationExploitantAgricole($item['Rémunération exploitant agricole']);
}
if(isset($item['Soulte']) and $item['Soulte']){
$project->setSoulteVise(floatval(str_replace(',','.',$item['Soulte'])));
$etapEntity5->setSoulteConfirme(floatval(str_replace(',','.',$item['Soulte'])));
$this->em->persist($etapEntity5);
}
if(isset($item['Honoraire apporteur (k€/MWc)']) and $item['Honoraire apporteur (k€/MWc)']){
$etapEntity5->setHonoraireApporteur($item['Soulte']);
$this->em->persist($etapEntity5);
}
if(isset($item['Prix d’achat foncier (k€/ha)']) and $item['Prix d’achat foncier (k€/ha)']){
$project->setPrixAchatFoncierKHa($item['Prix d’achat foncier (k€/ha)']);
}
if(isset($item['Prix d’achat foncier (k€/MWc)']) and $item['Prix d’achat foncier (k€/MWc)']){
$project->setPrixAchatFoncierKMWc($item['Prix d’achat foncier (k€/MWc)']);
}
if(isset($item['Indemnité transitoire (€/an)']) and $item['Indemnité transitoire (€/an)']){
$project->setIndemiteTransitoire($item['Indemnité transitoire (€/an)']);
}
if((isset($item['Type / Sous-type de valorisation']) and $item['Type / Sous-type de valorisation'])
or (isset($item['Prix de vente électricité']) and $item['Prix de vente électricité'])
or (isset($item['Durée du contrat (en année)']) and $item['Durée du contrat (en année)'])
or (isset($item['Taux d’indexation du tarif']) and $item['Taux d’indexation du tarif'])
){
if(count($etapEntity24->getEtap24Champs()) > 0){
foreach ($etapEntity24->getEtap24Champs() as $item2){
$etap24Champs = $item2;
}
}else{
$etap24Champs = new Etap24Champs();
$etap24Champs->setEtap24($etapEntity24);
$etap24Champs->setEtap25($etapEntity25);
$etap24Champs->setEtap26($etapEntity26);
}
if($item['Type / Sous-type de valorisation']){
if(in_array($item['Type / Sous-type de valorisation'],['CRE Bat','CRE Sol','AOS'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_ao_cre]);
$etap24Champs->setTypeValorisation($typeValorisation);
$etap24Champs->setSousChoixValorisation($item['Type / Sous-type de valorisation']);
}elseif (in_array($item['Type / Sous-type de valorisation'],['S21','S24','S23'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_guichet_ouvert]);
$etap24Champs->setTypeValorisation($typeValorisation);
if($item['Type / Sous-type de valorisation'] == 'S21'){
$etap24Champs->setSousChoixValorisation('OA - S21');
}
if($item['Type / Sous-type de valorisation'] == 'S24'){
$etap24Champs->setSousChoixValorisation('OA - S24');
}
if($item['Type / Sous-type de valorisation'] == 'S23'){
$etap24Champs->setSousChoixValorisation('OA - S23');
}
}
elseif (in_array($item['Type / Sous-type de valorisation'],['ACC','CRE ou ACC'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_acc]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
elseif (in_array($item['Type / Sous-type de valorisation'],['PPA ou FER'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_ppa]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
elseif (in_array($item['Type / Sous-type de valorisation'],['ACI'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_aci]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
elseif (in_array($item['Type / Sous-type de valorisation'],['U-PPA ou spot'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_spot]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
}
if($item['Durée du contrat (en année)']){
$etap24Champs->setDureeContrat((int)$item['Durée du contrat (en année)']);
}
if($item['Prix de vente électricité']){
$etap24Champs->setPrixVenteElectricite($item['Prix de vente électricité']);
}
$etap24Champs->setTauxIndexationTarif($item['Taux d’indexation du tarif'] ? str_replace('%/an','',$item['Taux d’indexation du tarif']): '');
$this->em->persist($etap24Champs);
}
if(isset($item['TRI']) and $item['TRI']){$project->setTri($item['TRI']);}
if(isset($item['TRI avec Prime']) and $item['TRI avec Prime']){$project->setTriPrime($item['TRI avec Prime']);}
if(isset($item['Rendement EBE/CAPEX']) and $item['Rendement EBE/CAPEX']){$project->setRendementEbeCapex($item['Rendement EBE/CAPEX']);}
if(isset($item['Rendement EBE/CAPEX PPA 70€']) and $item['Rendement EBE/CAPEX PPA 70€']){$project->setRendementEbeCapexPPA($item['Rendement EBE/CAPEX PPA 70€']);}
if(isset($item['Ratio CAPEX/Puissance']) and $item['Ratio CAPEX/Puissance']){$project->setRatioCapexPuissance($item['Ratio CAPEX/Puissance']);}
if(isset($item['Date d’abandon']) and $item['Date d’abandon']){
$b = explode(' au ',$item['Date d’abandon']);
$dateAbandon = new \Datetime($b[0]);
$project->setDateAbandon($dateAbandon);
}
if(isset($item['SPV']) and $item['SPV']){
$spv = $this->em->getRepository(Spv::class)->findOneBy(['name'=>$item['SPV']]);
if($spv){
$project->setSpv($spv);
}
}
if($entreprise){
$project->setEntreprise($entreprise);
}
$project->setStatus(Project::STATUS_EN_COURS);
$project->setIsNewConstruction(true);
$project->setIsEnabled(true);
$project->setIsImportCode(true);
$project->setUserCreated($admin);
$project->setCreatedAt(new \DateTime());
$this->em->persist($project);
$this->em->flush();
$this->etapsService->updateStatusTracker($project); // set status tracker
}
if(isset($item['Code Projet']) and $item['Code Projet']){
$project = $this->em->getRepository(Project::class)->findOneBy(['codeProject'=>$item['Code Projet']]);
if(!$project){
$project = new Project();
}
// add or update timeline
$etap0 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_0]); $etapEntity0 = $this->setOrAddEntityEtap($project,$etap0,Etaps::STATUS_EN_COURS,'App\Entity\Etap0');
$etap1 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_1]); $etapEntity1 = $this->setOrAddEntityEtap($project,$etap1,Etaps::STATUS_EN_COURS,'App\Entity\Etap1');
$etap2 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_2]); $etapEntity2 = $this->setOrAddEntityEtap($project,$etap2,Etaps::STATUS_EN_COURS,'App\Entity\Etap2');
$etap3 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_3]); $etapEntity3 = $this->setOrAddEntityEtap($project,$etap3,Etaps::STATUS_EN_COURS,'App\Entity\Etap3');
$etap4 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_4]); $etapEntity4 = $this->setOrAddEntityEtap($project,$etap4,Etaps::STATUS_EN_COURS,'App\Entity\Etap4');
$etap5 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_5]); $etapEntity5 = $this->setOrAddEntityEtap($project,$etap5,Etaps::STATUS_EN_COURS,'App\Entity\Etap5');
$etap6 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_6]); $etapEntity6 = $this->setOrAddEntityEtap($project,$etap6,Etaps::STATUS_EN_COURS,'App\Entity\Etap6');
$etap601 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_601]); $etapEntity601 = $this->setOrAddEntityEtap($project,$etap601,Etaps::STATUS_EN_COURS,'App\Entity\Etap601');
$etap602 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_602]); $etapEntity602 = $this->setOrAddEntityEtap($project,$etap602,Etaps::STATUS_EN_COURS,'App\Entity\Etap602');
$etap7 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_7]); $etapEntity7 = $this->setOrAddEntityEtap($project,$etap7,Etaps::STATUS_EN_COURS,'App\Entity\Etap7');
$etap71 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_71]); $etapEntity71 = $this->setOrAddEntityEtap($project,$etap71,Etaps::STATUS_EN_COURS,'App\Entity\Etap71');
$etap8 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_8]); $etapEntity8 = $this->setOrAddEntityEtap($project,$etap8,Etaps::STATUS_EN_COURS,'App\Entity\Etap8');
$etap80 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_80]); $etapEntity80 = $this->setOrAddEntityEtap($project,$etap80,Etaps::STATUS_EN_COURS,'App\Entity\Etap80');
$etap9 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_9]); $etapEntity9 = $this->setOrAddEntityEtap($project,$etap9,Etaps::STATUS_EN_COURS,'App\Entity\Etap9');
$etap10 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_10]); $etapEntity10 = $this->setOrAddEntityEtap($project,$etap10,Etaps::STATUS_EN_COURS,'App\Entity\Etap10');
$etap11 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_11]); $etapEntity11 = $this->setOrAddEntityEtap($project,$etap11,Etaps::STATUS_EN_COURS,'App\Entity\Etap11');
$etap12 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_12]); $etapEntity12 = $this->setOrAddEntityEtap($project,$etap12,Etaps::STATUS_EN_COURS,'App\Entity\Etap12');
$etap121 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_121]); $etapEntity121 = $this->setOrAddEntityEtap($project,$etap121,Etaps::STATUS_EN_COURS,'App\Entity\Etap121');
$etap13 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_13]); $etapEntity13 = $this->setOrAddEntityEtap($project,$etap13,Etaps::STATUS_EN_COURS,'App\Entity\Etap13');
$etap14 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_14]); $etapEntity14 = $this->setOrAddEntityEtap($project,$etap14,Etaps::STATUS_EN_COURS,'App\Entity\Etap14');
$etap15 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_15]); $etapEntity15 = $this->setOrAddEntityEtap($project,$etap15,Etaps::STATUS_EN_COURS,'App\Entity\Etap15');
$etap159 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_159]); $etapEntity159 = $this->setOrAddEntityEtap($project,$etap159,Etaps::STATUS_EN_COURS,'App\Entity\Etap159');
$etap23 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_23]); $etapEntity23 = $this->setOrAddEntityEtap($project,$etap23,Etaps::STATUS_EN_COURS,'App\Entity\Etap23');
$etap160 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_160]); $etapEntity160 = $this->setOrAddEntityEtap($project,$etap160,Etaps::STATUS_EN_COURS,'App\Entity\Etap160');
$etap161 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_161]); $etapEntity161 = $this->setOrAddEntityEtap($project,$etap161,Etaps::STATUS_EN_COURS,'App\Entity\Etap161');
$etap16 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_16]); $etapEntity16 = $this->setOrAddEntityEtap($project,$etap16,Etaps::STATUS_EN_COURS,'App\Entity\Etap16');
$etap17 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_17]); $etapEntity17 = $this->setOrAddEntityEtap($project,$etap17,Etaps::STATUS_EN_COURS,'App\Entity\Etap17');
$etap171 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_171]); $etapEntity171 = $this->setOrAddEntityEtap($project,$etap171,Etaps::STATUS_EN_COURS,'App\Entity\Etap171');
$etap172 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_172]); $etapEntity172 = $this->setOrAddEntityEtap($project,$etap172,Etaps::STATUS_EN_COURS,'App\Entity\Etap172');
$etap173 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_173]); $etapEntity173 = $this->setOrAddEntityEtap($project,$etap173,Etaps::STATUS_EN_COURS,'App\Entity\Etap173');
$etap174 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_174]); $etapEntity174 = $this->setOrAddEntityEtap($project,$etap174,Etaps::STATUS_EN_COURS,'App\Entity\Etap174');
$etap175 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_175]); $etapEntity175 = $this->setOrAddEntityEtap($project,$etap175,Etaps::STATUS_EN_COURS,'App\Entity\Etap175');
$etap18 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_18]); $etapEntity18 = $this->setOrAddEntityEtap($project,$etap18,Etaps::STATUS_EN_COURS,'App\Entity\Etap18');
$etap19 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_19]); $etapEntity19 = $this->setOrAddEntityEtap($project,$etap19,Etaps::STATUS_EN_COURS,'App\Entity\Etap19');
$etap20 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_20]); $etapEntity20 = $this->setOrAddEntityEtap($project,$etap20,Etaps::STATUS_EN_COURS,'App\Entity\Etap20');
$etap201 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_201]); $etapEntity201 = $this->setOrAddEntityEtap($project,$etap201,Etaps::STATUS_EN_COURS,'App\Entity\Etap201');
$etap21 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_21]); $etapEntity21 = $this->setOrAddEntityEtap($project,$etap21,Etaps::STATUS_EN_COURS,'App\Entity\Etap21');
$etap22 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_22]); $etapEntity22 = $this->setOrAddEntityEtap($project,$etap22,Etaps::STATUS_EN_COURS,'App\Entity\Etap22');
$etap24 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_24]); $etapEntity24 = $this->setOrAddEntityEtap($project,$etap24,Etaps::STATUS_EN_COURS,'App\Entity\Etap24');
$etap25 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_25]); $etapEntity25 = $this->setOrAddEntityEtap($project,$etap25,Etaps::STATUS_EN_COURS,'App\Entity\Etap25');
$etap26 = $this->em->getRepository(Etaps::class)->findOneBy(['num' => Etaps::ETAP_26]); $etapEntity26 = $this->setOrAddEntityEtap($project,$etap26,Etaps::STATUS_EN_COURS,'App\Entity\Etap26');
$project->setCodeProject($item['Code Projet']);
if(isset($item['Name']) and $item['Name']){$project->setName($item['Name']);}
if(isset($item['Développeur']) and $item['Développeur']){
$fullNameTab = explode(',',trim($item['Développeur']));
foreach ($fullNameTab as $fullName){
$fullNameTabItem = explode(' ',trim($fullName));
if (count($fullNameTabItem) !== 2) {
}else{
$p1 = $fullNameTabItem[0];
$p2 = $fullNameTabItem[1];
$user = $this->em->getRepository(User::class)->checkUserByName($p1,$p2);
if($user){
$responsableFoncier = new ResponcableFoncierPorject();
$responsableFoncier->setResponsable($user);
$responsableFoncier->setProject($project);
$this->em->persist($responsableFoncier);
}
}
}
}
if(isset($item['Chef de projet']) and $item['Chef de projet']){
$fullNameTab = explode(',',trim($item['Chef de projet']));
foreach ($fullNameTab as $fullName){
$fullNameTabItem = explode(' ',trim($fullName));
if (count($fullNameTabItem) !== 2) {
}else{
$p1 = $fullNameTabItem[0];
$p2 = $fullNameTabItem[1];
$user = $this->em->getRepository(User::class)->checkUserByName($p1,$p2);
if($user){
$responsableDeveloppement = new ResponsableDeveloppement();
$responsableDeveloppement->setResponsable($user);
$responsableDeveloppement->setProject($project);
$this->em->persist($responsableDeveloppement);
}
}
}
}
if(isset($item['Promotion']) and $item['Promotion']){
$fullNameTab = explode(',',trim($item['Promotion']));
foreach ($fullNameTab as $fullName){
$fullNameTabItem = explode(' ',trim($fullName));
if (count($fullNameTabItem) !== 2) {
}else{
$p1 = $fullNameTabItem[0];
$p2 = $fullNameTabItem[1];
$user = $this->em->getRepository(User::class)->checkUserByName($p1,$p2);
if($user){
$responsableUser = new ResponcablePorject();
$responsableUser->setResponsable($user);
$responsableUser->setProject($project);
$this->em->persist($responsableUser);
}
}
}
}
if(isset($item['Date sourcing']) and $item['Date sourcing']){
$b = explode(' au ',$item['Date sourcing']);
if(strpos($b[0],'/')){
$dateSourcing = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$dateSourcing = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$project->setDateSourcing($dateSourcing);
}
if(isset($item['Sourcing']) and $item['Sourcing']){
$sourcing = $this->em->getRepository(Sourcing::class)->findOneBy(['name'=>$item['Sourcing']]);
if(!$sourcing){
$sourcing = new Sourcing();
$sourcing->setName($item['Sourcing']);
$this->em->persist($sourcing);
}
$project->setSourcing($sourcing);
}
if(isset($item['Ville']) and $item['Ville']){$project->setCity($item['Ville']);}
if(isset($item['Département']) and $item['Département']){$project->setDepartement($item['Département']);}
if(isset($item['Nature du Foncier']) and $item['Nature du Foncier']){
$context = $this->em->getRepository(ContextProject::class)->findOneBy(['project'=>$project->getId()]);
if(!$context){
$context = new ContextProject();
}
$context->setComment($item['Nature du Foncier']);
$context->setUser($admin);
$context->setProject($project);
$this->em->persist($context);
}
if(isset($item['P 50 (kWh/kWc/an)']) and $item['P 50 (kWh/kWc/an)']){$project->setProductible($item['P 50 (kWh/kWc/an)']);}
if(isset($item['Famille de projet']) and $item['Famille de projet']){
if($item['Famille de projet'] == 'Ombrières'){
$typo = $this->em->getRepository(TypologieProject::class)->findOneBy(['name'=>'Ombrière']);
if($typo){
$project->setTypologieProject($typo);
}
}
if($item['Famille de projet'] == 'AgriPV'){
$typo = $this->em->getRepository(TypologieProject::class)->findOneBy(['name'=>'Agrivoltaïsme']);
if($typo){
$project->setTypologieProject($typo);
}
}
if($item['Famille de projet'] == 'Sol' and isset($item['Puissance'])){
$typoPetitSol = $this->em->getRepository(TypologieProject::class)->findOneBy(['name'=>'Petit Sol']);
$typoGrandSol = $this->em->getRepository(TypologieProject::class)->findOneBy(['name'=>'Grand Sol']);
if(floatval(str_replace(',','.',$item['Puissance'])) > 1 ){
$project->setTypologieProject($typoGrandSol);
}else{
$project->setTypologieProject($typoPetitSol);
}
}
if($item['Famille de projet'] == 'Petit Sol'){
$typo = $this->em->getRepository(TypologieProject::class)->findOneBy(['name'=>'Petit Sol']);
if($typo){
$project->setTypologieProject($typo);
}
}
if($item['Famille de projet'] == 'Hangar'){
}
}
if(isset($item['Prix de vente éléctricité (€/MWc)']) and $item['Prix de vente éléctricité (€/MWc)']){
$project->setTarifRevente($item['Prix de vente éléctricité (€/MWc)']);
}
if(isset($item['Sous-famille']) and $item['Sous-famille']){
$tabSousFamille = explode(',',$item['Sous-famille']);
if($tabSousFamille){
foreach ($tabSousFamille as $itemSousFamille){
$sousFamille = $this->em->getRepository(SousFamilleProject::class)->findOneBy(['name'=>$itemSousFamille]);
if(!$sousFamille){
$sousFamille = new SousFamilleProject();
$sousFamille->setName($itemSousFamille);
$this->em->persist($sousFamille);
}
$project->addSousFamilleProject($sousFamille);
}
}
}
if(isset($item['Surface disponible']) and $item['Surface disponible']){$project->setSurfaceDisponible(floatval(str_replace(',','.',$item['Surface disponible'])));}
if(isset($item['Surface exploitable']) and $item['Surface exploitable']){$project->setSurfaceExploitable(floatval(str_replace(',','.',$item['Surface exploitable'])));}
if(isset($item['Puissance']) and $item['Puissance']){$project->setCapacite(floatval(str_replace(',','.',$item['Puissance'])) * 1000);}
if(isset($item['Contexte']) and $item['Contexte']){
$context = $this->em->getRepository(ContextProject::class)->findOneBy(['project'=>$project->getId()]);
if(!$context){
$context = new ContextProject();
}
$context->setComment($item['Contexte']);
$context->setUser($admin);
$context->setProject($project);
$this->em->persist($context);
}
if(isset($item['Environnement']) and $item['Environnement']){
$environnement = $this->em->getRepository(EnvironnementProject::class)->findOneBy(['project'=>$project->getId()]);
if(!$environnement){
$environnement = new EnvironnementProject();
}
$environnement->setComment($item['Environnement']);
$environnement->setUser($admin);
$environnement->setProject($project);
$this->em->persist($environnement);
}
if(isset($item['Ranking']) and $item['Ranking']){$project->setRanking($item['Ranking']);}
if(isset($item['Achat/Location']) and $item['Achat/Location']){
if($item['Achat/Location'] == 'LOCATION'){
$project->setAchatLocation(Project::LOCATION);
}elseif($item['Achat/Location'] == 'ACHAT'){
$project->setAchatLocation(Project::ACHAT);
}
}
if(isset($item['Zonage PLU']) and $item['Zonage PLU']){
$zonagePlu = $this->em->getRepository(ZonagePlu::class)->findOneBy(['name'=>$item['Zonage PLU']]);
if(!$zonagePlu){
$zonagePlu = new ZonagePlu();
$zonagePlu->setName($item['Zonage PLU']);
$this->em->persist($zonagePlu);
}
$project->addZonagePlu($zonagePlu);
}
if(isset($item['Parcelles']) and $item['Parcelles']){$project->setNumParcelle($item['Parcelles']);}
if(isset($item['Nature du raccordement']) and $item['Nature du raccordement']){
$etapEntity80->setNatureRaccordement($item['Nature du raccordement']);
$this->em->persist($etapEntity80);
}
if(isset($item['Distance Poste Source']) and $item['Distance Poste Source']){
$etapEntity80->setDistancePdl($item['Distance Poste Source']);
$this->em->persist($etapEntity80);
}
// if(isset($item['Actualités']) and $item['Actualités']){
// $commentProject2 = new CommentProject2();
// $commentProject2->setComment($item['Actualités']);
// $commentProject2->setCreatedAt(new \DateTime());
// $commentProject2->setUser($admin);
// $commentProject2->setProject($project);
// $this->em->persist($commentProject2);
// }
// if(isset($item['Avancement Développement']) and $item['Avancement Développement']){
// $commentProject2 = new CommentProject2();
// $commentProject2->setComment($item['Avancement Développement']);
// $commentProject2->setCreatedAt(new \DateTime());
// $commentProject2->setUser($admin);
// $commentProject2->setProject($project);
// $this->em->persist($commentProject2);
// }
if(isset($item['Fin Exclusivité LOI']) and $item['Fin Exclusivité LOI']){
$b = explode(' au ',$item['Fin Exclusivité LOI']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$etapEntity5->setDateFinExclusiviteLoi($datetimeFromFormat);
$this->em->persist($etapEntity5);
}
if(isset($item['Signature LOI']) and $item['Signature LOI']){
$b = explode(' au ',$item['Signature LOI']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$etapEntity5->setDateSignature($datetimeFromFormat);
$this->em->persist($etapEntity5);
}
if(isset($item['Signature Promesse']) and $item['Signature Promesse']){
$b = explode(' au ',$item['Signature Promesse']);
if(strpos($b[0],'/')){
$datePdb = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datePdb = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$project->setDateExpirationPromesseBail($datePdb);
$etapEntity5->setDateExpirationPromesseBail($datePdb);
$this->em->persist($etapEntity5);
}
if(isset($item['Échéance Promesse']) and $item['Échéance Promesse']){
$b = explode(' au ',$item['Échéance Promesse']);
if(strpos($b[0],'/')){
$datePdb = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datePdb = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$etapEntity5->setDateEcheancePromesse($datePdb);
$this->em->persist($etapEntity5);
}
if(isset($item['Durée maximale du bail']) and $item['Durée maximale du bail']){
$etapEntity5->setDureeBail($item['Durée maximale du bail']);
$this->em->persist($etapEntity5);
}
if(isset($item['Objectif dépôt PC/DP']) and $item['Objectif dépôt PC/DP']){
$b = explode(' au ',$item['Objectif dépôt PC/DP']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$project->setDateDepotPc($datetimeFromFormat);
// $project->setDateMiseEnService($datetimeFromFormat);
// $etapEntity14->setDateMiseEnService($datetimeFromFormat);
// $etapEntity21->setDateMiseEnService($datetimeFromFormat);
// $this->em->persist($etapEntity21);
// $this->em->persist($etapEntity14);
}
if(isset($item['Objectif PC/DP obtenu']) and $item['Objectif PC/DP obtenu']){
$b = explode(' au ',$item['Objectif PC/DP obtenu']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$project->setDateObtentionPc($datetimeFromFormat);
}
if(isset($item['Objectif RTB']) and $item['Objectif RTB']){
$b = explode(' au ',$item['Objectif RTB']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$project->setDateRTBtarifie($datetimeFromFormat);
}
if(isset($item['Date Dépôt PC/DP']) and $item['Date Dépôt PC/DP']){
$b = explode(' au ',$item['Date Dépôt PC/DP']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$project->setDateDepotPc($datetimeFromFormat);
$etapEntity1->setDateDepotPc($datetimeFromFormat);
$this->em->persist($etapEntity1);
}
if(isset($item['Date PC/DP purgé']) and $item['Date PC/DP purgé']){
$b = explode(' au ',$item['Date PC/DP purgé']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$etapEntity2->setDatePcDpPurge($datetimeFromFormat);
$this->em->persist($etapEntity2);
}
if(isset($item['Signature Bail / Achat']) and $item['Signature Bail / Achat']){
$b = explode(' au ',$item['Signature Bail / Achat']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$etapEntity7->setDateSignatureBail($datetimeFromFormat);
$this->em->persist($etapEntity7);
}
if(isset($item['Objectif mise en service']) and $item['Objectif mise en service']){
$b = explode(' au ',$item['Objectif mise en service']);
if(strpos($b[0],'/')){
$datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
}else{
$datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
}
$etapEntity14->setDateMesPrevisionnelle($datetimeFromFormat);
$this->em->persist($etapEntity14);
}
// if(isset($item['Date mise en service'])){
// if($item['Date mise en service']){
// $datetimeFromFormat = null;
// }else{
// $b = explode(' au ',$item['Date mise en service']);
// if(strpos($b[0],'/')){
// $datetimeFromFormat = \DateTime::createFromFormat('d/m/Y', $b[0] );
// }else{
// $datetimeFromFormat = \DateTime::createFromFormat('Y-m-d', $b[0] );
// }
// }
//
// $project->setDateMiseEnService($datetimeFromFormat);
// $etapEntity14->setDateMiseEnService($datetimeFromFormat);
// $etapEntity21->setDateMiseEnService($datetimeFromFormat);
// $this->em->persist($etapEntity21);
// $this->em->persist($etapEntity14);
// }
if(isset($item["Durée d'exploitation"]) and $item["Durée d'exploitation"]){$project->setDureeExploitation($item["Durée d'exploitation"]);}
if(isset($item['Loyer (€/MWc)']) and $item['Loyer (€/MWc)']){
$project->setLoyerVise(floatval(str_replace(',','.',$item['Loyer (€/MWc)'])));
$etapEntity5->setLoyerConfirme(floatval(str_replace(',','.',$item['Loyer (€/MWc)'])));
$this->em->persist($etapEntity5);
}
if(isset($item['Rémunération exploitant agricole']) and $item['Rémunération exploitant agricole']){
$project->setRemunerationExploitantAgricole($item['Rémunération exploitant agricole']);
}
if(isset($item['Soulte (k€)']) and $item['Soulte (k€)']){
$project->setSoulteVise(floatval(str_replace(',','.',$item['Soulte (k€)'])));
$etapEntity5->setSoulteConfirme(floatval(str_replace(',','.',$item['Soulte (k€)'])));
$this->em->persist($etapEntity5);
}
if(isset($item['Honoraires apporteur (k€/MWc)']) and $item['Honoraires apporteur (k€/MWc)']){
$etapEntity5->setHonoraireApporteur($item['Honoraires apporteur (k€/MWc)']);
$this->em->persist($etapEntity5);
}
if(isset($item["Prix d'achat foncier (k€/ha)"]) and $item["Prix d'achat foncier (k€/ha)"]){
$project->setPrixAchatFoncierKHa($item["Prix d'achat foncier (k€/ha)"]);
}
if(isset($item["Prix d'achat foncier (k€/MWc)"]) and $item["Prix d'achat foncier (k€/MWc)"]){
$project->setPrixAchatFoncierKMWc($item["Prix d'achat foncier (k€/MWc)"]);
}
if(isset($item["Indemnité transitoire (k€/an)"]) and $item["Indemnité transitoire (k€/an)"]){
$project->setIndemiteTransitoire($item["Indemnité transitoire (k€/an)"]);
}
if((isset($item['Valorisation']) and $item['Valorisation'])
or (isset($item['Prix de vente éléctricité (€/MWc)']) and $item['Prix de vente éléctricité (€/MWc)'])
or (isset($item['Durée du contrat valorisation']) and $item['Durée du contrat valorisation'])
or (isset($item['Taux inflation de tarif']) and $item['Taux inflation de tarif'])
){
if(count($etapEntity24->getEtap24Champs()) > 0){
foreach ($etapEntity24->getEtap24Champs() as $item2){
$etap24Champs = $item2;
}
}else{
$etap24Champs = new Etap24Champs();
$etap24Champs->setEtap24($etapEntity24);
$etap24Champs->setEtap25($etapEntity25);
$etap24Champs->setEtap26($etapEntity26);
}
if($item['Valorisation']){
if(in_array($item['Valorisation'],['CRE Bat','CRE Sol','AOS'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_ao_cre]);
$etap24Champs->setTypeValorisation($typeValorisation);
$etap24Champs->setSousChoixValorisation($item['Valorisation']);
}elseif (in_array($item['Valorisation'],['S21','S24','S23'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_guichet_ouvert]);
$etap24Champs->setTypeValorisation($typeValorisation);
if($item['Valorisation'] == 'S21'){
$etap24Champs->setSousChoixValorisation('OA - S21');
}
if($item['Valorisation'] == 'S24'){
$etap24Champs->setSousChoixValorisation('OA - S24');
}
if($item['Valorisation'] == 'S23'){
$etap24Champs->setSousChoixValorisation('OA - S23');
}
}
elseif (in_array($item['Valorisation'],['ACC','CRE ou ACC'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_acc]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
elseif (in_array($item['Valorisation'],['PPA ou FER'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_ppa]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
elseif (in_array($item['Valorisation'],['ACI'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_aci]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
elseif (in_array($item['Valorisation'],['U-PPA ou spot'])){
$typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category'=>TypeValorisation::type_spot]);
$etap24Champs->setTypeValorisation($typeValorisation);
}
}
if($item['Durée du contrat valorisation']){
$etap24Champs->setDureeContrat((int)$item['Durée du contrat valorisation']);
}
if($item['Prix de vente éléctricité (€/MWc)']){
$etap24Champs->setPrixVenteElectricite($item['Prix de vente éléctricité (€/MWc)']);
}
$etap24Champs->setTauxIndexationTarif($item['Taux inflation de tarif'] ? str_replace('%/an','',$item['Taux inflation de tarif']): '');
$this->em->persist($etap24Champs);
}
if(isset($item['TRI']) and $item['TRI']){$project->setTri($item['TRI']);}
if(isset($item['TRI avec Prime']) and $item['TRI avec Prime']){$project->setTriPrime($item['TRI avec Prime']);}
if(isset($item['TRI PPA 70€']) and $item['TRI PPA 70€']){$project->setTriPpaMin($item['TRI PPA 70€']);}
if(isset($item['Rendement EBE/CAPEX']) and $item['Rendement EBE/CAPEX']){$project->setRendementEbeCapex($item['Rendement EBE/CAPEX']);}
if(isset($item['Rendement EBE/CAPEX Tarif PPA 70€']) and $item['Rendement EBE/CAPEX Tarif PPA 70€']){$project->setRendementEbeCapexPPA($item['Rendement EBE/CAPEX Tarif PPA 70€']);}
if(isset($item['Ratio CAPEX / Puissance']) and $item['Ratio CAPEX / Puissance']){$project->setRatioCapexPuissance($item['Ratio CAPEX / Puissance']);}
if(isset($item['SPV']) and $item['SPV']){
$spv = $this->em->getRepository(Spv::class)->findOneBy(['name'=>$item['SPV']]);
if($spv){
$project->setSpv($spv);
}
}
if(isset($item['Actualités']) and $item['Actualités']){
$actualite = $this->em->getRepository(ActualiteProject::class)->findOneBy(['project'=>$project->getId()]);
if(!$actualite){
$actualite = new ActualiteProject();
}
$actualite->setComment($item['Actualités']);
$actualite->setCreatedAt(new \DateTime());
$actualite->setUser($admin);
$actualite->setProject($project);
$this->em->persist($actualite);
}
if(isset($item['Avancement Développement']) and $item['Avancement Développement']){
$actualite = $this->em->getRepository(ActualiteProject::class)->findOneBy(['project'=>$project->getId()]);
if(!$actualite){
$actualite = new ActualiteProject();
}
$actualite->setComment($item['Avancement Développement']);
$actualite->setCreatedAt(new \DateTime());
$actualite->setUser($admin);
$actualite->setProject($project);
$this->em->persist($actualite);
}
if($entreprise){
$project->setEntreprise($entreprise);
}
$project->setStatus(Project::STATUS_EN_COURS);
$project->setIsNewConstruction(true);
$project->setIsEnabled(true);
$project->setIsImportCode(true);
$project->setUserCreated($admin);
$project->setCreatedAt(new \DateTime());
$this->em->persist($project);
$this->em->flush();
$this->etapsService->updateStatusTracker($project); // set status tracker
}
if(isset($item['Prénom']) and $item['Prénom'] and isset($item['Nom']) and $item['Nom'] and isset($item['Email']) and $item['Email']){
$this->userService->addUsersByArray($item['Nom'],$item['Prénom'],$item['Email'],$item['Téléphone']);
}
}
}
private function setOrAddEntityEtap($project,$etap,$status,$className){
if($project && $project->getId()){
$etapEntity = $this->em->getRepository($className)->findOneBy(['project'=>$project->getId()]);
if(!$etapEntity){
$etapEntity = new $className();
$etapEntity->setStatus($status);
}
}else{
$etapEntity = new $className();
$etapEntity->setStatus($status);
}
$etapEntity->setProject($project);
$etapEntity->setEtap($etap);
$this->em->persist($etapEntity);
$this->em->flush();
return $etapEntity;
}
public function checkProjectAccess($project){
$user = $this->security->getUser();
$roles = $user->getRoles();
$spvsTab = [];
if (in_array("ROLE_AUDITEUR", $roles) or in_array("ROLE_COMPTABLE", $roles) or in_array($user->getTypeAcces(),[User::ACCES_visiteur,User::ACCES_comptable])) {
$spvs = $user->getSpv();
foreach($spvs as $item){
$spvsTab[] = $item->getId();
}
}
$result = $this->em->getRepository(Project::class)->checkProjectAccess($user,$project,$spvsTab);
return $result;
}
}