<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\Controller\Annotations\Get;
use FOS\RestBundle\Controller\Annotations\Post;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\Security\Core\Encoder\EncoderFactory;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use \Liip\ImagineBundle\Imagine\Cache\CacheManager;
use App\Entity\User;
use App\Entity\Annonce;
use App\Entity\Photo;
use App\Entity\Message;
class ApiController extends AbstractFOSRestController {
private $formFactory;
private $client;
private $filterService;
public function __construct(EncoderFactory $formFactory, HttpClientInterface $client) {
$this->formFactory = $formFactory;
$this->client = $client;
}
private function generateUniqueFileName() {
return md5(uniqid());
}
##########################################################Liste des catégories#############################################
/**
* @Get("/api/categories")
*/
public function getcategories(Request $request,CacheManager $imagineCacheManager) {
try {
$em = $this->getDoctrine()->getManager();
$categories = $em->getRepository('App\Entity\Categorie')->findAll();
$formatted = [];
foreach ($categories as $categorie) {
$photo = $categorie->getPhoto();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$photo = $baseurl . '/uploads/categories/' . $categorie->getPhoto();
$annonces = $em->getRepository('App\Entity\Annonce')->apipubliecategorie($categorie);
$nombre_annonce = count($annonces);
$formatted[] = [
'id' => trim($categorie->getId()),
'nom' => $categorie->getNom(),
'slug' => $categorie->getSlug(),
'photo' => $photo,
'nb_annonces' => $nombre_annonce
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des catégories et leurs sours catégories#############################################
/**
* @Get("/api/categories-sous-categories")
*/
public function getcategoriesetsouscategories(Request $request) {
try {
$em = $this->getDoctrine()->getManager();
$categories = $em->getRepository('App\Entity\Categorie')->findAll();
$formatted = [];
foreach ($categories as $categorie) {
$tableau = array();
$photo = $categorie->getPhoto();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$photo = $baseurl . '/uploads/categories/' . $categorie->getPhoto();
$sous_categories = $categorie->getSouscategories();
$array = [];
foreach ($sous_categories as $sous) {
$array[] = [
'nom' => $sous->getNom(),
'slug' => $sous->getSlug(),
];
}
$formatted[] = [
'id' => trim($categorie->getId()),
'nom' => $categorie->getNom(),
'slug' => $categorie->getSlug(),
'photo' => $photo,
'souscategorie' => $array
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des sous catégories/ par catégorie#############################################
/**
* @Get("/api/sous-categories/{slug}")
*/
public function getsouscategories(Request $request) {
try {
$slug = $request->get('slug');
$em = $this->getDoctrine()->getManager();
$categorie = $em->getRepository('App\Entity\Categorie')->findOneBySlug($slug);
$souscategories = $em->getRepository('App\Entity\SousCategorie')->findByCategorie($categorie);
$formatted = [];
foreach ($souscategories as $sous) {
$formatted[] = [
'id' => trim($sous->getId()),
'nom' => $sous->getNom(),
'slug' => $sous->getSlug()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des sous catégories#############################################
/**
* @Get("/api/sous-categories")
*/
public function souscategories(Request $request) {
try {
$em = $this->getDoctrine()->getManager();
$souscategories = $em->getRepository('App\Entity\SousCategorie')->findAll();
$formatted = [];
foreach ($souscategories as $sous) {
$photo = $sous->getPhoto();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$photo = $baseurl . '/uploads/souscategories/' . $sous->getPhoto();
$annonces = $em->getRepository('App\Entity\Annonce')->apipubliesouscategorie($sous);
$nombre_annonces = count($annonces);
$catgeorie = $sous->getCategorie()->getSlug();
$formatted[] = [
'id' => trim($sous->getId()),
'nom' => $sous->getNom(),
'slug' => $sous->getSlug(),
'photo' => $photo,
'annonces' => $nombre_annonces,
'categorie' => $catgeorie
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des villes#############################################
/**
* @Get("/api/villes")
*/
public function getvilles() {
try {
$em = $this->getDoctrine()->getManager();
$villes = $em->getRepository('App\Entity\Ville')->findAll();
$formatted = [];
foreach ($villes as $ville) {
$formatted[] = [
'id' => trim($ville->getId()),
'nom' => $ville->getNom(),
'slug' => $ville->getSlug()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des villes et leurs délégations#############################################
/**
* @Get("/api/villes-delegations")
*/
public function getvillesdelegations() {
try {
$em = $this->getDoctrine()->getManager();
$villes = $em->getRepository('App\Entity\Ville')->findAll();
$formatted = [];
foreach ($villes as $ville) {
$delegations = $ville->getDelegations();
foreach ($delegations as $delegation) {
$formatted_delegations[] = [
'id' => trim($delegation->getId()),
'nom' => $delegation->getNom()];
}
$formatted[] = [
'id' => trim($ville->getId()),
'nom' => $ville->getNom(),
'slug' => $ville->getSlug(),
'delegations' => $formatted_delegations
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des délégations par ville#############################################
/**
* @Get("/api/delegations/{slug}")
*/
public function getdelegations(Request $request) {
try {
$slug = $request->get('slug');
$em = $this->getDoctrine()->getManager();
$ville = $em->getRepository('App\Entity\Ville')->findOneBySlug($slug);
$delegations = $em->getRepository('App\Entity\Delegation')->findByVille($ville);
$formatted = [];
foreach ($delegations as $delegation) {
$formatted[] = [
'id' => trim($delegation->getId()),
'nom' => $delegation->getNom(),
'slug' => $delegation->getSlug()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Get("/api/delegations")
*/
public function delegations(Request $request) {
try {
$slug = $request->get('slug');
$em = $this->getDoctrine()->getManager();
$delegations = $em->getRepository('App\Entity\Delegation')->findAll();
$formatted = [];
foreach ($delegations as $delegation) {
$formatted[] = [
'id' => trim($delegation->getId()),
'nom' => $delegation->getNom(),
'slug' => $delegation->getSlug()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Paramètres du site par référence#############################################
/**
* @Get("/api/site/{reference}")
*/
public function site(Request $request) {
try {
$reference = $request->get('reference');
$em = $this->getDoctrine()->getManager();
$site = $em->getRepository('App\Entity\Site')->findOneByReference($reference);
$logo = $site->getLogo();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/sites/' . $site->getLogo();
$logoblanc = $site->getLogo();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logoblanc = $baseurl . '/uploads/sites/' . $site->getLogoblanc();
$marker = $site->getMarker();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$marker = $baseurl . '/uploads/markers/' . $site->getMarker();
$favicon = $site->getFavicon();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$favicon = $baseurl . '/uploads/favicons/' . $site->getFavicon();
$formatted = [];
$formatted[] = [
'id' => trim($site->getId()),
'nom' => $site->getNom(),
'reference' => $site->getReference(),
'couleur_principale' => $site->getCouleurprincipale(),
'couleur_secondaire' => $site->getCouleursecondaire(),
'logo' => $logo,
'logoblanc' => $logoblanc,
'facebook' => $site->getFacebook(),
'instagram' => $site->getInstagram(),
'lien' => $site->getLien(),
'adresse' => $site->getAdresse(),
'email' => $site->getEmail(),
'telephone' => $site->getTelephone(),
'marker' => $marker,
'favicon' => $favicon,
'oldcolor' => $site->getOld_color(),
];
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Route("/api/annonces", name="annonces")
*/
public function annonces(Request $request) {
$em = $this->getDoctrine()->getManager();
/* try {*/
$annonces = $em->getRepository("App\Entity\Annonce")->api();
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
/* } catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}*/
return new JsonResponse($formatted);
}
/**
* @Get("/api/sliders-home")
*/
public function getslidershome(Request $request) {
try {
$em = $this->getDoctrine()->getManager();
$slider = $em->getRepository('App\Entity\Slider')->find(1);
/* * ***********************Slider home 1********** */
$slider1 = $slider->getSliderhome1();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$slider1 = $baseurl . '/uploads/sliders/' . $slider1;
$formatted = [];
$formatted[] = [
'id' => trim($slider->getId()),
'slider_home_1' => $slider1,
];
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * *************************************************************Liste des annonces premium***************************************** */
/**
* @Route("/api/annonces-premium", name="annonces-premium")
*/
public function annoncespremium(Request $request) {
$em = $this->getDoctrine()->getManager();
try {
$annonces = $em->getRepository("App\Entity\Annonce")->apipremium();
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'vue' => $annonce->getVue()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * *********************************************Les partenaires************************************************* */
/**
* @Route("/api/partenaires", name="partenaires")
*/
public function partenaires(Request $request) {
$em = $this->getDoctrine()->getManager();
try {
$partenaires = $em->getRepository("App\Entity\User")->partenairesapi();
$formatted = [];
foreach ($partenaires as $partenaire) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/partenaires/' . $partenaire->getLogo();
$formatted[] = [
'id' => trim($partenaire->getId()),
'matricule' => $partenaire->getMatricule(),
'raison' => $partenaire->getRaison(),
'prenom_gerant' => $partenaire->getPrenom(),
'nom_gerant' => $partenaire->getNom(),
'logo' => $logo,
'adresse' => $partenaire->getAdresse(),
'latitude' => $partenaire->getLatitude(),
'longitude' => $partenaire->getLongitude(),
'telephone' => $partenaire->getTelephone(),
'site' => $partenaire->getSite(),
'facebook' => $partenaire->getFacebook(),
'instagram' => $partenaire->getInstagram(),
'username' => $partenaire->getUsername(),
'email' => $partenaire->getEmail()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * *********************************************Les partenaires premium************************************************* */
/**
* @Route("/api/partenaires-premium", name="partenaires-premium")
*/
public function partenairespremium(Request $request) {
$em = $this->getDoctrine()->getManager();
try {
$partenaires = $em->getRepository("App\Entity\User")->partenairespremiumapi();
$formatted = [];
foreach ($partenaires as $partenaire) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/partenaires/' . $partenaire->getLogo();
$formatted[] = [
'id' => trim($partenaire->getId()),
'matricule' => $partenaire->getMatricule(),
'raison' => $partenaire->getRaison(),
'prenom_gerant' => $partenaire->getPrenom(),
'nom_gerant' => $partenaire->getNom(),
'logo' => $logo,
'adresse' => $partenaire->getAdresse(),
'latitude' => $partenaire->getLatitude(),
'longitude' => $partenaire->getLongitude(),
'telephone' => $partenaire->getTelephone(),
'site' => $partenaire->getSite(),
'facebook' => $partenaire->getFacebook(),
'instagram' => $partenaire->getInstagram(),
'username' => $partenaire->getUsername(),
'email' => $partenaire->getEmail(),
'annonces' => count($partenaire->getAnnonces())
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * **************************************************************Les 12 annonces de la page home************************************* */
/**
* @Route("/api/annonces-home", name="annonces-home")
*/
public function annonceshome(Request $request) {
$em = $this->getDoctrine()->getManager();
try {
$annonces = $em->getRepository("App\Entity\Annonce")->apihome();
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'vue' => $annonce->getVue(),
'user' => $username
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Paramètres du site par référence#############################################
/**
* @Get("/api/sites")
*/
public function getsite(Request $request) {
try {
$reference = $request->get('reference');
$em = $this->getDoctrine()->getManager();
$sites = $em->getRepository('App\Entity\Site')->findAll();
$formatted = [];
foreach ($sites as $site) {
$logo = $site->getLogo();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/sites/' . $site->getLogo();
$block = $site->getBlock();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$block = $baseurl . '/uploads/sites/' . $site->getBlock();
$marker = $site->getMarker();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$marker = $baseurl . '/uploads/markers/' . $site->getMarker();
$favicon = $site->getFavicon();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$favicon = $baseurl . '/uploads/favicons/' . $site->getFavicon();
$formatted[] = [
'id' => trim($site->getId()),
'nom' => $site->getNom(),
'reference' => $site->getReference(),
'couleur_principale' => $site->getCouleurprincipale(),
'couleur_secondaire' => $site->getCouleursecondaire(),
'logo' => $logo,
'block'=>$block,
'facebook' => $site->getFacebook(),
'instagram' => $site->getInstagram(),
'lien' => $site->getLien(),
'adresse' => $site->getAdresse(),
'email' => $site->getEmail(),
'telephone' => $site->getTelephone(),
'marker' => $marker,
'favicon' => $favicon
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * ************************************Liste des business PLUS******************************** */
/**
* @Get("/api/business")
*/
public function getbusiness(Request $request) {
try {
$em = $this->getDoctrine()->getManager();
$business = $em->getRepository('App\Entity\Business')->findAll();
$formatted = [];
foreach ($business as $bus) {
$logo = $bus->getLogo();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/business/' . $logo;
$formatted[] = [
'id' => trim($bus->getId()),
'nom' => $bus->getNom(),
'lien' => $bus->getLien(),
'logo' => $logo,
'slug' => $bus->getSlug(),
'description' => $bus->getDescription()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
##########################################################Liste des sous catégories#############################################
/**
* @Get("/api/bannieres")
*/
public function bannieres(Request $request) {
try {
$slug = $request->get('slug');
$em = $this->getDoctrine()->getManager();
$bannieres = $em->getRepository('App\Entity\Banniere')->findByActive(true);
$formatted = [];
foreach ($bannieres as $banniere) {
$gallerie = array();
$photos = $banniere->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/bannieres/' . $photo->getUrl();
$gallerie[] = [
'id' => trim($photo->getId()),
'url' =>$image,
];
}
}
$formatted[] = [
'id' => trim($banniere->getId()),
'nom' => $banniere->getNom(),
'slug' => $banniere->getSlug(),
'gallerie' => $gallerie
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * *********************************************Les partenaires************************************************* */
/**
* @Route("/api/showrooms", name="showrooms")
*/
public function showrooms(Request $request) {
$em = $this->getDoctrine()->getManager();
try {
$partenaires = $em->getRepository("App\Entity\User")->partenairesapi();
$formatted = [];
foreach ($partenaires as $partenaire) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/partenaires/' . $partenaire->getLogo();
/* * ***************************Récupérer les annonces par partenaire******************************* */
$annonces = $em->getRepository("App\Entity\Annonce")->annoncesbypartenaire($partenaire);
$nombre_annonces = count($annonces);
/* * ************************** Récupérer les annonces par catégorie et partenaire*********************** */
$categories = $em->getRepository("App\Entity\Categorie")->findAll();
$array = [];
foreach ($categories as $categorie) {
$annonces = $em->getRepository("App\Entity\Annonce")->annoncesbypartenaireandcategorie($partenaire, $categorie);
$nb = count($annonces);
$array[] = [
'nom' => $categorie->getNom(),
'nb_annonces' => $nb,
];
}
$formatted[] = [
'id' => trim($partenaire->getId()),
'raison' => $partenaire->getRaison(),
'logo' => $logo,
'nombre_annonces' => $nombre_annonces,
'categories' => $array,
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * ********************************************Liste des annonces par sous catégorie************************************* */
/**
* @Route("/api/annonces/categorie/{slug}", name="annonces-par-categorie")
*/
public function annoncesparcategorie(Request $request, $slug) {
$em = $this->getDoctrine()->getManager();
try {
$souscategorie = $em->getRepository("App\Entity\SousCategorie")->findOneBySlug($slug);
$annonces = $em->getRepository("App\Entity\Annonce")->apipubliesouscategorie($souscategorie);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
}
return new JsonResponse($formatted);
}
/* * *********************************************Détails des partenaires************************************************* */
/**
* @Route("/api/partenaire/{raison}", name="details-partenaire")
*/
public function detailpartenaire(Request $request) {
$em = $this->getDoctrine()->getManager();
try {
$raison = $request->get('raison');
$partenaire = $em->getRepository("App\Entity\User")->findOneByRaison($raison);
$annonces = $em->getRepository("App\Entity\Annonce")->annoncesbypartenaire($partenaire);
foreach ($annonces as $annonce) {
$gallerie = array();
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$annonces[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
$formatted = [];
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/partenaires/' . $partenaire->getLogo();
$formatted[] = [
'id' => trim($partenaire->getId()),
'matricule' => $partenaire->getMatricule(),
'raison' => $partenaire->getRaison(),
'prenom_gerant' => $partenaire->getPrenom(),
'nom_gerant' => $partenaire->getNom(),
'inscription' => $partenaire->getDate_inscription()->format('M-Y'),
'logo' => $logo,
'adresse' => $partenaire->getAdresse(),
'latitude' => $partenaire->getLatitude(),
'longitude' => $partenaire->getLongitude(),
'telephone' => $partenaire->getTelephone(),
'site' => $partenaire->getSite(),
'facebook' => $partenaire->getFacebook(),
'instagram' => $partenaire->getInstagram(),
'username' => $partenaire->getUsername(),
'email' => $partenaire->getEmail(),
'annonces' => $annonces
];
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * *********************************************Détail d'une annonce************************************************* */
/**
* @Route("/api/annonce/{slug}", name="details-annonce")
*/
public function detailsannonce(Request $request, $slug) {
$em = $this->getDoctrine()->getManager();
try {
$annonce = $em->getRepository("App\Entity\Annonce")->findOneBySlug($slug);
$annonce->setVue($annonce->getVue()+1);
$em->flush();
$formatted = [];
$gallerie = [];
$gallerie = array();
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
$gallerie[] = [
'id' => trim($photo->getId()),
'url' =>$image,
];
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$logo="";
$username = $user->getRaison();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
if($user->getLogo()!=null){
$logo = $baseurl . '/uploads/partenaires/' . $user->getLogo();
}
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
$logo="";
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
if($user->getLogo()!=null){
$logo = $baseurl . '/uploads/particuliers/' . $user->getLogo();
}
}
$raison="";
if($user->getRaison()!=null){
$raison=$user->getRaison();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'slugsouscategorie' => $annonce->getSouscategorie()->getSlug(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'logo' => $logo,
'adresse' => $user->getAdresse(),
'email' => $user->getEmail(),
'facebook' => $user->getFacebook(),
'instagram' => $user->getInstagram(),
'telephone' => $user->getTelephone(),
'site' => $user->getSite(),
'latitude' => $user->getLatitude(),
'longitude' => $user->getLongitude(),
'vus' => $annonce->getVue(),
'raison'=>$raison
];
$annonce->setVue($annonce->getVue() + 1);
$em->flush();
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * *************************************************************Liste des annonces similaires***************************************** */
/**
* @Route("/api/annonces-similaires/{souscategorie}/{annonce}", name="annonces-similaires")
*/
public function annoncessimilaires(Request $request, $souscategorie, $annonce) {
$em = $this->getDoctrine()->getManager();
try {
$sous = $em->getRepository("App\Entity\SousCategorie")->findOneBySlug($souscategorie);
$annonces = $em->getRepository("App\Entity\Annonce")->similaires($sous, $annonce);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'vue' => $annonce->getVue()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/* * ********************************************Liste des annonces par sous catégorie************************************* */
/**
* @Route("/api/annonces/showroom/{raison}", name="annonces-par-showroom")
*/
public function annoncesparshowroom(Request $request, $raison) {
$em = $this->getDoctrine()->getManager();
try {
$showroom = $em->getRepository("App\Entity\User")->findOneByRaison($raison);
$annonces = $em->getRepository("App\Entity\Annonce")->annoncesbypartenaire($showroom);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
}
return new JsonResponse($formatted);
}
/* * **********************************************************Connexion********************************************** */
/**
* @Get("/api/connexion/{telephone}/{password}")
*/
public function loginAction(Request $request) {
$telephone = $request->get('telephone');
$password = $request->get('password');
$em = $this->getDoctrine()->getManager();
$factory = $this->formFactory;
try {
$user = $em->getRepository("App\Entity\User")->findOneByTelephone($telephone);
$formatted = [];
if (!$user) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Aucun utilisateur trouvé'
];
}
if ($user) {
if (!$user->isEnabled()) {
$formatted = [
'code' => -1,
'id' => '',
'message' => "Votre compte est désactivé, vous n'étes pas autorisé à accéder à votre compte"
];
}
$encoder = $factory->getEncoder($user);
if ($password!=$user->getMot()) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Votre mot de passe est incorrect'
];
}
if ($password==$user->getMot()) {
if ($user->hasRole('ROLE_PARTENAIRE')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher partenaire , veuillez utilisez votre espace adéquat'
];
}
if ($user->hasRole('ROLE_AGENT_ANNONCE')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher responsable , veuillez utilisez votre espace adéquat'
];
}
if ($user->hasRole('ROLE_AGENT_BANNIERE')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher responsable , veuillez utilisez votre espace adéquat'
];
}
if ($user->hasRole('ROLE_ADMIN')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher administrateur , veuillez utilisez votre espace adéquat'
];
}
if ($user->hasRole('ROLE_PARTICULIER')) {
$prenom = "";
if ($user->getPrenom() != null) {
$prenom = $user->getPrenom();
}
$nom = "";
if ($user->getNom() != null) {
$nom = $user->getNom();
}
$logo = "";
if ($user->getLogo() != null) {
$logo = $user->getLogo();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/particuliers/' . $user->getLogo();
}
$formatted = [
'code' => trim(1),
'id' => trim($user->getId()),
'message' => 'Connexion avec succès',
'prenom' => $prenom,
'nom' => $nom,
'photo' => $logo
];
}
}
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Get("/api/inscription/{nom}/{prenom}/{email}/{telephone}/{password}/{reference}")
*/
public function inscription(Request $request, $nom, $prenom, $email, $telephone, $password,$reference) {
try {
$em = $this->getDoctrine()->getManager();
$factory = $this->formFactory;
$formatted = [];
$username = $prenom . ' ' . $nom;
$recherche = $em->getRepository('App\Entity\User')->findOneByUsername($username);
if ($recherche != null) {
$formatted = [
'code' => trim(-2),
'message' => "Le nom d'utilisateur est déja utilisé",
];
}
$recherche3 = $em->getRepository('App\Entity\User')->findOneByTelephone($telephone);
if ($recherche3 != null) {
$formatted = [
'code' => trim(-2),
'message' => "Ce numéro de téléphone est déja utilisé",
];
}
$recherche2 = $em->getRepository('App\Entity\User')->findOneByEmail($email);
if ($recherche2 != null) {
$formatted = [
'code' => trim(-1),
'message' => "L'email est déja utilisé",
];
}
if ($recherche == null && $recherche2 == null && $recherche3 == null) {
$user = new User();
$site = $em->getRepository('App\Entity\Site')->findOneByReference($reference);
$encoder = $factory->getEncoder($user);
$user->addRole('ROLE_PARTICULIER');
$user->setEnabled(true);
$user->setSite_reference($site);
$user->setShown(true);
$user->setUsername($username);
$user->setNom($prenom);
$user->setPrenom($nom);
$user->setSalt(uniqid());
$user->setEmail($email);
$user->setMot($password);
$user->setPassword($encoder->encodePassword($user, $password));
$test = new \DateTime('NOW');
$user->setDate_inscription($test);
$user->setTelephone($telephone);
$em->persist($user);
$em->flush();
$formatted = [
'code' => trim(1),
'message' => "Votre compte a été crée avec succès,Bienvenue sur notre plateforme, veuillez accèder à l'espace de connexion ",
'id_user' => $user->getId(),
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Get("/api/profil/{id}")
*/
public function getprofil(Request $request) {
try {
$id = $request->get('id');
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('App\Entity\User')->find($id);
$logo = "";
if ($user->getLogo() != null) {
$logo = $user->getLogo();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$logo = $baseurl . '/uploads/particuliers/' . $user->getLogo();
}
$ville = "";
if ($user->getVille() != null) {
$ville = $user->getVille()->getNom();
}
$formatted = [];
if (!$user) {
$formatted = [
'code' => trim(1),
'message' => "Aucun utilisateur trouvé",
];
}
if ($user) {
$formatted[] = [
'id' => trim($user->getId()),
'nom' => $user->getNom(),
'prenom' => $user->getPrenom(),
'email' => $user->getEmail(),
'telephone' => $user->getTelephone(),
'username' => $user->getUsername(),
'photo' => $logo,
'adresse' => $user->getAdresse(),
'postal' => $user->getPostal(),
'ville' => $ville
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @POST("/api/modifier-profil")
*/
public function updateprofile(Request $request/* , $id_user, $nom, $prenom, $email, $telephone, $ville, $photo */) {
try {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
$em = $this->getDoctrine()->getManager();
$formatted = [];
$telephone = $data['telephone'];
$email = $data['email'];
$prenom = $data['prenom'];
$nom = $data['nom'];
$ville = $data['ville'];
$postal = $data['postal'];
$photo = $data['photo'];
$id_user = $data['user'];
$adresse= $data['adresse'];
$username=$prenom . ' ' . $nom;
$user = $em->getRepository('App\Entity\User')->find($id_user);
$last_photo=$user->getLogo();
$ville_entity = $em->getRepository('App\Entity\Ville')->findOneBySlug($ville);
$recherche3 = $em->getRepository('App\Entity\User')->findOneByTelephone($telephone);
if ($recherche3 != null && $recherche3 != $user) {
$formatted = [
'code' => trim(-2),
'message' => "Ce numéro de téléphone est déja utilisé",
];
}
$recherche2 = $em->getRepository('App\Entity\User')->findOneByEmail($email);
if ($recherche2 != null && $recherche2 != $user) {
$formatted = [
'code' => trim(-1),
'message' => "L'email est déja utilisé",
];
}
if ($recherche2 == $user && $recherche3 == $user || $recherche2==null || $recherche3==null) {
$photo_name = null;
if ($photo != "") {
$bin_photo = base64_decode($photo);
$size = getImageSizeFromString($bin_photo);
$ext = substr($size['mime'], 6);
$photo_name = md5(uniqid()) . '.' . $ext;
$img_file = 'uploads/particuliers/' . $photo_name;
file_put_contents($img_file, $bin_photo, FILE_APPEND | LOCK_EX);
}
if($photo==""){
$user->setLogo($last_photo);
}
$user->setNom($nom);
$user->setPrenom($prenom);
$user->setTelephone($telephone);
$user->setUsername($username);
$user->setEmail($email);
$user->setLogo($photo_name);
$user->setPostal($postal);
$user->setAdresse($adresse);
$user->setVille($ville_entity);
$em->flush();
$formatted = [
'code' => trim(1),
'message' => "Votre profil a été mis à jour avec succès ",
'id_user' => $user->getId(),
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Route("/api/mes-annonces/{id_user}", name="mes-annonces-api")
*/
public function mesannonces(Request $request, $id_user) {
$em = $this->getDoctrine()->getManager();
try {
$annonces = $em->getRepository("App\Entity\Annonce")->mine($id_user)->getResult();
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'vus' => $annonce->getVue(),
'publie' => $annonce->getPublie(),
'premium' => $annonce->getPremium(),
'expired' => $annonce->getExpired()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @POST("/api/ajouter-annonce")
*/
public function addannonce(Request $request) {
try {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
$em = $this->getDoctrine()->getManager();
$formatted = [];
$libelle = $data['libelle'];
$categorie = $data['categorie'];
$sous = $data['souscategorie'];
$ville = $data['ville'];
$description = $data['description'];
$id_user=$data['user'];
$couverture=$data['couverture'];
$gallerie=$data['gallerie'];
$prix=$data['prix'];
$user = $em->getRepository('App\Entity\User')->find($id_user);
$category_entity=$em->getRepository('App\Entity\Categorie')->findOneBySlug($categorie);
$souscategory_entity=$em->getRepository('App\Entity\Souscategorie')->findOneBySlug($sous);
$ville_entity=$em->getRepository('App\Entity\Ville')->findOneBySlug($ville);
$annonce=new Annonce();
$annonce->setLibelle($libelle);
$annonce->setCategorie($category_entity);
$annonce->setSouscategorie($souscategory_entity);
$annonce->setVille($ville_entity);
$annonce->setDescription($description);
$annonce->setPrix($prix);
$date = new \DateTime('now');
$chaine = $date->format('mdHis');
$annonce->setReference('BM-' . $chaine);
$annonce->setPremium(false);
$annonce->setPublie(false);
$annonce->setExpired(false);
$annonce->setUser($user);
$date_actuelle= date('d-m-Y H:i:s');
$expired_date= date('d-m-Y H:i:s',strtotime('+3 month',strtotime($date_actuelle)));
$annonce->setExpireddate(new \DateTime($expired_date));
$annonce->setVue(0);
$annonce->setSlug($annonce->slugify($libelle));
$couverture_name = null;
if ($couverture != "") {
$bin_couverture= base64_decode($couverture);
$size = getImageSizeFromString($bin_couverture);
$ext = substr($size['mime'], 6);
$couverture_name = md5(uniqid()) . '.' . $ext;
$img_file = 'uploads/annonces/' . $couverture_name;
file_put_contents($img_file, $bin_couverture, FILE_APPEND | LOCK_EX);
$annonce->setCouverture($couverture_name);
}
foreach($gallerie as $gal){
$bin_gal= base64_decode($gal);
$size = getImageSizeFromString($bin_gal);
$ext = substr($size['mime'], 6);
$gal_name = md5(uniqid()) . '.' . $ext;
$img_file = 'uploads/annonces/' . $gal_name;
file_put_contents($img_file, $bin_gal, FILE_APPEND | LOCK_EX);
$photo=new Photo();
$photo->setUrl($gal_name);
$photo->setAnnonce($annonce);
$em->persist($photo);
$em->flush();
}
$em->persist($annonce);
$em->flush();
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'code'=>trim(1),
'message'=>'Votre annonce a été ajoutée avec succès'
];
}
catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @GET("/api/supprimer-annonce/{id_annonce}")
*/
public function supprimerannonce(Request $request,$id_annonce) {
try {
$em = $this->getDoctrine()->getManager();
$annonce = $em->getRepository("App\Entity\Annonce")->find($id_annonce);
$em->remove($annonce);
$em->flush();
$formatted = [
'code' => trim(1),
'id' => "",
'message' => "L'annonce est supprimée"
];
}
catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @GET("/api/supprimer-photo/{id_photo}")
*/
public function supprimerphoto(Request $request,$id_photo) {
try {
$em = $this->getDoctrine()->getManager();
$photo = $em->getRepository("App\Entity\Photo")->find($id_photo);
$photo->setAnnonce(null);
$em->flush();
$em->remove($photo);
$em->flush();
$formatted = [
'code' => trim(1),
'id' => "",
'message' => "La photo est supprimée"
];
}
catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @POST("/api/modifier-annonce")
*/
public function updateannonce(Request $request) {
try {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
$em = $this->getDoctrine()->getManager();
$formatted = [];
$libelle = $data['libelle'];
$categorie = $data['categorie'];
$sous = $data['souscategorie'];
$ville = $data['ville'];
$description = $data['description'];
$id_user=$data['user'];
$id_annonce=$data['id_annonce'];
$couverture=$data['couverture'];
$gallerie=$data['gallerie'];
$prix=$data['prix'];
$user = $em->getRepository('App\Entity\User')->find($id_user);
$category_entity=$em->getRepository('App\Entity\Categorie')->findOneBySlug($categorie);
$souscategory_entity=$em->getRepository('App\Entity\Souscategorie')->findOneBySlug($sous);
$ville_entity=$em->getRepository('App\Entity\Ville')->findOneBySlug($ville);
$annonce=$em->getRepository('App\Entity\Annonce')->find($id_annonce);
$last_couverture=$annonce->getCouverture();
$annonce->setLibelle($libelle);
$annonce->setCategorie($category_entity);
$annonce->setSouscategorie($souscategory_entity);
$annonce->setVille($ville_entity);
$annonce->setDescription($description);
$annonce->setPrix($prix);
$annonce->setUser($user);
$annonce->setSlug($annonce->slugify($libelle));
$couverture_name = null;
if ($couverture != "") {
$bin_couverture= base64_decode($couverture);
$size = getImageSizeFromString($bin_couverture);
$ext = substr($size['mime'], 6);
$couverture_name = md5(uniqid()) . '.' . $ext;
$img_file = 'uploads/annonces/' . $couverture_name;
file_put_contents($img_file, $bin_couverture, FILE_APPEND | LOCK_EX);
$annonce->setCouverture($couverture_name);
}
if($couverture==""){
$annonce->setCouverture($last_couverture);
}
if($gallerie!=""){
foreach($gallerie as $gal){
$bin_gal= base64_decode($gal);
$size = getImageSizeFromString($bin_gal);
$ext = substr($size['mime'], 6);
$gal_name = md5(uniqid()) . '.' . $ext;
$img_file = 'uploads/annonces/' . $gal_name;
file_put_contents($img_file, $bin_gal, FILE_APPEND | LOCK_EX);
$photo=new Photo();
$photo->setUrl($gal_name);
$photo->setAnnonce($annonce);
$em->persist($photo);
$em->flush();
}
}
$em->flush();
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'code'=>trim(1),
'message'=>'Votre annonce a été modifiée avec succès'
];
}
catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Route("/api/annonces/filtrer/{wordkey}/{category}", name="filter-annonces")
*/
public function filterannonces(Request $request, $category,$wordkey) {
$em = $this->getDoctrine()->getManager();
try {
if($category=='all'){
$category_entity='all';
}
if($category!='all'){
$category_entity= $em->getRepository("App\Entity\Categorie")->findOneBySlug($category);
}
$annonces = $em->getRepository("App\Entity\Annonce")->apifiltrer($wordkey,$category_entity);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
}
return new JsonResponse($formatted);
}
/**
* @POST("/api/change-password")
*/
public function chnagepassword(Request $request/* , $id_user, $nom, $prenom, $email, $telephone, $ville, $photo */) {
try {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
$em = $this->getDoctrine()->getManager();
$formatted = [];
$password = $data['password'];
$id_user = $data['user'];
$user = $em->getRepository('App\Entity\User')->find($id_user);
$factory = $this->formFactory;
$encoder = $factory->getEncoder($user);
$user->setPlainpassword($password);
$user->setPassword($encoder->encodePassword($user, $password));
$em->flush();
$formatted = [
'code' => trim(1),
'message' => "Votre mot de passe a été mise à jour avec succès ",
'id_user' => $user->getId(),
];
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Route("/api/annonces/recherche/{libelle}", name="recherche-annonces")
*/
public function rechercheannonces(Request $request,$libelle) {
$em = $this->getDoctrine()->getManager();
/* try {*/
$annonces = $em->getRepository("App\Entity\Annonce")->apirecherche($libelle);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
/* } catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
}*/
return new JsonResponse($formatted);
}
/**
* @Route("/api/annonces/chercher/{category}/{subcategory}", name="chercher-annonces")
*/
public function chercherannonces(Request $request, $category,$subcategory) {
$em = $this->getDoctrine()->getManager();
/* try {*/
if($category!='@@'){
$category_entity= $em->getRepository("App\Entity\Categorie")->findOneBySlug($category);
}
if($category=='@@'){
$category_entity='@@';
}
$subcategory_entity= $em->getRepository("App\Entity\SousCategorie")->findOneBySlug($subcategory);
$annonces = $em->getRepository("App\Entity\Annonce")->apichercher($category_entity,$subcategory_entity);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
/* } catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
}*/
return new JsonResponse($formatted);
}
/**
* @Route("/api/annonces/user/{username}", name="annonces-par-username")
*/
public function annoncesparusername(Request $request, $username) {
$em = $this->getDoctrine()->getManager();
try {
$user = $em->getRepository("App\Entity\User")->findOneByUsername($username);
$annonces = $em->getRepository("App\Entity\Annonce")->annoncesbyparticulier($user);
$formatted = [];
$gallerie = array();
foreach ($annonces as $annonce) {
$couverture = $annonce->getCouverture();
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$couverture = $baseurl . '/uploads/annonces/' . $couverture;
$photos = $annonce->getPhotos();
if ($photos != null) {
foreach ($photos as $photo) {
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$image = $baseurl . '/uploads/annonces/' . $photo->getUrl();
array_push($gallerie, $image);
}
}
$user = $annonce->getUser();
if ($user->getRaison() != null) {
$username = $user->getRaison();
}
if ($user->getRaison() == null) {
$username = $user->getUsername();
}
$formatted[] = [
'id' => trim($annonce->getId()),
'libelle' => $annonce->getLibelle(),
'reference' => $annonce->getReference(),
'description' => $annonce->getDescription(),
'prix' => $annonce->getPrix(),
'categorie' => $annonce->getCategorie()->getNom(),
'souscategorie' => $annonce->getSouscategorie()->getNom(),
'ville' => $annonce->getVille()->getNom(),
'date_creation' => $annonce->getCreatedAt()->format('d-m-Y'),
'gallerie' => $gallerie,
'couverture' => $couverture,
'slug' => $annonce->getSlug(),
'user' => $username,
'vus' => $annonce->getVue()
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
}
return new JsonResponse($formatted);
}
/**
* @POST("/api/envoyer-message")
*/
public function envoyermessage(Request $request) {
try {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
$em = $this->getDoctrine()->getManager();
$formatted = [];
$sender = $data['sender'];
$sender_entity = $em->getRepository('App\Entity\User')->find($sender);
$receiver = $data['receiver'];
$receiver_entity = $em->getRepository('App\Entity\User')->findOneByUsername($receiver);
$texte = $data['message'];
$message=new Message();
$message->setSender($sender_entity);
$message->setReceiver($receiver_entity);
$message->setMessage($texte);
$test = new \DateTime('NOW');
$message->setCreatedAt($test);
$em->persist($message);
$em->flush();
$formatted = [
'code' => trim(1),
'message' => "Votre message a été envoyé avec succès ",
'id_message' => $message->getId(),
];
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Route("/api/mes-messages/{id_user}", name="mes-messages-api")
*/
public function mesmessages(Request $request, $id_user) {
$em = $this->getDoctrine()->getManager();
try {
$user = $em->getRepository("App\Entity\User")->find($id_user);
$messages = $em->getRepository("App\Entity\Message")->mine($user)->getResult();
$formatted = [];
foreach ($messages as $message) {
$formatted[] = [
'id' => trim($message->getId()),
'texte' => $message->getMessage(),
'date_creation'=>$message->getCreatedAt()->format('d-m-Y h:i'),
'sender'=>$message->getSender()->getUsername(),
'receiver'=>$message->getReceiver()->getUsername(),
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
/**
* @Get("/api/connexion-fb/{fb}/{email}")
*/
public function loginfbAction(Request $request) {
$id_fb = $request->get('fb');
$email = $request->get('email');
$em = $this->getDoctrine()->getManager();
$factory = $this->formFactory;
/* try {*/
$user = $em->getRepository("App\Entity\User")->connectfb($id_fb,$email);
$formatted = [];
if ($user==null) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Aucun utilisateur trouvé avec ce compte facebook'
];
}
if ($user!=null) {
if (!$user[0]->isEnabled()) {
$formatted = [
'code' => -1,
'id' => '',
'message' => "Votre compte est désactivé, vous n'étes pas autorisé à accéder à votre compte"
];
}
if ($user[0]->hasRole('ROLE_PARTENAIRE')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher partenaire , veuillez utilisez votre espace adéquat'
];
}
if ($user[0]->hasRole('ROLE_AGENT_ANNONCE')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher responsable , veuillez utilisez votre espace adéquat'
];
}
if ($user[0]->hasRole('ROLE_AGENT_BANNIERE')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher responsable , veuillez utilisez votre espace adéquat'
];
}
if ($user[0]->hasRole('ROLE_ADMIN')) {
$formatted = [
'code' => trim(-1),
'id' => '',
'message' => 'Cher administrateur , veuillez utilisez votre espace adéquat'
];
}
if ($user[0]->hasRole('ROLE_PARTICULIER')) {
$prenom = "";
if ($user[0]->getPrenom() != null) {
$prenom = $user->getPrenom();
}
$nom = "";
if ($user[0]->getNom() != null) {
$nom = $user->getNom();
}
$logo = "";
if ($user[0]->getLogo() != null) {
$logo = $user->getLogo();
}
$formatted = [
'code' => trim(1),
'id' => trim($user[0]->getId()),
'message' => 'Connexion avec succès',
'prenom' => $prenom,
'nom' => $nom,
'photo' => $logo
];
}
}
/* } catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'id' => "",
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}*/
return new JsonResponse($formatted);
}
/**
* @POST("/api/inscription-fb")
*/
public function inscriptionfb(Request $request ) {
try {
$data = json_decode($request->getContent(), true);
$request->request->replace(is_array($data) ? $data : array());
$prenom = $data['prenom'];
$reference = $data['reference'];
$nom=$data['nom'];
$email=$data['email'];
$photo=$data['photo'];
$fb=$data['fb'];
$em = $this->getDoctrine()->getManager();
$factory = $this->formFactory;
$formatted = [];
$username = $prenom . ' ' . $nom;
$recherche = $em->getRepository('App\Entity\User')->findByFb($fb);
if ($recherche != null) {
$formatted = [
'code' => trim(-1),
'message' => "Ce compte facebook est déja utilisé",
];
}
$recherche3 = $em->getRepository('App\Entity\User')->findOneByEmail($email);
if ($recherche3 != null) {
$formatted = [
'code' => trim(-1),
'message' => "Ce email est déja utilisé",
];
}
$recherche2 = $em->getRepository('App\Entity\User')->findOneByUsername($username);
if ($recherche2 != null) {
$formatted = [
'code' => trim(-1),
'message' => "Le nom d'utilisateur est déja utilisé",
];
}
if ($recherche == null && $recherche2 == null && $recherche3 == null) {
$user = new User();
$site = $em->getRepository('App\Entity\Site')->findOneByReference($reference);
$password='azer1234';
$encoder = $factory->getEncoder($user);
$user->addRole('ROLE_PARTICULIER');
$user->setEnabled(true);
$user->setSite_reference($site);
$user->setShown(true);
$user->setUsername($username);
$user->setNom($prenom);
$user->setPrenom($nom);
$user->setSalt(uniqid());
$user->setEmail($email);
$user->setPassword($encoder->encodePassword($user, $password));
$test = new \DateTime('NOW');
$user->setDate_inscription($test);
$user->setTelephone('########');
$user->setLogo($photo);
$em->persist($user);
$em->flush();
$formatted = [
'code' => trim(1),
'message' => "Votre compte a été crée avec succès,Bienvenue sur notre plateforme, veuillez accèder à l'espace de connexion ",
'id_user' => $user->getId(),
];
}
} catch (\Exception $e) {
$formatted = [
'code' => trim(0),
'message' => "Un erreur s'est produit lors de traitement de votre requète, veuillez réessayer ultérieurement"
];
return new JsonResponse($formatted);
}
return new JsonResponse($formatted);
}
}