<?php
namespace App\Service;
use App\Repository\CodensRepository;
use App\Repository\CodinseeRepository;
use App\Repository\DepartementRepository;
use App\Repository\RestaurantRepository;
use CallbackFilterIterator;
use DateTime;
use Symfony\Component\Serializer\SerializerInterface;
class AgentService {
protected $resultRestoRep;
protected $serializer;
protected $depRep;
protected $codensRep;
protected $cd;
public function __construct(RestaurantRepository $rep,
SerializerInterface $serializer,
DepartementRepository $depRep,
CodensRepository $codensRep,
CodinseeRepository $cd){
$this->resultRestoRep=$rep;
$this->serializer=$serializer;
$this->depRep=$depRep;
$this->codensRep=$codensRep;
$this->cd=$cd;
}
public function showResultByCP($value){
$queryResult=$this->resultRestoRep->getItemByCP($value);
return $this->serializer->serialize($queryResult, 'json');
}
public function showResultByID($id){
$queryResult=$this->resultRestoRep->getItemById($id);
return $this->serializer->serialize($queryResult,"json");
}
public function alterCodensValue($codens,$id){
$data=$this->resultRestoRep->updateByCodens($codens,$id);
$a=["queryResponse"=>$data];
return $this->serializer->serialize($a,'json');
}
public function alterCodensValueForToFileWhoHaveBothCdns($codensSource,$codensTarget){
$data=$this->resultRestoRep->alterCodensValueForToFileWhoHaveBothCdns($codensSource, $codensTarget);
$a=["queryResponse"=>$data];
return $this->serializer->serialize($a,'json');
}
public function createCodens($dep,$id1,$id2):string{
$newCodens=$this->pushCodens($dep);
$codens="id_".$dep."_".$newCodens;
$this->codensRep->setMaxValueCodens($dep,$newCodens);
$response=$this->resultRestoRep->createByCodens($codens,$id1,$id2);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
/**
* @return integer id de la fiche dupliquée
*/
public function duplicateFiche($codens,$id,$dep){
$newCodens=0;
$codens2="";
if($codens =="no-cdns"){
$newCodens=$this->pushCodens($dep);
$codens2="id_".$dep."_".$newCodens;
$this->codensRep->setMaxValueCodens($dep,$newCodens);
$this->resultRestoRep->createCodensWhenDuplicateFiche($codens2,$id);
}
$id=$this->resultRestoRep->duplicateFiche($codens, $id, $codens2);
return $id;
}
/*public function createCodensWhenDuplicateFiche($dep,$id,$newCodens):string{
$codens="id_".$newCodens;
$this->codensRep->setMaxValueCodens($dep,$newCodens);
$response=$this->resultRestoRep->createCodensWhenDuplicateFiche($codens,$id);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}*/
public function pushCodens($dep){
$lastCodens=$this->codensRep->getLastCodens($dep);
$newCodens=++$lastCodens;
return $newCodens;
}
public function dlink($id){
$response=$this->resultRestoRep->restoreDefaultValueCodens($id);
$a= ["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function dlinkV2($id1,$id2){
$response=$this->resultRestoRep->restoreDefaultValueCodensIftwo($id1,$id2);
$a= ["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function pushCommentaire($codens,$id,$comments){
$response=$this->resultRestoRep->pushCommentaire($codens,$id,$comments);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function deleteCommentaire($id,$cdns){
$response=$this->resultRestoRep->deleteCommentaire($id,$cdns);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setEvenement($evenement, $codeSaisie,$codens,$comment,$id){
$response=$this->resultRestoRep->setEvenement($evenement, $codeSaisie,$codens,$comment,$id);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function closeEtab($id,$codens,$comment){
$response=$this->resultRestoRep->closeEtab($id,$codens,$comment);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setPasGarder($id,$codens){
$response=$this->resultRestoRep->setPasGarder($id,$codens);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function undoPasGarder($id,$codens){
$response=$this->resultRestoRep->undoPasGarder($id,$codens);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function deleteEvenement($codens,$id){
$response =$this->resultRestoRep->supprEvenement($codens,$id);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function getRappel($dep){
$response=$this->resultRestoRep->getRappel($dep);
return $this->serializer->serialize($response,'json');
}
public function setRappel($codens, $id){
$response=$this->resultRestoRep->setToRappel($codens,$id);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function getFicheToValidate($dep){
return $this->resultRestoRep->getFicheToValidate($dep);
}
public function setFicheValidated($codens,$id){
$dateValidation=(new DateTime("now"))->format("Y-m-d H:i:s");
$response=$this->resultRestoRep->setFicheValidated($codens,$id,$dateValidation);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function reverseRappel($codens,$id){
$response=$this->resultRestoRep->reverseRappel($codens,$id);
$a=["queryResponse"=>$response];
return $this->serializer->serialize($a,'json');
}
public function getDepByUserId($id){
$response=$this->depRep->getDepByUseridRes($id);
return $this->serializer->serialize($response,'json');
}
public function getAccountToDo($dep){
$response=$this->resultRestoRep->getAccountToDo($dep);
$a=["count"=>$response];
return $this->serializer->serialize($a,'json');
}
public function getAccountDepDone($dep){
$response=$this->resultRestoRep->getAccountDepDone($dep);
$a=["count"=>$response];
return $this->serializer->serialize($a,'json');
}
public function getAccountRappel($dep){
$response=$this->resultRestoRep->getAccountRappel($dep);
$a=["count"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setChagementAdresse($id,$cdns){
$response=$this->resultRestoRep->setChagementAddress($id,$cdns);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxFastFood($id,$isFastFood){
$response=$this->resultRestoRep->setCheckBoxFastFood($id,$isFastFood);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxRestaurant($id,$isRestaurant){
$response=$this->resultRestoRep->setCheckBoxRestaurant($id,$isRestaurant);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxCreperie($id,$isCreperie){
$response=$this->resultRestoRep->setCheckBoxCreperie($id,$isCreperie);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxBrasserie($id,$isBrasserie){
$response=$this->resultRestoRep->setCheckBoxBrasserie($id,$isBrasserie);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxPizzeria($id,$isPizzeria){
$response=$this->resultRestoRep->setCheckBoxPizzeria($id,$isPizzeria);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxBoulangerie($id,$isBoulangerie){
$response=$this->resultRestoRep->setCheckBoxBoulangerie($id,$isBoulangerie);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxBar($id,$isBar){
$response=$this->resultRestoRep->setCheckBoxBar($id,$isBar);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxMonde($id,$isCM){
$response=$this->resultRestoRep->setCheckBoxMonde($id,$isCM);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxCafe($id,$isCafe){
$response=$this->resultRestoRep->setCheckBoxCafe($id,$isCafe);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setCheckBoxSalonThe($id,$isSalonThe){
$response=$this->resultRestoRep->setCheckBoxSalonThe($id,$isSalonThe);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function seeAllAboutFiche($id){
$response=$this->resultRestoRep->getItemById($id);
return $this->serializer->serialize($response,'json');
}
public function showHistorical($dep){
$response =$this->resultRestoRep->showHistorical($dep);
return $this->serializer->serialize($response,'json');
}
public function showRestoByCodens($codens){
$response=$this->resultRestoRep->findByCodens($codens);
return $this->serializer->serialize($response,'json');
}
public function removeToListFicheValided($codens, $id){
$response=$this->resultRestoRep->removeToListFicheValided($codens,$id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function undo($id){
$response=$this->resultRestoRep->undo($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function changeName($id,$newDenomination){
$response=$this->resultRestoRep->updateDenominationF($id,$newDenomination);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function changeAddress($id,$numvoie,$typevoie,$nomvoie,$codpost,$commune,$villenorm,$compvoie){
$response=$this->resultRestoRep-> updateAdresse($id,$numvoie,$typevoie,$nomvoie,$codpost,$commune,$villenorm,$compvoie);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setNomOk($id){
$response=$this->resultRestoRep->setNomOK($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function unSetNomOk($id){
$response=$this->resultRestoRep->unSetNomOK($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setAdresseOk($id){
$response=$this->resultRestoRep->setAdresseOK($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function unsetAdresseOk($id){
$response=$this->resultRestoRep->unsetAdresseOK($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setSirenOk($id,$siren){
$response=$this->resultRestoRep->setSirenOk($id,$siren);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function unsetSirenOk($id,$siren){
$response=$this->resultRestoRep->unsetSirenOk($id,$siren);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function undoSirenOk($id){
$response=$this->resultRestoRep->undoSirenOk($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function setTelOk($id,$tel){
$response=$this->resultRestoRep->setTelOk($id,$tel);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function changeTelOk($id,$tel){
$response=$this->resultRestoRep->changeTelOk($id,$tel);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function undoTelOk($id){
$response=$this->resultRestoRep->undoTelOk($id);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function supprTel($id,$tel){
$response=$this->resultRestoRep->supprTel($id,$tel);
$a=["response"=>$response];
return $this->serializer->serialize($a,'json');
}
public function createMltiCodens($jsons):string{
//var_dump($jsons);
$array=[];
$dep="";
$tmps=$jsons[1];
foreach( $tmps as $json ){
array_push($array,$json['id']);
}
var_dump($array);
$dep=$jsons[0]["dep"];
var_dump($dep);
$newCodens=$this->pushCodens($dep);
var_dump($newCodens);
$codens="id_".$dep."_".$newCodens;
$this->codensRep->setMaxValueCodens($dep,$newCodens);
$this->resultRestoRep->createMultiCodens($codens,$array);
$a=["queryResponse"=>"1"];
return $this->serializer->serialize($a,'json');
}
public function dlinkAllIdLinked($datas){
$array=[];
foreach($datas as $data ){
array_push($array,$data['id']);
}
var_dump($array);
$r= $this->resultRestoRep->dlinkAllIdLinked($array);
$a=["queryResponse"=>$r];
return $this->serializer->serialize($a,'json');
}
public function getCodinseeByDep($dep){
return $this->cd->getCodinseeByDep($dep);
}
public function getFicheFromSpecialDepToValidate($dep,$codinsee){
return $this->resultRestoRep->getFicheTovalidateForSpecifiqueDepartement($dep,$codinsee);
}
public function getNombreFicheTOvalidateByCodinsee($dep,$codinsee){
return $this->resultRestoRep->getNombreFicheTOvalidateByCodinsee($dep,$codinsee);
}
public function getIdForExecuteProprietiesModificationFromMap(array $contents)
{
try {
$id = null;
if ($contents["cdns"] === "no-cdns") {
$id = $this->duplicateFiche($contents["cdns"], $contents["id"], $contents["dep"]);
} elseif($contents["cdns"] != "no-cdns" ) {
$items = $this->resultRestoRep->findBy(["codens" => $contents["cdns"]]);
if (!empty($items)) {
$duplicatedItems = array_filter($items, function ($item) {
return $item->getDuplicated();
});
$ids = array_map(function ($item) {
return $item->getId();
}, $duplicatedItems);
if (!empty($ids)) {
$id = reset($ids);
}
}
if(empty($id)) {
$id = $this->duplicateFiche($contents["cdns"], $contents["id"], $contents["dep"]);
return $id;
}
}
if (empty($id)) {
throw new \Exception("ID non défini pour la mise à jour du POI.");
}
return $id;
} catch (\Exception $e) {
return $this->serializer->serialize(["erreur" => $e->getMessage()], 'json');
}
}
}