src/Controller/OffersController.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AccountForm;
  4. use App\Entity\Offers;
  5. use App\Entity\Message;
  6. use App\Entity\ImageProposal;
  7. use MangoPay\PayIn;
  8. use MangoPay\PayOut;
  9. use App\Entity\Orders;
  10. use App\Entity\Proposal;
  11. use MangoPay\ApiPayIns;
  12. use MangoPay\MangoPayApi;
  13. use Psr\Log\LoggerInterface;
  14. use MangoPay\MangoPayApi as Api;
  15. use App\Repository\UserRepository;
  16. use App\Repository\OrdersRepository;
  17. use App\Repository\MessageRepository;
  18. use App\Service\Payment\MangopayService;
  19. use App\Repository\AccountFormRepository;
  20. use App\Repository\ProposalRepository;
  21. use App\Repository\OffersRepository;
  22. use App\Service\Payment\StripeService;
  23. use Stripe\Climate\Order;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Component\HttpFoundation\JsonResponse;
  28. use Symfony\Component\HttpFoundation\StreamedResponse;
  29. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  30. use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
  31. use Symfony\Component\Form\Extension\Core\Type\TextType;
  32. use Symfony\Component\Form\Extension\Core\Type\FileType;
  33. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  34. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  35. use App\Form\OffersType;
  36. use App\Form\QuotationType;
  37. use App\Form\ImageType;
  38. use App\Form\ImagesOfferType;
  39. use Swift_Mailer;
  40. use Swift_Message;
  41. class OffersController extends AbstractController {
  42.     /**
  43.      * @Route("/offers/create/{accountFormId?}", name="offers.create")
  44.      */
  45.     public function OffersCreate(OffersRepository $offersRepository,AccountFormRepository $accountFormRepositoryRequest $request$accountFormId){ 
  46.       $user $this->getUser();
  47.       $em $this->getDoctrine()->getManager();
  48.       $offer = new Offers();
  49.       $offer->setUser($user);
  50.       if(isset($accountFormId)){
  51.         $accountForm $accountFormRepository->find($accountFormId);
  52.         $accountForm->addOffer($offer);
  53.       }
  54.       $form $this->createForm(OffersType::class, $offer);
  55.       $form->handleRequest($request);
  56.       if($form->isSubmitted() && $form->isValid()){
  57.         $offerSubmitted $form->getData();
  58.         if(isset($offerSubmitted->getImages()[0])){
  59.           $image $offerSubmitted->getImages()[0];
  60.           $imageFile $image->getImage();
  61.           $image->setImage($imageFile);
  62.           $em->persist($image);
  63.         }
  64.         $em->persist($offerSubmitted);
  65.         $em->flush();
  66.         $this->addFlash('published''Votre demande de Job à été publiée.');
  67.         return $this->redirectToRoute('offers.list');
  68.        }
  69.       return $this->render('offers.form.html.twig',['form'=>$form->createView()]);
  70.     }
  71.     /**
  72.      * @Route("/mail", name="mail")
  73.      */
  74.     public function mail(Swift_Mailer $mailer){
  75.      /* $headers = 'From: contact@jobingwada.fr' . "\r\n" .
  76.                    'Reply-To: contact@jobingwada.fr' . "\r\n" .
  77.                    'X-Mailer: PHP/' . phpversion();
  78.       mail("lionel.amiens84@gmail.com",'sujet jobingwada','hello world');*/
  79.       $message = (new Swift_Message('Hello from SwiftMailer'))
  80.               ->setFrom('contact@jobingwada.fr')
  81.               ->setTo('lionel.purchase@gmail.com')
  82.               ->setBody('This is the email body (plain text).');
  83.               $mailer->send($message);
  84.       return new Response('ok');
  85.     }
  86.     /**
  87.      * @Route("/offers/private/{offerId}", name="offers.private")
  88.      */
  89.     public function offerPrivate($offerIdOffersRepository $offersRepository,ProposalRepository $proposalRepositoryRequest $request,MessageRepository $messageRepositorySwift_Mailer $mailer)
  90.     {
  91.         $this->denyAccessUnlessGranted(['ROLE_USER']);
  92.         $offer $offersRepository->find($offerId); 
  93.         $user $this->getUser();
  94.         $accountForm $user->getAccountForm();
  95.         $formView null;
  96.         $proposalnull;
  97.         $messages null;
  98.         $jobber $user;
  99.         if(isset($jobber) && $jobber ){
  100.           $proposalFetch $proposalRepository->findBy(['offer' => $offer'accountForm' => $accountForm]); 
  101.           if( isset($proposalFetch) && $proposalFetch != null ){
  102.             $messages $messageRepository->findMessagesChat($jobber,$user);
  103.             $em $this->getDoctrine()->getManager();
  104.             $proposal $proposalFetch[0];
  105.           } else {
  106.             $proposal = new Proposal();
  107.             $proposal->setAccountForm($accountForm);
  108.           }
  109.           $form    $this->createForm(QuotationType::class, $proposal);
  110.           $form->handleRequest($request);
  111.           $formView $form->createView();
  112.           if($form->isSubmitted() && $form->isValid()){
  113.               $message $form->getData();
  114.               $em->persist($message);
  115.               $em->flush();
  116.               $this->addFlash('quotation''Votre offre a bien été soumise !');
  117.               /*$message = (new Swift_Message('Hello from SwiftMailer'))
  118.               ->setFrom('contact@soukounian.fr')
  119.               ->setTo('lionel.amiens84@gmail.com')
  120.               ->setBody('This is the email body (plain text).');
  121.               $mailer->send($message);*/
  122.               return $this->redirectToRoute('offers.list');
  123.           }
  124.         }
  125.         if($offer->getAccountForm()->contains($accountForm)){
  126.           return $this->render('offers.private.view.html .twig', ['offer'=>$offer,'proposal'=>$proposal,'user'=>$user,'form'=>$formView,'messages' => $messages]);
  127.         }
  128.         return $this->redirectToRoute('profil.user');
  129.     }
  130.      /**
  131.      * @Route("/offers/list/{offset}", name="offers.list")
  132.      */
  133.     public function OffersList(OffersRepository $offersRepositoryRequest $requestProposalRepository $proposalRepository$offset=0){ 
  134.       $user $this->getUser();
  135.       //$offers = $offersRepository->findBy(['user' => $user->getId()], ['createdAt' => 'DESC']);
  136.       $offers $offersRepository->findOffersWithProposals($user $offset);
  137.       return $this->render('offers.list.html.twig',['offers'=>$offers,'offset'=>$offset]);
  138.     }
  139.     /**
  140.      * @Route("/offers/view/{id}", name="offers.view")
  141.      */
  142.     public function OffersView($id,OffersRepository $offersRepositoryProposalRepository $proposalRepositoryRequest $request,MessageRepository $messageRepository){ 
  143.       $this->denyAccessUnlessGranted(['ROLE_USER']);
  144.       $user  $this->getUser();
  145.       $offer $offersRepository->find($id);
  146.       $numberProposal count($offer->getAccountForm());
  147.       $formView null;
  148.       $proposalnull;
  149.       $messages null;
  150.       if($user){
  151.         $accountForm $user->getAccountForm();
  152.         $jobber $user;
  153.         if(isset($jobber) && $jobber ){
  154.           $proposalFetch $proposalRepository->findBy(['offer' => $offer'accountForm' => $accountForm]);
  155.           if( isset($proposalFetch) && $proposalFetch != null ){
  156.             $messages $messageRepository->findMessagesChat($jobber,$user);
  157.             $em $this->getDoctrine()->getManager();
  158.             $proposal $proposalFetch[0];
  159.           } else {
  160.             $proposal = new Proposal();
  161.             $proposal->setAccountForm($accountForm);
  162.           }
  163.           $form    $this->createForm(QuotationType::class, $proposal);
  164.           $form->handleRequest($request);
  165.           $formView $form->createView();
  166.           if($form->isSubmitted() && $form->isValid()){
  167.               $message $form->getData();
  168.               $em->persist($message);
  169.               $em->flush();
  170.               $this->addFlash('quotation''Votre offre a bien été soumise !');
  171.               return $this->redirectToRoute('offers.list');
  172.           }
  173.         }
  174.       }
  175.      
  176.       return $this->render('offers.view.html.twig',['offer'=>$offer,'proposal'=>$proposal,'user'=>$user'numberProposal'=>$numberProposal,'form'=>$formView,'messages' => $messages]);
  177.     }
  178.     
  179.     /**
  180.      * @Route("/offers/update/{id}", name="offers.update")
  181.      */
  182.     public function OffersUpdate($id,OffersRepository $offersRepositoryRequest $request){ 
  183.       $user $this->getUser();
  184.       $em $this->getDoctrine()->getManager();
  185.       $offer $offersRepository->find($id);
  186.       $offer->setUser($user);
  187.       $form $this->createForm(OffersType::class, $offer);
  188.       $form->handleRequest($request);
  189.       if($form->isSubmitted() && $form->isValid()){
  190.         $offer $form->getData();
  191.         $em->persist($offer);
  192.         $em->flush();
  193.         $this->addFlash('published''Votre demande de Job à été modifiée.');
  194.         return $this->redirectToRoute('offers.view',['id'=>$id]);
  195.        }
  196.        //dd($offer);
  197.       return $this->render('offers.update.html.twig',['form'=>$form->createView()]);
  198.     }
  199.     /**
  200.      * @Route("/offers/proposal/{idOffer}", name="offers.proposal")
  201.      */
  202.     public function OffersProposal(ProposalRepository $proposalRepository,OffersRepository $offersRepository ,Request $request$idOffer ){
  203.       $jobber $this->getUser();
  204.       $offer $offersRepository->find($idOffer);
  205.       $offer->setStatus(2);
  206.       $proposal = new Proposal();
  207.       $content $request->request->get('quotation')['content'];
  208.       $price $request->request->get('quotation')['tarif'];
  209.       $offerId $request->request->get('offer_id');
  210.       $delay $request->request->get('quotation')['delay'];
  211.       $proposal->setPrice($price);
  212.       $proposal->setContent($content);
  213.       $proposal->setOffer($offer);
  214.       $accountForm $jobber->getAccountForm();
  215.       $proposal->setAccountForm($accountForm);
  216.       if(isset($delay)){
  217.         $proposal->setDelay($delay);
  218.       }
  219.       $em $this->getDoctrine()->getManager();
  220.       try{
  221.         $em->persist($proposal);
  222.         $em->flush();
  223.       } catch (\Exception $e){
  224.         //echo 'Proposition non enregistrée';
  225.       }
  226.       return new JsonResponse([$content,$price,$offerId,$delay]);
  227.     }
  228.     
  229.     /**
  230.      * @Route("/offers/user/view/proposals/{idOffer}", name="offers.user.view.proposals")
  231.      */
  232.     public function OffersProposalsListViewProposalRepository $proposalRepository,OffersRepository $offersRepository ,Request $request$idOffer){
  233.       $jobber  $this->getUser();
  234.       $proposals $proposalRepository->findBy(['offer'=>$idOffer],['id' => 'DESC']);
  235.       $offer $offersRepository->find($idOffer);
  236.      /* if($offer->getUser() !== $jobber)
  237.       {
  238.         return $this->redirectToRoute('profil.user');
  239.       }*/
  240.       return $this->render('offers.user.view.html.twig',['proposals'=>$proposals'idOffer' => $idOffer'offer' => $offer]);
  241.     }
  242.     /**
  243.      * @Route("/offers/user/proposals/{idOffer}", name="offers.user.proposals")
  244.      */
  245.     public function OffersProposalsList(ProposalRepository $proposalRepository,OffersRepository $offersRepository ,Request $request$idOffer){
  246.       $jobber  $this->getUser();
  247.       $proposals $proposalRepository->findBy(['offer'=>$idOffer], ['id' => 'DESC']);
  248.       //$proposals = json_encode($proposals);
  249.      // dd($proposals);
  250. //      $messages = $messageRepository->findMessagesChat($jobber,$user);
  251.       return $this->render($proposals);
  252.     }
  253.   }