ldc-mesbr-app/app/Http/Controllers/PanierController.php
2026-07-31 14:37:33 +02:00

166 lines
5.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Panier;
use App\Models\Campagne;
use App\Models\Coupon;
use App\Models\Contact;
use App\Enums\CampaignTypes;
use App\Traits\CouponTrait;
use App\Traits\ThanksTrait;
class PanierController extends Controller
{
use ThanksTrait;
use CouponTrait;
public function showTemplate(Request $request)
{
// $panier = Panier::find($request->query('basketid'));
$panier = Panier::where(['panier_ref' => $request->basketid])->first();
if (!$panier) {
abort(404);
}
session()->put('panier', $panier);
$panierCouponsCount = $this->getCountCouponsPanierPublished($panier);
$contact = Contact::where(['contact_id' => $panier->panier_contactId])->first();
if (!$contact) {
abort(404);
}
session()->put('contact', $contact);
$campagne = Campagne::where(['camp_id' => $panier->panier_campId, 'camp_published' => 1])->first();
if (!$campagne) {
abort(404);
}
session()->put('campagne', $campagne);
if ($campagne->camp_type->equals(CampaignTypes::panier())) {
$coupons = $this->getCouponsPublished($campagne);
} else {
$panierContents = $this->getPanierContentPublished($panier);
$coupons = array();
foreach ($panierContents as $panierContent) {
$cp = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first();
$qty = $panierContent->panier_content_quantity;
for ($i = 0; $i < $qty; $i++) {
$coupons[] = $cp;
}
}
}
session()->put('coupons', $coupons);
return view('landings::' . $panier->panier_campId . '.index')
->with(['ref' => $panier->panier_campId, 'coupons' => $coupons, 'contact' => $contact, 'nb' => $panierCouponsCount]);
}
public function printPanierSelect(Request $request)
{
if (isset($request->coupons)) {
session()->put('coupons', $request->coupons);
}
$coupons = session('coupons', []);
if ($request->session()->has('campagne')) {
$campagne = $request->session()->get('campagne');
}
$ref = $campagne->camp_id;
return view('landings::' . $ref . '.imprimer')
->with(['ref' => $ref, 'coupons' => $coupons, 'contact' => $request->session()->get('contact')]);
}
public function showBasket(Request $request)
{
// ---- Contrôle des paramètres
if (isset($request->basketid) && $request->basketid != "") {
$basketid = $request->basketid;
} else {
return response()->json([
'Statut' => 'KO',
'Code' => 106,
'Message' => 'Le panier n\'existe pas'
]);
}
$panier = Panier::where('panier_ref', $basketid)->first();
if (!$panier) {
return response()->json([
'Statut' => 'KO',
'Code' => 106,
'Message' => 'Le panier n\'existe pas'
]);
}
if ($panier->panier_pending == 1) {
$encours = "oui";
} else {
$encours = "non";
}
$contact = $panier->contact()->where(['contact_id' => $panier->panier_contactId])->first();
if (!$contact) {
return response()->json([
'Statut' => 'KO',
'Code' => 104,
'Message' => 'Le contact n\'existe pas'
]);
}
$campagne = $panier->campagne()->where(['camp_id' => $panier->panier_campId])->first();
if (!$campagne) {
return response()->json([
'Statut' => 'KO',
'Code' => 103,
'Message' => 'La campagne n\'existe pas'
]);
}
$site = $campagne->site()->first();
if ($site === null) {
return response()->json([
'Statut' => 'KO',
'Code' => 102,
'Message' => 'Le site n\'existe pas'
]);
}
$allPanierContent = $panier->panierContents()->get();
if ($allPanierContent->count() == 0) {
return response()->json([
'Statut' => 'KO',
'Code' => 108,
'Message' => 'Le panier n\'a pas de coupons liés'
]);
}
$response = new \stdClass();
$response->Site = $site->site_nom . " (" . $site->site_id . ")";
$response->Campagne = $campagne->camp_name . " (" . $campagne->camp_id . ")";
$response->Panier = $panier->panier_ref;
$response->DateCreation = date("d/m/Y", strtotime($panier->panier_createdate));
$response->EnCours = $encours;
$response->Nom = $contact->contact_nom;
$response->Prenom = $contact->contact_prenom;
$response->Email = $contact->contact_email;
$response->CodePostal = $contact->contact_cp;
$response->Commune = $contact->contact_ville;
$panCont = [];
foreach ($allPanierContent as $panierContent) {
$coupon = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first();
if ($coupon) {
array_push($panCont, $coupon->coupon_code . " - " . $coupon->coupon_name . " (x" . $panierContent->panier_content_quantity . ")");
}
}
$response->panierContent = $panCont;
return response()->json([
'Statut' => 'OK',
'Informations Panier' => $response
]);
}
}