<?php
namespace App\Controller;
use App\Entity\Cab;
use App\Entity\Pbareme;
use App\Entity\PNiveau;
use App\Entity\PDossier;
use App\Entity\UsModule;
use App\Entity\LContract;
use App\Entity\Tbulletin;
use App\Entity\UsOperation;
use App\Entity\UsSousModule;
use App\Entity\PdureeContract;
use App\Entity\PnatureContract;
use App\Entity\NatureSalarieCab;
use App\Entity\PNaturesalarieCab;
use App\Entity\NatureSalarieContrat;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Proxies\__CG__\App\Entity\Pbareme as EntityPbareme;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
#[Route('/api')]
class ApiController extends AbstractController
{
private $em;
public function __construct(ManagerRegistry $doctrine)
{
$this->em = $doctrine->getManager();
}
#[Route('/api_getnaturesalarietype/{natureCab}', name: 'api_getnaturesalarietype', options: ['expose' => true])]
public function api_getnaturesalarietype(PNaturesalarieCab $natureCab)
{
$types = self::dropdown($natureCab->getDets(),'nature type');
$contrats = self::dropdown($natureCab->getNature(),'nature contrat');
$niveaux = $this->em->getRepository(PNiveau::class)->findAllNiveauByNatureCab($natureCab);
$niveaux = self::dropdown($niveaux,'profile');
return new JsonResponse(['types' => $types, 'contrats' => $contrats, 'niveaux' => $niveaux]);
}
#[Route('/api_getbareme/{niveau}/{natureCab}', name: 'api_getbareme', options: ['expose' => true])]
public function api_getbaremeprofile(PNiveau $niveau, PNaturesalarieCab $natureCab)
{
$baremes = $this->em->getRepository(PBareme::class)->findBy(['natureCab' => $natureCab, 'niveau' => $niveau]);
$baremes = self::dropdownBareme($baremes,'bareme');
return new JsonResponse($baremes);
}
#[Route('/api_getdureecontrat/{natureContrat}', name: 'api_getdureecontrat', options: ['expose' => true])]
public function api_getdureecontrat(PnatureContract $natureContrat)
{
$dureeContrats = self::dropdown_dure($natureContrat->getPdureeContracts(),'dureƩ contrat');
return new JsonResponse($dureeContrats);
}
#[Route('/api_getbareme_contract/{natureContrat}', name: 'api_getbareme_contract', options: ['expose' => true])]
public function api_getbareme_contract($natureContrat)
{
// $baremes = self::dropdown_bareme($this->em->getRepository(Pbareme::class)->findBy(['designation' => $natureContrat,'Profil' => $profil]),'Choix Bareme');
// $baremes = self::dropdown_bareme($this->em->getRepository(Pbareme::class)->findBy(['designation' => $natureContrat,'Profil' => $profil]),'Choix Bareme');
$queryBuilder = $this->em->createQueryBuilder()
->select('p.id,p.netapayer,p.bareme, p.Profil as profil')
->from(Pbareme::class, 'p')
->innerJoin('p.naturecontrat', 'n')
->Where('n.naturecontrat = :naturecontract')
->andWhere('p.active = 1')
->andWhere('p.classe = :classe or p.classe IS NULL')
->setParameter('naturecontract', $natureContrat)
->setParameter('classe', "Classe 1");
$results = $queryBuilder->getQuery()->getResult();
$baremes = self::dropdown_bareme($results,'Choix Bareme');
return new JsonResponse($baremes);
}
static function dropdown_dure($objects,$choix)
{
$data = "<option selected value=''>Choix ".$choix."</option>";
foreach ($objects as $object) {
$data .="<option value=".$object->getId()." >".$object->getNbrMois()." mois .</option>";
}
return $data;
}
static function dropdown($objects,$choix)
{
$data = "<option selected value=''>Choix ".$choix."</option>";
foreach ($objects as $object) {
$data .="<option value=".$object->getId()." >".$object->getDesignation()."</option>";
}
return $data;
}
static function dropdownBareme($objects,$choix)
{
$data = "<option selected value=''>Choix ".$choix."</option>";
foreach ($objects as $object) {
$data .="<option data-paye=".$object->getNetAPayer()." value=".$object->getId().">".$object->getBareme()."</option>";
}
return $data;
}
static function dropdown_bareme($objects,$choix)
{
$data = "<option data-attr=''s selected value=''>".$choix."</option>";
foreach ($objects as $object) {
$data .="<option data-attr=".$object['netapayer']." value=".$object['id'].">".$object['bareme']." (" .$object['profil']. ")</option>";
}
return $data;
}
public function check($user, $link, $em, $request) {
if($request->getSession()->get("modules") == null or $request->getSession()->get("dossier") == null){
return $this->redirectToRoute('app_site');
}
if(in_array('ROLE_ADMIN', $user->getRoles())) {
$operations = $em->getRepository(UsOperation::class)->findAllBySousModule($link);
return $operations;
}
$dossier = $request->getSession()->get('dossier');
$operations = $em->getRepository(UsOperation::class)->getOperationByLinkSousModule($user, $link, $dossier);
return $operations;
}
public function getBordereauPrixTotal($borederau) {
$montant = 0;
if($borederau->getType() == 'regularisation') {
foreach ($borederau->getActiveBulletins() as $key => $bulletin) {
$montant += $this->em->getRepository(Tbulletin::class)->getNetRegularisation($bulletin->getId());
}
} else {
foreach ($borederau->getActiveBulletins() as $key => $bulletin) {
$montant += $this->em->getRepository(Tbulletin::class)->getNetAPayeByDevise($bulletin->getId());
}
}
return round($montant, 2);
}
#[Route('/cab', name: 'api_cab', options: ['expose' => true])]
public function api_cab()
{
// dd(ini_get('max_execution_time'));
$data = [];
$cabs = $this->em->getRepository(Cab::class)->findBy(['flag1' => 0]);
foreach ($cabs as $key => $cab) {
$dets = [];
foreach ($cab->getDets() as $key => $det) {
$personnels = [];
foreach ($det->getDets() as $key => $detTechnique) {
array_push($personnels, [
'quantite' => $detTechnique->getQuantite(),
'prixUnitaire' => $detTechnique->getPrixUnitaire(),
'article' => $detTechnique->getArticle(),
'swift' => $detTechnique->getSwift(),
'banque' => $detTechnique->getBanque(),
'adresse' => $detTechnique->getAdresse(),
'observation' => $detTechnique->getObservation() ?? '',
]);
}
array_push($dets, [
'rassembleurId' => $det->getRassembleurId(),
'descriptionRassembleur' => $det->getDescriptionRassembleur(),
'montantInitialRassembleur' => $det->getMontantInitialRassembleur(),
'montantInitialRassembleurMad' => $det->getMontantMad(),
'quantiteRassembleur' => $det->getQuantiteRassembleur(),
'compteComptable' => $det->getCompteComptable(),
'sens' => $det->getSens(),
'details' => $personnels
]);
}
array_push($data, [
'id' => $cab->getId(),
'naturePieceId' => $cab->getNaturePiece()->getId(),
'typePiece' => $cab->getTypePiece(),
'dateOperation' => date_format($cab->getDateOperation(), 'Y-m-d H:i:s'),
'autreInformation' => $cab->getAutreInformation(),
'typePaiement' => $cab->getTypePaiement(),
'idSite' => $cab->getIdSite(),
'descriptionSite' => $cab->getDescriptionSite(),
'montantInitial' => $cab->getMontantInitial(),
'descriptionPiece' => $cab->getDescriptionPiece(),
'idTierPiece' => $cab->getIdTierPiece(),
'devise' => $cab->getDevise(),
'designiationPiece' => $cab->getDesigniationPiece(),
'uniqueId' => $cab->getUniqueId(),
'details' => $dets
]);
}
// dd($data[0]);
return new JsonResponse($data);
}
#[Route('/cab/{cab}', name: 'api_cab_flag', options: ['expose' => true])]
public function api_cab_flag(Cab $cab)
{
$cab->setFlag1(1);
$this->em->flush();
return new Response('ok');
}
}