<?php
namespace App\Controller\BackController;
use App\Entity\FraisLivraison;
use App\Entity\OrderApiDetails;
use App\Form\FraisLivraisonType;
use App\Form\OrderApiDetailsType;
use App\Repository\FraisLivraisonRepository;
use App\Repository\OrderApiDetailsRepository;
use App\Repository\OrderApiRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Service\MailService;
#[Route('/frais/livraison')]
class FraisLivraisonController extends AbstractController
{
#[Route('/precommande/{id}', name: 'app_frais_livraison_precommande_edit', methods: ['GET', 'POST'])]
public function precommandeEdit(Request $request ,EntityManagerInterface $entityManager, FraisLivraisonRepository $fraisLivraisonRepository, OrderApiDetailsRepository $orderApiDetailsRepository, OrderApiDetails $orderApiDetails, OrderApiRepository $orderApiRepository, MailService $mailService): Response
{
// id de commande de l'artcile
$idOrder = $orderApiDetails->getIdorder();
$commandeRef = $orderApiRepository->findBy(["id" => $idOrder])[0]->getReforder();
$customer = $orderApiRepository->findBy(["id" => $idOrder])[0]->getCustomer();
$emailCustomer = $customer->getEmail();
$precommandes = $orderApiDetailsRepository->findBy(["prixLivraison" => null]);
$form = $this->createForm(OrderApiDetailsType::class, $orderApiDetails);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$quantity = $orderApiDetails->getQuantity();
$prixLivUnitaire = $orderApiDetails->getPrixLivraison();
// dd($prixLivUnitaire);
$prixLivTotal = $prixLivUnitaire * $quantity;
$orderApiDetails->setPrixTotalLivraison($prixLivTotal);
$entityManager->flush();
// vérification si frais complet ou pas
$orderDetails = $orderApiDetailsRepository->findBy(["idorder" => $idOrder]);
$isComplet = 0;
$isNombre = count($orderDetails);
foreach ($orderDetails as $key => $value) {
if ($value->getPrixLivraison() != null) {
$isComplet = $isComplet + 1 ;
}
}
// envoie maintenant un mail si complète
if ($isNombre == $isComplet) {
$subject = "PAIEMENT COMMANDE";
$to = array(
'to' => $emailCustomer,
'cc' => "princeclain4@gmail.com"
);
try {
$mailService->sendEmail(
$to,
$subject,
'backView/frais_livraison/email.html.twig',
[
'data' => [
"commande" => $commandeRef
]
],
);
$this->addFlash('success', 'Le mail de confirmation a été effectuée avec succès !');
} catch (\Throwable $th) {
$this->addFlash('error', 'Une erreur est survenue lors de l\'envoie du mail. Veuillez réessayer.');
}
}
return $this->redirectToRoute('app_frais_livraison_precommande', [], Response::HTTP_SEE_OTHER);
}
return $this->render('backView/frais_livraison/precommandeEdit.html.twig', [
'frais_livraisons' => $fraisLivraisonRepository->findAll(),
'precommandes' => $precommandes,
'form' => $form->createView(),
]);
}
#[Route('/precommande', name: 'app_frais_livraison_precommande', methods: ['GET'])]
public function precommande(FraisLivraisonRepository $fraisLivraisonRepository, OrderApiDetailsRepository $orderApiDetailsRepository): Response
{
$precommandes = $orderApiDetailsRepository->findBy(["prixLivraison" => null]);
return $this->render('backView/frais_livraison/precommande.html.twig', [
'frais_livraisons' => $fraisLivraisonRepository->findAll(),
'precommandes' => $precommandes,
]);
}
#[Route('/', name: 'app_frais_livraison_index', methods: ['GET'])]
public function index(FraisLivraisonRepository $fraisLivraisonRepository): Response
{
return $this->render('backView/frais_livraison/index.html.twig', [
'frais_livraisons' => $fraisLivraisonRepository->findAll(),
]);
}
#[Route('/new', name: 'app_frais_livraison_new', methods: ['GET', 'POST'])]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$fraisLivraison = new FraisLivraison();
$form = $this->createForm(FraisLivraisonType::class, $fraisLivraison);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($fraisLivraison);
$entityManager->flush();
return $this->redirectToRoute('app_frais_livraison_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backView/frais_livraison/new.html.twig', [
'frais_livraison' => $fraisLivraison,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_frais_livraison_show', methods: ['GET'])]
public function show(FraisLivraison $fraisLivraison): Response
{
return $this->render('backView/frais_livraison/show.html.twig', [
'frais_livraison' => $fraisLivraison,
]);
}
#[Route('/{id}/edit', name: 'app_frais_livraison_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, FraisLivraison $fraisLivraison, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(FraisLivraisonType::class, $fraisLivraison);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute('app_frais_livraison_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('backView/frais_livraison/edit.html.twig', [
'frais_livraison' => $fraisLivraison,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_frais_livraison_delete', methods: ['POST'])]
public function delete(Request $request, FraisLivraison $fraisLivraison, EntityManagerInterface $entityManager): Response
{
if ($this->isCsrfTokenValid('delete' . $fraisLivraison->getId(), $request->request->get('_token'))) {
$entityManager->remove($fraisLivraison);
$entityManager->flush();
}
return $this->redirectToRoute('app_frais_livraison_index', [], Response::HTTP_SEE_OTHER);
}
}