<?php
namespace App\Controller;
use App\Entity\Contrat;
use App\Entity\InfoSalarie;
use App\Entity\Projet;
use App\Entity\Tiers;
use App\Service\URSSAF\Embauche;
use App\Service\URSSAF\UrssafAPI;
use App\Tools\Fnc;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Tools\JsonRes;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\ObjectManager;
class ContratController extends AbstractController
{
private ?ObjectManager $em = null;
private ?string $prefixSociete = null;
/**
* Stockage des informations de la société pour affichage sur entête document
* @var object|mixed|null
*/
private ?object $dataSociete = null;
public function __construct(RequestStack $requestStack, ManagerRegistry $doctrine)
{
$request = $requestStack->getCurrentRequest();
//TODO: page erreur subdomain
if(null===$request->getSession()->get('societe')) return $this->render('misc/404.html.twig');
// on récupère le sous-domaine stocké en session pour pointer vers le bon entity manager
$subdomain = $request->getSession()->get('societe')->getBase();
$this->em = $doctrine->getManager($subdomain);
$this->prefixSociete = $request->getSession()->get('societe')->getPrefix();
if(null!==$this->prefixSociete) $this->prefixSociete = strtoupper($this->prefixSociete);
$jsonString = $request->getSession()->get('societe')->getData();
if(null!==$jsonString) {
$this->dataSociete = json_decode($jsonString);
$this->dataSociete->lib_societe = $request->getSession()->get('societe')->getLibSociete();
$this->dataSociete->logo_path = $request->getSession()->get('societe')->getLogoPath();
}
}
/**
* @Route("/contrat/insert", methods={"POST"}, name="insert_contrat")
*/
public function insertContrat(Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
$data = $res->getData();
if(!isset($data['id_projet'])) $res->addErrMsg('champs id_projet manquant');
if(!isset($data['id_salarie'])) $res->addErrMsg('champs id_salarie manquant');
if(!isset($data['charge_contrat'])) $res->addErrMsg('champs charge_contrat manquant');
if(!isset($data['description_contrat'])) $res->addErrMsg('champs description_contrat manquant');
if(!isset($data['annee_contrat'])) $res->addErrMsg('champs annee_contrat manquant');
if(!isset($data['mois_contrat'])) $res->addErrMsg('champs mois_contrat manquant');
if(!isset($data['liste_date_pointage'])) $res->addErrMsg('champs liste_date_pointage manquant');
if(!isset($data['tarif_jour'])) $res->addErrMsg('champs tarif_jour manquant');
if(!isset($data['heure_par_jour'])) $res->addErrMsg('champs heure_par_jour manquant');
if(!$res->isSuccess()) die($res->returnJson());
if(''===($data['id_projet'])) $res->addErrMsg('ID projet obligatoire');
if(''===($data['id_salarie'])) $res->addErrMsg('ID salarie obligatoire');
if(''===($data['charge_contrat'])) $res->addErrMsg('taux charge obligatoire');
if(''===($data['annee_contrat'])) $res->addErrMsg('année contrat obligatoire');
if(''===($data['mois_contrat'])) $res->addErrMsg('mois contrat obligatoire');
if(0===count($data['liste_date_pointage'])) $res->addErrMsg('Aucun jour pointage');
if(''===($data['tarif_jour'])) $res->addErrMsg('tarif jour obligatoire');
if(''===($data['heure_par_jour'])) $res->addErrMsg('nombre d\'heure par jour obligatoire');
if(!$res->isSuccess()) die($res->returnJson());
/** @var \App\Entity\User $currentUser */
$currentUser = $this->getUser()->getId();
$tiersRepository = $this->em->getRepository(Tiers::class);
/** @var Tiers $salarie */
$salarie = $tiersRepository->find($data['id_salarie']);
if(null===$salarie) $res->addErrMsg('Salarié non trouvé dans la base de donnée');
$projetRepository = $this->em->getRepository(Projet::class);
/** @var Projet $projet */
$projet = $projetRepository->find($data['id_projet']);
if(null===$projet) $res->addErrMsg('Projet non trouvé dans la base de donnée');
if(!$res->isSuccess()) die($res->returnJson());
$salarieList = $projet->getSalaries();
$isSalarie = false;
foreach ($salarieList as $s) if($salarie===$s) $isSalarie = true;
if(!$isSalarie) {
$projet->addSalary($salarie);
$projetRepository->add($projet);
}
$contrat = new Contrat();
$contrat->setSalarie($salarie)
->setIdProjet($projet->getId())
->setCharge($data['charge_contrat'])
->setDescription($data['description_contrat'])
->setAnnee($data['annee_contrat'])
->setMois($data['mois_contrat'])
->setListeDatePointage($data['liste_date_pointage'])
->setNbJourPointage(count($data['liste_date_pointage']))
->setTarifJour($data['tarif_jour'])
->setHeureParJour($data['heure_par_jour'])
->setIdStatutSignatureElec(1)
->setDateCrea(new \DateTime())
->setUserCrea($currentUser)
;
$this->em->persist($contrat);
$this->em->flush();
die($res->returnJson());
}
/**
* @Route("/contrat/update", methods={"POST"}, name="update_contrat")
*/
public function updateContrat(Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
$data = $res->getData();
if(!isset($data['id_contrat'])) $res->addErrMsg('champs id_contrat manquant');
if(!isset($data['id_projet'])) $res->addErrMsg('champs id_projet manquant');
if(!isset($data['id_salarie'])) $res->addErrMsg('champs id_salarie manquant');
if(!isset($data['charge_contrat'])) $res->addErrMsg('champs charge_contrat manquant');
if(!isset($data['description_contrat'])) $res->addErrMsg('champs description_contrat manquant');
if(!isset($data['liste_date_pointage'])) $res->addErrMsg('champs liste_date_pointage manquant');
if(!isset($data['tarif_jour'])) $res->addErrMsg('champs tarif_jour manquant');
if(!isset($data['heure_par_jour'])) $res->addErrMsg('champs heure_par_jour manquant');
if(!$res->isSuccess()) die($res->returnJson());
if(''===($data['id_contrat'])) $res->addErrMsg('champs id_contrat manquant');
if(''===($data['id_projet'])) $res->addErrMsg('champs id_projet manquant');
if(''===($data['id_salarie'])) $res->addErrMsg('champs id_salarie manquant');
if(''===($data['charge_contrat'])) $res->addErrMsg('champs charge_contrat manquant');
if(0===count($data['liste_date_pointage'])) $res->addErrMsg('Aucun jour pointage');
if(''===($data['tarif_jour'])) $res->addErrMsg('champs tarif_jour manquant');
if(''===($data['heure_par_jour'])) $res->addErrMsg('champs heure_par_jour manquant');
if(!$res->isSuccess()) die($res->returnJson());
/** @var \App\Entity\User $currentUser */
$currentUser = $this->getUser()->getId();
$contratRepository = $this->em->getRepository(Contrat::class);
$contrat = $contratRepository->find($data['id_contrat']);
if(null===$contrat) $res->addErrMsg('Contrat non trouvé dans la base de données');
if(!$res->isSuccess()) die($res->returnJson());
$contrat->setCharge($data['charge_contrat'])
->setDescription($data['description_contrat'])
->setAnnee($data['annee_contrat'])
->setMois($data['mois_contrat'])
->setListeDatePointage($data['liste_date_pointage'])
->setNbJourPointage(count($data['liste_date_pointage']))
->setTarifJour($data['tarif_jour'])
->setHeureParJour($data['heure_par_jour'])
->setDateModif(new \DateTime())
->setUserModif($currentUser)
->setIdStatutSignatureElec(1)
->setIdSignatureElec(null)
;
$this->em->persist($contrat);
$this->em->flush();
die($res->returnJson());
}
/**
* @Route("/contrat/vierge/{id}", methods={"GET"}, name="init_contrat_vierge")
*/
public function getContratVierge($id): response
{
$projetRepository = $this->em->getRepository(Projet::class);
/** @var Projet $projet */
$projet = $projetRepository->find($id);
if(null===$projet) return $this->render('misc/404.html.twig');
$webPath = $this->getParameter('kernel.project_dir');
$contratVierge = new Contrat();
$salarieVierge = new Tiers();
$infosSalarieVierge = new InfoSalarie($webPath);
$infosSalarieVierge->initInfosVierge();
$salarieVierge->setInfoSalarie($infosSalarieVierge);
$contratVierge->setIdProjet($projet->getId())
->setSalarie($salarieVierge)
->setNbJourPointage(0)
->setHeureParJour(8)
;
return $this->render('projet/contrat/contrat-form.html.twig', [
'societe' => $this->dataSociete,
'projet' => $projet,
'contrat_vierge' => $contratVierge,
'label_btn_cancel' => 'Annuler',
]);
}
/**
* @Route("/contrat/edit/{id}", methods={"GET"}, name="edit_contrat")
*/
public function getContratForEdit($id)
{
$contratRepository = $this->em->getRepository(Contrat::class);
/** @var Contrat $contrat */
$contrat = $contratRepository->find($id);
if(null===$contrat) return $this->render('misc/404.html.twig');
$webPath = $this->getParameter('kernel.project_dir');
$contrat->getSalarie()->getInfoSalarie()->initEncryptionKey($webPath);
$contrat->getSalarie()->getInfoSalarie()->decryptContent();
$projetRepository = $this->em->getRepository(Projet::class);
$projet = $projetRepository->find($contrat->getIdProjet());
if(null===$projet) return $this->render('misc/404.html.twig');
return $this->render('projet/contrat/contrat-form.html.twig', [
'societe' => $this->dataSociete,
'projet' => $projet,
'contrat' => $contrat,
'label_btn_cancel' => 'Supprimer',
]);
}
/**
* @Route("/contrat/delete-contrat", methods={"POST"}, name="delete_contrat")
*/
public function deleteContrat(Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
if($res->isSuccess()) {
$data = $res->getData();
if(!isset($data['id_contrat'])) $res->addErrMsg('champs id_contrat inconnu');
if($res->isSuccess()) {
if ('' === $data['id_contrat']) $res->addErrMsg('champs id_contrat obligatoire');
if ($res->isSuccess()) {
$contratRepository = $this->em->getRepository(Contrat::class);
/** @var Contrat $contrat */
$contrat = $contratRepository->find($data['id_contrat']);
if(null===$contrat) $res->addErrMsg('Contrat non identifiée');
if ($res->isSuccess()) {
if(!$this->isGranted('ROLE_SUPER_ADMIN') && null!==$contrat->getIdSignatureElec())
$res->addErrMsg('Impossible, ce contrat a été signé !');
if ($res->isSuccess()) {
$contratRepository->remove($contrat);
$idProjet = $contrat->getIdProjet();
/** @var Tiers $salarie */
$salarie = $contrat->getSalarie();
$contratList = $contratRepository->findBy([
'id_projet' => $idProjet,
'salarie' => $salarie,
]);
if (0 === count($contratList)) {
$projetRepository = $this->em->getRepository(Projet::class);
/** @var Projet $projet */
$projet = $projetRepository->find($idProjet);
$projet->removeSalary($salarie);
$projetRepository->add($projet);
}
$res->setData($data);
}
}
}
}
}
die($res->returnJson());
}
/**
* @Route("/contrat/transfert-salarie", methods={"POST"}, name="transfert_salarie")
*/
public function transfertContrat(Request $request): Response
{
//TODO: page erreur entity manager
if(null===$this->em) return $this->render('misc/404.html.twig');
// Initialisation du retour Json
$res = new JsonRes($request->request->all());
if($res->isSuccess()) {
$data = $res->getData();
if(!isset($data['id_projet'])) $res->addErrMsg('champs id_projet inconnu');
if(!isset($data['id_salarie_out'])) $res->addErrMsg('champs id_salarie_out inconnu');
if(!isset($data['id_salarie_in'])) $res->addErrMsg('champs id_salarie_in inconnu');
if($res->isSuccess()) {
if ('' === $data['id_projet']) $res->addErrMsg('champs id_projet obligatoire');
if ('' === $data['id_salarie_out']) $res->addErrMsg('champs id_salarie_out obligatoire');
if ('' === $data['id_salarie_in']) $res->addErrMsg('champs id_salarie_in obligatoire');
if ($res->isSuccess()) {
// vérifier que aucun contrat n'est été signé
$salarieRepository = $this->em->getRepository(Tiers::class);
/** @var Tiers $salarieOut */
$salarieOut = $salarieRepository->find($data['id_salarie_out']);
if(null===$salarieOut) $res->addErrMsg('Salarié non identifiée');
$contratRepository = $this->em->getRepository(Contrat::class);
$canTransfert = $contratRepository->canTransfertSalarie($data['id_projet'], $salarieOut);
if(!$canTransfert) {
$res->addErrMsg('Impossible de faire le transfert');
$res->addErrMsg($salarieOut->getPrenomTiers() .' '. $salarieOut->getNomTiers() . ' a des contrats signés sur ce projet');
}
/** @var Tiers $salarieIn */
$salarieIn = $salarieRepository->find($data['id_salarie_in']);
if(null===$salarieIn) $res->addErrMsg('Salarié non identifiée');
if ($res->isSuccess()) {
/** @var Contrat $contrat */
foreach ($salarieOut->getContratByIdProjet($data['id_projet']) as $contrat){
$contrat->setSalarie($salarieIn);
$contratRepository->add($contrat);
}
$projetRepository = $this->em->getRepository(Projet::class);
/** @var Projet $projet */
$projet = $projetRepository->find($data['id_projet']);
$projet->removeSalary($salarieOut);
$projet->addSalary($salarieIn);
$projetRepository->add($projet);
$res->setData($data);
}
}
}
}
die($res->returnJson());
}
/**
* @Route("/contrat/reload-list/{idProjet}", methods={"GET"}, name="contrat_reload_list")
*/
public function contratReloadList($idProjet)
{
$projetRepository = $this->em->getRepository(Projet::class);
/** @var Projet $projet */
$projet = $projetRepository->find($idProjet);
$salarieList = array();
$salarieProjet = $projet->getSalaries();
foreach ($salarieProjet as $salarie){
$contratList = $salarie->getContratByIdProjet($projet->getId());
foreach ($contratList as $contrat){
$id = $salarie->getId();
if(!isset($salarieList[$id])){
$contrat->total_jour_pointage = 0;
$contrat->total_salaire = 0;
$contrat->contrat_list = array();
$salarieList[$id] = $contrat;
}
$tel = '+33'. substr($salarie->getTelPortableTiers(), 1);
$mois = ['janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre'];
$mois = $mois[intval($contrat->getMois())-1];
$nomDemande = 'CONTRAT TRAVAIL '. $salarie->getNomTiers() .' '. $salarie->getPrenomTiers() .' - '. $mois .' '. $contrat->getAnnee();
$coordonnee = array(
'nom_salarie' => $salarie->getNomTiers(),
'prenom_salarie' => $salarie->getPrenomTiers(),
'email_salarie' => $salarie->getEmailTiers(),
'portable_salarie' => $tel,
'nom_demande' => mb_strtoupper($nomDemande),
'id_projet' => $projet->getId(),
'id_salarie' => $salarie->getId(),
'id_contrat' => $contrat->getId(),
);
$coordonnee = json_encode($coordonnee);
$contrat->coordonnee = htmlentities($coordonnee);
$salarieList[$id]->total_jour_pointage+= $contrat->getNbJourPointage();
$salarieList[$id]->total_salaire+= $contrat->getTarifJour() * $contrat->getNbJourPointage();
$salarieList[$id]->contrat_list[] = $contrat;
}
}
$salarieList = Fnc::array_orderby($salarieList, 'getSalarie()->getInfoSalarie()->getFonction()', SORT_ASC);
// dd($salarieList);
return $this->render('projet/contrat/contrat-list.html.twig', [
'salarieList' => $salarieList,
]);
}
/**
* @Route("/contrat/gestion-contrat", methods={"GET"}, name="contrat_gestion_contrat")
*/
public function gestionContrat(): Response
{
$contratRepository = $this->em->getRepository(Contrat::class);
$contratList = $contratRepository->findBy([
'annee' => date('Y'),
'mois' => date('m'),
]);
$btn = '
<button class="btn btn-primary" onclick="window.open(\'/pdf/contrat-mensuel/'. date('Y-m') .'\',\'_blank\')">
Imprimer pdf contrats '. date('Y-m') .'
</button>
';
return $this->render('contrat/gestion_contrat.html.twig', [
'id_menu' => 'gestion_contrat',
'contrat_list' => $this->performContratList($contratList),
'btn_print_pdf' => $btn,
]);
}
/**
* @Route("/contrat/gestion-contrat/reload-list", methods={"POST"}, name="reload_contrat_gestion_contrat")
*/
public function reloadGestionContrat(Request $request): Response
{
$res = new JsonRes($request->request->all());
$data = $res->getData();
$contratList = [];
$btn = '';
if(!empty($data['field']) && !empty($data['value'])){
switch ($data['field']){
case 'date':
$contratList = $this->getContratByDate($data['value']);
$btn = '
<button class="btn btn-primary" onclick="window.open(\'/pdf/contrat-mensuel/'. $data['value'] .'\',\'_blank\')">
Imprimer pdf contrats '. $data['value'] .'
</button>
';
break;
case 'id_salarie':
$tiersRepository = $this->em->getRepository(Tiers::class);
$salarie = $tiersRepository->find($data['value']);
$contratList = $salarie->getContratTiers()->toArray();
break;
default:
$contratRepository = $this->em->getRepository(Contrat::class);
$contratList = $contratRepository->findBy([
$data['field'] => $data['value'],
]);
break;
}
}
return $this->render('contrat/gestion_contrat_list.html.twig', [
'contrat_list' => $this->performContratList($contratList),
'btn_print_pdf' => $btn,
]);
}
private function getContratByDate($date)
{
$date = explode('-', $date);
if(2!==count($date)) return [];
$contratRepository = $this->em->getRepository(Contrat::class);
return $contratRepository->findBy([
'annee' => $date[0],
'mois' => intval($date[1]),
]);
}
private function performContratList($contratList)
{
return array_map(function (Contrat $contrat){
$webPath = $this->getParameter('kernel.project_dir');
$projetRepository = $this->em->getRepository(Projet::class);
$contrat->projet = $projetRepository->find($contrat->getIdProjet());
$contrat->checkData($webPath);
return $contrat;
}, $contratList);
}
/**
* @Route("/contrat/gestion-dpae", methods={"GET"}, name="contrat_gestion_dpae")
*/
public function gestionDPAE(): Response
{
$contratRepository = $this->em->getRepository(Contrat::class);
$projetRepository = $this->em->getRepository(Projet::class);
$webPath = $this->getParameter('kernel.project_dir');
$contratList = $contratRepository->findBy(['date_urssaf'=>null]);
$semaineList = array();
foreach ($contratList as $contrat) {
$i = $contrat->getAnnee();
if(null!==$contrat->getFirstDate()) $i.= ' - Sem. '. $contrat->getFirstDate()->format('W');
$contrat->projet = $projetRepository->find($contrat->getIdProjet());
$contrat->checkData($webPath);
$semaineList[$i][] = $contrat;
};
ksort($semaineList);
return $this->render('contrat/gestion_dpae.html.twig', [
'id_menu' => 'gestion_dpae',
'semaine_list' => $semaineList,
]);
}
/**
* @Route("/contrat/upload-dpae/{id}", methods={"GET"}, name="contrat_upload_dpae")
*/
public function uploadDPAE($id)
{
$this->processUploadDPAE($id);
}
/**
* @Route("/contrat/upload-dpae-list", methods={"POST"}, name="contrat_upload_dpae_list")
*/
public function uploadDPAEList(Request $request)
{
$res = new JsonRes($request->request->all());
$data = $res->getData();
if(!isset($data['id_list'])) $res->addErrMsg('champs id_list inconnu');
if(!$res->isSuccess()) die($res->returnJson());
foreach ($data['id_list'] as $id) $this->processUploadDPAE($id);
die($res->returnJson());
}
public function processUploadDPAE($id)
{
$contratRepository = $this->em->getRepository(Contrat::class);
$contrat = $contratRepository->find($id);
$webPath = $this->getParameter('kernel.project_dir');
$salarie = $contrat->getSalarie();
$info = $salarie->getInfoSalarie()->initEncryptionKey($webPath)->decryptContent();
$dateNaissance = join('-', array_reverse(explode('/', $info->getDateNaissance())));
$datePointageListe = $contrat->getListeDatePointage();
$dateDebContrat = date('Y-m-d', $datePointageListe[0]);
$dateFinContrat = date('Y-m-d', array_pop($datePointageListe));
$siret = str_replace(' ', '', $this->dataSociete->siret);
$siret.= $this->dataSociete->code_naf;// $siret = '51871382100032';
// $siret = '51871382100024';
$codeApe = str_replace(' ', '', $this->dataSociete->code_ape);
$dpae = new Embauche();
$dpae->setRaisonSociale(mb_strtoupper($this->dataSociete->lib_societe))
->setSiret($siret)
->setCodeApe($codeApe)
->setCodeUrssaf($this->dataSociete->code_urssaf)
->setRueEmployeur($this->dataSociete->rue)
->setVilleEmployeur($this->dataSociete->ville)
->setCodePostalEmployeur($this->dataSociete->code_postal)
->setTelephoneEmployeur($this->dataSociete->telephone)
->setNomSalarie($salarie->getNomTiers())
->setPrenomSalarie($salarie->getPrenomTiers())
->setNumSecuSalarie($info->getNumSecuSociale())
->setDateNaissanceSalarie($dateNaissance)
->setLieuNaissanceSalarie($info->getLieuNaissance())
->setDateDebContrat($dateDebContrat)
->setDateFinContrat($dateFinContrat)
->setNatureContrat('CDD')
->setServiceSante('176')
->setDureePeriodeEssaie('1')
->setIdContrat(strval($contrat->getId()))
;
$Urssaf = new UrssafAPI('dpae', $webPath);
// $res = $Urssaf->sendDPAE($dpae);
// if($res) {
// $contrat->setStatutUrssaf('envoyé')
// ->setDateUrssaf(new \DateTime());
//
// } else {
// $contrat->setStatutUrssaf('Erreur retour api');
// }
$contrat->setStatutUrssaf('envoyé')
->setDateUrssaf(new \DateTime());
$contrat->getSalarie()->getInfoSalarie()->initEncryptionKey($webPath)->persistContent();
sleep(2);
// $contratRepository->add($contrat);
$contratRepository->updateStatutUrssaf($contrat->getId());
unset($contratRepository);
unset($contrat);
}
/**
* @Route("/contrat/generate-txt-dpae/{id}", methods={"GET"}, name="contrat_generate_txt_dpae")
*/
function generateTxtDue($id)
{
$contratRepository = $this->em->getRepository(Contrat::class);
$contrat = $contratRepository->find($id);
$webPath = $this->getParameter('kernel.project_dir');
$salarie = $contrat->getSalarie();
$info = $salarie->getInfoSalarie()->initEncryptionKey($webPath)->decryptContent();
$dateNaissance = join('-', array_reverse(explode('/', $info->getDateNaissance())));
$datePointageListe = $contrat->getListeDatePointage();
$dateDebContrat = date('Y-m-d', $datePointageListe[0]);
$dateFinContrat = date('Y-m-d', array_pop($datePointageListe));
$siret = str_replace(' ', '', $this->dataSociete->siret);
$siret.= $this->dataSociete->code_naf;// $siret = '51871382100032';
// $siret = '51871382100024';
$codeApe = str_replace(' ', '', $this->dataSociete->code_ape);
$dpae = new Embauche();
$dpae->setRaisonSociale(mb_strtoupper($this->dataSociete->lib_societe))
->setSiret($siret)
->setCodeApe($codeApe)
->setCodeUrssaf($this->dataSociete->code_urssaf)
->setRueEmployeur($this->dataSociete->rue)
->setVilleEmployeur($this->dataSociete->ville)
->setCodePostalEmployeur($this->dataSociete->code_postal)
->setTelephoneEmployeur($this->dataSociete->telephone)
->setNomSalarie($salarie->getNomTiers())
->setPrenomSalarie($salarie->getPrenomTiers())
->setNumSecuSalarie($info->getNumSecuSociale())
->setDateNaissanceSalarie($dateNaissance)
->setLieuNaissanceSalarie($info->getLieuNaissance())
->setDateDebContrat($dateDebContrat)
->setDateFinContrat($dateFinContrat)
->setNatureContrat('CDD')
->setServiceSante('176')
->setDureePeriodeEssaie('1')
->setIdContrat(strval($contrat->getId()))
;
$recup_nom = utf8_decode($dpae->getNomSalarie());
// $recup_nom = strtoupper($this->stripAccents($ModelFonction->suppr_accents($recup_nom))); //stripAccents($ModelFonction->suppr_accents($recup_nom))
$recup_prenom = utf8_decode($dpae->getPrenomSalarie());
// $recup_prenom = strtoupper($this->stripAccents($ModelFonction->suppr_accents($recup_prenom))); //stripAccents($ModelFonction->suppr_accents($recup_prenom))
$recup_naissance = $dpae->getDateNaissanceSalarie();
$recup_lieu_naissance = $dpae->getLieuNaissanceSalarie();
// $recup_lieu_naissance = strtoupper($this->stripparentese($ModelFonction->suppr_accents($result_salarie['Lieu_Naissance_Salaries'])));
$recup_numero_secu = $dpae->getNumSecuSalarie();
// $recup_cle_secu = substr($result_salarie['Numero_Securite_Sociale_Salaries'],13 ,2);
$recup_sexe = $dpae->getSexeSalarie();
if($recup_sexe == 1) {
$recup_sexe = "M";
}
if ($recup_sexe == 2) {
$recup_sexe = "F";
}
$recup_dep_naissance = $dpae->getDepartementNaissanceSalarie();
$nom_salarie = strtoupper($recup_nom);
$nom_salarie = str_replace("'", "-", $nom_salarie);
$nom_salarie = str_replace(" ", "-", $nom_salarie);
$cheminDue = $webPath .'/var/due/txt/due-';
if (file_exists($cheminDue.$dpae->getIdContrat().".txt")) {
unlink($cheminDue.$dpae->getIdContrat().".txt");
}
$monfichier = fopen($cheminDue.$dpae->getIdContrat().".txt", 'a+');
$raison_social ="GUNSMOKE";
$adresse = "1TER RUE MORERE";
$adresse2 = "";
$cp="75014";
$ville="PARIS";
$tel= "0672573540";
$contenu = "";
$contenu = $raison_social."".$dpae->getIdContrat();
$contenu = str_pad($contenu, 14);
fputs($monfichier, $contenu);
fputs($monfichier, "DUE");
fputs($monfichier, " ");
//C_ADR_RET_AR
$mail = str_pad("due@gunsmoke.fr", 30);
fputs($monfichier, $mail);
//N_LG_MESS
fputs($monfichier, " 912");
//C_VERSION
fputs($monfichier, "120");
//C_RET_AR_LOT
fputs($monfichier, " ");
//LIBRE
fputs($monfichier, " ");
fputs($monfichier, " ");
fputs($monfichier, " ");
//D_CREATION
fputs($monfichier, " ");
//H_CREATION
fputs($monfichier, " ");
//C_URSSAF
fputs($monfichier, "310");
//N_SIRET
fputs($monfichier, "51871382100032");
fputs($monfichier, " ");
//L_RAISON_SOC_1
$raison_social = str_pad($raison_social, 32);
fputs($monfichier, $raison_social);
fputs($monfichier, " ");
//L_ADR_EMP_1
$adresse = str_pad($adresse, 32);
fputs($monfichier, $adresse);
//L_ADR_EMP_2
$adresse2 = str_pad($adresse2, 32);
fputs($monfichier, $adresse2);
//C_POSTAL_EMP
$cp = str_pad($cp, 5);
fputs($monfichier, $cp);
//L_BUR_DIST_EMP
$ville = str_pad($ville, 27);
fputs($monfichier, $ville);
//L_NOM_PATRO_SAL
$recup_nom = str_pad($recup_nom, 32);
fputs($monfichier, $recup_nom);
//L_PRENOMS_SAL
$recup_prenom = str_pad($recup_prenom, 32);
fputs($monfichier, $recup_prenom);
//N_SECU_SOC
fputs($monfichier, $recup_numero_secu);
//D_NAISSANCE_SAL
fputs($monfichier, $recup_naissance);
//L_LIEU_NAISS_SAL
$recup_lieu_naissance = str_pad($recup_lieu_naissance, 24);
fputs($monfichier, $recup_lieu_naissance);
fputs($monfichier, " ");
fputs($monfichier, $dpae->getDateDebContrat());
fputs($monfichier, "0800");
fputs($monfichier, " ");
/////////////
//EMPLOYEUR//
/////////////
fputs($monfichier, " ");
$raison_social = str_pad($raison_social, 32);
fputs($monfichier, $raison_social);
//N_TEL_EMP
$tel = str_pad($tel, 11);
fputs($monfichier, $tel);
fputs($monfichier, " ");
//C_ORIG_SAISIE
fputs($monfichier, " ");
//C_NAF_NN
fputs($monfichier, "5911A ");
////////////
//SALARIE //
////////////
$recup_nom = str_pad($recup_nom, 32);
fputs($monfichier, $recup_nom);
fputs($monfichier, $recup_sexe);
fputs($monfichier, " ");
fputs($monfichier, $recup_dep_naissance);
fputs($monfichier, " ");
//C_TYPE_CONTRAT
fputs($monfichier, "1");
//D_FIN_CDD
fputs($monfichier, $dpae->getDateFinContrat());
fputs($monfichier, " ");
//N_JJ_ESSAI
fputs($monfichier, "001");
fputs($monfichier, " ");
//Code centre de médecine du travail
fputs($monfichier, "MT176");
fputs($monfichier, " \n");
fclose($monfichier);
$contrat->setStatutUrssaf('due-'.$dpae->getIdContrat().'.txt')
->setDateUrssaf(new \DateTime())
;
$contrat->getSalarie()->getInfoSalarie()->initEncryptionKey($webPath)->persistContent();
$contratRepository->add($contrat);
header('Content-Type: text/plain');
header('Content-Disposition: attachment; filename="'.$dpae->getIdContrat().'.txt');
$fileContent = file_get_contents($cheminDue.$dpae->getIdContrat().".txt");
echo $fileContent;
exit;
}
}