<?php
namespace App\Controller;
use App\Entity\AppUser;
use App\Entity\CategorieEntreprise;
use App\Entity\Boutique;
use App\Entity\Plan;
use App\Entity\Devis;
use App\Entity\OffreDevis;
use App\Entity\UserBoutique;
use App\Entity\AvisUtilisateur;
use App\Entity\Notification;
use App\Entity\Conversation;
use App\Entity\Commande;
use App\Entity\Produit;
use App\Entity\ProductPhoto;
use App\Entity\Message;
use App\Entity\Ticket;
use App\Entity\CommentaireTicket;
use App\Entity\EntrepriseEnregistre;
use App\Entity\Photo;
use App\Entity\OTPConfirmation;
use App\Entity\DemandeRetrait;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
use App\Security\LoginPersonnelFormAuthenticator;
use App\Security\LoginFormAuthenticator;
use Kreait\Firebase\Contract\Auth;
use Kreait\Firebase\Messaging\CloudMessage;
use Kreait\Firebase\Contract\Messaging;
use App\Service\AssieMessaging;
use Kreait\Firebase\Util;
use Kreait\Firebase\Factory;
/**
* @Route("/{_locale}/api")
*/
class APIController extends AbstractController
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
/**
* @Route("/login", name="api_login")
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function loginAction(Request $request, UserPasswordHasherInterface $passwordHasher, AuthenticationUtils $authenticationUtils)
{
$em = $this->getDoctrine()
->getManager();
$username = '';
$password = '';
$user = array();
$data = array();
$error = '';
$message = '';
$bon = '';
$utilisateurAuthentifie = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$password = $formData->password;
//$password = $request->request->get('password');
$username = $formData->username;
//$username = $request->request->get('username');
$user = $em->getRepository(AppUser::class)
->findOneByUniqueId($username, true);
$passwordUser = $em->getRepository(AppUser::class)
->findOneByUniqueId($username);
if(null == $passwordUser || $passwordUser->isEstSupprime()){
$error = 'error';
$message = 'Utilisateur introuvable';
} else{
if ($passwordHasher->isPasswordValid($passwordUser, $password)) {
// Password is correct
$bon = 'Bon mot de passe';
$utilisateurAuthentifie = $user[0];
unset($utilisateurAuthentifie['password']);
} else {
// Password is incorrect
$error = 'error';
$message = 'Mot de passe incorrecte';
$bon = 'Mauvais mot de passe';
}
}
$data = array(
'error' => $error,
'user' => $utilisateurAuthentifie,
'message' => $message
);
}
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/mobile_login.html.twig', [
]);
}
/**
* @Route("/register", name="api_register")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function register(Request $request, UserPasswordHasherInterface $passwordHasher, UserAuthenticatorInterface $userAuthenticator, LoginPersonnelFormAuthenticator $authenticator)
{
// ... e.g. get the user data from a registration form
$user = new AppUser;
$plaintextPassword = '';
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$password1 = $formData->password1;
$password2 = $formData->password2;
$nom = $formData->nom;
$prenom = $formData->prenom;
$telephone = $formData->telephone;
$codePromoUtilise = $formData->codePromoUtilise;
$email = $formData->email;
//$password = $request->request->get('password');
$userExist = $em->getRepository(AppUser::class)
->findOneByEmail($email);
if($userExist != null){
$message = 'Email adresse déjà utilisé';
$error = 'error';
}else{
$plaintextPassword = '';
// hash the password (based on the security.yaml config for the $user class)
$hashedPassword = $passwordHasher->hashPassword($user, $password1);
$user->setPassword($hashedPassword);
$user->setNom($nom);
$user->setCodePromoUtilise($codePromoUtilise);
$user->setPrenom($prenom);
$user->setTelephone($telephone);
$user->setEmail($email);
$em->persist($user);
$em->flush();
return $userAuthenticator->authenticateUser(
$user,
$authenticator, // Pass your specific authenticator instance
$request
);
$error = '';
$message = 'Enregistrement effecuté';
$data = array(
'error' => $error,
'user' => $user,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
}
}
return $this->render('registration/register.html.twig', [
]);
}
/**
* @Route("/creer-compte-professionnel", name="api_creer_compte_professionel")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function creerCompteProfessionnelAction(Request $request, UserPasswordHasherInterface $passwordHasher, UserAuthenticatorInterface $userAuthenticator, LoginFormAuthenticator $authenticator)
{
// ... e.g. get the user data from a registration form
$user = new AppUser;
$plaintextPassword = '';
$user->setTypeCompte('Professionnel');
$user->setEnabled(true);
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$pieceDIdentiteRecto = $formData->pieceDIdentiteRecto;
$pieceDIdentiteRectoFileName = $formData->pieceDIdentiteRectoFileName;
$pieceDIdentiteVerso = $formData->pieceDIdentiteVerso;
$pieceDIdentiteVersoFileName = $formData->pieceDIdentiteVersoFileName;
$codePromoUtilise = $formData->codePromoUtilise;
$password1 = $formData->password1;
$password2 = $formData->password2;
$nom = $formData->nom;
$prenom = $formData->prenom;
$telephone = $formData->telephone;
$email = $formData->email;
//$password = $request->request->get('password');
$userExist = $em->getRepository(AppUser::class)
->findOneByEmail($email);
if($userExist != null){
$message = 'Email adresse déjà utilisé';
$error = 'error';
}else{
$plaintextPassword = '';
// hash the password (based on the security.yaml config for the $user class)
$hashedPassword = $passwordHasher->hashPassword($user, $password1);
$user->setPassword($hashedPassword);
$user->setNom($nom);
$user->setCodePromoUtilise($codePromoUtilise);
$user->setPrenom($prenom);
$user->setTelephone($telephone);
$user->setEmail($email);
$em->persist($user);
$em->flush();
//Traitement des pièces d'identité Recto
$imageParts = explode(';base64,', $formData->pieceDIdentiteRecto);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new ProductPhoto;
$ex = pathinfo($pieceDIdentiteRectoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif', 'pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setPieceDIdentiteRecto($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
//Traitement verso
$imageParts = explode(';base64,', $formData->pieceDIdentiteVerso);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new ProductPhoto;
$ex = pathinfo($pieceDIdentiteVersoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif', 'pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time().'0';
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setPieceDIdentiteVerso($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->flush();
//Fin traitement pièce d'identité
$error = '';
$message = 'Enregistrement effecuté';
$userNouvellementCree = $em->getRepository(AppUser::class)
->findOneByUniqueId($user->getId(), true);
$userNouvellementCree = $userNouvellementCree[0];
unset($userNouvellementCree['password']);
$data = array(
'error' => $error,
'user' => $userNouvellementCree,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
}
}
return $this->render('api/creer_compte_pro.html.twig', [
]);
}
/**
* @Route("/toutes-les-categories-entreprises", name="api_toutes_les_categories_entreprises")
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function toutesLesCategoriesEntreprisesAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$user = array();
$data = array();
$error = '';
$message = '';
$categorieEntreprises = $em->getRepository(CategorieEntreprise::class)
->findToutesLesCategorie(true);
$data = array(
'error' => $error,
'categorieEntreprises' => $categorieEntreprises,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
/*
return $this->render('entreprise/mobile_login.html.twig', [
]);
*/
}
/**
* @Route("/une-categorie-entreprise/{id}", name="api_une_categorie_entreprise")
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function uneCategorieEntrepriseAction(Request $request, $id)
{
$em = $this->getDoctrine()
->getManager();
$data = array();
$error = '';
$message = '';
$categorieEntreprise = $em->getRepository(CategorieEntreprise::class)
->findUneCategorie($id, true);
$data = array(
'error' => $error,
'categorieEntreprise' => $categorieEntreprise[0],
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
/*
return $this->render('entreprise/mobile_login.html.twig', [
]);
*/
}
/**
* @Route("/prestataires-d-une-categorie/{idCategorie}", name="api_prestataire_d_une_categorie")
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function prestataireDUneCategorieAction(Request $request, $idCategorie)
{
$em = $this->getDoctrine()
->getManager();
$user = array();
$data = array();
$error = '';
$message = '';
$prestataires = $em->getRepository(Boutique::class)
->prestataireDUneCategorie($idCategorie, true);
$data = array(
'error' => $error,
'prestataires' => $prestataires,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
/*
return $this->render('entreprise/mobile_login.html.twig', [
]);
*/
}
/**
* @Route("/request-delete-my-account", name="api_request_delete_my_account")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function requestDeleteMyAccountAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
return $this->render('api/request_delete_my_account.html.twig', [
]);
}
/**
* @Route("/confirm-delete-my-account", name="api_confirm_delete_my_account")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function confirmDeleteMyAccountAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
return $this->render('api/confirm_delete_my_account.html.twig', [
]);
}
/**
* @Route("/delete-my-account/{idUser}/{plateforme}", name="api_delete_my_account")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function deleteMyAccountAction(Request $request, $idUser, $plateforme)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$user->setEstSupprime(true);
$em->flush();
if($plateforme == 'web'){
return $this->redirectToRoute('app_logout');
return $this->redirectToRoute('home');
}
$error = 'Success';
$message = 'Compte supprimé';
$data = array(
'error' => $error,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/enregistrer-une-entreprise/{idUser}", name="api_enregistrer_une_entreprise")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function enregistrerUneEntrepriseAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$plan = $em->getRepository(Plan::class)
->findOneBySlug('free');
if(null == $plan){
return $this->createNotFoundException();
}
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if(null == $user){
return $this->createNotFoundException();
}
$message = '';
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$categorieEntreprise = $formData->categorieEntreprise;
$categorieEntreprise = $em->getRepository(CategorieEntreprise::class)
->findOneById($categorieEntreprise);
if(null == $categorieEntreprise){
return $this->createNotFoundException();
}
$nom = $formData->nom;
$adresse = $formData->adresse;
$longitude = $formData->longitude;
$latitude = $formData->latitude;
$email = $formData->email;
$pushNotificationToken = $formData->pushNotificationToken;
$telephone = $formData->telephone;
$description = $formData->description;
$disponibilite = $formData->disponibilite;
$zoneDIntervention = $formData->zoneDIntervention;
$boutique = new Boutique;
$boutique->setUser($user);
$boutique->setCategorieEntreprise($categorieEntreprise);
$boutique->setNom($nom);
$boutique->setAdresse($adresse);
$boutique->setLongitude($longitude);
$boutique->setLatitude($latitude);
$boutique->setPushNotificationToken($pushNotificationToken);
$boutique->setEmail($email);
$boutique->setTelephone($telephone);
$boutique->setDescription($description);
$boutique->setDisponibilite($disponibilite);
$boutique->setZoneDIntervention($zoneDIntervention);
$em->persist($boutique);
$em->flush();
$userBoutique = new UserBoutique;
$userBoutique->setUser($user);
$userBoutique->setBoutique($boutique);
$userBoutique->setRole('Admin');
$userBoutique->setAccepte(true);
$em->persist($userBoutique);
$em->flush();
$error = '';
$message = 'Enregistrement effecuté';
$prestataire = $em->getRepository(Boutique::class)
->unPrestataire($boutique->getId(), true);
$data = array(
'error' => $error,
'prestataire' => $prestataire[0],
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
}
return $this->render('api/enregistrer_une_entreprise.html.twig', [
]);
}
/**
* @Route("/un-prestataire/{id}", name="api_un_prestataire")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function unPrestataireAction(Request $request, $id)
{
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
$prestataire = $em->getRepository(Boutique::class)
->unPrestataire($id, true);
$dateFin = new \DateTime();
$abonnement = $em->getRepository(Commande::class)
->dernierAbonnement($id, $dateFin, true);
if(!empty($abonnement)){
$abonnement = $abonnement[0];
}else{
$abonnement = '';
}
$data = array(
'error' => $error,
'prestataire' => $prestataire[0],
'abonnement' => $abonnement,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('registration/register.html.twig', [
'form' => $form->createView(),
'error_message' => $error_message
]);
}
/**
* @Route("/nouveau-devis/{idUser}/{fromABoutique}/{boutique}", name="api_nouveau_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function nouveauDevisAction(Request $request, $idUser, $fromABoutique, $boutique)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if(null == $user){
//return $this->createNotFoundException();
}
$devis = new Devis;
$error = '';
$message = '';
$boutique = $em->getRepository(Boutique::class)
->findOneById($boutique);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$titre = $formData->titre;
//$titre = $request->request->get('titre');
$budgetMin = $formData->budgetMin;
//$budgetMin = $request->request->get('budgetMin');
$budgetMax = $formData->budgetMax;
//$budgetMax = $request->request->get('budgetMax');
$contenu = $formData->contenu;
//$contenu = $request->request->get('contenu');
$categorieEntreprise = $formData->categorieEntreprise;
//$categorieEntreprise = $request->request->get('categorieEntreprise');
$typeDevis = $formData->typeDevis;
//$typeDevis = $request->request->get('typeDevis');
$boutiqueFourmulaire = $formData->prestataire;
//$boutiqueFourmulaire = $request->request->get('prestataire');
$devis->setTypeDevis($typeDevis);
$devis->setUser($user);
$devis->setTitre($titre);
$devis->setBudgetMin($budgetMin);
$devis->setBudgetMax($budgetMax);
$em->persist($devis);
$em->flush();
if($fromABoutique){
//Le devis est envoyé directement à un prestataire
if($boutique == null){
$boutique = $em->getRepository(Boutique::class)
->findOneById($boutiqueFourmulaire);
}
$devis->setEstOuvert(false);
$devis->setNombreDOffre(1);
$offreDevis = new OffreDevis;
$offreDevis->setRemporte(true);
$offreDevis->setBoutique($boutique);
$offreDevis->setDevis($devis);
$em->persist($offreDevis);
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.proposals', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setExtraData($devis->getId());
$notification->setLien($lien);
$notification->setTypeNotification('devis');
$notification->setDescription('Quelqu\'un vous a envoyé un devis sur ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
} else{
// Le devis n'a pas été envoyé depuis une boutique particulière
//$devisFromData = $form->getData();
$categorieEntreprise = $em->getRepository(CategorieEntreprise::class)
->findOneById($categorieEntreprise);
$entrepriseDuneCategories = $em->getRepository(Boutique::class)
->findByCategorieEntreprise($categorieEntreprise);
$devis->setEstOuvert(true);
foreach($entrepriseDuneCategories as $entreCat){
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $entreCat
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.proposals', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setExtraData($devis->getId());
$notification->setLien($lien);
$notification->setTypeNotification('devis');
$notification->setDescription('Nouveau devis pour ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
}
}
$message = 'Enregistrement effectué';
$em->flush();
$unDevis = $em->getRepository(Devis::class)
->unDevis($devis->getId(), true);
$data = array(
'error' => $error,
'devis' => $unDevis[0],
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('afficher_devis', array('slug' => $devis->getSlug()));
}
return $this->render('api/nouveau_devis.html.twig', [
// 'error_message' => $error_message
]);
}
/**
* @Route("/faire-une-offre/{idDevis}/{idPrestataire}/{idUser}", name="api_faire_une_offre")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function faireUneOffreAction(Request $request, $idDevis, $idPrestataire, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$devis = $em->getRepository(Devis::class)
->findOneById($idDevis);
if(!$devis->getEstOuvert()){
return $this->createNotFoundException();
}
$devis->setNombreDeVue($devis->getNombreDeVue() + 1);
$em->flush();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->findOneById($idPrestataire);
$userBoutiques = $em->getRepository(UserBoutique::class)
->findByUser($user);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$valeurFinanciere = $formData->valeurFinanciere;
//$valeurFinanciere = $request->request->get('valeurFinanciere');
$contenu = $formData->message;
//$contenu = $request->request->get('message');
$offreDevis = new OffreDevis;
$offreDevis->setValeurFinanciere($valeurFinanciere);
$offreDevis->setContenu($contenu);
$offreDevis->setUser($user);
$offreDevis->setDevis($devis);
$offreDevis->setBoutique($boutique);
$em->persist($offreDevis);
$em->flush();
$notification = new Notification;
$notification->setUser($devis->getUser());
$notification->setTypeNotification('devis');
$lien = $this->generateUrl('afficher_devis', array('slug' => $devis->getSlug()));
$notification->setLien($lien);
$notification->setDescription($boutique->getNom().' vous a fait une proposition ');
$em->persist($notification);
$em->flush();
$message = 'Offre soumise';
$error = '';
$offreDevisRetourne = $em->getRepository(OffreDevis::class)
->uneOffreDevis($offreDevis->getId(), true);
$offreDevisRetourne = $offreDevisRetourne[0];
$data = array(
'error' => $error,
'offreDevis' => $offreDevisRetourne,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('entreprise/faire_une_offre.html.twig', [
'devis' => $devis,
'userBoutiques' => $userBoutiques,
'form' => $form->createView()
]);
}
/**
* @Route("/choisir-offre/{idOffreDevis}/{idUser}", name="api_choisir_offre")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function choisirOffreAction(Request $request, $idOffreDevis, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$offreDevis = $em->getRepository(OffreDevis::class)
->findOneById($idOffreDevis);
$offreDevis->setRemporte(true);
$offreDevis->getDevis()->setEstOuvert(false);
$em->flush();
$user = $offreDevis->getUser();
$notification = new Notification;
$notification->setUser($offreDevis->getUser());
$notification->setTypeNotification('devis');
$lien = $this->generateUrl('gestion.proposals', array('slug' => $offreDevis->getBoutique()->getSlug()));
$notification->setLien($lien);
$notification->setDescription('votre offre a été choisie');
$em->persist($notification);
$em->flush();
$data = array(
'error' => '',
'message' => 'Choix effectué, les enchères sont fermées'
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/historique-paiement/{idUser}", name="api_historique_paiement")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function historiquePaiementAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$paiementServices = $em->getRepository(PaiementService::class)
->paiementDUnClient($idUser, true);
$em->flush();
$data = array(
'error' => '',
'message' => 'Choix effectué, les enchères sont fermées',
'paiementServices' => $paiementServices
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/comptes-parraines/{idUser}", name="api_comptes_parraines")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function compteParaineAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$cps = $em->getRepository(AppUser::class)
->compteParaine($user->getMonPropreCodePromo(), true);
$comptesParraines = array();
$cs = array();
foreach($cps as $cp) {
unset($cp['password']);
array_push($comptesParraines, $cp);
}
$data = array(
'error' => 'Success',
'message' => 'Comptes parrainés retournés',
'comptesParraines' => $comptesParraines
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/offre-d-un-devis/{idDevis}", name="api_offres_d_un_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function offreDUnDevisAction(Request $request, $idDevis)
{
$em = $this->getDoctrine()
->getManager();
$offreDevis = $em->getRepository(OffreDevis::class)
->lesOffresDUnDevis($idDevis, true);
$data = array(
'error' => '',
'message' => 'Success',
'offreDevis' => $offreDevis
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/devis-d-un-client/{idUser}", name="api_devis_d_un_client")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function devisClientAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$devis = $em->getRepository(Devis::class)
->devisDUnClient($idUser, true);
$data = array(
'error' => '',
'message' => 'Success',
'devis' => $devis
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/devis-ouverts", name="api_devis_ouverts")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function devisOuvertsAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$devis = $em->getRepository(Devis::class)
->devisOuverts(true);
$data = array(
'error' => '',
'message' => 'Success',
'devis' => $devis
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/un-devis/{id}", name="api_un_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function unDevisAction(Request $request, $id)
{
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
$unDevis = $em->getRepository(Devis::class)
->unDevis($id, true);
$data = array(
'error' => $error,
'devis' => $unDevis[0],
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('registration/register.html.twig', [
]);
}
/**
* @Route("/donner-avis/{idUser}/{idEntreprise}", name="api_donner_avis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function donnerAvisAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$avisUtilisateur = new AvisUtilisateur;
$message = '';
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$valeurAvis = (int)$formData->valeurAvis;
//$valeurAvis = (int)$request->request->get('valeurAvis');
$contenu = $formData->contenu;
//$contenu = $request->request->get('contenu');
$avisUtilisateur->setValeurAvis($valeurAvis);
$avisUtilisateur->setContenu($contenu);
$avisUtilisateur->setUser($user);
$avisUtilisateur->setBoutique($boutique);
$em->persist($avisUtilisateur);
$em->flush();
$tousLesAvis = $em->getRepository(AvisUtilisateur::class)
->findByBoutique($boutique);
$moyenne = 0;
$nb = 0;
$note = 0;
foreach($tousLesAvis as $avis){
$note += $avis->getValeurAvis();
$nb++;
}
if($nb >0){
$moyenne = round($note/$nb, 1);
}
$boutique->setMoyenneAvis($moyenne);
$em->flush();
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.reviews', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setLien($lien);
$notification->setTypeNotification('avis');
$notification->setDescription('Quelqu\'un a laissé un avis sur ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
$em->flush();
$data = array(
'error' => $error,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/donner_avis.html.twig', [
]);
}
/**
* @Route("/avis-utile/{id}", name="api_avis_utile")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function avisUtileAction(Request $request, AvisUtilisateur $avisUtilisateur)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$message = '';
$avisUtilisateur->setAvisUtile($avisUtilisateur->getAvisUtile() + 1);
$em->flush();
$data = array(
'error' => $error,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/avis-inutile/{id}", name="api_avis_inutile")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function avisInutileAction(Request $request, AvisUtilisateur $avisUtilisateur)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
$message = '';
$avisUtilisateur->setAvisInutile($avisUtilisateur->getAvisInutile() + 1);
$em->flush();
$data = array(
'error' => $error,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/signaler-avis/{id}", name="api_signaler_avis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function signalerAvisAction(Request $request, AvisUtilisateur $avisUtilisateur)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
$message = '';
$avisUtilisateur->setSignalerAvis($avisUtilisateur->getSignalerAvis() + 1);
$em->flush();
$data = array(
'error' => $error,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/enregistrer-entreprise-favoris/{idUser}/{idEntreprise}", name="api_enregistrer_entreprise")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function enregistrerEntrepriseAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$message = '';
$error = '';
$entrepriseEnregistres = $em->getRepository(EntrepriseEnregistre::class)
->findBy(
array(
'boutique' => $boutique->getId(),
'user' => $user->getId()
)
);
$dejaEnregistre = false;
foreach($entrepriseEnregistres as $entrepriseEnregistre){
if($entrepriseEnregistre->getBoutique()->getId() == $boutique->getId()){
$dejaEnregistre = true;
}
}
if($dejaEnregistre == false){
$eenr = new EntrepriseEnregistre;
$eenr->setBoutique($boutique);
$eenr->setUser($user);
$em->persist($eenr);
$em->flush();
}
$data = array(
'error' => $error,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/envoyer-message/{idUser}/{idEntreprise}", name="api_envoyer_message")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function envoyerMessageAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$message = new Message;
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$contenu = $formData->contenu;
//$contenu = $request->request->get('contenu');
$conversation = $em->getRepository(Conversation::class)
->findOneBy(
array(
'boutique' => $boutique,
'user' => $user
)
);
if(null === $conversation){
$conversation = new Conversation;
$conversation->setUser($user);
$conversation->setBoutique($boutique);
$em->persist($conversation);
$em->flush();
}
$message->setUser($user);
$message->setConversation($conversation);
$message->setContenu($contenu);
$em->persist($message);
$conversation->setLastMessage($message->getContenu());
$em->flush();
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.messages', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setExtraData($conversation->getId());
$notification->setLien($lien);
$notification->setTypeNotification('message');
$notification->setDescription('Quelqu\'un vous a envoyé un message sur ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
$em->flush();
$data = array(
'error' => $error,
'message' => $contenu
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/envoyer_message.html.twig', [
]);
}
/**
* @Route("/mes-entreprises/{idUser}", name="api_mes_entreprises")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function mesEntrepriseAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$userBoutiques = $em->getRepository(UserBoutique::class)
->mesEntreprises($user->getId(), true);
$mesEntreprises = array();
foreach($userBoutiques as $userBoutique){
array_push($mesEntreprises, $userBoutique['boutique']);
}
$error = '';
$message = '';
$data = array(
'error' => $error,
'mesEntreprises' => $mesEntreprises,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/mes_entreprise.html.twig', [
'userBoutiques' => $userBoutiques
]);
}
/**
* @Route("/entreprise/{idUser}/{idEntreprise}", name="api_afficher_entreprise")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function afficherEntrpriseAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->unPrestataire($idEntreprise, true);
$nombreOffreDevis = $em->getRepository(OffreDevis::class)
->nombreOffreDevis($idEntreprise);
if(!empty($nombreOffreDevis)){
$nombreOffreDevis = $nombreOffreDevis[0]['nombreOffreDevis'];
}else{
$nombreOffreDevis = 0;
}
$nombreMessage = $em->getRepository(Conversation::class)
->nombreMessageDUneBoutique($idEntreprise);
if(!empty($nombreMessage)){
$nombreMessage = $nombreMessage[0]['nombreMessage'];
}else{
$nombreMessage = 0;
}
$nombreTiers = 0;
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $user->getId(),
'boutique' => $idEntreprise
)
);
$abonnement = $em->getRepository(Commande::class)
->findBy(
array(
'boutique' => $idEntreprise
),
array(
'laDate' => 'DESC'
),
1
);
if(!empty($abonnement)){
$abonnement = $abonnement[0];
}
//nombreAvis
$data = array(
'error' => '',
'abonnement' => $abonnement,
'message' => '',
'nombeDAvis' =>$boutique[0]['nombreAvis'],
'nombreDeVisite' => $boutique[0]['nombreDeVisite'],
'nombreOffreDevis' => $nombreOffreDevis,
'nombreMessage' => $nombreMessage,
'entreprise' => $boutique[0]
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/afficher_boutique.html.twig', [
'boutique' => $boutique,
'userBoutique' => $userBoutique,
'abonnement' => $abonnement
]);
}
/**
* @Route("/catalogue/{idUser}/{idEntreprise}", name="api_mes_produits")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function mesProduitsAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->unPrestataire($idEntreprise, true);
$products = $em->getRePository(Produit::class)
->produitsDuneEntreprise($idEntreprise, true);
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $user->getId(),
'boutique' => $idEntreprise
)
);
//nombreAvis
if(!empty($products)){
$products = $products;
}
$data = array(
'error' => '',
'produits' => $products,
'message' => '',
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/afficher_boutique.html.twig', [
'boutique' => $boutique,
'userBoutique' => $userBoutique,
'abonnement' => $abonnement
]);
}
/**
* @Route("/nouveau-produit/{idUser}/{idEntreprise}", name="api_nouveau_produit")
*/
public function nouveauProduitAction(Request $request, $idUser, $idEntreprise)
{
$requestStack = $this->get('request_stack');
$request = $requestStack->getCurrentRequest();
$em = $this->getDoctrine()
->getManager();
$ok_submission = '';
$error = '';
$message = '';
$produit = new Produit;
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
if('POST' == $request->getMethod() )
{
$formData = json_decode($request->getContent());
$nom = $formData->nom;
//$nom = $request->request->get('nom');
$filename = $formData->filename;
//$filename = $request->request->get('filename');
$prix = (float)$formData->prix;
//$prix = (float)$request->request->get('prix');
$petiteDescription = $formData->petiteDescription;
//$petiteDescription = $request->request->get('petiteDescription');
$description = $formData->description;
//$description = $request->request->get('description');
$produit->setNom($nom);
$produit->setPrix($prix);
$produit->setPetiteInfo($petiteDescription);
$produit->setDescription($description);
$produit->setBoutique($boutique);
$imageParts = explode(';base64,', $formData->imagePrincipale);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$em->persist($produit);
$em->flush();
$photo = new ProductPhoto;
$ex = pathinfo($filename, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $produit->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$photo->setAlt('Image de '.$produit->getNom());
$photo->setProduit($produit);
$extension = $photo->getExtension();
//deplacement (création de l'image original)
//$this->file->move($photo->getUploadRootDir().'/original/', $name.'.'.photo->getExtension()));
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->persist($photo);
$produit->setImagePrincipale($photo);
$em->flush();
$data = array(
'error' => '',
'message' => '',
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/nouveau_produit.html.twig', [
]);
}
/**
* @Route("/modifier-produit/{idProduit}", name="api_modifier_produit")
*/
public function modifierProduitAction(Request $request, $idProduit)
{
$em = $this->getDoctrine()
->getManager();
$produit = $em->getRepository(Produit::class)
->findOneById($idProduit);
$error = '';
$message = '';
if('POST' == $request->getMethod())
{
$formData = json_decode($request->getContent());
$nom = $formData->nom;
//$nom = $request->request->get('nom');
$filename = $formData->filename;
//$filename = $request->request->get('filename');
$prix = (float)$formData->prix;
//$prix = (float)$request->request->get('prix');
$petiteDescription = $formData->petiteDescription;
//$petiteDescription = $request->request->get('petiteDescription');
$description = $formData->description;
//$description = $request->request->get('description');
$produit->setNom($nom);
$produit->setPrix($prix);
$produit->setPetiteInfo($petiteDescription);
$produit->setDescription($description);
$imageParts = explode(';base64,', $formData->imagePrincipale);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$em->persist($produit);
$em->flush();
if($filename != ''){
$photo = new ProductPhoto;
$ex = pathinfo($filename, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $produit->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$photo->setAlt('Image de '.$produit->getNom());
$extension = $photo->getExtension();
//deplacement (création de l'image original)
//$this->file->move($photo->getUploadRootDir().'/original/', $name.'.'.photo->getExtension()));
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->persist($photo);
$produit->setImagePrincipale($photo);
$em->flush();
$data = array(
'error' => '',
'message' => '',
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
}
return $this->render('api/modifier_produit.html.twig', [
]);
}
//Produit/Service
/**
* @Route("/supprimer-produit/{idEntreprise}/{idProduit}", name="api_supprimer_photo")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function supprimerProduitAction(Request $request, $idEntreprise, $idProduit)
{
$em = $this->getDoctrine()
->getManager();
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$product = $em->getRepository(Produit::class)
->findOneBy(
array(
'boutique' => $boutique->getId(),
'id' => $idProduit
)
);
if(null !== $product){
//les auttres images
foreach($product->getPhotos() as $photo){
$link = substr($photo->getFullUrl(), 40); //taille de https://www.myhelpplace.com/uploads/img/
unlink($photo->getUploadRootDir().'/'.$link);
$em->remove($photo);
}
$em->flush();
$em->remove($product);
//Image principale
if($product->getImagePrincipale() != null){
$link = substr($product->getImagePrincipale()->getFullUrl(), 40); //taille de https://www.myhelpplace.com/uploads/img/
unlink($product->getImagePrincipale()->getUploadRootDir().'/'.$link);
$em->remove($product->getImagePrincipale());
}
$em->flush();
}
$data = array(
'error' => '',
'message' => '',
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('gestion.products', array('slug' => $boutique->getSlug()));
}
/**
* @Route("/offre-devis/{idUser}/{idEntreprise}", name="api_offre_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function offreDevisAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$offreDevis = $em->getRepository(OffreDevis::class)
->offreDevisDUneEntreprise($idEntreprise, true);
/*
$devis = $em->getRepository(Devis::class)
->findByCategorieEntreprise($boutique->getCategorieEntreprise());
*/
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$notifications = $em->getRepository(Notification::class)
->findBy(
array(
'user' => $user,
'vu' => false,
'typeNotification' => 'devis'
)
);
foreach($notifications as $notification){
$notification->setVu(true);
}
$em->flush();
$data = array(
'error' => '',
'message' => '',
'offreDevis' => $offreDevis
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/proposals.html.twig', [
'offreDevis' => $offreDevis,
]);
}
/**
* @Route("/avis-utilisateur/{idUser}/{idEntreprise}", name="api_avis_utilisateur")
*/
public function avisUtilisateurAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$avisUtilisateurs = $em->getRepository(AvisUtilisateur::class)
->avisEntreprise($idEntreprise, true);
$notifications = $em->getRepository(Notification::class)
->findBy(
array(
'user' => $user,
'vu' => false,
'typeNotification' => 'avis'
)
);
foreach($notifications as $notification){
$notification->setVu(true);
}
$em->flush();
$data = array(
'error' => '',
'message' => '',
'avisUtilisateurs' => $avisUtilisateurs
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/reviews.html.twig', [
'reviews' => $reviews,
'boutique' => $boutique
]);
}
/**
* @Route("/messages/{idUser}/{idEntreprise}", name="api_messages")
*/
public function messagesAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()->getManager();
$conversations = $em->getRepository(Conversation::class)
->conversationsDUneEntreprise($idEntreprise, true);
$data = array(
'error' => '',
'message' => '',
'conversations' => $conversations
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/messages.html.twig', [
'conversations' => $conversations,
'boutique' => $boutique
]);
}
/**
* @Route("/conversation/{idConversation}/{idUser}/{idEntreprise}", name="api_une_conversation")
*/
public function uneConversationAction(Request $request, $idConversation, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()->getManager();
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$notifications = $em->getRepository(Notification::class)
->findBy(
array(
'user' => $user,
'vu' => false,
'typeNotification' => 'message',
'extraData' => $idConversation
)
);
foreach($notifications as $notification){
$notification->setVu(true);
}
$em->flush();
$conversation = $em->getRepository(Conversation::class)
->findOneById($idConversation);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$reponseMessage = $formData->message;
//$reponseMessage = $request->request->get('message');
$message = new Message;
$message->setContenu($reponseMessage);
$message->setConversation($conversation);
$message->setUser($user);
$em->persist($message);
$em->flush();
$notification = new Notification;
$notification->setUser($conversation->getUser());
$lien = $this->generateUrl('profile.one_conversation', array('slug'=>$conversation->getBoutique()->getSlug(), 'id' => $conversation->getId()));
$notification->setExtraData($conversation->getId());
$notification->setLien($lien);
$notification->setTypeNotification('message');
$notification->setDescription('Vous avez un nouveau message');
$conversation->setLastMessage($reponseMessage);
$em->persist($notification);
$em->flush();
}
$messages = $em->getRepository(Message::class)
->messageDUneConversation($idConversation, true);
$uneConversation = $em->getRepository(Conversation::class)
->uneConversationsDUneEntreprise($idEntreprise, $idConversation, true);
$data = array(
'error' => '',
'message' => '',
'messages' => $messages,
'conversation' => $uneConversation[0]
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/one_conversation.html.twig', [
'conversation' => $conversation,
'boutique' => $boutique,
'messages' => $messages
]);
}
/**
* @Route("/tickets/{idUser}/{idEntreprise}", name="api_tickets")
*/
public function ticketsAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()->getManager();
$tickets = $em->getRepository(Ticket::class)
->ticketDUneEntreprise($idEntreprise, true);
$data = array(
'error' => '',
'message' => '',
'tickets' => $tickets
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('gestion/tickets.html.twig', [
'tickets' => $tickets,
'boutique' => $boutique
]);
}
/**
* @Route("/nouveau-ticket/{idUser}/{idEntreprise}", name="api_nouveau_ticket")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function nouveauTicketAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$ticket = new Ticket;
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $user->getId(),
'boutique' => $boutique->getId()
)
);
$ok_soumission = '';
$error = '';
$message = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$titre = $formData->titre;
//$titre = $request->request->get('titre');
$message = $formData->message;
//$message = $request->request->get('message');
$ticket->setBoutique($boutique);
$ticket->setTitre($titre);
$ticket->setContenu($message);
$ticket->setUser($user);
$em->persist($ticket);
$em->flush();
$data = array(
'error' => '',
'message' => '',
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('gestion.display_ticket', array('slug' => $boutique->getSlug(), 'id' => $ticket->getId()));
$ok_soumission =" Votre message a été pris en compte";
}
return $this->render('gestion/api.html.twig', [
'boutique' => $boutique,
'form' => $form->createView(),
'userBoutique' => $userBoutique
]);
}
/**
* @Route("/ticket/{idTicket}/{idUser}/{idEntreprise}", name="api_ticket")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function ticketAction(Request $request, $idTicket, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $user->getId(),
'boutique' => $boutique->getId()
)
);
$ticket = $em->getRepository(Ticket::class)
->findOneBy(
array(
'boutique' => $boutique->getId(),
'id' => $idTicket
)
);
$ok_soumission = '';
$error = '';
$message = '';
if($request->getMethod() == 'POST'){
if($ticket->getLesCommentairesSontFermes()){
$message = ' les commentaire sont fermés';
$error = 'error';
}else{
$formData = json_decode($request->getContent());
$commentaire = $formData->commentaire;
//$commentaire = $request->request->get('commentaire');
$commentaireTicket = new CommentaireTicket;
$commentaireTicket->setContenu($commentaire);
$commentaireTicket->setTicket($ticket);
$commentaireTicket->setUser($user);
$em->persist($commentaireTicket);
$em->flush();
$message =" Votre message a été pris en compte";
}
}
$commentaires = $em->getRepository(CommentaireTicket::class)
->commentairesDUnTicket($idTicket, true);
$unTicket = $em->getRepository(Ticket::class)
->unTicket($idTicket, true);
$data = array(
'error' => '',
'message' => '',
'ticket' => $unTicket[0],
'commentaires' => $commentaires
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/ticket.html.twig', [
]);
}
/**
* @Route("/fermer-ticket/{idTicket}", name="api_fermer_ticket")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function fermerTicketAction(Request $request, $idTicket)
{
$em = $this->getDoctrine()
->getManager();
$ticket = $em->getRepository(Ticket::class)
->findOneBy(
array(
'id' => $idTicket
)
);
if(null !== $ticket){
$ticket->setLesCommentairesSontFermes(true);
$em->flush();
}
$data = array(
'error' => '',
'message' => ''
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('gestion.display_ticket',array('slug'=>$boutique->getSlug(), 'id'=>$ticket->getId()));
}
/**
* @Route("/supprimer-ticket/{idTicket}", name="api_supprimer_ticket")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function supprimerTicketAction(Request $request, $idTicket)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$ok_soumission = '';
$error = '';
$ticket = $em->getRepository(Ticket::class)
->findOneBy(
array(
'id' => $idTicket
)
);
if(null !== $ticket){
$commentaireTickets = $em->getRepository(CommentaireTicket::class)
->findByTicket($ticket->getId());
foreach($commentaireTickets as $commentaireTicket)
{
$em->remove($commentaireTicket);
}
$em->remove($ticket);
$em->flush();
}
$data = array(
'error' => '',
'message' => ''
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('gestion.tickets',array('slug'=>$boutique->getSlug(), 'id'=>$user->getId()));
}
/**
* @Route("/mon-profil/info/{idUser}", name="api_mon_profil_info")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function monProfilInfoAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneBy(
array(
'id' => $idUser
)
);
$ok_soumission = '';
$error = '';
$message = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$nom = $formData->nom;
//$nom = $request->request->get('nom');
$avatarFileName = $formData->avatarFileName;
//$avatarFileName = $request->request->get('avatarFileName');
$prenom = $formData->prenom;
//$prenom = $request->request->get('prenom');
$telephone = $formData->telephone;
//$telephone = $request->request->get('telephone');
$adresse = $formData->adresse;
//$adresse = $request->request->get('adresse');
$email = $formData->email;
//$email = $request->request->get('email');
$user->setNom($nom);
$user->setPrenom($prenom);
$user->setTelephone($telephone);
$user->setAdresse($adresse);
$user->setEmail($email);
$em->flush();
$imageParts = explode(';base64,', $formData->avatar);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new Photo;
$ex = pathinfo($avatarFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$em->persist($photo);
$em->flush();
$user->setAvatar($photo);
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->flush();
}
$user = $em->getRepository(AppUser::class)
->findOneBy(
array(
'id' => $idUser
)
);
$unUser = $em->getRepository(AppUser::class)
->findOneByUniqueId($idUser, true);
$unUser = $unUser[0];
unset($unUser['password']);
$data = array(
'error' => '',
'message' => '',
'user' => $unUser
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/mon_profil.html.twig', [
'user' => $user
]);
return $this->redirectToRoute('gestion.tickets',array('slug'=>$boutique->getSlug(), 'id'=>$user->getId()));
}
/**
* @Route("/mon-profil/changer-mot-de-passe/{idUser}", name="api_mon_profil_changer_mot_de_passe")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function changerMotDePasseAction(Request $request, UserPasswordHasherInterface $passwordHasher, AuthenticationUtils $authenticationUtils, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneBy(
array(
'id' => $idUser
)
);
$ok_soumission = '';
$error = '';
$message = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$ancienMotDePasse = $formData->ancienMotDePasse;
//$ancienMotDePasse = $request->request->get('ancienMotDePasse');
$password1 = $formData->password1;
//$password1 = $request->request->get('password1');
$password2 = $formData->password2;
//$password2 = $request->request->get('password2');
if(!$passwordHasher->isPasswordValid($user, $ancienMotDePasse)) {
$error = 'error';
$message = 'Mot de passe incorrect';
}else{
if($password1 != $password2){
$error = 'error';
$message = 'Les mots de passes ne correspondent pas';
}else{
//
$hashedPassword = $passwordHasher->hashPassword($user, $password1);
$user->setPassword($hashedPassword);
$em->flush();
$error = '';
$message = 'Mot de passe mis à jour';
}
}
$unUser = $em->getRepository(AppUser::class)
->findOneByUniqueId($idUser, true);
$unUser = $unUser[0];
unset($unUser['password']);
$data = array(
'error' => $error,
'message' => $message,
'user' => $unUser
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/changer_mot_de_passe.html.twig', [
'user' => $user
]);
return $this->redirectToRoute('gestion.tickets',array('slug'=>$boutique->getSlug(), 'id'=>$user->getId()));
}
/**
* @Route("/mon-profil/piece-d-identite/{idUser}", name="api_mon_profil_piece_d_identite")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function pieceDIdentiteAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$pieceDIdentiteRecto = $formData->pieceDIdentiteRecto;
$pieceDIdentiteRectoFileName = $formData->pieceDIdentiteRectoFileName;
$pieceDIdentiteVerso = $formData->pieceDIdentiteVerso;
$pieceDIdentiteVersoFileName = $formData->pieceDIdentiteVersoFileName;
//Traitement des pièces d'identité Recto
$imageParts = explode(';base64,', $formData->pieceDIdentiteRecto);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new ProductPhoto;
$ex = pathinfo($pieceDIdentiteRectoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif', 'pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setPieceDIdentiteRecto($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
//Traitement verso
$imageParts = explode(';base64,', $formData->pieceDIdentiteVerso);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new ProductPhoto;
$ex = pathinfo($pieceDIdentiteVersoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif', 'pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time().'0';
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setPieceDIdentiteVerso($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->flush();
//Fin traitement pièce d'identité
$error = '';
$message = 'Enregistrement effecuté';
$userNouvellementCree = $em->getRepository(AppUser::class)
->findOneByUniqueId($user->getId(), true);
$userNouvellementCree = $userNouvellementCree[0];
unset($userNouvellementCree['password']);
$data = array(
'error' => $error,
'user' => $userNouvellementCree,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
}
return $this->render('api/creer_compte_pro.html.twig', [
]);
}
/**
* @Route("/un-devis/envoyer-proof-of-work/{idDevis}", name="api_envoyer_proof_of_work")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function envoyerProofOfWorkAction(Request $request, $idDevis)
{
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
$devis = $em->getRepository(Devis::class)
->findOneById($idDevis);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$proofOfWork = $formData->proofOfWork;
$proofOfWorkFileName = $formData->proofOfWorkFileName;
//Traitement des pièces d'identité Recto
$imageParts = explode(';base64,', $formData->proofOfWork);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new Photo;
$ex = pathinfo($proofOfWorkFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $devis->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$message = 'Enregistrement effectué';
$error = '';
$em->persist($photo);
$em->flush();
$devis->setProofOfWork($photo);
$em->flush();
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$unDevis = $em->getRepository(Devis::class)
->unDevis($idDevis, true);
$unDevis = $unDevis[0];
$data = array(
'error' => $error,
'devis' => $unDevis,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
}
return $this->render('api/proof_of_work.html.twig', [
]);
}
/**
* @Route("/un-devis/consulter-proof-of-work/{idDevis}", name="api_consulter_proof_of_work")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function consulterProofOfWorkAction(Request $request, $idDevis)
{
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
$devis = $em->getRepository(Devis::class)
->findOneById($idDevis);
$unDevis = $em->getRepository(Devis::class)
->unDevis($idDevis, true);
$unDevis = $unDevis[0];
$data = array(
'error' => $error,
'devis' => $unDevis,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/proof_of_work.html.twig', [
]);
}
/**
* @Route("/envoi-sms-pro", name="api_envoi_sms_pro")
*/
public function envoiSMSProAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
//$code = $formData->code;
$code = $request->request->get('code');
//$numero = $formData->numero;
$numero = $request->request->get('numero');
//$message = $formData->message;
$message = $request->request->get('message');
$msdn = $code.$numero;
$content = array(
'recipient' => $msdn,
'sender_id'=> 'SolutionsIT',
'message' => $message
);
$content = json_encode($content);
$ch = curl_init('https://panel.yellikasms.com/api/v3/sms/send');
$yelliAPI = $this->getYelliAPIKey();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Authorization: Bearer '.$yelliAPI]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$serverOutput = curl_exec($ch);
curl_close($ch);
$serverOutput = json_decode($serverOutput, true);
}
$data = array(
'error' => '',
'message' => '',
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
//return $response;
return $this->render('api/envoi_sms_pro.html.twig', [
]);
}
/**
* @Route("/otp/send", name="api_otp_send")
*/
public function otpSendAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$error = '';
$message = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$code = $formData->code;
//$code = $request->request->get('code');
$numero = $formData->numero;
//$numero = $request->request->get('numero');
$msdn = $code.$numero;
$otp = random_int(100000, 999999);
$oTPConfirmation = new OTPConfirmation;
$oTPConfirmation->setNumero($msdn);
$oTPConfirmation->setCodeConfirmation($otp);
$oTPConfirmation->setLaDate(time());
$em->persist($oTPConfirmation);
$em->flush();
$content = array(
'recipient' => $msdn,
'sender_id'=> $this->getYelliSenderId(),
'message' => ''.$otp.''
);
$content = json_encode($content);
$ch = curl_init('https://panel.yellikasms.com/api/v3/sms/send');
$yelliAPI = $this->getYelliAPIKey();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Authorization: Bearer '.$yelliAPI]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$serverOutput = curl_exec($ch);
curl_close($ch);
$serverOutput = json_decode($serverOutput, true);
$message = 'Code envoyé';
$error = '';
}
$data = array(
'error' => $error,
'message' => $message,
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
//return $response;
return $this->render('api/send_otp.html.twig', [
]);
}
/**
* @Route("/otp/verify", name="api_otp_verify")
*/
public function otpVerifyAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$error = '';
$message = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$otp = $formData->otp;
//$otp = $request->request->get('otp');
$code = $formData->code;
//$code = $request->request->get('code');
$numero = $formData->numero;
//$numero = $request->request->get('numero');
$msdn = $code.$numero;
$oTPConfirmation = $em->getRepository(OTPConfirmation::class)
->findOneByCodeConfirmation($otp);
if($oTPConfirmation == null ){
$error = 'error';
$message = 'Code erroné';
} else{
$cinqMin = 60 * 5;
$tempsEcoule = time() - $oTPConfirmation->getLaDate();
if($oTPConfirmation->getNumero() != $msdn || $tempsEcoule > $cinqMin){
$error = 'error';
$message = 'Code erroné';
}else{
$error = '';
$message = 'Code correct';
}
}
$data = array(
'error' => $error,
'message' => $message,
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/verify_otp.html.twig', [
]);
}
/**
* @Route("/plans", name="api_otp_veri")
*/
public function plansAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$error = '';
$message = '';
$plans = $em->getRepository(Plan::class)
->tousLesPlan(true, true);
$data = array(
'error' => $error,
'message' => $message,
'plans' => $plans
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/plans.html.twig', [
]);
}
/**
* @Route("/enregistrer-push-notification-token", name="api_enregistrer_push_notification_token")
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function enregistrerPushNotificationToken(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$data = array();
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$pushNotificationToken = $formData->pushNotificationToken;
//$pushNotificationToken = $request->request->get('pushNotificationToken');
$id = $formData->idUser;
//$id = $request->request->get('idUser');
$user = $em->getRepository(AppUser::class)
->findOneById($id);
$user->setPushNotificationToken($pushNotificationToken);
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'user' => $user
)
);
foreach($userBoutiques as $userBoutique){
$boutique = $userBoutique->getBoutique();
$boutique->setPushNotificationToken($pushNotificationToken);
}
$em->flush();
$data = array(
'error' => $error,
'message' => ''
);
}
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
/*
return $this->render('api/mobile_login.html.twig', [
]);
*/
}
/**
* @Route("/envoyer-push-notification", name="api_envoyer_push_notification")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function envoyerPushNotificationAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$em = $this->getDoctrine()
->getManager();
if($request->getMethod() == 'POST' ){
$formData = json_decode($request->getContent());
$titre = $formData->titre;
//$titre = $request->request->get('titre');
$contenu = $formData->contenu;
//$contenu = $request->request->get('contenu');
$deviceTokens = (array)$formData->deviceTokens;
//$deviceTokens = (array)$request->request->get('deviceTokens');
$url = "https://fcm.googleapis.com/v1/projects/helpplace-30589/messages:send";
$token = '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';
$headers = ['Authorization: Bearer '.$token, 'Content-Type: application/json'];
$projectRoot = $this->getParameter('kernel.project_dir');
$factory = (new Factory)
->withServiceAccount($projectRoot.'/config/helpplace-30589-firebase-adminsdk-fbsvc-7623774dfc.json')
->withDatabaseUri('https://helpplace-30589.firebaseio.com')
->withProjectId('helpplace');
$messaging = $factory->createMessaging();
foreach($deviceTokens as $deviceToken){
if($deviceToken !=''){
$message = CloudMessage::fromArray([
'token' => $deviceToken,
'notification' => [
'title' => $title,
'body' => $body
], // optional
'data' => ['body' => $body]
]);
$messaging->send($message);
}
}
}
return $this->render('api/envoyer_push_notification.html.twig', [
]);
}
/**
* @Route("/entreprise-a-proximite/{latitude}/{longitude}/{distanceEnKilometre}", name="api_entreprise_a_proximite")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function entrepriseAProximiteAction(Request $request, $latitude, $longitude, $distanceEnKilometre = 1)
{
$em = $this->getDoctrine()
->getManager();
$em = $this->getDoctrine()
->getManager();
$entrepriseAProximiteAction = $em->getRepository(Boutique::class)
->entrepriseAProximiteAction($latitude, $longitude, $distanceEnKilometre, true);
$data = array(
'error' => '',
'message' => '',
'prestataires' => $entrepriseAProximiteAction
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/envoyer_push_notification.html.twig', [
]);
}
/**
* @Route("/demande-de-retrait/{idUser}/{idEntreprise}", name="api_demande_retrait")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function demandeDeRetraitAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if(null == $user){
return $this->createNotFoundException();
}
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
if(null == $boutique){
return $this->createNotFoundException();
}
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $idUser,
'boutique' => $boutique->getId()
)
);
if(null == $userBoutique){
return $this->createNotFoundException();
}
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$montant = (float)$formData->montant;
//$montant = (float)$request->request->get('montant');
if($montant > $boutique->getSolde()){
return $this->createNotFoundException();
}
$demandeRetrait = new DemandeRetrait;
$demandeRetrait->setMontant($montant);
$demandeRetrait->setBoutique($boutique);
$demandeRetrait->setUser($user);
$em->persist($demandeRetrait);
$em->flush();
}
$data = array(
'error' => '',
'message' => ''
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/envoyer_push_notification.html.twig', [
]);
}
/**
* @Route("/mes-demandes-de-retrait/{idUser}/{idEntreprise}", name="api_mes_demandes_retrait")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function mesDemandesDeRetraitAction(Request $request, $idUser, $idEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if(null == $user){
return $this->createNotFoundException();
}
$boutique = $em->getRepository(Boutique::class)
->findOneById($idEntreprise);
if(null == $boutique){
return $this->createNotFoundException();
}
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $idUser,
'boutique' => $boutique->getId()
)
);
if(null == $userBoutique){
return $this->createNotFoundException();
}
$demandeRetraits = array();
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$dateDebut = $formData->dateDebut;
$dateDebut = new \DateTime($dateDebut);
$dateDebut->setTime(0, 0);
$dateFin = $formData->dateFin;
//$dateFin = $request->request->get('dateFin');
$dateFin = new \DateTime($dateFin);
$dateFin->setTime(23, 59);
$demandeRetraits = $em->getRepository(DemandeRetrait::class)
->demandeDUnePeriode($boutique->getId(), $dateDebut, $dateFin, true);
}
$data = array(
'error' => '',
'message' => '',
'demandeRetraits' => $demandeRetraits
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->render('api/envoyer_push_notification.html.twig', [
]);
}
/**
* @Route("/mot-de-passe-oublie", name="api_mot_de_passe_oublie")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function motDePasseOublieAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$message = '';
$user = '';
$token = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$telephone = $formData->telephone;
//$telephone = $request->request->get('telephone');
$user = $em->getRepository(AppUser::class)
->findOneByTelephone($telephone);
if($user == null){
$error = '';
$message = 'Impossible de trouver l\'utilisateur';
}else{
$error = 'Success';
$message = 'Un utilisateur trouvé';
//ici traitement
$otp = random_int(100000, 9999999999999);
$user->setEmailToken($otp);
$user->setTokenExpireAt(time() + 3600 * 24);
$em->flush();
$userRetourne = $em->getRepository(AppUser::class)
->findOneByUniqueId($telephone, true);
$userRetourne = $userRetourne[0];
unset($userRetourne['password']);
unset($userRetourne['emailToken']);
}
$data = array(
'error' => $error,
'user' => $userRetourne,
'message' => $message,
'token' => $otp
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/mot_de_passe_oublie.html.twig', [
]);
}
/**
* @Route("/changer-mot-de-passe-oublie/{idUser}", name="api_changer_mot_de_passe_oublie")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function changerMotDePasseOublieAction(Request $request, $idUser, UserPasswordHasherInterface $passwordHasher)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$message = '';
$user = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$password1 = $formData->password1;
//$password1 = $request->request->get('password1');
$password2 = $formData->password2;
//$password2 = $request->request->get('password2');
$token = $formData->token;
//$token = $request->request->get('token');
$user = $em->getRepository(AppUser::class)
->findOneBy(
array(
'id' => $idUser,
'emailToken' => $token
)
);
if($user == null){
$error = 'error';
$message = 'Token ivalide';
}else{
if(time() > $user->getTokenExpireAt()){
$error = 'error';
$message = 'Token expiré ou invalide';
}else{
if($password1 != $password2){
$error = 'error';
$message = 'Les mots de passes ne correspondent pas';
}else{
//
$hashedPassword = $passwordHasher->hashPassword($user, $password1);
$user->setPassword($hashedPassword);
$user->setEmailToken('');
$user->setTokenExpireAt(0);
$em->flush();
$error = 'Success';
$message = 'Mot de passe mis à jour';
$user = $em->getRepository(AppUser::class)
->findOneByUniqueId($idUser, true);
$user = $user[0];
unset($user['password']);
unset($user['emailToken']);
}
}
}
$data = array(
'error' => $error,
'user' => $user,
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/changer_mot_de_passe_oublie.html.twig', [
]);
}
/**
* @Route("/envoyer-casier-judiciaire/{idUser}", name="api_envoyer_casier_judiciare")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function envoyerCasierJudiciareAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$message = '';
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$casierJudiciaire = $formData->casierJudiciaire;
$casierJudiciaireFileName = $formData->casierJudiciaireFileName;
$imageParts = explode(';base64,', $formData->casierJudiciaire);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new Photo;
$ex = pathinfo($casierJudiciaireFileName, PATHINFO_EXTENSION);
$exA = array('pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setCasierJudiciaire($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->flush();
$u = $em->getRepository(AppUser::class)
->findOneByUniqueId($idUser, true);
$data = array(
'error' => 'Succès',
'message' => 'Enregistrement effectué',
'user' => $u[0]
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/envoyer_casier_judiciaire.html.twig', [
]);
}
/**
* @Route("/envoyer-piece-d-identite/{idUser}", name="api_envoyer_piece_d_identite")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function envoyerPieceDIdentiteAction(Request $request, $idUser)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$message = '';
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$pieceDIdentiteRecto = $formData->pieceDIdentiteRecto;
$pieceDIdentiteRectoFileName = $formData->pieceDIdentiteRectoFileName;
$pieceDIdentiteVerso = $formData->pieceDIdentiteVerso;
$pieceDIdentiteVersoFileName = $formData->pieceDIdentiteVersoFileName;
//Traitement des pièces d'identité Recto
$imageParts = explode(';base64,', $formData->pieceDIdentiteRecto);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new ProductPhoto;
$ex = pathinfo($pieceDIdentiteRectoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif', 'pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setPieceDIdentiteRecto($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
//Traitement verso
$imageParts = explode(';base64,', $formData->pieceDIdentiteVerso);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new ProductPhoto;
$ex = pathinfo($pieceDIdentiteVersoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif', 'pdf');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time().'0';
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Enregistrement effectué';
$user->setPieceDIdentiteVerso($photo->getFullUrl());
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
$em->flush();
$em->flush();
$u = $em->getRepository(AppUser::class)
->findOneByUniqueId($idUser, true);
$u = $u[0];
unset($u['password']);
$data = array(
'error' => 'Succès',
'message' => 'Enregistrement effectué',
'user' => $u
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
}
return $this->render('api/envoyer_piece_d_identite.html.twig', [
]);
}
/**
* @Route("/mise-a-jour-prestataire/{idUser}/{idPrestataire}", name="api_mise_a_jour_prestataire")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function miseAJourCompteProfessionnelAction(Request $request, $idUser, $idPrestataire)
{
$em = $this->getDoctrine()
->getManager();
$user = $em->getRepository(AppUser::class)
->findOneById($idUser);
$boutique = $em->getRepository(Boutique::class)
->findOneById($idPrestataire);
$em = $this->getDoctrine()
->getManager();
$message = '';
$error = '';
if($request->getMethod() == 'POST'){
$formData = json_decode($request->getContent());
$logo = $formData->logo;
$logoFileName = $formData->logoFileName;
$mainDOeuvre = $formData->mainDOeuvre;
$zoneDIntervention = $formData->zoneDIntervention;
$horaireDOuverture = $formData->horaireDOuverture;
$description = $formData->description;
$latitude = $formData->latitude;
$longitude = $formData->longitude;
$boutique->setMainDOeuvre($mainDOeuvre);
$boutique->setZoneDIntervention($zoneDIntervention);
$boutique->setHoraireDOuverture($horaireDOuverture);
$boutique->setDescription($description);
$boutique->setLatitude($latitude);
$boutique->setLongitude($longitude);
if($logoFileName != ''){
//Traitement des pièces d'identité Recto
$imageParts = explode(';base64,', $formData->logo);
$imageBase64 = isset($imageParts[1]) ? $imageParts[1] : $imageParts[0];
$imageDecoded = base64_decode($imageBase64);
$photo = new Photo;
$ex = pathinfo($logoFileName, PATHINFO_EXTENSION);
$exA = array('jpg', 'jpeg', 'png', 'gif', 'jfif');
if (in_array(strtolower($ex), $exA)){
$photo->setExtension($ex);
} else {
throw new \RuntimeException('Désolé, vous n\'avez pas le droit de télécharger ce type de fichier: '.$ex);
}
$name = $user->getId().time();
$namePourRepertoire = $name;
//hydratation des attributs de l'objet
$photo->setUrl($name.'.'.$photo->getExtension());
$photo->setFullUrl($this->getDomain().'/uploads/img/original/'.$name.'.'.$photo->getExtension());
$extension = $photo->getExtension();
if(!is_dir($photo->getUploadRootDir().'/original/') && !mkdir($photo->getUploadRootDir().'/original', 0777, true))
{
throw new \RuntimeException('Impossible de créer le dossier de destination');
}
if (file_put_contents($photo->getUploadRootDir().'/original/'.$name.'.'.$photo->getExtension(), $imageDecoded))
{
$error = 'Succès';
$message = 'Enregistrement effectué';
$em->persist($photo);
$em->flush();
$boutique->setLogo($photo);
} else {
echo json_encode(['status' => 'error', 'message' => 'Failed to save file']);
$error = 'Impossible d\'enregistrer l\'image';
}
}
$em->flush();
//Fin traitement pièce d'identité
$error = '';
$message = 'Enregistrement effecuté';
$unPrestataire = $em->getRepository(Boutique::class)
->unPrestataire($boutique->getId(), true);
$data = array(
'error' => $error,
'prestataire' => $unPrestataire[0],
'message' => $message
);
$response = new JsonResponse;
$response = $this->allowRemoteRequest($response);
$response->setContent(json_encode($data));
return $response;
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
}
return $this->render('api/mise_a_jour_compte_pro.html.twig', [
]);
}
public function getYelliSenderId()
{
return 'SolutionsIT';
}
public function getYelliAPIKey()
{
return '1046|oVBGy111od65ejsj44ECUlhrjYj7HT3Oqw6ECA5za18586fe';
}
public function getDomain()
{
$domaine = $_SERVER['HTTP_HOST'];
$protocol = '';
if($domaine == 'localhost' || $domaine == '127.0.0.1'){
$domaine = $domaine.'/helpplace/public';
}
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'){
$protocol = 'https://';
} else{
$protocol = 'http://';
}
return $protocol.$domaine;
}
public function allowRemoteRequest($response)
{
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Content-Type', 'application/json;');
$response->headers->set('Access-Control-Allow-Headers', 'Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Allow-Origin,Authorization,Access-Control-Request-Headers');
//$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
//$response->headers->set('Access-Control-Allow-Headers', 'Origin, Accept, Access-Control-Allow-Origin, Content-Type, X-Auth-Token');
//$response->headers->set('Access-Control-Allow-Headers', 'Content-Type');
//$response->headers->set('Access-Control-Allow-Credentials', true);
//$response->headers->set('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization,Access-Control-Request-Headers');
//$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
//header("Access-Control-Allow-Headers: 'Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Allow-Origin,Authorization,Access-Control-Request-Headers'");
return $response;
}
}