ldc-mesbr-app/app/Http/Controllers/MurController.php

317 lines
10 KiB
PHP
Raw Normal View History

2019-01-15 14:17:15 +01:00
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Campagne;
use App\Contact;
use App\Mur;
2019-02-20 16:26:32 +01:00
use App\Log;
2019-02-13 16:37:14 +01:00
use App\Traits\CouponTrait;
use App\Traits\ThanksTrait;
2019-01-15 14:17:15 +01:00
use Response;
class MurController extends Controller
{
2019-02-13 16:37:14 +01:00
use CouponTrait;
use ThanksTrait;
2021-04-20 09:42:03 +02:00
2019-01-15 14:17:15 +01:00
public function show(Request $request)
{
$datas = $request->all();
2021-04-27 17:29:47 +02:00
if (isset($datas['refcamp'])) {
2025-04-03 09:30:16 +02:00
$ref = intval($datas['refcamp']);
2021-04-27 17:29:47 +02:00
$campagne = Campagne::where(['camp_id' => $ref])->first();
2019-02-13 16:37:14 +01:00
} else {
2019-02-28 17:05:24 +01:00
abort(404);
2019-02-28 09:51:16 +01:00
}
2021-04-27 17:29:47 +02:00
if (!isset($datas['refsite'])) {
2019-02-28 17:05:24 +01:00
abort(404);
2019-02-13 16:37:14 +01:00
}
2021-04-27 17:29:47 +02:00
if (!isset($campagne) || $campagne->camp_published == 0 || ($campagne->camp_type != 0 && $campagne->camp_type != 2)) {
abort(404);
}
2021-04-27 17:29:47 +02:00
if (isset($datas['hash'])) {
2019-02-13 16:37:14 +01:00
$contact = Contact::where([
'contact_hash' => $datas['hash'], 'contact_siteId' => $campagne->camp_siteId
])->first();
} else {
2021-04-20 09:42:03 +02:00
abort(404);
2019-02-13 16:37:14 +01:00
}
2021-04-20 09:42:03 +02:00
$coupons = $this->getCouponsPublished($campagne);
2019-01-15 14:17:15 +01:00
2021-04-27 17:29:47 +02:00
foreach ($coupons as $coupon) {
2025-04-03 09:30:16 +02:00
$coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact);
2019-02-28 13:58:25 +01:00
$coupon->isAvailableToPrint = $this->isAvailableToPrint($coupon, $campagne);
2019-02-13 16:37:14 +01:00
}
unset($coupon);
2019-01-15 14:17:15 +01:00
2019-02-13 16:37:14 +01:00
// Montant total et Nombre réductions disponible
2025-04-03 09:30:16 +02:00
$montantDispo = 0;
$montantTotal = 0;
$nbCoupon = 0;
2019-02-28 13:58:25 +01:00
$nbCouponToPrint = 0;
2021-04-27 17:29:47 +02:00
foreach ($coupons as $coupon) {
2019-02-13 16:37:14 +01:00
$montantTotal += $coupon->coupon_value;
2021-04-27 17:29:47 +02:00
if ($coupon->isAvailable == true) {
2019-02-13 16:37:14 +01:00
$montantDispo += $coupon->coupon_value;
$nbCoupon++;
}
2021-04-27 17:29:47 +02:00
if ($coupon->isAvailableToPrint == true) {
2019-02-28 13:58:25 +01:00
$nbCouponToPrint++;
}
2019-02-13 16:37:14 +01:00
}
2021-04-20 09:42:03 +02:00
2019-01-15 14:17:15 +01:00
session()->put('campagne', $campagne);
session()->put('site', $campagne->site);
session()->put('contact', $contact);
2019-05-06 10:33:32 +02:00
return view('landings::' . $ref . '.index')
2021-04-27 17:29:47 +02:00
->with(['ref' => $ref, 'coupons' => $coupons, 'contact' => $contact, 'nb' => $nbCoupon, 'nbAvailableToPrint' => $nbCouponToPrint, 'montantDispo' => $montantDispo]);
2019-02-13 16:37:14 +01:00
}
public function printMur(Request $request)
{
2021-04-27 17:29:47 +02:00
if (isset($request->coupons)) {
2019-02-13 16:37:14 +01:00
session()->put('coupons', $request->coupons);
$coupons = $request->coupons;
}
2021-04-27 17:29:47 +02:00
if ($request->session()->has('campagne')) {
2021-04-20 09:42:03 +02:00
$campagne = $request->session()->get('campagne');
2019-03-07 12:25:05 +01:00
} else {
abort(419);
}
2019-02-13 16:37:14 +01:00
$ref = $campagne->camp_id;
2019-05-06 10:33:32 +02:00
return view('landings::' . $ref . '.imprimer')
2021-04-27 17:29:47 +02:00
->with(['ref' => $ref, 'coupons' => $coupons, 'contact' => $request->session()->get('contact')]);
2019-01-15 14:17:15 +01:00
}
public function deleteControlContact(Request $request)
2021-04-20 09:42:03 +02:00
{
2021-04-27 17:29:47 +02:00
if (isset($request->admin)) {
2021-04-20 09:42:03 +02:00
$source = 'ADMIN';
2019-02-20 16:26:32 +01:00
} else {
2021-04-20 09:42:03 +02:00
$source = 'API';
2019-02-20 16:26:32 +01:00
}
// ---- INIT du log
2025-04-03 09:30:16 +02:00
$log = new Log();
2019-02-20 16:26:32 +01:00
$log->log_action = config('constants.delctrlcontact');
$log->log_source = $source;
2019-01-15 14:17:15 +01:00
$error = false;
// ---- Contrôle des paramètres
2021-04-27 17:29:47 +02:00
if (isset($request->refcamp) && $request->refcamp != "") {
2019-01-15 14:17:15 +01:00
$refcamp = $request->refcamp;
2021-04-27 17:29:47 +02:00
} else {
2019-01-15 14:17:15 +01:00
$error = true;
}
2021-04-27 17:29:47 +02:00
if (isset($request->refadherent) && $request->refadherent != "") {
2019-01-15 14:17:15 +01:00
$refadherent = $request->refadherent;
2021-04-27 17:29:47 +02:00
} else {
2019-01-15 14:17:15 +01:00
$error = true;
}
// Erreur si paramètres mal renseignés
2021-04-27 17:29:47 +02:00
if ($error) {
2025-04-03 09:30:16 +02:00
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
$log->log_statut = 'NOK';
2019-02-20 16:26:32 +01:00
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
$log->save();
2021-04-20 09:42:03 +02:00
2019-01-15 14:17:15 +01:00
return Response::json([
'Statut' => 'KO',
'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
]);
}
2025-04-03 09:30:16 +02:00
// Check de la campagne
2019-02-13 16:37:14 +01:00
$campagne = Campagne::where('camp_id', $refcamp)->first();
2021-04-27 17:29:47 +02:00
if (!$campagne) {
2025-04-03 09:30:16 +02:00
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
$log->log_statut = 'NOK';
2019-02-20 16:26:32 +01:00
$log->log_message = "La campagne n'existe pas";
$log->save();
return Response::json([
'Statut' => 'KO',
'Code' => 103,
'Message' => 'La campagne n\'existe pas'
]);
}
2025-04-03 09:30:16 +02:00
// Check du contact
2019-02-13 16:37:14 +01:00
$contact = Contact::where(['contact_ref' => $refadherent, 'contact_siteId' => $campagne->camp_siteId])->first();
2019-01-15 14:17:15 +01:00
2021-04-27 17:29:47 +02:00
if (!$contact) {
2025-04-03 09:30:16 +02:00
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
2019-02-20 16:26:32 +01:00
$log->log_refsite = $campagne->camp_siteId;
2025-04-03 09:30:16 +02:00
$log->log_statut = 'NOK';
2019-02-20 16:26:32 +01:00
$log->log_message = "Le contact n'existe pas";
$log->save();
2019-01-15 14:17:15 +01:00
return Response::json([
'Statut' => 'KO',
'Code' => 104,
'Message' => 'Le contact n\'existe pas'
]);
}
2021-04-27 17:29:47 +02:00
if ($campagne) {
2025-04-03 09:30:16 +02:00
// Update
2019-02-13 16:37:14 +01:00
$mur = Mur::where(['mur_campId' => $refcamp, 'mur_contactId' => $contact->contact_id])->update(['mur_deleted' => '1']);
2021-04-27 17:29:47 +02:00
if ($mur != 0) {
2025-04-03 09:30:16 +02:00
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
$log->log_refsite = $campagne->camp_siteId;
2021-04-27 17:29:47 +02:00
$log->log_contactId = $contact->contact_id;
2025-04-03 09:30:16 +02:00
$log->log_statut = 'OK';
$log->log_message = $mur . " enregistrements ont été mis à jour.";
2019-02-20 16:26:32 +01:00
$log->save();
2019-02-13 16:37:14 +01:00
return Response::json([
2021-04-20 09:42:03 +02:00
'Statut' => 'OK',
2021-04-27 17:29:47 +02:00
'Message' => $mur . " enregistrements ont été mis à jour."
2019-02-13 16:37:14 +01:00
]);
} else {
2025-04-03 09:30:16 +02:00
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
$log->log_refsite = $campagne->camp_siteId;
2021-04-27 17:29:47 +02:00
$log->log_contactId = $contact->contact_id;
2025-04-03 09:30:16 +02:00
$log->log_statut = 'OK';
$log->log_message = 'Aucun contrôle à effacer';
2019-02-20 16:26:32 +01:00
$log->save();
2019-02-13 16:37:14 +01:00
return Response::json([
'Statut' => 'KO',
'Code' => 110,
'Message' => 'Aucun contrôle à effacer'
]);
2025-04-03 09:30:16 +02:00
}//end if
}//end if
2019-01-15 14:17:15 +01:00
return;
}
public function montantDispoCampagne(Request $request)
{
// ---- Contrôle des paramètres
2021-04-27 17:29:47 +02:00
if (isset($request->refcamp) && $request->refcamp != "") {
2019-01-15 14:17:15 +01:00
$refcamp = $request->refcamp;
2021-04-27 17:29:47 +02:00
} else {
2019-01-15 14:17:15 +01:00
return Response::json([
'Statut' => 'KO',
'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
]);
}
// ------ Recuperation de la campagne
$camp = Campagne::where(['camp_id' => $refcamp])->first();
2021-04-27 17:29:47 +02:00
if (!$camp) {
2019-01-15 14:17:15 +01:00
return Response::json([
'Statut' => 'KO',
'Code' => 103,
'Message' => 'La campagne n\'existe pas'
]);
}
// ------ Récupération des coupons de la campagne
$coupons = $camp->coupons()->where(['coupon_published' => 1])->get();
2021-04-27 17:29:47 +02:00
if (count($coupons) == 0) {
2019-01-15 14:17:15 +01:00
return Response::json([
'Statut' => 'KO',
'Code' => 105,
'Message' => 'La campagne est vide'
]);
}
// ---- Montant total et Nombre réductions disponible
$montantTotal = 0;
2021-04-27 17:29:47 +02:00
foreach ($coupons as $coupon) {
2019-01-15 14:17:15 +01:00
$montantTotal += $coupon->coupon_value;
}
$montantTotal = number_format($montantTotal, 2, ",", " ");
$montantTotal = str_pad($montantTotal, 6, "0", STR_PAD_LEFT);
return Response::json([
2021-04-20 09:42:03 +02:00
'Statut' => 'OK',
2019-01-15 14:17:15 +01:00
'Message' => $montantTotal
]);
}
public function montantDispoContact(Request $request)
{
$error = false;
2021-04-27 17:29:47 +02:00
if (isset($request->refcamp) && $request->refcamp != "") {
2019-01-15 14:17:15 +01:00
$refcamp = $request->refcamp;
2021-04-27 17:29:47 +02:00
} else {
2019-01-15 14:17:15 +01:00
$error = true;
}
2021-04-27 17:29:47 +02:00
if (isset($request->refsite) && $request->refsite != "") {
2019-01-15 14:17:15 +01:00
$refsite = $request->refsite;
2021-04-27 17:29:47 +02:00
} else {
2019-01-15 14:17:15 +01:00
$error = true;
}
2021-04-27 17:29:47 +02:00
if (isset($request->refadherent) && $request->refadherent != "") {
2019-01-15 14:17:15 +01:00
$refadherent = $request->refadherent;
2021-04-27 17:29:47 +02:00
} else {
2019-01-15 14:17:15 +01:00
$error = true;
}
2021-04-20 09:42:03 +02:00
2019-01-15 14:17:15 +01:00
if ($error) {
return Response::json([
'Statut' => 'KO',
'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
]);
}
$campagne = Campagne::where(['camp_id' => $refcamp])->where('camp_type', 'IN', array(0,2))->first();
if (!$campagne) {
return Response::json([
'Statut' => 'KO',
'Code' => 103,
'Message' => 'La campagne n\'existe pas'
]);
}
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
if (!$contact) {
return Response::json([
'Statut' => 'KO',
'Code' => 104,
'Message' => 'Le contact n\'existe pas'
]);
}
$coupons = $this->getCouponsPublished($campagne);
2019-01-15 14:17:15 +01:00
2021-04-27 17:29:47 +02:00
foreach ($coupons as &$coupon) {
2019-02-13 16:37:14 +01:00
$coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact);
2019-01-15 14:17:15 +01:00
}
unset($coupon);
$montantDispo = 0;
2021-04-27 17:29:47 +02:00
foreach ($coupons as $coupon) {
if ($coupon->isAvailable == true) {
2019-01-15 14:17:15 +01:00
$montantDispo += $coupon->coupon_value;
}
}
$montantDispo = number_format($montantDispo, 2, ",", " ");
2021-04-27 17:29:47 +02:00
$montantDispo = str_pad($montantDispo, 6, "0", STR_PAD_LEFT);
2019-01-15 14:17:15 +01:00
return Response::json([
2021-04-20 09:42:03 +02:00
'Statut' => 'OK',
2019-01-15 14:17:15 +01:00
'Message' => $montantDispo
]);
}
}