Compare commits

...
Sign in to create a new pull request.

35 commits

Author SHA1 Message Date
Jérémy Munsch
0f9d88aa79
$campagne->camp_type enum fix every where 2021-10-10 20:08:35 +02:00
Vincent BRIDIER
83f68ca14f Merge branch 'update-v2' of https://voight001.lesidc.com/mesbr-app into update-v2 2021-10-10 19:48:37 +02:00
Vincent BRIDIER
152325b917 - Customers.show 2021-10-10 19:47:14 +02:00
Jérémy Munsch
10b0b90cf7
Migration rewrite FTW 2021-10-10 19:08:27 +02:00
Vincent BRIDIER
8a0846a929 - rm useless files 2021-10-10 17:31:49 +02:00
Vincent BRIDIER
d1495826a4 - yarn.lock 2021-10-10 17:30:35 +02:00
Vincent BRIDIER
3e51736020 - assets 2021-10-10 17:30:21 +02:00
Vincent BRIDIER
763de9193b - package.lock 2021-10-10 17:29:16 +02:00
Vincent BRIDIER
5f9fea1969 - Add handler package 2021-10-10 17:22:02 +02:00
Vincent BRIDIER
e01d8af5c3 - PHPCS first pass 2021-10-10 17:17:32 +02:00
Vincent BRIDIER
defca9f9b5 - Update composer 2021-10-10 17:04:37 +02:00
Vincent BRIDIER
afa1cb457d - PHPCS fix 2021-10-10 17:01:52 +02:00
Vincent BRIDIER
f79f06f424 - Uncomment statistiques 2021-10-10 16:27:35 +02:00
Vincent BRIDIER
8cba7bb154 - Remove useless controller 2021-10-10 15:40:46 +02:00
Vincent BRIDIER
4fe7b33acc - Maintenance Conctroller OK 2021-10-10 15:31:22 +02:00
Vincent BRIDIER
e94b3f5420 - Remove useless methods 2021-10-10 15:30:17 +02:00
Vincent BRIDIER
91cedeed97 export intl 2021-10-10 10:23:56 +02:00
Vincent BRIDIER
0da20547a9 - front export updated 2021-10-10 10:12:43 +02:00
Vincent BRIDIER
66c71bff68 - Add export request + validate 2021-10-10 10:12:25 +02:00
Vincent BRIDIER
57239713d1 - Fix policy log 2021-10-10 09:37:55 +02:00
Vincent BRIDIER
56d37dbf22 - CouponController OK 2021-10-10 09:37:41 +02:00
Vincent BRIDIER
ec09989aaa - Remove blade form generator on coupons resources 2021-10-09 15:25:10 +02:00
Vincent BRIDIER
aa405e8458 - Remove blade form generator 2021-10-09 15:06:51 +02:00
Vincent BRIDIER
8ec203c145 - Rest, TODO CouponController 2021-10-04 08:17:00 +02:00
Vincent BRIDIER
3c59b7b5d0 - Contact destroy 2021-09-07 12:16:48 +02:00
Vincent BRIDIER
66687182bb - Delete useless homecontroller 2021-09-07 12:12:12 +02:00
Vincent BRIDIER
6f0f4400b9 - Request + validate contact 2021-09-07 12:09:58 +02:00
Vincent BRIDIER
7856c51842 - Add Countries in app config 2021-09-07 11:52:09 +02:00
Vincent BRIDIER
5ae716eb06 - Add Countries Enums 2021-09-07 11:51:42 +02:00
Vincent BRIDIER
708c103030 - Update Brand change 2021-09-06 20:17:14 +02:00
Vincent BRIDIER
6d42ff878d - Requests + validate Campagne 2021-09-06 19:41:38 +02:00
Vincent BRIDIER
a6b6cf1ab9 - Add Roles Enum 2021-09-06 19:41:11 +02:00
Vincent BRIDIER
b3d358816b - Add Node SASS 2021-09-06 19:40:56 +02:00
Vincent BRIDIER
89f7dd0638 - Start improve statistiques index 2021-09-06 12:38:09 +02:00
Vincent BRIDIER
7e381502c2 - Add Enums 2021-09-06 12:37:16 +02:00
130 changed files with 27660 additions and 10502 deletions

View file

@ -2,12 +2,31 @@
namespace App; namespace App;
use App\Enums\CampaignTypes;
use App\Models\PrintedWalls;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Kwaadpepper\Enum\Traits\CastsEnums;
class Campagne extends Model class Campagne extends Model
{ {
use SoftDeletes; use SoftDeletes;
use CastsEnums;
public $enumCasts = [
'camp_type' => CampaignTypes::class
];
/**
* @var array
*/
protected $fillable = [
'camp_siteId',
'camp_name',
'camp_type',
'camp_limitedPrinting',
'camp_published'
];
/** /**
* @var string * @var string
@ -85,14 +104,8 @@ class Campagne extends Model
return $this->belongsToMany('App\Coupon', 'campagne_coupon', 'campagne_id', 'coup_id'); return $this->belongsToMany('App\Coupon', 'campagne_coupon', 'campagne_id', 'coup_id');
} }
/** public function printedWalls()
* @var array {
*/ return $this->hasMany(PrintedWalls::class, 'camp_id');
protected $fillable = [ }
'camp_siteId',
'camp_name',
'camp_type',
'camp_limitedPrinting',
'camp_published'
];
} }

View file

@ -0,0 +1,119 @@
<?php
namespace App\Console\Commands;
use App\Campagne;
use App\Mail\AlertBr;
use App\Mail\AlertBrAdmin;
use App\Notification;
use App\Site;
use App\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail;
use App\Traits\CouponTrait;
class CheckAlert extends Command
{
use CouponTrait;
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'check:alert';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->info('Démarrage du traitement');
$sites = Site::all();
$couponSeuilGlobal = array();
$couponDiffusionGlobal = array();
$sendGlobal = false;
foreach ($sites as $site) { // ---- Pour chaque site
$campagnes = Campagne::where(['camp_siteId' => $site->site_id])->get();
foreach ($campagnes as $campagne) {
$sendMail = false;
$users = array();
$couponSeuil = array();
$couponDiffusion = array();
$coupons = $campagne->coupons()->get();
foreach ($coupons as $coupon) {
$couponAlert = false;
if ($coupon->coupon_published) {
$coupon->coupon_left = $this->getFullQuantity($coupon) - $this->getUsedQuantity($coupon);
if ($coupon->coupon_left < $coupon->coupon_seuil_alert) {
array_push($couponSeuil, $coupon);
array_push($couponSeuilGlobal, [$site->site_nom, $coupon]);
$sendGlobal = true;
$couponAlert = true;
}
// --- Check MaxDateDiffusion
if ($coupon->coupon_maxdatediffusion != null && strtotime($coupon->coupon_maxdatediffusion) < (time() + (30 * 24 * 60 * 60))) { //Fin de diffusion dans moins de 30jours
array_push($couponDiffusion, $coupon);
array_push($couponDiffusionGlobal, [$site->site_nom, $coupon]);
$sendGlobal = true;
$couponAlert = true;
}
if ($couponAlert) {
$notifications = Notification::where(['notif_campId' => $campagne->camp_id])->get();
foreach ($notifications as $notification) {
if (!array_key_exists($notification->notif_id, $users)) {
$userObject = [];
$userObject['email'] = $notification->notif_email;
$userObject['name'] = $notification->notif_name;
$users[$notification->notif_id] = (object)$userObject;
}
}
$sendMail = true;
}
}
}
if ($sendMail) {
Mail::to($users)->send(new AlertBr($couponSeuil, $couponDiffusion, $site->site_nom));
}
}
}
if ($sendGlobal) {
$this->line("Envoi mail superadmin");
$superadmins = array();
$admins = User::where(['roles' => 'superadmin'])->get();
foreach ($admins as $admin) {
$adminObject = [];
$adminObject['email'] = $admin->email;
$adminObject['name'] = $admin->name;
array_push($superadmins, (object)$adminObject);
}
Mail::to($superadmins)->send(new AlertBrAdmin($couponSeuilGlobal, $couponDiffusionGlobal));
}
$this->line("");
$this->info('Fin du traitement');
}
}

View file

@ -4,21 +4,14 @@ namespace App\Console;
use Illuminate\Console\Scheduling\Schedule; use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Coupon;
use App\Site; use App\Site;
use App\Panier;
use App\PanierContent;
use App\Mur;
use App\Campagne; use App\Campagne;
use App\Statistique;
use App\User; use App\User;
use App\Notification; use App\Notification;
use App\Mail\AlertBr; use App\Mail\AlertBr;
use App\Mail\AlertBrAdmin; use App\Mail\AlertBrAdmin;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use Carbon\Carbon;
use DB;
class Kernel extends ConsoleKernel class Kernel extends ConsoleKernel
{ {
@ -67,7 +60,8 @@ class Kernel extends ConsoleKernel
} }
// --- Check MaxDateDiffusion // --- Check MaxDateDiffusion
if ($coupon->coupon_maxdatediffusion != null && strtotime($coupon->coupon_maxdatediffusion) < (time() + (30 * 24 * 60 * 60))) { //Fin de diffusion dans moins de 30jours if ($coupon->coupon_maxdatediffusion != null && strtotime($coupon->coupon_maxdatediffusion) < (time() + (30 * 24 * 60 * 60))) {
//Fin de diffusion dans moins de 30jours
array_push($couponDiffusion, $coupon); array_push($couponDiffusion, $coupon);
array_push($couponDiffusionGlobal, [$site->site_nom , $coupon]); array_push($couponDiffusionGlobal, [$site->site_nom , $coupon]);
$sendGlobal = true; $sendGlobal = true;
@ -106,54 +100,6 @@ class Kernel extends ConsoleKernel
Mail::to($superadmins)->send(new AlertBrAdmin($couponSeuilGlobal, $couponDiffusionGlobal)); Mail::to($superadmins)->send(new AlertBrAdmin($couponSeuilGlobal, $couponDiffusionGlobal));
} }
})->weekdays()->at('7:00'); })->weekdays()->at('7:00');
// ---- Sauvegarde des stats tous les jours a 23:45
// $schedule->call(function () {
// $campagnes = Campagne::all();
// foreach ($campagnes as $campagne) {
// $last_stat = Statistique::where(['stat_campId' => $campagne->camp_id])->orderBy('created_at', 'DESC')->first();
// if(isset($last_stat->created_at)){
// $dateStart = $last_stat->created_at;
// } else {
// $dateStart = Carbon::now()->setTime(0,0,0)->subMonth()->format('Y-m-d H:i:s');
// }
// $coupons = $campagne->coupons()->get();
// foreach ($coupons as $coupon) {
// if ($campagne->camp_type == 0 || $campagne->camp_type == 2) { //Calcul des BR consommé pour les murs
// $counts = Mur::selectRaw('count(*) as count, DATE_FORMAT(mur_createdate, "%Y-%m-%d") as date')
// ->where(['mur_couponId' => $coupon->coupon_id, 'mur_campid' => $campagne->camp_id])
// ->whereBetween('mur_createdate', [$dateStart, Carbon::now()->setTime(23,59,59)->format('Y-m-d H:i:s')])
// ->groupBy(DB::raw("DATE_FORMAT(mur_createdate, '%Y-%m-%d')"))
// ->pluck('count', 'date');
// foreach($counts as $date => $count){
// $stat = new Statistique();
// $stat->stat_campId = $campagne->camp_id;
// $stat->stat_couponId = $coupon->coupon_id;
// $stat->stat_couponPrinted = $count;
// $stat->created_at = $date;
// $stat->save();
// }
// }
// // else { //Calcul des BR consommé pour les paniers
// // $count = 0;
// // $paniers = Panier::where('panier_campId', $campagne->camp_id)->where(function($query) use ($dateStart){
// // $query->whereBetween('panier_createdate', [$dateStart, Carbon::now()->setTime(23,59,59)->format('Y-m-d H:i:s')])
// // ->orWhereBetween('panier_updatedate', [$dateStart, Carbon::now()->setTime(23,59,59)->format('Y-m-d H:i:s')]);
// // })->get();
// // foreach ($paniers as $panier) {
// // $panierContentCount = $panier->panierContents()->where(['panier_content_couponId' => $coupon->coupon_id])->sum('panier_content_printed');
// // $count = $count + $panierContentCount;
// // }
// // }
// }
// }
// })->everyFifteenMinutes();
} }
/** /**

View file

@ -0,0 +1,39 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnum;
/**
* @method static self mur()
* value 0 Mur (POUR LES MURS)
* @method static self panier()
* value 1 Panier (POUR LES PANIERS)
* @method static self murss()
* value 2 Mur sans sélection (POUR LES MURS SANS SELECTION)
* @method static self paniers()
* value 3 Panier Sélectionnable (POUR LES PANIERS AVEC SELECTION)
*/
class CampaignTypes extends BaseEnum
{
protected static function values(): array
{
return [
'mur' => 0,
'panier' => 1,
'murss' => 2,
'paniers' => 3,
];
}
protected static function labels(): array
{
return [
'mur' => trans('Mur'),
'panier' => trans('Panier'),
'murss' => trans('Mur sans sélection'),
'paniers' => trans('Panier Sélectionnable'),
];
}
}

32
app/Enums/Countries.php Normal file
View file

@ -0,0 +1,32 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnum;
/**
* @method static self france()
* @method static self belgique()
* @method static self luxembourg()
*/
class Countries extends BaseEnum
{
protected static function values(): array
{
return [
'france' => 250,
'belgique' => 56,
'luxembourg' => 442,
];
}
protected static function labels(): array
{
return [
'france' => 'France',
'belgique' => 'Belgique',
'luxembourg' => 'Luxembourg',
];
}
}

32
app/Enums/UserRoles.php Normal file
View file

@ -0,0 +1,32 @@
<?php
namespace App\Enums;
use Kwaadpepper\Enum\BaseEnum;
/**
* @method static self superadmin()
* @method static self admin()
* @method static self marketing()
*/
class UserRoles extends BaseEnum
{
protected static function values(): array
{
return [
'superadmin' => 'superadmin',
'admin' => 'admin',
'marketing' => 'marketing'
];
}
protected static function labels(): array
{
return [
'superadmin' => trans('Super-Admin'),
'admin' => trans('Admin'),
'marketing' => trans('Marketing')
];
}
}

View file

@ -3,12 +3,8 @@
namespace App\Exceptions; namespace App\Exceptions;
use App\Http\Resources\StatusResource; use App\Http\Resources\StatusResource;
use Exception;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Kwaadpepper\ExceptionHandler\Exceptions\ExceptionHandler;
use Illuminate\Http\JsonResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Throwable; use Throwable;
class Handler extends ExceptionHandler class Handler extends ExceptionHandler
@ -56,12 +52,6 @@ class Handler extends ExceptionHandler
if ($request->wantsJson() && $exception instanceof ModelNotFoundException) { if ($request->wantsJson() && $exception instanceof ModelNotFoundException) {
return response()->json(new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Resource not found.']), 404); return response()->json(new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Resource not found.']), 404);
} }
// if ($exception instanceof \ErrorException) {
// $response = response()->view('errors.500', [], 500);
// return $this->toIlluminateResponse($response,$exception);
// }
return parent::render($request, $exception); return parent::render($request, $exception);
} }
} }

View file

@ -2,10 +2,8 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Campagne;
use App\Coupon; use App\Coupon;
use App\Contact; use App\Enums\CampaignTypes;
use App\Panier;
use App\PanierContent; use App\PanierContent;
use App\Statistique; use App\Statistique;
use App\Mur; use App\Mur;
@ -13,42 +11,14 @@ use App\Log;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Traits\GenerateBR; use App\Traits\GenerateBR;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use App\Http\Controllers;
use Carbon\Carbon;
class AjaxController extends Controller class AjaxController extends Controller
{ {
use GenerateBR; use GenerateBR;
use CouponTrait; use CouponTrait;
// ---- Ajoute des coupons à une campagne
public function add_coupons_ajax(Request $request)
{
$camp_id = $request->input('campid');
$campagne = Campagne::where('camp_id', $camp_id)->first();
$ids = $request->input('ids');
$coupons = Coupon::find($ids);
$campagne->coupons()->attach($coupons);
return json_encode($coupons);
}
// ---- Efface des coupons d'une campagne
public function remove_coupons_ajax(Request $request)
{
$camp_id = $request->input('campid');
$campagne = Campagne::where('camp_id', $camp_id)->first();
$coupon_id = $request->input('couponid');
$coupon = Coupon::find($coupon_id);
$campagne->coupons()->detach($coupon_id);
return json_encode($coupon);
}
// ---- Dépublie un coupon // ---- Dépublie un coupon
public function unpublish_coupons_ajax(Request $request) public function unpublishCouponsAjax(Request $request)
{ {
$coupon_id = $request->input('couponid'); $coupon_id = $request->input('couponid');
$coupon = Coupon::find($coupon_id); $coupon = Coupon::find($coupon_id);
@ -59,7 +29,7 @@ class AjaxController extends Controller
} }
// ---- Publie un coupon // ---- Publie un coupon
public function publish_coupons_ajax(Request $request) public function publishCouponsAjax(Request $request)
{ {
$coupon_id = $request->input('couponid'); $coupon_id = $request->input('couponid');
$coupon = Coupon::find($coupon_id); $coupon = Coupon::find($coupon_id);
@ -69,31 +39,8 @@ class AjaxController extends Controller
return json_encode($coupon); return json_encode($coupon);
} }
// ---- Dépublie une campagne
public function unpublish_camp_ajax(Request $request)
{
$campid = $request->input('campid');
$campagne = Campagne::find($campid);
$campagne->camp_published = 0;
$campagne->save();
return json_encode($campagne);
}
// ---- Publie une campagne
public function publish_camp_ajax(Request $request)
{
$campid = $request->input('campid');
$campagne = Campagne::find($campid);
$campagne->camp_published = 1;
$campagne->save();
return json_encode($campagne);
}
// ---- Impression des BR // ---- Impression des BR
public function impression_ajax(Request $request) public function impressionAjax(Request $request)
{ {
if ($request->session()->has('coupons')) { if ($request->session()->has('coupons')) {
@ -132,7 +79,7 @@ class AjaxController extends Controller
$coupons = '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">'; $coupons = '<TABLE width="100%" align="center" cellpadding="0" cellspacing="0" border="0">';
$coupons .= '<TR><TD width="100%" align="center"><div>'; $coupons .= '<TR><TD width="100%" align="center"><div>';
if ($campagne->camp_type == 0) { //---- POUR LES MURS if ($campagne->camp_type->equals(CampaignTypes::mur())) { //---- POUR LES MURS
if (!isset($couponsToPrint)) { if (!isset($couponsToPrint)) {
die(); die();
} }
@ -166,7 +113,7 @@ class AjaxController extends Controller
$stat->save(); $stat->save();
} }
} }
} elseif ($campagne->camp_type == 1) { //---- POUR LES PANIERS } elseif ($campagne->camp_type->equals(CampaignTypes::panier())) { //---- POUR LES PANIERS
if (!isset($panier)) { if (!isset($panier)) {
die(); die();
} }
@ -233,7 +180,7 @@ class AjaxController extends Controller
$panier->panier_pending = 1; $panier->panier_pending = 1;
} }
$panier->save(); $panier->save();
} elseif ($campagne->camp_type == 2) { //---- POUR LES MURS SANS SELECTION } elseif ($campagne->camp_type->equals(CampaignTypes::murss())) { //---- POUR LES MURS SANS SELECTION
$nbCoupon = 0; $nbCoupon = 0;
$cps = $campagne->coupons()->get(); $cps = $campagne->coupons()->get();
@ -263,7 +210,7 @@ class AjaxController extends Controller
$stat->save(); $stat->save();
} }
} }
} elseif ($campagne->camp_type == 3) { //---- POUR LES PANIERS AVEC SELECTION } elseif ($campagne->camp_type->equals(CampaignTypes::paniers())) { //---- POUR LES PANIERS AVEC SELECTION
if (!isset($couponsToPrint)) { if (!isset($couponsToPrint)) {
die(); die();
} }
@ -335,12 +282,12 @@ class AjaxController extends Controller
$contact = $request->session()->get('contact'); $contact = $request->session()->get('contact');
} }
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) { if ($campagne->camp_type->equals(CampaignTypes::mur()) || $campagne->camp_type->equals(CampaignTypes::murss())) {
if (!isset($contact)) { if (!isset($contact)) {
die(); die();
} }
return redirect(url('/') . '/?refsite=' . $campagne->camp_siteId . '&refcamp=' . $campagne->camp_id . '&hash=' . $contact->contact_hash); return redirect(url('/') . '/?refsite=' . $campagne->camp_siteId . '&refcamp=' . $campagne->camp_id . '&hash=' . $contact->contact_hash);
} elseif ($campagne->camp_type == 1 || $campagne->camp_type == 3) { } elseif ($campagne->camp_type->equals(CampaignTypes::panier()) || $campagne->camp_type->equals(CampaignTypes::paniers())) {
if ($request->session()->has('panier')) { if ($request->session()->has('panier')) {
$panier = $request->session()->get('panier'); $panier = $request->session()->get('panier');
} else { } else {
@ -349,288 +296,4 @@ class AjaxController extends Controller
return redirect(url('/') . '/?basketid=' . $panier->panier_ref); return redirect(url('/') . '/?basketid=' . $panier->panier_ref);
} }
} }
// ---- Charge les widget d'assistance
public function load_widget(Request $request)
{
if (isset($request->camp_id)) {
$camp_id = $request->camp_id;
} else {
die;
}
if (isset($request->contact_hash)) {
$contact_hash = $request->contact_hash;
} else {
die;
}
$campagne = Campagne::where(['camp_id' => $camp_id])->first();
$contact = Contact::where(['contact_hash' => $contact_hash])->first();
$coupons = $campagne->coupons;
foreach ($coupons as $key => $coupon) {
if (!$this->isAvailableToPrint($coupon, $campagne)) {
$coupons->forget($key);
}
}
$allLogs = Log::where(['log_refsite' => $campagne->camp_siteId, 'log_contactId' => $contact->contact_id, 'log_statut' => 'OK'])->orderBy('created_at', 'DESC')->get();
$logs = array();
foreach ($allLogs as &$l) {
$params = json_decode($l->log_params);
if ($l->log_action == 3 || $l->log_action == 1) {
$l->log_message = json_decode($l->log_message, true);
}
if (intval($params->refcamp) == $camp_id) {
array_push($logs, $l);
}
}
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) { // ---- Pour les types murs
foreach ($coupons as &$coupon) {
$coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact);
}
unset($coupon);
// Montant total et Nombre réductions disponible
$montantDispo = 0;
$montantTotal = 0;
$nbCoupon = 0;
foreach ($coupons as $coupon) {
$montantTotal += $coupon->coupon_value;
if ($coupon->isAvailable == true) {
$montantDispo += $coupon->coupon_value;
$nbCoupon++;
}
}
if (sizeof($coupons) == $nbCoupon) {
$reset = false;
} else {
$reset = true;
}
$campagne->url = url('/') . "/?refsite=" . $campagne->camp_siteId . "&refcamp=" . $camp_id . "&hash=" . $contact->contact_hash;
$returnHTML = view('widgets.mur')
->with([
'campagne' => $campagne,
'reset' => $reset,
'montantTotal' => $montantTotal,
'montantDispo' => $montantDispo,
'logs' => $logs,
'contact' => $contact])
->renderSections()['widget'];
return json_encode(array('success' => true, 'html' => $returnHTML));
} else { // ---- Pour les types paniers
$panier = Panier::where(['panier_campId' => $campagne->camp_id, 'panier_contactId' => $contact->contact_id, 'panier_pending' => 1])->first();
if ($panier) {
$panier_ref = $panier->panier_ref;
foreach ($coupons as &$coupon) {
$paniercontent = PanierContent::where(['panier_content_couponId' => $coupon->coupon_id, 'panier_content_panierId' => $panier->panier_id])->first();
if ($paniercontent) {
$coupon->qty = $paniercontent->panier_content_quantity;
} else {
$coupon->qty = 0;
}
}
$campagne->url = url('/') . "/?basketid=" . $panier_ref;
unset($coupon);
} else {
$panier_ref = "";
foreach ($coupons as &$coupon) {
$coupon->qty = 0;
}
$campagne->url = "Pas d'url disponible (panier non créé)";
}
$returnHTML = view('widgets.panier')
->with([
'campagne' => $campagne,
'contact' => $contact,
'panier' => $panier_ref,
'logs' => $logs,
'coupons' => $coupons
])
->renderSections()['widget'];
return json_encode(array('success' => true, 'html' => $returnHTML));
}
}
// ---- Montre les campagnes avec un compte de démo
public function show_demo(Request $request)
{
if (isset($request->camp_id)) {
$camp_id = $request->camp_id;
} else {
die;
}
$campagne = Campagne::where(['camp_id' => $camp_id])->first();
$siteId = $campagne->camp_siteId;
$demoContact = Contact::where(['contact_siteId' => $siteId, 'contact_ref' => 'DEMO'])->first();
if (!isset($demoContact)) {
$req = new \Illuminate\Http\Request();
$req->setMethod('POST');
$req->request->add([
'refsite' => $siteId,
'refadherent' => 'DEMO',
'prenom' => 'Compte',
'nom' => 'Démonstration',
'email' => 'demo@demo.fr',
'code_postal' => '72000',
'commune' => 'Le Mans',
'pays' => 250
]);
$contact = new Controllers\ContactController();
$res = $contact->updateContact($req);
$demoContact = Contact::where(['contact_siteId' => $siteId, 'contact_ref' => 'DEMO'])->first();
}
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) {
// ---- DEMONSTRATION POUR LES MURS
$myRequest = new \Illuminate\Http\Request();
$myRequest->setMethod('POST');
$myRequest->request->add(['refcamp' => $camp_id, 'refadherent' => 'DEMO', 'admin' => 1]);
// ---- EFFACER LES CONTROLES SI EXISTANT
$mur = new Controllers\MurController();
$res = $mur->deleteControlContact($myRequest);
// ---- RETOURNE l'URL
$url = "/?refsite=" . $siteId . "&refcamp=" . $camp_id . "&hash=" . $demoContact->contact_hash;
return json_encode($url);
} else {
// ---- DEMONSTRATION POUR LES PANIERS
$panier = Panier::where(['panier_campId' => $camp_id, 'panier_contactId' => $demoContact->contact_id, 'panier_pending' => 1])->first();
if ($panier) {
$url = "/?basketid=" . $panier->panier_ref;
} else {
// --- Pas de panier Création d'un nouveau
// --- Récuperation des coupons de la campagne
$coupons = $campagne->coupons()->get();
foreach ($coupons as $key => $coupon) {
if (!$this->isAvailableToPrint($coupon, $campagne)) {
$coupons->forget($key);
}
}
$couponsTotal = sizeof($coupons);
$couponsAdded = 0;
$basketContent = "";
foreach ($coupons as $coupon) {
$basketContent .= "(1)" . $coupon->coupon_code;
$couponsAdded++;
if ($couponsAdded != $couponsTotal) {
$basketContent .= ",";
}
}
// --- création de l'objet request
$req = new \Illuminate\Http\Request();
$req->setMethod('POST');
$req->request->add([
'refsite' => $siteId,
'refcamp' => $camp_id,
'refadherent' => $demoContact->contact_ref,
'nom' => $demoContact->contact_nom,
'prenom' => $demoContact->contact_prenom,
'email' => $demoContact->contact_email,
'code_postal' => $demoContact->contact_cp,
'commune' => $demoContact->contact_ville,
'pays' => $demoContact->contact_country,
'panier' => $basketContent,
'admin' => 1
]);
$panier = new Controllers\PanierController();
$res = $panier->updateBasket($req);
$url = "/?basketid=" . $res->original['Panier']->Panier;
}
return json_encode($url);
}
}
// ---- MAINTENANCE : CLEAN DE LA BDD
// ---- Fonction de récap des contacts que l'on va effacer
public function get_clean_contacts_detail(Request $request)
{
$contacts = Contact::where('contact_updatedate', '<', Carbon::now()->subMonth())->get();
$date = Carbon::now();
$contact_count = 0;
foreach ($contacts as $contact) {
$paniers = $contact->paniers()->get();
$canbeDeleted = true;
foreach ($paniers as $panier) {
if ($panier->panier_pending == 1) {
$canbeDeleted = false;
}
}
if ($canbeDeleted) {
$contact_count++;
//$testcontact .= $contact->contact_id.", ";
}
}
return json_encode(['date' => $date, 'contact_count' => $contact_count]);
}
// ---- Fonction de nettoyage de la base contact
public function clean_contacts(Request $request)
{
$contacts = Contact::where('contact_updatedate', '<', Carbon::now()->subMonth())->get();
$testcontact = "";
foreach ($contacts as $contact) {
$paniers = $contact->paniers()->get();
$canbeDeleted = true;
foreach ($paniers as $panier) {
if ($panier->panier_pending == 1) {
$canbeDeleted = false;
}
}
$murs = $contact->murs()->get();
if (isset($murs) && !empty($murs)) {
$canbeDeleted = false;
}
if ($canbeDeleted) {
$contact->delete();
$testcontact .= $contact->contact_id . ", ";
}
}
return json_encode($testcontact);
}
// ---- Fonction de nettoyage de la base mur
public function clean_walls(Request $request)
{
$murs = Mur::where('mur_createdate', '<', Carbon::now()->subYear())->where(['mur_deleted' => 1])->get();
$testmur = "";
foreach ($murs as $mur) {
$mur->delete();
$testmur .= $mur->mur_id . ", ";
}
return json_encode($testmur);
}
// ---- Fonction de nettoyage de la base panier et panierContent
public function clean_baskets(Request $request)
{
$paniers = Panier::where('panier_createdate', '<', Carbon::now()->subMonth(2))->where(['panier_pending' => 0])->get();
$testpanier = "";
foreach ($paniers as $panier) {
$testpanier .= $panier->panier_id . ": ";
$panierContents = $panier->panierContents()->get();
foreach ($panierContents as $panierContent) {
$testpanier .= $panierContent->panier_content_id . ', ';
$panierContent->delete();
}
$panier->delete();
}
return json_encode($testpanier);
}
} }

View file

@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\v1;
use App\Campagne; use App\Campagne;
use App\Coupon; use App\Coupon;
use App\Enums\CampaignTypes;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Coupons\PrintRequest; use App\Http\Requests\Coupons\PrintRequest;
use App\Http\Resources\StatusResource; use App\Http\Resources\StatusResource;
@ -13,7 +14,6 @@ use App\Statistique;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use App\Traits\GenerateBR; use App\Traits\GenerateBR;
use PDF; use PDF;
use LDC\LDCCRM\CrmApiV2; use LDC\LDCCRM\CrmApiV2;
class CouponsController extends Controller class CouponsController extends Controller
@ -29,11 +29,11 @@ class CouponsController extends Controller
$couponsToPrint = explode(",", $datas['coupons']); $couponsToPrint = explode(",", $datas['coupons']);
if ($campagne->site->crm_token === null) { if ($campagne->site->crm_token === null) {
return new StatusResource(['status' => 'KO', 'code' => 500, 'message' => 'CRM Token is missing for site_id : '. $campagne->site->site_id]); return new StatusResource(['status' => 'KO', 'code' => 500, 'message' => 'CRM Token is missing for site_id : ' . $campagne->site->site_id]);
} }
if ($campagne->site->crm_password === null) { if ($campagne->site->crm_password === null) {
return new StatusResource(['status' => 'KO', 'code' => 500, 'message' => 'CRM Password is missing for site_id : '. $campagne->site->site_id]); return new StatusResource(['status' => 'KO', 'code' => 500, 'message' => 'CRM Password is missing for site_id : ' . $campagne->site->site_id]);
} }
if (empty($couponsToPrint)) { if (empty($couponsToPrint)) {
@ -47,8 +47,7 @@ class CouponsController extends Controller
* @var \LDC\LDCCRM\Models\Customer * @var \LDC\LDCCRM\Models\Customer
*/ */
$crmInfos = $crm->getCustomer($customer->hashcode); $crmInfos = $crm->getCustomer($customer->hashcode);
} catch (\Exception $e) {
}catch (\Exception $e) {
// TODO : Update error message // TODO : Update error message
return new StatusResource(['status' => 'KO', 'code' => 422, 'message' => 'Customer not found.']); return new StatusResource(['status' => 'KO', 'code' => 422, 'message' => 'Customer not found.']);
} }
@ -61,7 +60,7 @@ class CouponsController extends Controller
// TODO : Logs // TODO : Logs
$coupons = []; $coupons = [];
if ($campagne->camp_type == 0) { //---- POUR LES MURS if ($campagne->camp_type->equals(CampaignTypes::mur())) { //---- POUR LES MURS
foreach ($couponsToPrint as $key => $coupon_code) { foreach ($couponsToPrint as $key => $coupon_code) {
$cp = Coupon::where(['coupon_code' => $coupon_code])->first(); $cp = Coupon::where(['coupon_code' => $coupon_code])->first();

View file

@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\v1;
use App\Calendrier; use App\Calendrier;
use App\Campagne; use App\Campagne;
use App\Enums\CampaignTypes;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Murs\MursShowRequest; use App\Http\Requests\Murs\MursShowRequest;
use App\Http\Resources\CouponsResource; use App\Http\Resources\CouponsResource;
@ -22,7 +23,7 @@ class MurController extends Controller
if ($campagne->camp_published === 0) { if ($campagne->camp_published === 0) {
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']); return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']);
} }
if ($campagne->camp_type !== 0) { if (!$campagne->camp_type->equals(CampaignTypes::mur())) {
return new StatusResource(['status' => 'KO', 'code' => 403, 'message' => 'Campaign type error.']); return new StatusResource(['status' => 'KO', 'code' => 403, 'message' => 'Campaign type error.']);
} }

View file

@ -4,7 +4,6 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller class LoginController extends Controller
{ {

View file

@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\BrandChange\InvokeBrandChange;
class BrandChangeController extends Controller
{
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\InvokeBrandChange $request
* @return \Illuminate\Http\Response
*/
public function __invoke(InvokeBrandChange $request)
{
// TODO : Revoir le passage du site
$site = \App\Site::find($request->site_id);
session()->put('site', $site);
return redirect()->back();
}
}

View file

@ -6,19 +6,26 @@ use App\Campagne;
use App\Site; use App\Site;
use App\Coupon; use App\Coupon;
use App\Contact; use App\Contact;
use App\Enums\CampaignTypes;
use App\Http\Requests\Campaign\AddCouponsCampaign;
use App\Http\Requests\Campaign\DeleteCampaign;
use App\Http\Requests\Campaign\RemoveCouponCampaign;
use App\Http\Requests\Campaign\StoreCampaign;
use App\Http\Requests\Campaign\UpdateCampaign;
use App\Mur; use App\Mur;
use App\Panier;
use App\PanierContent; use App\PanierContent;
use App\Notification; use App\Notification;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\File;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use Response; use App\Http\Controllers;
use App\Http\Requests\Campaign\RemoveNotifCampaign;
use App\Http\Requests\Campaign\ShowDemoCampaign;
use App\Http\Requests\Campaign\StoreNotifCampaign;
use App\Panier;
class CampagneController extends Controller class CampagneController extends Controller
{ {
//use BarcodeGenerator;
use CouponTrait; use CouponTrait;
/** /**
@ -28,8 +35,11 @@ class CampagneController extends Controller
*/ */
public function index() public function index()
{ {
$campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get(); // TODO : Revoir le passage du site id ?
return view('campagne.index')->with('campagnes', $campagnes); $siteId = session()->get('site')->site_id;
$campagnes = Campagne::where('camp_siteId', $siteId)->get();
return view('campagnes.index')->with('campagnes', $campagnes);
} }
/** /**
@ -39,38 +49,32 @@ class CampagneController extends Controller
*/ */
public function create() public function create()
{ {
return view('campagne.create'); return view('campagnes.create');
} }
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param StoreCampaign $request
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function store(Request $request) public function store(StoreCampaign $request)
{ {
// TODO : Revoir le passage du site
$campagne = new Campagne();
$campagne->camp_name = $request->input('camp_name');
$campagne->camp_type = $request->input('camp_type');
$campagne->camp_published = $request->input('camp_published');
if (null !== $request->input('camp_limitedPrinting')) {
$campagne->camp_limitedPrinting = $request->input('camp_limitedPrinting');
}
$campagne->camp_siteId = session()->get('site')->site_id;
$site = session()->get('site'); $site = session()->get('site');
$campagne = new Campagne();
$campagne->fill(array_merge($request->validated(), ['camp_siteId' => $site->site_id]));
$campagne->save();
if ($site->campagnes()->save($campagne)) { if ($site->campagnes()->save($campagne)) {
//File::makeDirectory(public_path('/landings/' . $campagne->camp_id)); if ($campagne->camp_type->equals(CampaignTypes::mur())) {
if ($campagne->camp_type == 0) {
File::copyDirectory(resource_path('/views/template/mur'), public_path('/landings/' . $campagne->camp_id)); File::copyDirectory(resource_path('/views/template/mur'), public_path('/landings/' . $campagne->camp_id));
} elseif ($campagne->camp_type == 1) { } elseif ($campagne->camp_type->equals(CampaignTypes::panier())) {
File::copyDirectory(resource_path('/views/template/panier'), public_path('/landings/' . $campagne->camp_id)); File::copyDirectory(resource_path('/views/template/panier'), public_path('/landings/' . $campagne->camp_id));
} elseif ($campagne->camp_type == 2) { } elseif ($campagne->camp_type->equals(CampaignTypes::murss())) {
File::copyDirectory(resource_path('/views/template/murnoselection'), public_path('/landings/' . $campagne->camp_id)); File::copyDirectory(resource_path('/views/template/murnoselection'), public_path('/landings/' . $campagne->camp_id));
} elseif ($campagne->camp_type == 3) { } elseif ($campagne->camp_type->equals(CampaignTypes::paniers())) {
File::copyDirectory(resource_path('/views/template/panierselection'), public_path('/landings/' . $campagne->camp_id)); File::copyDirectory(resource_path('/views/template/panierselection'), public_path('/landings/' . $campagne->camp_id));
} }
} }
@ -86,45 +90,35 @@ class CampagneController extends Controller
*/ */
public function edit(Campagne $campagne) public function edit(Campagne $campagne)
{ {
$site = Site::findOrFail(session()->get('site')->id)->first(); // TODO : Revoir le passage du site id
$siteId = session()->get('site')->id;
$couponsLinked = $campagne->coupons()->get(); $couponsNotLinked = Coupon::whereDoesntHave('campagnes', function ($q) use ($campagne) {
$campid = $campagne->camp_id; $q->where('campagne_id', $campagne->camp_id);
})->where('coupon_siteId', $siteId)->where('coupon_published', 1)->get();
$couponsNotLinked = Coupon::whereDoesntHave('campagnes', function ($q) use ($campid) { return view('campagnes.edit', ['campagne' => $campagne, 'coupons' => $couponsNotLinked]);
$q->where('campagne_id', $campid);
})->where('coupon_siteId', session()->get('site')->id)->get();
return view('campagne.edit', ['campagne' => $campagne, 'coupons' => $couponsNotLinked, 'couponsLinked' => $couponsLinked]);
} }
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param UpdateCampaign $request
* @param \App\Campagne $campagne * @param \App\Campagne $campagne
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function update(Request $request, Campagne $campagne) public function update(UpdateCampaign $request, Campagne $campagne)
{ {
$site = Site::findOrFail(session()->get('site')->id)->first(); $campagne->fill($request->validated());
$couponsLinked = $campagne->coupons()->get();
$campid = $campagne->camp_id;
$couponsNotLinked = Coupon::whereDoesntHave('campagnes', function ($q) use ($campid) {
$q->where('campagne_id', $campid);
})->where('coupon_siteId', session()->get('site')->id)->get();
if (!isset($request->camp_limitedPrinting)) { if (!isset($request->camp_limitedPrinting)) {
$campagne->camp_limitedPrinting = 0; $campagne->camp_limitedPrinting = 0;
$campagne->save();
} }
if ($campagne->update($request->all())) { if ($campagne->save()) {
session()->flash('update_ok', 'La campagne a bien été modifiée'); session()->flash('update_ok', __('La campagne a bien été modifiée'));
} else { } else {
session()->flash('update_nok', 'Erreur lors de l\'enregistrement'); session()->flash('update_nok', __("Erreur lors de l'enregistrement"));
} }
return redirect()->route('campagne.edit', ['campagne' => $campagne]); return redirect()->route('campagne.edit', ['campagne' => $campagne]);
@ -133,45 +127,60 @@ class CampagneController extends Controller
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Campagne $campagne * @param DeleteCampaign $request
* @param \App\Campagne $campaign
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function destroy(Campagne $campagne) public function destroy(DeleteCampaign $request, Campagne $campagne)
{ {
$campagne->camp_published = 0; $campagne->camp_published = 0;
$campagne->save(); $campagne->save();
//File::deleteDirectory(public_path('/landings/' . $campagne->camp_id));
if ($campagne->delete()) { if ($campagne->delete()) {
return redirect(route('campagne.index')); return redirect(route('campagne.index'));
} else { } else {
session()->flash('delete_nok', 'Erreur lors de la suppression'); session()->flash('delete_nok', 'Erreur lors de la suppression');
return view('campagne.edit')->with('campagne', $campagne); return view('campagnes.edit')->with('campagne', $campagne);
} }
} }
// ---- Ajoute des coupons à une campagne
public function addCoupons(AddCouponsCampaign $request, Campagne $campaign)
{
$coupons = Coupon::find($request->ids);
$campaign->coupons()->attach($coupons);
return json_encode($coupons);
}
// ---- Efface des coupons d'une campagne
public function removeCoupon(RemoveCouponCampaign $request, Campagne $campaign, Coupon $coupon)
{
$campaign->coupons()->detach($coupon);
return json_encode($coupon);
}
/** /**
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* *
* @return array * @return array
*/ */
public function saveNotification(Request $request) public function saveNotification(StoreNotifCampaign $request, Campagne $campaign)
{ {
$notification = new Notification(); $notification = new Notification();
$notification->notif_name = $request->input('notif_name'); $notification->fill(array_merge($request->validated(), ['notif_campId' => $campaign->camp_id]));
$notification->notif_email = $request->input('notif_email');
$notification->notif_campId = $request->input('notif_campId');
$notification->save(); $notification->save();
return redirect()->back(); return redirect()->back();
} }
/** /**
* @param RemoveNotifCampaign $request
* @param \App\Notification $notification * @param \App\Notification $notification
* *
* @return array * @return array
*/ */
public function deleteNotification($id) public function deleteNotification(RemoveNotifCampaign $request, Notification $notification)
{ {
$notification = Notification::find($id);
if ($notification->delete()) { if ($notification->delete()) {
return redirect()->back(); return redirect()->back();
} else { } else {
@ -180,23 +189,104 @@ class CampagneController extends Controller
} }
} }
/** // ---- Montre les campagnes avec un compte de démo
* @param \App\Coupon $coupon public function showDemo(ShowDemoCampaign $request, Campagne $campaign)
* {
* @return array $siteId = $campaign->camp_siteId;
*/ $demoContact = Contact::where(['contact_siteId' => $siteId, 'contact_ref' => 'DEMO'])->first();
// public function deleteCoupon($id)
// {
// $coupon = Coupon::find($id);
// if ($notification->delete()) {
// return redirect()->back();
// } else {
// session()->flash('delete_nok', 'Erreur lors de la suppression');
// return redirect()->back();
// }
// }
if (!isset($demoContact)) {
$req = new \Illuminate\Http\Request();
$req->setMethod('POST');
$req->request->add([
'refsite' => $siteId,
'refadherent' => 'DEMO',
'prenom' => 'Compte',
'nom' => 'Démonstration',
'email' => 'demo@demo.fr',
'code_postal' => '72000',
'commune' => 'Le Mans',
'pays' => 250
]);
$contact = new Controllers\ContactController();
$res = $contact->updateContact($req);
$demoContact = Contact::where(['contact_siteId' => $siteId, 'contact_ref' => 'DEMO'])->first();
}
if ($campaign->camp_type->equals(CampaignTypes::mur()) || $campaign->camp_type->equals(CampaignTypes::murss())) {
// ---- DEMONSTRATION POUR LES MURS
$myRequest = new \Illuminate\Http\Request();
$myRequest->setMethod('POST');
$myRequest->request->add(['refcamp' => $campaign->camp_id, 'refadherent' => 'DEMO', 'admin' => 1]);
// ---- EFFACER LES CONTROLES SI EXISTANT
$mur = new Controllers\MurController();
$res = $mur->deleteControlContact($myRequest);
// ---- RETOURNE l'URL
$url = "/?refsite=" . $siteId . "&refcamp=" . $campaign->camp_id . "&hash=" . $demoContact->contact_hash;
return json_encode($url);
} else {
// ---- DEMONSTRATION POUR LES PANIERS
$panier = Panier::where(['panier_campId' => $campaign->camp_id, 'panier_contactId' => $demoContact->contact_id, 'panier_pending' => 1])->first();
if ($panier) {
$url = "/?basketid=" . $panier->panier_ref;
} else {
// --- Pas de panier Création d'un nouveau
// --- Récuperation des coupons de la campagne
$coupons = $campaign->coupons()->get();
foreach ($coupons as $key => $coupon) {
if (!$this->isAvailableToPrint($coupon, $campaign)) {
$coupons->forget($key);
}
}
$couponsTotal = count($coupons);
$couponsAdded = 0;
$basketContent = "";
foreach ($coupons as $coupon) {
$basketContent .= "(1)" . $coupon->coupon_code;
$couponsAdded++;
if ($couponsAdded != $couponsTotal) {
$basketContent .= ",";
}
}
// --- création de l'objet request
$req = new \Illuminate\Http\Request();
$req->setMethod('POST');
$req->request->add([
'refsite' => $siteId,
'refcamp' => $campaign->camp_id,
'refadherent' => $demoContact->contact_ref,
'nom' => $demoContact->contact_nom,
'prenom' => $demoContact->contact_prenom,
'email' => $demoContact->contact_email,
'code_postal' => $demoContact->contact_cp,
'commune' => $demoContact->contact_ville,
'pays' => $demoContact->contact_country,
'panier' => $basketContent,
'admin' => 1
]);
$panier = new \App\Http\Controllers\PanierController();
$res = $panier->updateBasket($req);
$url = "/?basketid=" . $res->original['Panier']->Panier;
}
return json_encode($url);
}
}
// ---- Dépublie une campagne
public function togglePublish(Request $request, Campagne $campaign, int $state)
{
$campaign->camp_published = $state;
$campaign->save();
return json_encode($campaign);
}
public function getDetail(Request $request) public function getDetail(Request $request)
{ {
@ -208,7 +298,7 @@ class CampagneController extends Controller
$refcamp = $request->refcamp; $refcamp = $request->refcamp;
$campagne = Campagne::where(['camp_id' => $refcamp])->first(); $campagne = Campagne::where(['camp_id' => $refcamp])->first();
if (!$campagne) { if (!$campagne) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas' 'Message' => 'La campagne n\'existe pas'
@ -221,7 +311,7 @@ class CampagneController extends Controller
$refsite = $request->refsite; $refsite = $request->refsite;
$site = Site::where(['site_id' => $refsite])->first(); $site = Site::where(['site_id' => $refsite])->first();
if (!$site) { if (!$site) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 102, 'Code' => 102,
'Message' => 'Le site n\'existe pas' 'Message' => 'Le site n\'existe pas'
@ -232,7 +322,7 @@ class CampagneController extends Controller
} }
if ($campagne->camp_siteId != $site->site_id) { if ($campagne->camp_siteId != $site->site_id) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 108, 'Code' => 108,
'Message' => 'Pas de campagne pour ce site' 'Message' => 'Pas de campagne pour ce site'
@ -240,7 +330,7 @@ class CampagneController extends Controller
} }
if ($error) { if ($error) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -249,16 +339,16 @@ class CampagneController extends Controller
$enligne = ($campagne->camp_published == 1) ? "oui" : "non"; $enligne = ($campagne->camp_published == 1) ? "oui" : "non";
switch ($campagne->camp_type) { switch ($campagne->camp_type) {
case 0: case CampaignTypes::mur():
$type = "mur"; $type = "mur";
break; break;
case 1: case CampaignTypes::panier():
$type = "panier"; $type = "panier";
break; break;
case 2: case CampaignTypes::murss():
$type = "mur sans sélection"; $type = "mur sans sélection";
break; break;
case 3: case CampaignTypes::paniers():
$type = "panier avec sélection"; $type = "panier avec sélection";
break; break;
} }
@ -319,7 +409,7 @@ class CampagneController extends Controller
$data['Coupons'][] = $codeTraitement; $data['Coupons'][] = $codeTraitement;
} }
} }
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Détails Campagne' => $data 'Détails Campagne' => $data
]); ]);
@ -333,7 +423,7 @@ class CampagneController extends Controller
$refcamp = $request->refcamp; $refcamp = $request->refcamp;
$campagne = Campagne::where(['camp_id' => $refcamp])->first(); $campagne = Campagne::where(['camp_id' => $refcamp])->first();
if (!$campagne) { if (!$campagne) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas' 'Message' => 'La campagne n\'existe pas'
@ -346,7 +436,7 @@ class CampagneController extends Controller
$refsite = $request->refsite; $refsite = $request->refsite;
$site = Site::where(['site_id' => $refsite])->first(); $site = Site::where(['site_id' => $refsite])->first();
if (!$site) { if (!$site) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 102, 'Code' => 102,
'Message' => 'Le site n\'existe pas' 'Message' => 'Le site n\'existe pas'
@ -360,7 +450,7 @@ class CampagneController extends Controller
$refadherent = $request->refadherent; $refadherent = $request->refadherent;
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first(); $contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
if (!$contact) { if (!$contact) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 104, 'Code' => 104,
'Message' => 'Le contact n\'existe pas' 'Message' => 'Le contact n\'existe pas'
@ -371,7 +461,7 @@ class CampagneController extends Controller
} }
if ($error) { if ($error) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -404,6 +494,6 @@ class CampagneController extends Controller
$data['Codes traitement'][] = $codeTraitement; $data['Codes traitement'][] = $codeTraitement;
} }
} }
return Response::json($data); return response()->json($data);
} }
} }

View file

@ -1,24 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ChangeMarqueController extends Controller
{
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
$siteId = $request->input('site_id');
$currentRoute = $request->input('current_route');
$site = \App\Site::findOrFail($siteId);
session()->put('site', $site);
return redirect('/bo/' . $currentRoute);
}
}

View file

@ -4,14 +4,21 @@ namespace App\Http\Controllers;
use App\Contact; use App\Contact;
use App\Site; use App\Site;
use App\Campagne;
use App\Enums\CampaignTypes;
use App\Http\Requests\Contact\LoadWidgetContact;
use App\Http\Requests\Contact\SearchContact;
use App\Http\Requests\Contact\StoreContact;
use App\Http\Requests\Contact\UpdateContact;
use App\Log; use App\Log;
use App\Panier; use App\Panier;
use App\Campagne; use App\PanierContent;
use Response; use App\Traits\CouponTrait;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class ContactController extends Controller class ContactController extends Controller
{ {
use CouponTrait;
/** /**
* Display a listing of the resource. * Display a listing of the resource.
@ -20,46 +27,34 @@ class ContactController extends Controller
*/ */
public function index(Request $request) public function index(Request $request)
{ {
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id)->orderBy('contact_createdate', 'DESC')->take(10)->get(); return view('contact.index')->with('search', false);
return view('contact.index')->with('contacts', $contacts)->with('search', false);
} }
public function search_contact(Request $request) public function search(SearchContact $request)
{ {
session()->put('active_route', 'contact'); session()->put('active_route', 'contact');
$page = $request->input('page');
$name = $request->input('searchName');
$firstname = $request->input('searchFirstname');
$email = $request->input('searchEmail');
$cp = $request->input('searchCp');
$ville = $request->input('searchVille');
$country = $request->input('searchCountry');
if (isset($name) || isset($firstname) || isset($email) || isset($cp) || isset($ville) || isset($country)) { $contacts = Contact::where('contact_siteId', session()->get('site')->site_id)
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id) ->searchFirstname($request->searchFirstname)
->searchFirstname($firstname) ->searchName($request->searchName)
->searchName($name) ->searchEmail($request->searchEmail)
->searchEmail($email) ->searchCp($request->searchCp)
->searchCp($cp) ->searchVille($request->searchVille)
->searchVille($ville) ->searchCountry($request->searchCountry)
->searchCountry($country) ->orderBy('contact_createdate', 'DESC')
->paginate(2, ['*'], 'page', $page); ->paginate(15, ['*'], 'page', $request->page);
$searchData = array(
'name' => $name,
'firstname' => $firstname,
'email' => $email,
'cp' => $cp,
'ville' => $ville,
'pays' => $country
);
return view('contact.index')->with('contacts', $contacts)->with('search', true)->with('searchData', $searchData);
} else {
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id)->orderBy('contact_createdate', 'DESC')->take(10)->get();
return view('contact.index')->with('contacts', $contacts)->with('search', false); $searchData = array(
} 'name' => $request->searchName,
'firstname' => $request->searchFirstname,
'email' => $request->searchEmail,
'cp' => $request->searchCp,
'ville' => $request->searchVille,
'pays' => $request->searchCountry
);
return view('contact.index')->with('contacts', $contacts)->with('search', true)->with('searchData', $searchData);
} }
/** /**
@ -75,42 +70,21 @@ class ContactController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param StoreContact $request
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function store(Request $request) public function store(StoreContact $request)
{ {
$validatedData = $request->validate([ // TODO : Revoir le passage du site
'contact_ref' => 'required|unique:contact',
'contact_nom' => 'required',
'contact_prenom' => 'required',
'contact_email' => 'required',
'contact_cp' => 'required',
'contact_ville' => 'required',
'contact_country' => 'required'
]);
$contact = new Contact();
$contact->contact_nom = $request->input('contact_nom');
$contact->contact_prenom = $request->input('contact_prenom');
$contact->contact_ref = $request->input('contact_ref');
$contact->contact_email = $request->input('contact_email');
$contact->contact_cp = $request->input('contact_cp');
$contact->contact_ville = $request->input('contact_ville');
$contact->contact_country = $request->input('contact_country');
$contact->contact_hash = strtoupper(md5(uniqid(time(), true)));
//$site = Site::findOrFail(session()->get('site')->id)->first();
$site = session()->get('site'); $site = session()->get('site');
$contact = new Contact();
$contact->fill($request->validated());
$contact->contact_hash = strtoupper(md5(uniqid(time(), true)));
$contact->contact_siteId = $site->site_id; $contact->contact_siteId = $site->site_id;
$contact->save(); $contact->save();
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id)->orderBy('contact_createdate', 'DESC')->take(10)->get(); return redirect()->route('contact.edit', ['contact' => $contact]);
$campagnes = Campagne::where(['camp_siteId' => $contact->contact_siteId, 'camp_published' => 1])->get();
return view('contact.edit', ['contact' => $contact, 'created' => true, 'contacts' => $contacts, 'campagnes' => $campagnes]);
} }
@ -132,44 +106,39 @@ class ContactController extends Controller
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param UpdateContact $request
* @param \App\Contact $contact * @param \App\Contact $contact
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function update(Request $request, Contact $contact) public function update(UpdateContact $request, Contact $contact)
{ {
$validatedData = $request->validate([ $contact->fill($request->validated());
'contact_ref' => 'required', if ($contact->save()) {
'contact_nom' => 'required', session()->flash('update_ok', __('La campagne a bien été modifiée'));
'contact_prenom' => 'required',
'contact_email' => 'required',
'contact_cp' => 'required',
'contact_ville' => 'required',
'contact_country' => 'required'
]);
$campagnes = Campagne::where(['camp_siteId' => $contact->contact_siteId, 'camp_published' => 1])->get();
if ($contact->update($request->all())) {
session()->flash('update_ok', 'La campagne a bien été modifiée');
} else { } else {
session()->flash('update_nok', 'Erreur lors de l\'enregistrement'); session()->flash('update_nok', "Erreur lors de l'enregistrement");
} }
return redirect()->route('contact.edit', ['contact' => $contact]); return redirect()->route('contact.edit', ['contact' => $contact]);
} }
/**
* Remove the specified resource from storage.
*
* @param \App\Contact $contact
* @return \Illuminate\Http\Response
*/
public function destroy(Contact $contact)
{
if ($contact->delete()) {
return redirect()->route('contact.index');
} else {
session()->flash('delete_nok', __('Erreur lors de la suppression'));
redirect()->route('contact.edit', ['contact' => $contact]);
}
}
public function updateContact(Request $request) public function updateContact(Request $request)
{ {
if (isset($request->admin)) {
$source = 'ADMIN';
} else {
$source = 'API';
}
// ---- INIT du log
// $log = new Log();
// $log->log_action = config('constants.updatecontact');
// $log->log_source = $source;
$error = false; $error = false;
// ---- Contrôle des paramètres // ---- Contrôle des paramètres
if (isset($request->refadherent) && $request->refadherent != "") { if (isset($request->refadherent) && $request->refadherent != "") {
@ -219,11 +188,7 @@ class ContactController extends Controller
} }
if ($error) { if ($error) {
// $log->log_params = json_encode(['refadherent' => $request->refadherent, 'refsite'=>$request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune]); return response()->json([
// $log->log_statut = 'NOK';
// $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
// $log->save();
return Response::json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -262,12 +227,7 @@ class ContactController extends Controller
$contact->contact_hash = strtoupper(md5(uniqid(time(), true))); $contact->contact_hash = strtoupper(md5(uniqid(time(), true)));
} }
} else { } else {
// $log->log_params = json_encode(['refadherent' => $request->refadherent, 'refsite'=>$request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune]); return response()->json([
// $log->log_refsite = $request->refsite;
// $log->log_statut = 'NOK';
// $log->log_message = "Le site spécifié n'existe pas";
// $log->save();
return Response::json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 102, 'Code' => 102,
'Message' => 'Le site spécifié n\'existe pas' 'Message' => 'Le site spécifié n\'existe pas'
@ -276,17 +236,12 @@ class ContactController extends Controller
} }
if ($contact->save()) { if ($contact->save()) {
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'contact' => $contact 'contact' => $contact
]); ]);
} else { } else {
// $log->log_params = json_encode(['refadherent' => $request->refadherent, 'refsite'=>$request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune]); return response()->json([
// $log->log_refsite = $request->refsite;
// $log->log_statut = 'NOK';
// $log->log_message = "Une erreur est survenue";
// $log->save();
return Response::json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 109, 'Code' => 109,
'Message' => 'Une erreur est survenue' 'Message' => 'Une erreur est survenue'
@ -294,22 +249,101 @@ class ContactController extends Controller
} }
} }
public function loadWidget(LoadWidgetContact $request, Contact $contact)
/**
* Remove the specified resource from storage.
*
* @param \App\Contact $contact
* @return \Illuminate\Http\Response
*/
public function destroy(Contact $contact)
{ {
if ($contact->delete()) { $camp_id = $request->camp_id;
return redirect(route('contact.index')); $campagne = Campagne::where(['camp_id' => $camp_id])->first();
$coupons = $campagne->coupons;
foreach ($coupons as $key => $coupon) {
if (!$this->isAvailableToPrint($coupon, $campagne)) {
$coupons->forget($key);
}
}
$allLogs = Log::where(['log_refsite' => $campagne->camp_siteId, 'log_contactId' => $contact->contact_id, 'log_statut' => 'OK'])->orderBy('created_at', 'DESC')->get();
$logs = array();
foreach ($allLogs as &$l) {
$params = json_decode($l->log_params);
if ($l->log_action == 3 || $l->log_action == 1) {
$l->log_message = json_decode($l->log_message, true);
}
if (intval($params->refcamp) == $camp_id) {
array_push($logs, $l);
}
}
// ---- Pour les types murs
if ($campagne->camp_type->equals(CampaignTypes::mur()) || $campagne->camp_type->equals(CampaignTypes::murss())) {
foreach ($coupons as &$coupon) {
$coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact);
}
unset($coupon);
// Montant total et Nombre réductions disponible
$montantDispo = 0;
$montantTotal = 0;
$nbCoupon = 0;
foreach ($coupons as $coupon) {
$montantTotal += $coupon->coupon_value;
if ($coupon->isAvailable == true) {
$montantDispo += $coupon->coupon_value;
$nbCoupon++;
}
}
if (count($coupons) === $nbCoupon) {
$reset = false;
} else {
$reset = true;
}
$campagne->url = url('/') . "/?refsite=" . $campagne->camp_siteId . "&refcamp=" . $camp_id . "&hash=" . $contact->contact_hash;
$returnHTML = view('widgets.mur')
->with([
'campagne' => $campagne,
'reset' => $reset,
'montantTotal' => $montantTotal,
'montantDispo' => $montantDispo,
'logs' => $logs,
'contact' => $contact])
->renderSections()['widget'];
return json_encode(array('success' => true, 'html' => $returnHTML));
} else { } else {
session()->flash('delete_nok', 'Erreur lors de la suppression'); // ---- Pour les types paniers
$campagnes = Campagne::where(['camp_siteId' => $contact->contact_siteId, 'camp_published' => 1])->get(); $panier = Panier::where(['panier_campId' => $campagne->camp_id, 'panier_contactId' => $contact->contact_id, 'panier_pending' => 1])->first();
return view('contact.edit', ['contact' => $contact, 'campagnes' => $campagnes]); if ($panier) {
$panier_ref = $panier->panier_ref;
foreach ($coupons as &$coupon) {
$paniercontent = PanierContent::where(['panier_content_couponId' => $coupon->coupon_id, 'panier_content_panierId' => $panier->panier_id])->first();
if ($paniercontent) {
$coupon->qty = $paniercontent->panier_content_quantity;
} else {
$coupon->qty = 0;
}
}
$campagne->url = url('/') . "/?basketid=" . $panier_ref;
unset($coupon);
} else {
$panier_ref = "";
foreach ($coupons as &$coupon) {
$coupon->qty = 0;
}
$campagne->url = "Pas d'url disponible (panier non créé)";
}
$returnHTML = view('widgets.panier')
->with([
'campagne' => $campagne,
'contact' => $contact,
'panier' => $panier_ref,
'logs' => $logs,
'coupons' => $coupons
])
->renderSections()['widget'];
return json_encode(array('success' => true, 'html' => $returnHTML));
} }
} }
} }

View file

@ -3,18 +3,15 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use App\Coupon; use App\Coupon;
use App\Site; use App\Site;
use App\Campagne; use App\Campagne;
use App\Mur;
use App\Panier;
use App\Mouvement; use App\Mouvement;
use App\Calendrier; use App\Calendrier;
use Illuminate\Support\Facades\Storage; use App\Http\Requests\Coupons\StoreCoupons;
use App\Http\Requests\Coupons\UpdateCoupons;
use App\Traits\GenerateBR; use App\Traits\GenerateBR;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use Validator;
class CouponController extends Controller class CouponController extends Controller
{ {
@ -28,22 +25,16 @@ class CouponController extends Controller
*/ */
public function index() public function index()
{ {
$campIds = Campagne::where('camp_siteId', session()->get('site')->site_id) // TODO : Revoir le passage du site
->get() $site = session()->get('site');
->pluck('camp_id') $coupons = Coupon::where('coupon_siteId', $site->id)->get();
->flatten()
->toArray();
$coupons = Coupon::where('coupon_siteId', session()->get('site')->id)->get();
foreach ($coupons as $coupon) { foreach ($coupons as $coupon) {
// ---- Calcul de la quantité mise à disposition grace aux fonctions dans CouponTrait.php // ---- Calcul de la quantité mise à disposition grace aux fonctions dans CouponTrait.php
$coupon->coupon_quantity = $this->getFullQuantity($coupon); $coupon->coupon_quantity = $this->getFullQuantity($coupon);
// ---- Calcul de la quantité restante toutes campagnes comprises grace aux fonctions dans CouponTrait.php // ---- Calcul de la quantité restante toutes campagnes comprises grace aux fonctions dans CouponTrait.php
$coupon->coupon_left = 0; //$coupon->coupon_quantity - $this->getUsedQuantity($coupon); $coupon->coupon_left = $coupon->coupon_quantity - $this->getUsedQuantity($coupon);
} }
return view('coupon.index', ['coupons' => $coupons]);
return view('coupon.index', ['coupons' => $coupons, 'camps' => $campIds]);
} }
/** /**
@ -53,51 +44,31 @@ class CouponController extends Controller
*/ */
public function create() public function create()
{ {
$campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get() // TODO : Revoir le passage du site
->pluck('camp_name', 'camp_id'); $site = session()->get('site');
$campagnes = Campagne::where('camp_siteId', $site->id)->get()->pluck('camp_name', 'camp_id');
$site = Site::findOrFail($site->id);
$site = Site::where(['id' => session()->get('site')->id])->first();
return view('coupon.create')->with('campagnes', $campagnes)->with('site', $site); return view('coupon.create')->with('campagnes', $campagnes)->with('site', $site);
} }
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param StoreCoupons $request
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function store(Request $request) public function store(StoreCoupons $request)
{ {
$data = $request->all(); $site_id = $request->site_id;
$v = Validator::make($data, [
'coupon_validity_text' => 'required',
'coupon_legal_mentions' => 'required',
'coupon_decoration_image' => 'required|image|mimes:jpeg,png',
'coupon_logo_image' => 'required|image|mimes:jpeg,png',
'coupon_rcs' => 'required',
'coupon_site_contact' => 'required',
]);
$v->sometimes('coupon_gs1code', 'required|image|mimes:jpeg', function ($input) {
return isset($input->coupon_norme);
});
if ($v->fails()) {
return redirect('bo/coupon/' . $coupon->coupon_id . '/edit')
->withErrors($v)
->withInput();
}
$datas = $this->saveImg($request); $datas = $this->saveImg($request);
$coupon = new Coupon(); $coupon = new Coupon();
$coupon->coupon_code = $datas['coupon_code']; $coupon->fill($datas);
$coupon->coupon_name = $datas['coupon_name'];
$coupon->coupon_value = $datas['coupon_value']; // TODO : A revoir au moment ou on enlevera les images mobiles
if (isset($datas['coupon_thumbnail1'])) { if (isset($datas['coupon_thumbnail1'])) {
$coupon->coupon_thumbnail1 = $datas['coupon_thumbnail1']; $coupon->coupon_thumbnail1 = $datas['coupon_thumbnail1'];
} }
@ -113,47 +84,21 @@ class CouponController extends Controller
if (isset($datas['coupon_image'])) { if (isset($datas['coupon_image'])) {
$coupon->coupon_image = $datas['coupon_image']; $coupon->coupon_image = $datas['coupon_image'];
} }
if (isset($datas['coupon_norme'])) {
$coupon->coupon_norme = $datas['coupon_norme']; //TODO : Voir si on peut mettre le set a 0 dans la request
$coupon->coupon_gs1code = $datas['coupon_gs1code']; if (!isset($datas['coupon_published'])) {
}
if (isset($datas['coupon_enablelimitquantity'])) {
$coupon->coupon_enablelimitquantity = $datas['coupon_enablelimitquantity'];
$coupon->coupon_limitquantity = $datas['coupon_limitquantity'];
}
if (isset($datas['coupon_enablelimitperiod'])) {
$coupon->coupon_enablelimitperiod = $datas['coupon_enablelimitperiod'];
$coupon->coupon_limitperiod = $datas['coupon_limitperiod'];
}
if (isset($datas['coupon_published'])) {
$coupon->coupon_published = $datas['coupon_published'];
} else {
$coupon->coupon_published = 0; $coupon->coupon_published = 0;
} }
if (isset($datas['coupon_legal_mentions_splitted'])) { if (!isset($datas['coupon_legal_mentions_splitted'])) {
$coupon->coupon_legal_mentions_splitted = $datas['coupon_legal_mentions_splitted'];
} else {
$coupon->coupon_legal_mentions_splitted = 0; $coupon->coupon_legal_mentions_splitted = 0;
} }
$coupon->coupon_validity = $datas['coupon_validity'];
$coupon->coupon_mindatediffusion = $datas['coupon_mindatediffusion'];
$coupon->coupon_maxdatediffusion = $datas['coupon_maxdatediffusion'];
$coupon->coupon_maxdatevalidity = $datas['coupon_maxdatevalidity'];
$coupon->coupon_validity_text = $datas['coupon_validity_text']; $br_path = $this->generateBase($request, $coupon);
$coupon->coupon_legal_mentions = $datas['coupon_legal_mentions']; $coupon->coupon_image = $br_path;
if (isset($datas['coupon_decoration_image'])) { $coupon->coupon_siteId = $site_id;
$coupon->coupon_decoration_image = $datas['coupon_decoration_image']; $coupon->save();
}
if (isset($datas['coupon_logo_image'])) {
$coupon->coupon_logo_image = $datas['coupon_logo_image'];
}
$coupon->coupon_rcs = $datas['coupon_rcs'];
$coupon->coupon_site_contact = $datas['coupon_site_contact'];
$coupon->coupon_seuil_alert = $datas['coupon_seuil_alert'];
$site = Site::find($request->input('site_id'));
$site = Site::findOrFail($site_id);
$site->coupons()->save($coupon); $site->coupons()->save($coupon);
if (isset($datas['initial_quantity'])) { if (isset($datas['initial_quantity'])) {
@ -162,15 +107,6 @@ class CouponController extends Controller
$coupon->mouvements()->save($mouvement); $coupon->mouvements()->save($mouvement);
} }
if (isset($datas['mouvementNbre'])) {
foreach ($datas['mouvementNbre'] as $key => $value) {
$mouvement = new Mouvement();
$mouvement->mouvement_nombre = $value;
$mouvement->mouvement_created_at = $datas['mouvementDate'][$key];
$coupon->mouvements()->save($mouvement);
}
}
if (isset($datas['startdate'])) { if (isset($datas['startdate'])) {
foreach ($datas['startdate'] as $key => $value) { foreach ($datas['startdate'] as $key => $value) {
$calendar = new Calendrier(); $calendar = new Calendrier();
@ -179,23 +115,7 @@ class CouponController extends Controller
$coupon->calendriers()->save($calendar); $coupon->calendriers()->save($calendar);
} }
} }
return redirect()->route('coupon.edit', ['coupon' => $coupon]);
$br_path = $this->generateBase($request, $coupon);
$coupon->coupon_image = $br_path;
$coupon->save();
return view('coupon.edit', ['coupon' => $coupon]);
}
/**
* Display the specified resource.
*
* @param \App\Coupon $coupon
* @return \Illuminate\Http\Response
*/
public function show(Coupon $coupon)
{
return view('coupon.show', ['coupon' => $coupon]);
} }
/** /**
@ -212,33 +132,13 @@ class CouponController extends Controller
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param UpdateCoupons $request
* @param \App\Coupon $coupon * @param \App\Coupon $coupon
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function update(Request $request, Coupon $coupon) public function update(UpdateCoupons $request, Coupon $coupon)
{ {
//TODO : Voir si on peut mettre le set a 0 dans la request
$data = $request->all();
$v = Validator::make($data, [
'coupon_decoration_image' => 'image|mimes:jpeg,png',
'coupon_logo_image' => 'image|mimes:jpeg,png',
]);
$v->sometimes('coupon_gs1code', 'required|image|mimes:jpeg', function ($input) {
if (isset($input->coupon_gs1code_image_hidden)) {
return false;
}
return isset($input->coupon_norme);
});
if ($v->fails()) {
return redirect('bo/coupon/' . $coupon->coupon_id . '/edit')
->withErrors($v)
->withInput();
}
if (!isset($request->coupon_enablelimitquantity)) { if (!isset($request->coupon_enablelimitquantity)) {
$coupon->coupon_enablelimitquantity = 0; $coupon->coupon_enablelimitquantity = 0;
} }
@ -254,11 +154,17 @@ class CouponController extends Controller
if (!isset($request->coupon_legal_mentions_splitted)) { if (!isset($request->coupon_legal_mentions_splitted)) {
$coupon->coupon_legal_mentions_splitted = 0; $coupon->coupon_legal_mentions_splitted = 0;
} }
if ($coupon->update($this->saveImg($request))) {
$datas = $this->saveImg($request); $datas = $this->saveImg($request);
// On sauvegarde les informations
if ($coupon->update($datas)) {
// Si l'update est OK on met à jour l'image du BR
$br_path = $this->generateBase($request, $coupon); $br_path = $this->generateBase($request, $coupon);
$coupon->coupon_image = $br_path; $coupon->coupon_image = $br_path;
$coupon->update($this->saveImg($request)); $coupon->save();
// Si on ajoute des BR
// TODO : Gestion de l'erreur si on ajoute une ligne vide
if (isset($datas['mouvementNbre'])) { if (isset($datas['mouvementNbre'])) {
foreach ($datas['mouvementNbre'] as $key => $value) { foreach ($datas['mouvementNbre'] as $key => $value) {
$mouvement = new Mouvement(); $mouvement = new Mouvement();
@ -267,6 +173,8 @@ class CouponController extends Controller
$coupon->mouvements()->save($mouvement); $coupon->mouvements()->save($mouvement);
} }
} }
// Si on ajoute une plage de diffusion
// TODO : Gestion de l'erreur si on ajoute une ligne vide
if (isset($datas['startdate'])) { if (isset($datas['startdate'])) {
$coupon->calendriers()->delete(); $coupon->calendriers()->delete();
foreach ($datas['startdate'] as $key => $value) { foreach ($datas['startdate'] as $key => $value) {
@ -297,10 +205,10 @@ class CouponController extends Controller
$coupon->coupon_published = 0; $coupon->coupon_published = 0;
$coupon->save(); $coupon->save();
if ($coupon->delete()) { if ($coupon->delete()) {
return redirect(route('coupon.index')); return redirect()->route('coupon.index');
} else { } else {
session()->flash('delete_nok', 'Erreur lors de la suppression'); session()->flash('delete_nok', 'Erreur lors de la suppression');
return view('coupon.edit')->with('coupon', $coupon); return back();
} }
} }
@ -313,8 +221,6 @@ class CouponController extends Controller
{ {
$datas = collect($request->all()); $datas = collect($request->all());
$imgs = collect(array());
foreach ($datas as $key => $item) { foreach ($datas as $key => $item) {
if ($key == 'coupon_image' || $key == 'coupon_gs1code' || $key == 'coupon_decoration_image' || $key == 'coupon_logo_image' || (substr($key, 7, 9) == 'thumbnail' && strlen($key) < 18)) { if ($key == 'coupon_image' || $key == 'coupon_gs1code' || $key == 'coupon_decoration_image' || $key == 'coupon_logo_image' || (substr($key, 7, 9) == 'thumbnail' && strlen($key) < 18)) {
if (isset($item)) { if (isset($item)) {

View file

@ -0,0 +1,34 @@
<?php
namespace App\Http\Controllers;
use App\Campagne;
use App\Http\Requests\Customers\SearchCustomers;
use App\Models\Customers;
use App\Models\PrintedWalls;
use App\Site;
class CustomersController extends Controller
{
public function index(SearchCustomers $request, Site $site)
{
$campaigns = [];
$customer = null;
$email = $request->email;
$site->load("campagnes");
if ($email) {
$customer = Customers::where('email', $email)->first();
if ($customer) {
$publishedCampaign = $site->campagnes->where('camp_published', 1)->pluck('camp_id');
$campaigns = Campagne::where('camp_published', 1)->whereHas('printedWalls', function ($q) use ($customer, $publishedCampaign) {
$q->where('customer_id', $customer->id)->whereIn('camp_id', $publishedCampaign);
})->get();
}
}
return view('customers.index', compact('site', 'customer', 'campaigns', 'email'));
}
}

View file

@ -3,14 +3,13 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App; use App;
use Illuminate\Support\Facades\Storage;
use CpChart\Data; use CpChart\Data;
use CpChart\Image; use CpChart\Image;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use App\Traits\GraphTrait; use App\Traits\GraphTrait;
use App\Campagne;
use App\Site; use App\Site;
use App\Coupon; use App\Coupon;
use App\Http\Requests\Export\PDFExport;
use Datetime; use Datetime;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -36,11 +35,12 @@ class ExportController extends Controller
} }
//------ AJAX Export //------ AJAX Export
public function export_coupons(Request $request) public function exportCoupons(PDFExport $request)
{ {
$ids = $request->input('ids'); $ids = $request->ids;
$startdate = date('Y-m-d', strtotime($request->input('startdate'))); $startdate = $request->startdate;
$enddate = date('Y-m-d', strtotime($request->input('enddate'))); $enddate = $request->enddate;
$coupons = Coupon::find($ids); $coupons = Coupon::find($ids);
$labels = $this->getLabelsForStats($startdate, $enddate); $labels = $this->getLabelsForStats($startdate, $enddate);
@ -49,8 +49,7 @@ class ExportController extends Controller
foreach ($coupons as $coupon) { foreach ($coupons as $coupon) {
$cpName = str_replace(' ', '', $coupon->coupon_name); $cpName = str_replace(' ', '', $coupon->coupon_name);
$now = strtotime(now()); $full_path = 'export/' . $cpName . '_' . date('d_m_Y') . '.pdf';
$full_path = 'export/' . $cpName . '_' . $now . '.pdf';
$dataCoupon = $this->getDataForCouponAllCamp($labels, $coupon); $dataCoupon = $this->getDataForCouponAllCamp($labels, $coupon);
$coupon->couponQuantity = $this->getFullQuantity($coupon); $coupon->couponQuantity = $this->getFullQuantity($coupon);
$coupon->couponFullPrinted = $this->getUsedQuantity($coupon); $coupon->couponFullPrinted = $this->getUsedQuantity($coupon);
@ -73,13 +72,10 @@ class ExportController extends Controller
$myPicture->drawScale(array("DrawSubTicks" => true, 'LabelSkip' => 1, 'LabelRotation' => 25, "Mode" => SCALE_MODE_START0, "CycleBackground" => true,"GridR" => 102,"GridG" => 102,"GridB" => 102)); $myPicture->drawScale(array("DrawSubTicks" => true, 'LabelSkip' => 1, 'LabelRotation' => 25, "Mode" => SCALE_MODE_START0, "CycleBackground" => true,"GridR" => 102,"GridG" => 102,"GridB" => 102));
$myPicture->setShadow(true, array("X" => 1,"Y" => 1,"R" => 0,"G" => 0,"B" => 0,"Alpha" => 10)); $myPicture->setShadow(true, array("X" => 1,"Y" => 1,"R" => 0,"G" => 0,"B" => 0,"Alpha" => 10));
$myPicture->drawLineChart(array("DisplayColor" => DISPLAY_AUTO)); $myPicture->drawLineChart(array("DisplayColor" => DISPLAY_AUTO));
$LabelSettings = array("NoTitle" => true);
$myPicture->Render('export/temp.png'); $myPicture->Render('export/temp.png');
$view = view('export.template')->with(['src' => 'export/temp.png', 'coupon' => $coupon, 'startdate' => $startdate, 'enddate' => $enddate])->render(); $view = view('export.template')->with(['src' => 'export/temp.png', 'coupon' => $coupon, 'startdate' => $startdate, 'enddate' => $enddate])->render();
//var_dump($view);
$pdf->loadHTML($view); $pdf->loadHTML($view);
$pdf->save($full_path); $pdf->save($full_path);
array_push($paths, $full_path); array_push($paths, $full_path);

View file

@ -1,36 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Campagne;
use Barryvdh\Debugbar\Facade as Debugbar;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$test = Campagne::find(102);
Debugbar::info($test);
return view('home')->with([
'test' => $test,
]);
}
}

View file

@ -2,15 +2,14 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Campagne; use App\Http\Requests\Users\StoreUsers;
use App\Coupon; use App\Http\Requests\Users\UpdateUsers;
use App\Site; use App\Site;
use App\User; use App\User;
use App\Log; use App\Log;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Carbon\Carbon;
class MaintenanceController extends Controller class MaintenanceController extends Controller
{ {
@ -19,15 +18,8 @@ class MaintenanceController extends Controller
{ {
$users = User::all(); $users = User::all();
foreach ($users as &$user) {
$sites = $user->sites()->get();
$user->linkedSites = "";
foreach ($sites as $site) {
$user->linkedSites .= '<p>' . $site->site_nom . '</p>';
}
}
$dates = array(date('m/Y')); $dates = array(date('m/Y'));
for ($i = 1; $i < 12; $i++) { for ($i = 1; $i < 6; $i++) {
$datebefore = date("m/Y", strtotime("-" . $i . " months")); $datebefore = date("m/Y", strtotime("-" . $i . " months"));
array_push($dates, $datebefore); array_push($dates, $datebefore);
} }
@ -37,15 +29,6 @@ class MaintenanceController extends Controller
array_push($count, [$month, $logs]); array_push($count, [$month, $logs]);
} }
// $logArray = array();
// foreach ($logs as $logMonth) {
// $count = count($logMonth);
// foreach ($logMonth as $log) {
// $date = Carbon::parse($log->created_at)->format('m/Y');
// }
// array_push($logArray, [$date, $count]);
// }
return view('maintenance.index')->with(['users' => $users, 'logs' => $count]); return view('maintenance.index')->with(['users' => $users, 'logs' => $count]);
} }
@ -55,38 +38,17 @@ class MaintenanceController extends Controller
return view('user.create')->with(['sites' => $sites]); return view('user.create')->with(['sites' => $sites]);
} }
public function userstore(Request $request) public function userstore(StoreUsers $request)
{ {
$validatedData = $request->validate([
'email' => 'required|unique:users|email',
'name' => 'required',
'password' => 'required'
]);
$nom = $request->name;
$email = $request->email;
$password = $request->password;
$role = $request->roles;
$user = new User(); $user = new User();
$user->name = $nom; $user->fill($request->validated());
$user->email = $email; $user->password = Hash::make($request->password);
$user->password = Hash::make($password);
$user->roles = $role;
$user->save(); $user->save();
//MAJ des sites liés $sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
if (isset($request->site)) { $user->sites()->sync($sites);
$siteids = $request->site;
$sites = Site::whereIn('site_id', $siteids)->get()->pluck('id')->toArray();
$user->sites()->sync($sites);
}
return redirect()->route('maintenance.user.edit', ['user' => $user]);
$sites = Site::all();
$usersites = $user->sites()->get()->pluck('site_id')->toArray();
return view('user.edit')->with(['user' => $user, 'sites' => $sites, 'usersites' => $usersites]);
} }
public function useredit(User $user) public function useredit(User $user)
@ -96,27 +58,14 @@ class MaintenanceController extends Controller
return view('user.edit')->with(['user' => $user, 'sites' => $sites, 'usersites' => $usersites]); return view('user.edit')->with(['user' => $user, 'sites' => $sites, 'usersites' => $usersites]);
} }
public function userdestroy(User $user) public function userupdate(UpdateUsers $request, User $user)
{
if ($user->delete()) {
return redirect(route('maintenance.show'));
} else {
session()->flash('delete_nok', 'Erreur lors de la suppression');
return view('maintenance.user.edit')->with('user', $user);
}
}
public function userupdate(Request $request, User $user)
{ {
//MAJ du User //MAJ du User
$user->name = $request->name; $user->fill($request->validated());
$user->email = $request->email;
$user->roles = $request->roles;
$user->save(); $user->save();
//MAJ des sites liés //MAJ des sites liés
$siteids = $request->site; $sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
$sites = Site::whereIn('site_id', $siteids)->get()->pluck('id')->toArray();
$user->sites()->sync($sites); $user->sites()->sync($sites);
$marques = Auth::user()->sites; $marques = Auth::user()->sites;
@ -125,26 +74,16 @@ class MaintenanceController extends Controller
}); });
session()->put('marques', $submarques); session()->put('marques', $submarques);
return redirect()->route('maintenance.show');
}
$users = User::all(); public function userdestroy(User $user)
{
foreach ($users as &$user) { if ($user->delete()) {
$sites = $user->sites()->get(); return redirect()->route('maintenance.show');
$user->linkedSites = ""; } else {
foreach ($sites as $site) { session()->flash('delete_nok', 'Erreur lors de la suppression');
$user->linkedSites .= '<p>' . $site->site_nom . '</p>'; return view('maintenance.user.edit')->with('user', $user);
}
} }
$dates = array('02/2019');
for ($i = 1; $i < 12; $i++) {
$datebefore = date("m/Y", strtotime("-" . $i . " months"));
array_push($dates, $datebefore);
}
$count = array();
foreach ($dates as $month) {
$logs = Log::where(['log_statut' => 'NOK'])->whereMonth('created_at', $month)->count();
array_push($count, [$month, $logs]);
}
return view('maintenance.index')->with(['users' => $users, 'logs' => $count]);
} }
} }

View file

@ -1,28 +0,0 @@
<?php
namespace App\Http\Controllers;
use App\Mouvement;
use App\Coupon;
use Illuminate\Http\Request;
class MouvementController extends Controller
{
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$mouvement = new Mouvement();
$mouvement->mouvement_type = $request->input('mouvement_type');
$mouvement->mouvement_nombre = $request->input('mouvement_nombre');
$mouvement->mouvement_commentaire = $request->input('mouvement_commentaire');
$coupon = Coupon::find($request->input('coupon_id'));
$coupon->mouvements()->save($mouvement);
}
}

View file

@ -4,13 +4,11 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Campagne; use App\Campagne;
use app\Coupon;
use App\Contact; use App\Contact;
use App\Mur; use App\Mur;
use App\Log; use App\Log;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use App\Traits\ThanksTrait; use App\Traits\ThanksTrait;
use Response;
class MurController extends Controller class MurController extends Controller
{ {
@ -29,7 +27,7 @@ class MurController extends Controller
if (!isset($datas['refsite'])) { if (!isset($datas['refsite'])) {
abort(404); abort(404);
} }
if (!isset($campagne) || $campagne->camp_published == 0 || ($campagne->camp_type != 0 && $campagne->camp_type != 2)) { if (!isset($campagne) || $campagne->camp_published == 0 || ($campagne->camp_type->value != 0 && $campagne->camp_type->value != 2)) {
abort(404); abort(404);
} }
@ -124,7 +122,7 @@ class MurController extends Controller
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -139,7 +137,7 @@ class MurController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "La campagne n'existe pas"; $log->log_message = "La campagne n'existe pas";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas' 'Message' => 'La campagne n\'existe pas'
@ -157,7 +155,7 @@ class MurController extends Controller
$log->log_message = "Le contact n'existe pas"; $log->log_message = "Le contact n'existe pas";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 104, 'Code' => 104,
'Message' => 'Le contact n\'existe pas' 'Message' => 'Le contact n\'existe pas'
@ -174,7 +172,7 @@ class MurController extends Controller
$log->log_statut = 'OK'; $log->log_statut = 'OK';
$log->log_message = $mur . " enregistrements ont été mis à jour."; $log->log_message = $mur . " enregistrements ont été mis à jour.";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Message' => $mur . " enregistrements ont été mis à jour." 'Message' => $mur . " enregistrements ont été mis à jour."
]); ]);
@ -185,7 +183,7 @@ class MurController extends Controller
$log->log_statut = 'OK'; $log->log_statut = 'OK';
$log->log_message = 'Aucun contrôle à effacer'; $log->log_message = 'Aucun contrôle à effacer';
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 110, 'Code' => 110,
'Message' => 'Aucun contrôle à effacer' 'Message' => 'Aucun contrôle à effacer'
@ -202,7 +200,7 @@ class MurController extends Controller
if (isset($request->refcamp) && $request->refcamp != "") { if (isset($request->refcamp) && $request->refcamp != "") {
$refcamp = $request->refcamp; $refcamp = $request->refcamp;
} else { } else {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -212,7 +210,7 @@ class MurController extends Controller
// ------ Recuperation de la campagne // ------ Recuperation de la campagne
$camp = Campagne::where(['camp_id' => $refcamp])->first(); $camp = Campagne::where(['camp_id' => $refcamp])->first();
if (!$camp) { if (!$camp) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas' 'Message' => 'La campagne n\'existe pas'
@ -222,7 +220,7 @@ class MurController extends Controller
// ------ Récupération des coupons de la campagne // ------ Récupération des coupons de la campagne
$coupons = $camp->coupons()->where(['coupon_published' => 1])->get(); $coupons = $camp->coupons()->where(['coupon_published' => 1])->get();
if (count($coupons) == 0) { if (count($coupons) == 0) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 105, 'Code' => 105,
'Message' => 'La campagne est vide' 'Message' => 'La campagne est vide'
@ -238,7 +236,7 @@ class MurController extends Controller
$montantTotal = number_format($montantTotal, 2, ",", " "); $montantTotal = number_format($montantTotal, 2, ",", " ");
$montantTotal = str_pad($montantTotal, 6, "0", STR_PAD_LEFT); $montantTotal = str_pad($montantTotal, 6, "0", STR_PAD_LEFT);
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Message' => $montantTotal 'Message' => $montantTotal
]); ]);
@ -266,7 +264,7 @@ class MurController extends Controller
} }
if ($error) { if ($error) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -276,7 +274,7 @@ class MurController extends Controller
$campagne = Campagne::where(['camp_id' => $refcamp])->where('camp_type', 'IN', array(0,2))->first(); $campagne = Campagne::where(['camp_id' => $refcamp])->where('camp_type', 'IN', array(0,2))->first();
if (!$campagne) { if (!$campagne) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas' 'Message' => 'La campagne n\'existe pas'
@ -285,7 +283,7 @@ class MurController extends Controller
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first(); $contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
if (!$contact) { if (!$contact) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 104, 'Code' => 104,
'Message' => 'Le contact n\'existe pas' 'Message' => 'Le contact n\'existe pas'
@ -309,7 +307,7 @@ class MurController extends Controller
$montantDispo = number_format($montantDispo, 2, ",", " "); $montantDispo = number_format($montantDispo, 2, ",", " ");
$montantDispo = str_pad($montantDispo, 6, "0", STR_PAD_LEFT); $montantDispo = str_pad($montantDispo, 6, "0", STR_PAD_LEFT);
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Message' => $montantDispo 'Message' => $montantDispo
]); ]);

View file

@ -7,12 +7,12 @@ use App\Panier;
use App\Campagne; use App\Campagne;
use App\Coupon; use App\Coupon;
use App\Contact; use App\Contact;
use App\Enums\CampaignTypes;
use App\Site; use App\Site;
use App\Log; use App\Log;
use App\PanierContent; use App\PanierContent;
use App\Traits\CouponTrait; use App\Traits\CouponTrait;
use App\Traits\ThanksTrait; use App\Traits\ThanksTrait;
use Response;
class PanierController extends Controller class PanierController extends Controller
{ {
@ -40,7 +40,7 @@ class PanierController extends Controller
} }
session()->put('campagne', $campagne); session()->put('campagne', $campagne);
if ($campagne->camp_type == 1) { if ($campagne->camp_type->equals(CampaignTypes::panier())) {
$coupons = $this->getCouponsPublished($campagne); $coupons = $this->getCouponsPublished($campagne);
} else { } else {
$panierContents = $this->getPanierContentPublished($panier); $panierContents = $this->getPanierContentPublished($panier);
@ -97,7 +97,7 @@ class PanierController extends Controller
$log->log_message = "Le panier n'existe pas"; $log->log_message = "Le panier n'existe pas";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 106, 'Code' => 106,
'Message' => 'Le panier n\'existe pas' 'Message' => 'Le panier n\'existe pas'
@ -115,7 +115,7 @@ class PanierController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -136,7 +136,7 @@ class PanierController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -148,7 +148,7 @@ class PanierController extends Controller
foreach ($coupons as $code => $qty) { foreach ($coupons as $code => $qty) {
array_push($panierCoupons, ['cp_code' => $code, 'qty' => $qty]); array_push($panierCoupons, ['cp_code' => $code, 'qty' => $qty]);
} }
if (sizeof($coupons) == 0) { if (count($coupons) == 0) {
die(); die();
} }
} else { } else {
@ -156,7 +156,7 @@ class PanierController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -196,7 +196,7 @@ class PanierController extends Controller
$log->log_message = "Le coupon ne correspond pas aux coupons liés a la campagne"; $log->log_message = "Le coupon ne correspond pas aux coupons liés a la campagne";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 110, 'Code' => 110,
'Message' => 'Le coupon ne correspond pas aux coupons liés a la campagne' 'Message' => 'Le coupon ne correspond pas aux coupons liés a la campagne'
@ -254,12 +254,12 @@ class PanierController extends Controller
$response->panierContent = $panCont; $response->panierContent = $panCont;
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Panier' => $response 'Panier' => $response
]); ]);
} else { } else {
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Panier' => $panier 'Panier' => $panier
]); ]);
@ -269,7 +269,7 @@ class PanierController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "Le panier n'existe pas"; $log->log_message = "Le panier n'existe pas";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 106, 'Code' => 106,
'Message' => 'Le panier n\'existe pas' 'Message' => 'Le panier n\'existe pas'
@ -280,7 +280,7 @@ class PanierController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "Le panier n'existe pas"; $log->log_message = "Le panier n'existe pas";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 106, 'Code' => 106,
'Message' => 'Le panier n\'existe pas' 'Message' => 'Le panier n\'existe pas'
@ -292,13 +292,13 @@ class PanierController extends Controller
if (isset($request->refcamp) && $request->refcamp != "") { if (isset($request->refcamp) && $request->refcamp != "") {
$refcamp = $request->refcamp; $refcamp = $request->refcamp;
$campagne = Campagne::where(['camp_id' => $refcamp])->first(); $campagne = Campagne::where(['camp_id' => $refcamp])->first();
if (!$campagne || $campagne->camp_published == 0 || ($campagne->camp_type != 1 && $campagne->camp_type != 3)) { if (!$campagne || $campagne->camp_published->equals(CampaignTypes::mur()) || ($campagne->camp_type->value != 1 && $campagne->camp_type->value != 3)) {
$log->log_params = json_encode(['refcamp' => $refcamp]); $log->log_params = json_encode(['refcamp' => $refcamp]);
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "La campagne n'existe pas ou n'est pas un panier"; $log->log_message = "La campagne n'existe pas ou n'est pas un panier";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas ou n\'est pas un panier' 'Message' => 'La campagne n\'existe pas ou n\'est pas un panier'
@ -320,7 +320,7 @@ class PanierController extends Controller
if (isset($request->refsite) && $request->refsite != "") { if (isset($request->refsite) && $request->refsite != "") {
$refsite = $request->refsite; $refsite = $request->refsite;
if ($refsite != $campagne->camp_siteId) { if ($refsite != $campagne->camp_siteId) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne ne correspond à aucune campagnes du site' 'Message' => 'La campagne ne correspond à aucune campagnes du site'
@ -381,7 +381,7 @@ class PanierController extends Controller
} }
} }
} }
if (sizeof($coupons) == 0) { if (count($coupons) == 0) {
die(); die();
} }
} else { } else {
@ -403,7 +403,7 @@ class PanierController extends Controller
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 101, 'Code' => 101,
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
@ -442,7 +442,7 @@ class PanierController extends Controller
$log->log_message = "Le site spécifié n'existe pas"; $log->log_message = "Le site spécifié n'existe pas";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 102, 'Code' => 102,
'Message' => 'Le site spécifié n\'existe pas' 'Message' => 'Le site spécifié n\'existe pas'
@ -454,7 +454,7 @@ class PanierController extends Controller
$log->log_statut = 'NOK'; $log->log_statut = 'NOK';
$log->log_message = "Une erreur est survenue"; $log->log_message = "Une erreur est survenue";
$log->save(); $log->save();
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 109, 'Code' => 109,
'Message' => 'Une erreur est survenue' 'Message' => 'Une erreur est survenue'
@ -551,12 +551,12 @@ class PanierController extends Controller
$response->panierContent = $panCont; $response->panierContent = $panCont;
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Panier' => $response 'Panier' => $response
]); ]);
} else { } else {
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Panier' => $panier 'Panier' => $panier
]); ]);
@ -570,7 +570,7 @@ class PanierController extends Controller
if (isset($request->basketid) && $request->basketid != "") { if (isset($request->basketid) && $request->basketid != "") {
$basketid = $request->basketid; $basketid = $request->basketid;
} else { } else {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 106, 'Code' => 106,
'Message' => 'Le panier n\'existe pas' 'Message' => 'Le panier n\'existe pas'
@ -579,7 +579,7 @@ class PanierController extends Controller
$panier = Panier::where('panier_ref', $basketid)->first(); $panier = Panier::where('panier_ref', $basketid)->first();
if (!$panier) { if (!$panier) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 106, 'Code' => 106,
'Message' => 'Le panier n\'existe pas' 'Message' => 'Le panier n\'existe pas'
@ -594,7 +594,7 @@ class PanierController extends Controller
$contact = $panier->contact()->where(['contact_id' => $panier->panier_contactId])->first(); $contact = $panier->contact()->where(['contact_id' => $panier->panier_contactId])->first();
if (!$contact) { if (!$contact) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 104, 'Code' => 104,
'Message' => 'Le contact n\'existe pas' 'Message' => 'Le contact n\'existe pas'
@ -603,7 +603,7 @@ class PanierController extends Controller
$campagne = $panier->campagne()->where(['camp_id' => $panier->panier_campId])->first(); $campagne = $panier->campagne()->where(['camp_id' => $panier->panier_campId])->first();
if (!$campagne) { if (!$campagne) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 103, 'Code' => 103,
'Message' => 'La campagne n\'existe pas' 'Message' => 'La campagne n\'existe pas'
@ -612,7 +612,7 @@ class PanierController extends Controller
$site = $campagne->site()->first(); $site = $campagne->site()->first();
if ($site === null) { if ($site === null) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 102, 'Code' => 102,
'Message' => 'Le site n\'existe pas' 'Message' => 'Le site n\'existe pas'
@ -621,7 +621,7 @@ class PanierController extends Controller
$allPanierContent = $panier->panierContents()->get(); $allPanierContent = $panier->panierContents()->get();
if ($allPanierContent->count() == 0) { if ($allPanierContent->count() == 0) {
return Response::json([ return response()->json([
'Statut' => 'KO', 'Statut' => 'KO',
'Code' => 108, 'Code' => 108,
'Message' => 'Le panier n\'a pas de coupons liés' 'Message' => 'Le panier n\'a pas de coupons liés'
@ -649,7 +649,7 @@ class PanierController extends Controller
$response->panierContent = $panCont; $response->panierContent = $panCont;
return Response::json([ return response()->json([
'Statut' => 'OK', 'Statut' => 'OK',
'Informations Panier' => $response 'Informations Panier' => $response
]); ]);

View file

@ -4,7 +4,6 @@ namespace App\Http\Controllers;
use App\Site; use App\Site;
use App\User; use App\User;
use App\Notification;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;

View file

@ -2,7 +2,6 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Statistique;
use App\Campagne; use App\Campagne;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@ -26,24 +25,9 @@ class StatistiqueController extends Controller
if (isset($site->campagnes)) { if (isset($site->campagnes)) {
$campagnes = $site->campagnes; $campagnes = $site->campagnes;
foreach ($campagnes as $campagne) { foreach ($campagnes as $campagne) {
switch ($campagne->camp_type) { foreach ($campagne->coupons as $coupon) {
case 0:
$campagne->camp_type = "Mur";
break;
case 1:
$campagne->camp_type = "Panier";
break;
case 2:
$campagne->camp_type = "Mur sans sélection";
break;
case 3:
$campagne->camp_type = "Panier Sélectionnable";
break;
}
$coupons = $campagne->coupons;
foreach ($coupons as $coupon) {
$coupon->quantity = $this->getFullQuantity($coupon); $coupon->quantity = $this->getFullQuantity($coupon);
$coupon->remain = $this->getFullQuantity($coupon) - $this->getUsedQuantity($coupon); $coupon->remain = $coupon->quantity - $this->getUsedQuantity($coupon);
$coupon->diffused = $this->getDiffusedQuantity($coupon); $coupon->diffused = $this->getDiffusedQuantity($coupon);
$coupon->isPrintable = $this->isAvailableToPrint($coupon, $campagne); $coupon->isPrintable = $this->isAvailableToPrint($coupon, $campagne);
$coupon->isPaused = $this->isPausedToPrint($coupon, $campagne); $coupon->isPaused = $this->isPausedToPrint($coupon, $campagne);
@ -63,20 +47,6 @@ class StatistiqueController extends Controller
{ {
$count = 0; $count = 0;
$colors = config('constants.colors'); $colors = config('constants.colors');
switch ($campagne->camp_type) {
case 0:
$campagne->camp_type = "Mur";
break;
case 1:
$campagne->camp_type = "Panier";
break;
case 2:
$campagne->camp_type = "Mur sans sélection";
break;
case 3:
$campagne->camp_type = "Panier Sélectionnable";
break;
}
$coupons = $campagne->coupons; $coupons = $campagne->coupons;
foreach ($coupons as $coupon) { foreach ($coupons as $coupon) {
@ -85,7 +55,7 @@ class StatistiqueController extends Controller
$coupon->diffused = $this->getDiffusedQuantity($coupon); $coupon->diffused = $this->getDiffusedQuantity($coupon);
$coupon->isPrintable = $this->isAvailableToPrint($coupon, $campagne); $coupon->isPrintable = $this->isAvailableToPrint($coupon, $campagne);
$coupon->isPaused = $this->isPausedToPrint($coupon, $campagne); $coupon->isPaused = $this->isPausedToPrint($coupon, $campagne);
$coupon->color = $coupon->color = "#" . str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT) . str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT) . str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT); $coupon->color = $coupon->color = "#" . str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT) . str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT) . str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT);
$count++; $count++;
} }
$enddate = date('Y-m-d'); $enddate = date('Y-m-d');
@ -93,7 +63,7 @@ class StatistiqueController extends Controller
return view('stats.detail')->with(['campagne' => $campagne, 'startdate' => $startdate, 'enddate' => $enddate]); return view('stats.detail')->with(['campagne' => $campagne, 'startdate' => $startdate, 'enddate' => $enddate]);
} }
public function load_stats(Request $request) public function loadStats(Request $request)
{ {
$campid = $request->campid; $campid = $request->campid;
$startdate = $request->startdate; $startdate = $request->startdate;

View file

@ -2,7 +2,6 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Auth;
use Closure; use Closure;
class Marketing class Marketing

View file

@ -4,7 +4,6 @@ namespace App\Http\Middleware;
use Auth; use Auth;
use Closure; use Closure;
use App\Site;
class SaveCurrentRoute class SaveCurrentRoute
{ {

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\BrandChange;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class InvokeBrandChange extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'site_id' => 'exists:site,id|required'
];
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class AddCouponsCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'ids' => 'required'
];
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class DeleteCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class RemoveCouponCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class RemoveNotifCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class ShowDemoCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}

View file

@ -0,0 +1,35 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class StoreCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'camp_name' => 'min:5|required',
'camp_type' => 'integer|required',
'camp_published' => 'integer|required',
'camp_limitedPrinting' => 'sometimes|integer|required'
];
}
}

View file

@ -0,0 +1,39 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class StoreNotifCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'notif_name' => 'min:5|required',
'notif_email' => [
'required',
Rule::unique('notification')->where(function ($query) {
return $query->where('notif_campId', $this->campaign->camp_id);
}),
]
];
}
}

View file

@ -0,0 +1,35 @@
<?php
namespace App\Http\Requests\Campaign;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class UpdateCampaign extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'camp_name' => 'min:5|required',
'camp_type' => 'integer|required',
'camp_published' => 'integer|required',
'camp_limitedPrinting' => 'sometimes|integer|required'
];
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\Contact;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class LoadWidgetContact extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'camp_id' => 'required|exists:campagne,camp_id'
];
}
}

View file

@ -0,0 +1,38 @@
<?php
namespace App\Http\Requests\Contact;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class SearchContact extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'page' => 'sometimes|integer|nullable',
'searchName' => 'sometimes|alpha|max:50|nullable',
'searchFirstname' => 'sometimes|alpha|max:50|nullable',
'searchEmail' => 'sometimes|email|max:100|nullable',
'searchCp' => 'sometimes|integer|max:10|nullable',
'searchVille' => 'sometimes|alpha|max:50|nullable',
'searchCountry' => 'sometimes|integer|nullable',
];
}
}

View file

@ -0,0 +1,38 @@
<?php
namespace App\Http\Requests\Contact;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class StoreContact extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'contact_ref' => 'required|unique:contact',
'contact_nom' => 'min:3|max:50|required',
'contact_prenom' => 'min:3|max:50|required',
'contact_email' => 'email|required',
'contact_cp' => 'max:10|required',
'contact_ville' => 'max:50|required',
'contact_country' => 'integer|required'
];
}
}

View file

@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests\Contact;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class UpdateContact extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'contact_ref' => [
'required',
Rule::unique('contact')->ignore($this->contact->contact_id, 'contact_id'),
],
'contact_nom' => 'min:3|max:50|required',
'contact_prenom' => 'min:3|max:50|required',
'contact_email' => 'email|required',
'contact_cp' => 'max:10|required',
'contact_ville' => 'max:50|required',
'contact_country' => 'integer|required'
];
}
}

View file

@ -0,0 +1,75 @@
<?php
namespace App\Http\Requests\Coupons;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class StoreCoupons extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'coupon_code' => [
'required',
Rule::unique('coupon', 'coupon_code')
],
'coupon_name' => 'string|required',
'coupon_value' => 'numeric|required',
'coupon_validity_text' => 'required',
'coupon_legal_mentions' => 'required',
'coupon_decoration_image' => 'required|image|mimes:jpeg,png',
'coupon_logo_image' => 'required|image|mimes:jpeg,png',
'coupon_rcs' => 'required',
'coupon_site_contact' => 'required',
'coupon_seuil_alert' => 'integer|required',
'coupon_enablelimitperiod' => 'sometimes|integer|required',
'coupon_enablelimitquantity' => 'sometimes|integer|required',
'coupon_mindatediffusion' => 'nullable',
'coupon_maxdatediffusion' => 'nullable',
'coupon_validity' => 'integer|required',
'coupon_maxdatevalidity' => 'nullable',
'coupon_legal_mentions_splitted' => 'sometimes|integer|required',
];
}
/**
* Configure the validator instance.
*
* @param \Illuminate\Validation\Validator $validator
* @return void
*/
public function withValidator($validator)
{
$validator->sometimes('coupon_gs1code', 'required|image|mimes:jpeg', function ($input) {
return isset($input->coupon_norme);
});
$validator->sometimes('coupon_limitquantity', 'integer|required', function ($input) {
return !is_null($input->coupon_enablelimitquantity);
});
$validator->sometimes('coupon_limitperiod', 'integer|required', function ($input) {
return !is_null($input->coupon_enablelimitperiod);
});
}
}

View file

@ -0,0 +1,82 @@
<?php
namespace App\Http\Requests\Coupons;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class UpdateCoupons extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'coupon_code' => [
'required',
Rule::unique('coupon', 'coupon_code')->ignore($this->coupon->coupon_id, 'coupon_id')
],
'coupon_name' => 'string|required',
'coupon_value' => 'numeric|required',
'coupon_seuil_alert' => 'integer|required',
'coupon_enablelimitperiod' => 'sometimes|integer|required',
'coupon_enablelimitquantity' => 'sometimes|integer|required',
'coupon_mindatediffusion' => 'nullable',
'coupon_maxdatediffusion' => 'nullable',
'coupon_validity' => 'integer|required',
'coupon_maxdatevalidity' => 'nullable',
'coupon_treatment_center' => 'integer|required',
'coupon_validity_text' => 'required',
'coupon_legal_mentions' => 'required',
'coupon_rcs' => 'required',
'coupon_site_contact' => 'email|required',
'coupon_norme' => 'sometimes|integer|required',
'coupon_published' => 'sometimes|integer|required',
'coupon_legal_mentions_splitted' => 'sometimes|integer|required',
'coupon_decoration_image' => 'image|mimes:jpeg,png',
'coupon_logo_image' => 'image|mimes:jpeg,png',
];
}
/**
* Configure the validator instance.
*
* @param \Illuminate\Validation\Validator $validator
* @return void
*/
public function withValidator($validator)
{
$validator->sometimes('coupon_gs1code', 'required|image|mimes:jpeg', function ($input) {
if (isset($input->coupon_gs1code_image_hidden)) {
return false;
}
return isset($input->coupon_norme);
});
$validator->sometimes('coupon_limitquantity', 'integer|required', function ($input) {
return !is_null($input->coupon_enablelimitquantity);
});
$validator->sometimes('coupon_limitperiod', 'integer|required', function ($input) {
return !is_null($input->coupon_enablelimitperiod);
});
}
}

View file

@ -0,0 +1,33 @@
<?php
namespace App\Http\Requests\Customers;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class SearchCustomers extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check()
&& in_array(Auth::user()->roles, [UserRoles::superadmin()->value, UserRoles::admin()->value]);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'sometimes|email|required'
];
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace App\Http\Requests\Export;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class PDFExport extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'ids' => 'required',
'startdate' => 'date|required',
'enddate' => 'date|required'
];
}
}

View file

@ -0,0 +1,36 @@
<?php
namespace App\Http\Requests\Users;
use App\Enums\UserRoles;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class StoreUsers extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|unique:users|email',
'name' => 'required',
'password' => 'min:8|required',
'site' => 'required',
'roles' => 'required'
];
}
}

View file

@ -0,0 +1,39 @@
<?php
namespace App\Http\Requests\Users;
use App\Enums\UserRoles;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class UpdateUsers extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => [
'required',
Rule::unique('users')->ignore($this->user->id)
],
'name' => 'required',
'site' => 'required',
'roles' => 'required'
];
}
}

View file

@ -5,7 +5,6 @@ namespace App\Mail;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class AlertBr extends Mailable class AlertBr extends Mailable
{ {

View file

@ -5,7 +5,6 @@ namespace App\Mail;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class AlertBrAdmin extends Mailable class AlertBrAdmin extends Mailable
{ {

View file

@ -8,6 +8,7 @@ class Customers extends Model
{ {
protected $primaryKey = 'hashcode'; protected $primaryKey = 'hashcode';
protected $keyType = 'string'; protected $keyType = 'string';
protected $fillable = ['hashcode', 'email', 'country']; protected $fillable = ['hashcode', 'email', 'country'];
@ -37,4 +38,9 @@ class Customers extends Model
return 250; //France return 250; //France
} }
} }
public function printedWalls()
{
return $this->hasMany(PrintedWalls::class, 'customer_id');
}
} }

View file

@ -22,6 +22,8 @@ class Notification extends Model
*/ */
public $timestamps = false; public $timestamps = false;
protected $fillable = ['notif_name', 'notif_email', 'notif_campId'];
/** /**
* ManyToOne * ManyToOne
* Notification -> Campagne * Notification -> Campagne

View file

@ -3,8 +3,6 @@
namespace App\Notifications; namespace App\Notifications;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Auth\Notifications\ResetPassword as ResetPasswordNotification; use Illuminate\Auth\Notifications\ResetPassword as ResetPasswordNotification;

View file

@ -2,7 +2,6 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider class AuthServiceProvider extends ServiceProvider
@ -14,7 +13,7 @@ class AuthServiceProvider extends ServiceProvider
* @var array * @var array
*/ */
protected $policies = [ protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy', //'App\Model' => 'App\Policies\ModelPolicy',
]; ];
/** /**

View file

@ -2,7 +2,6 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

View file

@ -6,13 +6,13 @@ use App\Campagne;
use App\Coupon; use App\Coupon;
use App\Contact; use App\Contact;
use App\Calendrier; use App\Calendrier;
use App\Enums\CampaignTypes;
use App\Models\Customers; use App\Models\Customers;
use App\Models\PrintedWalls; use App\Models\PrintedWalls;
use App\Mouvement;
use App\Mur; use App\Mur;
use App\Statistique;
use App\Panier; use App\Panier;
use App\PanierContent; use App\PanierContent;
use DateTime;
trait CouponTrait trait CouponTrait
{ {
@ -150,22 +150,29 @@ trait CouponTrait
public function isAvailableToPrint(Coupon $coupon, Campagne $campagne) public function isAvailableToPrint(Coupon $coupon, Campagne $campagne)
{ {
$availableToPrint = true; /**
// ---- Contrôle de la publication * Contrôle de la publication de la campagne
if ($coupon->coupon_published == 0) { */
$availableToPrint = false; if ($campagne->camp_published === 0) {
return false;
}
// ---- Contrôle de la publication du coupon
if ($coupon->coupon_published === 0) {
return false;
} }
// ---- Contrôle la date de début de diffusion // ---- Contrôle la date de début de diffusion
if ($coupon->coupon_mindatediffusion != null) { if ($coupon->coupon_mindatediffusion !== null) {
if (strtotime(date('Y-m-d')) < strtotime($coupon->coupon_mindatediffusion)) { if (strtotime(date('Y-m-d')) < strtotime($coupon->coupon_mindatediffusion)) {
$availableToPrint = false; return false;
} }
} }
// ---- Contrôle la date de validité // ---- Contrôle la date de validité
if ($coupon->coupon_maxdatediffusion != null) { if ($coupon->coupon_maxdatediffusion !== null) {
if (strtotime(date('Y-m-d')) > strtotime($coupon->coupon_maxdatediffusion)) { if (strtotime(date('Y-m-d')) > strtotime($coupon->coupon_maxdatediffusion)) {
$availableToPrint = false; return false;
} }
} }
@ -179,31 +186,24 @@ trait CouponTrait
} }
} }
if (!$pub) { if (!$pub) {
$availableToPrint = false; return false;
} }
} }
return true;
if ($campagne->camp_published == 0) {
$availableToPrint = false;
}
return $availableToPrint;
} }
public function isPausedToPrint(Coupon $coupon, Campagne $campagne) public function isPausedToPrint(Coupon $coupon, Campagne $campagne)
{ {
$availableToPrint = true;
// ---- Contrôle la date de début de diffusion // ---- Contrôle la date de début de diffusion
if ($coupon->coupon_mindatediffusion != null) { if ($coupon->coupon_mindatediffusion !== null) {
if (strtotime(date('Y-m-d')) < strtotime($coupon->coupon_mindatediffusion)) { if (strtotime(date('Y-m-d')) < strtotime($coupon->coupon_mindatediffusion)) {
$availableToPrint = false; return false;
} }
} }
// ---- Contrôle la date de validité // ---- Contrôle la date de validité
if ($coupon->coupon_maxdatediffusion != null) { if ($coupon->coupon_maxdatediffusion !== null) {
if (strtotime(date('Y-m-d')) > strtotime($coupon->coupon_maxdatediffusion)) { if (strtotime(date('Y-m-d')) > strtotime($coupon->coupon_maxdatediffusion)) {
$availableToPrint = false; return false;
} }
} }
@ -217,11 +217,11 @@ trait CouponTrait
} }
} }
if (!$pub) { if (!$pub) {
$availableToPrint = false; return false;
} }
} }
return $availableToPrint; return true;
} }
@ -266,26 +266,22 @@ trait CouponTrait
public function getFullQuantity(Coupon $coupon) public function getFullQuantity(Coupon $coupon)
{ {
$mouvements = $coupon->mouvements()->get(); return (int)Mouvement::where('mouvement_couponId', $coupon->coupon_id)->sum('mouvement_nombre');
$nombre = array();
foreach ($mouvements as $mouvement) {
array_push($nombre, $mouvement->mouvement_nombre);
}
return array_sum($nombre);
} }
public function getUsedQuantity(Coupon $coupon) public function getUsedQuantity(Coupon $coupon)
{ {
$countPrinted = 0; $countPrinted = 0;
$couponId = $coupon->coupon_id; foreach ($coupon->campagnes as $campagne) {
$campagnes = $coupon->campagnes()->get(); if ($campagne->camp_type->equals(CampaignTypes::mur()) || $campagne->camp_type->equals(CampaignTypes::murss())) {
foreach ($campagnes as $campagne) { // Murs
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) { // Murs $murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->count();
$murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->get(); $countPrinted += $murs;
$countPrinted = $countPrinted + count($murs); } else {
} else { // Paniers // Paniers
// TODO : Revoir la requete
$campagneId = $campagne->camp_id; $campagneId = $campagne->camp_id;
$countPrinted = PanierContent::where('panier_content_couponId', $couponId)->whereHas('panier', function ($query) use ($campagneId) { $countPrinted = PanierContent::where('panier_content_couponId', $coupon->coupon_id)->whereHas('panier', function ($query) use ($campagneId) {
$query->where('panier_campId', $campagneId); $query->where('panier_campId', $campagneId);
})->sum('panier_content_printed'); })->sum('panier_content_printed');
} }
@ -296,15 +292,16 @@ trait CouponTrait
public function getDiffusedQuantity(Coupon $coupon) public function getDiffusedQuantity(Coupon $coupon)
{ {
$countPrinted = 0; $countPrinted = 0;
$couponId = $coupon->coupon_id; foreach ($coupon->campagnes as $campagne) {
$campagnes = $coupon->campagnes()->get(); if ($campagne->camp_type->equals(CampaignTypes::mur()) || $campagne->camp_type->equals(CampaignTypes::murss())) {
foreach ($campagnes as $campagne) { // Murs
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) { // Murs $murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->count();
$murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->get(); $countPrinted += $murs;
$countPrinted = $countPrinted + count($murs); } else {
} else { // Paniers // Paniers
// TODO : Revoir la requete
$campagneId = $campagne->camp_id; $campagneId = $campagne->camp_id;
$panierContents = PanierContent::where('panier_content_couponId', $couponId)->whereHas('panier', function ($query) use ($campagneId) { $panierContents = PanierContent::where('panier_content_couponId', $coupon->coupon_id)->whereHas('panier', function ($query) use ($campagneId) {
$query->where('panier_campId', $campagneId); $query->where('panier_campId', $campagneId);
})->get(); })->get();
$panierContentCountPrinted = $panierContents->sum('panier_content_printed'); $panierContentCountPrinted = $panierContents->sum('panier_content_printed');
@ -322,7 +319,7 @@ trait CouponTrait
$enddate = date('Y-m-d H:i:s', strtotime($enddate)); $enddate = date('Y-m-d H:i:s', strtotime($enddate));
$campagnes = $coupon->campagnes()->get(); $campagnes = $coupon->campagnes()->get();
foreach ($campagnes as $campagne) { foreach ($campagnes as $campagne) {
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) { // Murs if ($campagne->camp_type->equals(CampaignTypes::mur()) || $campagne->camp_type->equals(CampaignTypes::murss())) { // Murs
$murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->whereBetween('mur_createdate', [$startdate, $enddate])->get(); $murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->whereBetween('mur_createdate', [$startdate, $enddate])->get();
$countPrinted = $countPrinted + count($murs); $countPrinted = $countPrinted + count($murs);
} else { // Paniers } else { // Paniers

View file

@ -3,8 +3,6 @@
namespace App\Traits; namespace App\Traits;
use App\Models\Customers; use App\Models\Customers;
use Picqer\Barcode\BarcodeGenerator;
use Picqer\Barcode\BarcodeGeneratorPNG;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Coupon; use App\Coupon;
use App\Site; use App\Site;
@ -38,7 +36,6 @@ trait GenerateBR
$text = $coupon->coupon_site_contact; $text = $coupon->coupon_site_contact;
if (strlen($text) < 30) { if (strlen($text) < 30) {
$ImageFond = imagecreate(165, 27); $ImageFond = imagecreate(165, 27);
$box1 = imagettfbbox(8, 0, $arial, $text);
$white = imagecolorallocate($ImageFond, 255, 255, 255); $white = imagecolorallocate($ImageFond, 255, 255, 255);
$black = imagecolorallocate($ImageFond, 0, 0, 0); $black = imagecolorallocate($ImageFond, 0, 0, 0);
$this->imagettftextSp($ImageFond, 8, 0, 5, 23, $black, $arial, $text, 0.01); $this->imagettftextSp($ImageFond, 8, 0, 5, 23, $black, $arial, $text, 0.01);
@ -46,7 +43,6 @@ trait GenerateBR
imagecopy($mask, $ImageFond, 743, 365, 0, 0, imagesx($ImageFond), imagesy($ImageFond)); imagecopy($mask, $ImageFond, 743, 365, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
} else { } else {
$ImageFond = imagecreate(195, 27); $ImageFond = imagecreate(195, 27);
$box1 = imagettfbbox(7, 0, $arial, $text);
$white = imagecolorallocate($ImageFond, 255, 255, 255); $white = imagecolorallocate($ImageFond, 255, 255, 255);
$black = imagecolorallocate($ImageFond, 0, 0, 0); $black = imagecolorallocate($ImageFond, 0, 0, 0);
$this->imagettftextSp($ImageFond, 7, 0, 5, 23, $black, $arial, $text, 0); $this->imagettftextSp($ImageFond, 7, 0, 5, 23, $black, $arial, $text, 0);
@ -59,7 +55,6 @@ trait GenerateBR
if ($coupon->coupon_legal_mentions_splitted == 0) { if ($coupon->coupon_legal_mentions_splitted == 0) {
$txt_mentions = $coupon->coupon_legal_mentions . " " . $coupon->coupon_rcs; $txt_mentions = $coupon->coupon_legal_mentions . " " . $coupon->coupon_rcs;
$ImageMentionFond = imagecreate(415, 100); $ImageMentionFond = imagecreate(415, 100);
$boxMentions = imagettfbbox(7, 0, $arial, $txt_mentions);
$white = imagecolorallocate($ImageMentionFond, 255, 255, 255); $white = imagecolorallocate($ImageMentionFond, 255, 255, 255);
imagefilledrectangle($ImageMentionFond, 0, 0, 414, 99, $white); imagefilledrectangle($ImageMentionFond, 0, 0, 414, 99, $white);
$black = imagecolorallocate($ImageMentionFond, 0, 0, 0); $black = imagecolorallocate($ImageMentionFond, 0, 0, 0);
@ -89,9 +84,9 @@ trait GenerateBR
$black = imagecolorallocate($ImageFond, 0, 0, 0); $black = imagecolorallocate($ImageFond, 0, 0, 0);
$blue = imagecolorallocate($ImageFond, 8, 169, 223); $blue = imagecolorallocate($ImageFond, 8, 169, 223);
$grey = imagecolorallocate($ImageFond, 219, 219, 221); $grey = imagecolorallocate($ImageFond, 219, 219, 221);
$this->imagettftext_contour($ImageFond, 95, 0, 5, 110, $grey, $impact, $textMontant, $blue, 3, 3, 3, 3); $this->imagettftextContour($ImageFond, 95, 0, 5, 110, $grey, $impact, $textMontant, $blue, 3, 3, 3, 3);
$this->imagettftext_contour($ImageFond, 50, 0, 220, 55, $grey, $arial, $textEuro, $blue, 2, 2, 2, 2); $this->imagettftextContour($ImageFond, 50, 0, 220, 55, $grey, $arial, $textEuro, $blue, 2, 2, 2, 2);
$this->imagettftext_contour($ImageFond, 16, 0, 0, 150, $grey, $impact, $libReduc, $blue, 1, 1, 1, 1); $this->imagettftextContour($ImageFond, 16, 0, 0, 150, $grey, $impact, $libReduc, $blue, 1, 1, 1, 1);
imagecolortransparent($ImageFond, $white); imagecolortransparent($ImageFond, $white);
imagecopy($mask, $ImageFond, 360, 10, 0, 0, imagesx($ImageFond), imagesy($ImageFond)); imagecopy($mask, $ImageFond, 360, 10, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
@ -110,7 +105,6 @@ trait GenerateBR
$textFiliLines = explode("\r\n", $textFili); $textFiliLines = explode("\r\n", $textFili);
$ImageFond = imagecreate(402, 240); $ImageFond = imagecreate(402, 240);
$white = imagecolorallocate($ImageFond, 255, 255, 255); $white = imagecolorallocate($ImageFond, 255, 255, 255);
$blackOpac = imagecolorallocatealpha($ImageFond, 0, 0, 0, 20);
$y = 0; $y = 0;
foreach ($textFiliLines as $textFiliLine) { foreach ($textFiliLines as $textFiliLine) {
$y = $y + 20; $y = $y + 20;
@ -227,7 +221,7 @@ trait GenerateBR
function imagettftext_contour($image, $fontsize, $angle, $x, $y, $color, $font, $text, $color_contour, $contour_haut = 1, $contour_bas = 1, $contour_gauche = 1, $contour_droite = 1) function imagettftextContour($image, $fontsize, $angle, $x, $y, $color, $font, $text, $color_contour, $contour_haut = 1, $contour_bas = 1, $contour_gauche = 1, $contour_droite = 1)
{ {
$coords_x = array(); $coords_x = array();
$coords_y = array(); $coords_y = array();

View file

@ -2,13 +2,7 @@
namespace App\Traits; namespace App\Traits;
use App\Campagne;
use App\Coupon;
use App\Contact;
use App\Calendrier;
use App\Mur;
use App\Statistique; use App\Statistique;
use App\Panier;
use DateTime; use DateTime;
trait GraphTrait trait GraphTrait

View file

@ -2,7 +2,6 @@
namespace App\Traits; namespace App\Traits;
use App\Campagne;
use Illuminate\Http\Request; use Illuminate\Http\Request;
trait ThanksTrait trait ThanksTrait

View file

@ -3,7 +3,6 @@
namespace App; namespace App;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Notifications\ResetPassword; use App\Notifications\ResetPassword;

View file

@ -11,6 +11,8 @@
"barryvdh/laravel-dompdf": "^0.9.0", "barryvdh/laravel-dompdf": "^0.9.0",
"doctrine/dbal": "^2.8", "doctrine/dbal": "^2.8",
"fideloper/proxy": "^4.0", "fideloper/proxy": "^4.0",
"kwaadpepper/enum": "^2.0",
"kwaadpepper/exception-handler": "^0.0.3",
"laravel/framework": "^8.0", "laravel/framework": "^8.0",
"laravel/tinker": "^2.0", "laravel/tinker": "^2.0",
"laravel/ui": "^3.0", "laravel/ui": "^3.0",
@ -29,6 +31,7 @@
"mockery/mockery": "^1.0", "mockery/mockery": "^1.0",
"nunomaduro/collision": "^5.0", "nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^9.0", "phpunit/phpunit": "^9.0",
"slevomat/coding-standard": "^7.0",
"squizlabs/php_codesniffer": "^3.3" "squizlabs/php_codesniffer": "^3.3"
}, },
"repositories": [ "repositories": [

243
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "5a3ebedda9d69b70bcd95eec2618c1fb", "content-hash": "4790c5a14a3a43378f3b3d89c7346e36",
"packages": [ "packages": [
{ {
"name": "barryvdh/laravel-dompdf", "name": "barryvdh/laravel-dompdf",
@ -1264,6 +1264,67 @@
}, },
"time": "2021-08-13T10:11:43+00:00" "time": "2021-08-13T10:11:43+00:00"
}, },
{
"name": "kwaadpepper/exception-handler",
"version": "0.0.3",
"source": {
"type": "git",
"url": "https://github.com/Kwaadpepper/exception-handler.git",
"reference": "979e8add45fea601b221e95595366fb446e8c6b7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Kwaadpepper/exception-handler/zipball/979e8add45fea601b221e95595366fb446e8c6b7",
"reference": "979e8add45fea601b221e95595366fb446e8c6b7",
"shasum": ""
},
"require": {
"illuminate/support": "~7|~8",
"laravel/framework": "~7|~8"
},
"require-dev": {
"orchestra/testbench": "^6.13",
"phpunit/phpunit": "~9.0",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Kwaadpepper\\ExceptionHandler\\ExceptionHandlerServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Kwaadpepper\\ExceptionHandler\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jérémy Munsch",
"email": "github@jeremydev.ovh",
"homepage": "https://jeremydev.ovh"
}
],
"description": "Send emails when exceptions occurs",
"homepage": "https://github.com/kwaadpepper/exception-handler",
"keywords": [
"email",
"exception",
"laravel",
"policies"
],
"support": {
"issues": "https://github.com/Kwaadpepper/exception-handler/issues",
"source": "https://github.com/Kwaadpepper/exception-handler/tree/0.0.3"
},
"time": "2021-09-15T17:06:33+00:00"
},
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v8.38.0", "version": "v8.38.0",
@ -6093,6 +6154,76 @@
}, },
"time": "2020-12-15T10:57:43+00:00" "time": "2020-12-15T10:57:43+00:00"
}, },
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
"version": "v0.7.1",
"source": {
"type": "git",
"url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
"reference": "fe390591e0241955f22eb9ba327d137e501c771c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
"reference": "fe390591e0241955f22eb9ba327d137e501c771c",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.0 || ^2.0",
"php": ">=5.3",
"squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
},
"require-dev": {
"composer/composer": "*",
"phpcompatibility/php-compatibility": "^9.0",
"sensiolabs/security-checker": "^4.1.0"
},
"type": "composer-plugin",
"extra": {
"class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
},
"autoload": {
"psr-4": {
"Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Franck Nijhof",
"email": "franck.nijhof@dealerdirect.com",
"homepage": "http://www.frenck.nl",
"role": "Developer / IT Manager"
}
],
"description": "PHP_CodeSniffer Standards Composer Installer Plugin",
"homepage": "http://www.dealerdirect.com",
"keywords": [
"PHPCodeSniffer",
"PHP_CodeSniffer",
"code quality",
"codesniffer",
"composer",
"installer",
"phpcs",
"plugin",
"qa",
"quality",
"standard",
"standards",
"style guide",
"stylecheck",
"tests"
],
"support": {
"issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
"source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
},
"time": "2020-12-07T18:04:37+00:00"
},
{ {
"name": "doctrine/instantiator", "name": "doctrine/instantiator",
"version": "1.4.0", "version": "1.4.0",
@ -7066,6 +7197,55 @@
}, },
"time": "2021-03-17T13:42:18+00:00" "time": "2021-03-17T13:42:18+00:00"
}, },
{
"name": "phpstan/phpdoc-parser",
"version": "0.5.6",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "fac86158ffc7392e49636f77e63684c026df43b8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fac86158ffc7392e49636f77e63684c026df43b8",
"reference": "fac86158ffc7392e49636f77e63684c026df43b8",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^0.12.87",
"phpstan/phpstan-strict-rules": "^0.12.5",
"phpunit/phpunit": "^9.5",
"symfony/process": "^5.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.5-dev"
}
},
"autoload": {
"psr-4": {
"PHPStan\\PhpDocParser\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/0.5.6"
},
"time": "2021-08-31T08:08:22+00:00"
},
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "9.2.6", "version": "9.2.6",
@ -8451,6 +8631,67 @@
], ],
"time": "2020-09-28T06:39:44+00:00" "time": "2020-09-28T06:39:44+00:00"
}, },
{
"name": "slevomat/coding-standard",
"version": "7.0.15",
"source": {
"type": "git",
"url": "https://github.com/slevomat/coding-standard.git",
"reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/slevomat/coding-standard/zipball/cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80",
"reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80",
"shasum": ""
},
"require": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
"php": "^7.1 || ^8.0",
"phpstan/phpdoc-parser": "0.5.1 - 0.5.6",
"squizlabs/php_codesniffer": "^3.6.0"
},
"require-dev": {
"phing/phing": "2.17.0",
"php-parallel-lint/php-parallel-lint": "1.3.1",
"phpstan/phpstan": "0.12.98",
"phpstan/phpstan-deprecation-rules": "0.12.6",
"phpstan/phpstan-phpunit": "0.12.22",
"phpstan/phpstan-strict-rules": "0.12.11",
"phpunit/phpunit": "7.5.20|8.5.5|9.5.9"
},
"type": "phpcodesniffer-standard",
"extra": {
"branch-alias": {
"dev-master": "7.x-dev"
}
},
"autoload": {
"psr-4": {
"SlevomatCodingStandard\\": "SlevomatCodingStandard"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
"support": {
"issues": "https://github.com/slevomat/coding-standard/issues",
"source": "https://github.com/slevomat/coding-standard/tree/7.0.15"
},
"funding": [
{
"url": "https://github.com/kukulich",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
"type": "tidelift"
}
],
"time": "2021-09-09T10:29:09+00:00"
},
{ {
"name": "squizlabs/php_codesniffer", "name": "squizlabs/php_codesniffer",
"version": "3.6.0", "version": "3.6.0",

View file

@ -1,5 +1,9 @@
<?php <?php
use App\Enums\CampaignTypes;
use App\Enums\Countries;
use App\Enums\UserRoles;
return [ return [
/* /*
@ -214,6 +218,9 @@ return [
'Html' => Collective\Html\HtmlFacade::class, 'Html' => Collective\Html\HtmlFacade::class,
'Debugbar' => Barryvdh\Debugbar\Facade::class, 'Debugbar' => Barryvdh\Debugbar\Facade::class,
'PDF' => Barryvdh\DomPDF\Facade::class, 'PDF' => Barryvdh\DomPDF\Facade::class,
'CampaignTypes' => CampaignTypes::class,
'Countries' => Countries::class,
'UserRoles' => UserRoles::class,
], ],
]; ];

View file

@ -0,0 +1,17 @@
<?php
return [
/**
* Send mail when app debug is turn off
* so you can be warned if an unhandled exception occurs
*/
'enableMaiLog' => !config('app.debug'),
/**
* Put a developper secured mailbox in here
* so you can receive email if things go mad
*/
'contactsList' => [
'equipe.web@ldc.fr'
]
];

View file

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class CreateOldCalendrierTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
DB::table('migrations')->truncate();
Schema::create('calendrier', function (Blueprint $table) {
$table->id('calendrier_id');
$table->bigInteger('calendrier_couponId')->default(0);
$table->timestamp('calendrier_startdate')->useCurrent();
$table->timestamp('calendrier_enddate')->useCurrent()->useCurrentOnUpdate();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('calendrier');
}
}

View file

@ -0,0 +1,43 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldCampagneTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('campagne', function (Blueprint $table) {
$table->id('camp_id');
$table->string('camp_name', 500)->default('');
$table->unsignedTinyInteger('camp_type')->default(0)
->comment('0 = mur; 1 = panier; 2 = mur sous forme de panier');
$table->smallInteger('camp_limitedPrinting')->default(0)
->comment('Limite l\'impression des paniers à un BR à la fois');
$table->smallInteger('camp_published')->default(1);
$table->string('camp_siteId', 50);
$table->timestamp('camp_createdate')->useCurrent();
$table->timestamp('camp_updatedate')->useCurrent()->useCurrentOnUpdate();
$table->timestamp('camp_deleted_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('campagne');
}
}

View file

@ -0,0 +1,49 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldContactTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('contact', function (Blueprint $table) {
$table->id('contact_id');
$table->string('contact_ref', 200)->default(''); // broken key
$table->string('contact_prenom', 200)->default('');
$table->string('contact_nom', 200)->default('');
$table->string('contact_email', 200)->default(''); // broken key
$table->string('contact_cp', 50)->default('');
$table->string('contact_ville', 200)->default('');
$table->smallInteger('contact_country')->default(250);
$table->string('contact_hash', 50)->nullable();
$table->string('contact_siteId', 50);
$table->timestamp('contact_createdate')->useCurrent();
$table->timestamp('contact_updatedate')->useCurrent()->useCurrentOnUpdate();
// me demandez pas pourquoi iso prod (-_-")
$table->index(['contact_ref', 'contact_email'], 'contact_ref');
$table->index(['contact_email', 'contact_ref'], 'contact_email');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('contact');
}
}

View file

@ -0,0 +1,74 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldCouponTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('coupon', function (Blueprint $table) {
$table->id('coupon_id');
$table->string('coupon_code', 50);
$table->string('coupon_gs1code', 500);
$table->string('coupon_name', 500);
$table->float('coupon_value', 0);
$table->string('coupon_thumbnail1', 500);
$table->string('coupon_thumbnail2', 500);
$table->string('coupon_thumbnail3', 500);
$table->string('coupon_thumbnail4', 500);
$table->string('coupon_image', 500);
$table->integer('coupon_enablelimitquantity')->default(0);
$table->integer('coupon_limitquantity')->default(1);
$table->integer('coupon_enablelimitperiod')->default(1);
$table->integer('coupon_limitperiod')->default(0);
$table->integer('coupon_validity')->default(30);
$table->date('coupon_mindatediffusion')->nullable();
$table->date('coupon_maxdatediffusion')->nullable();
$table->date('coupon_maxdatevalidity')->nullable();
$table->unsignedTinyInteger('coupon_norme')->default(0)
->comment('0 = par défaut; 1 = Benelux');
$table->integer('coupon_published')->default(1);
$table->string('coupon_decoration_image', 500)->nullable();
$table->string('coupon_logo_image', 500)->nullable();
$table->string('coupon_validity_text', 500)->nullable();
$table->string('coupon_rcs', 500)->nullable();
$table->string('coupon_legal_mentions', 1000)->nullable();
$table->tinyInteger('coupon_legal_mentions_splitted')->default(0);
$table->string('coupon_site_contact', 500)->nullable();
$table->unsignedInteger('coupon_seuil_alert')->default(100);
$table->integer('coupon_treatment_center')->default(0);
$table->bigInteger('coupon_siteId');
$table->timestamp('coupon_createdate')->useCurrent();
$table->timestamp('coupon_updatedate')->useCurrent()->useCurrentOnUpdate();
$table->timestamp('coupon_deleted_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('coupon');
}
}

View file

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldCampagneCouponTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('campagne_coupon', function (Blueprint $table) {
$table->foreignId('campagne_id');
$table->foreign('campagne_id')->references('camp_id')->on('campagne')->cascadeOnDelete();
$table->foreignId('coup_id');
$table->foreign('coup_id')->references('coupon_id')->on('coupon')->cascadeOnDelete();
$table->unique(['campagne_id', 'coup_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('campagne_coupon');
}
}

View file

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldCustomersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id(); // TODO remove this in the future
$table->string('hashcode', 36)->unique();
$table->string('email', 255)->unique();
$table->integer('country')->default(250);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('customers');
}
}

View file

@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldLogsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('logs', function (Blueprint $table) {
$table->id();
$table->tinyInteger('log_action');
$table->string('log_source', 255);
$table->text('log_params')->nullable();
$table->string('log_statut');
$table->text('log_message');
$table->string('log_refsite', 255)->nullable();
$table->bigInteger('log_contactId')->nullable();
$table->timestamp('created_at')->useCurrent();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('logs');
}
}

View file

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldMouvementTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('mouvement', function (Blueprint $table) {
$table->id('mouvement_id');
$table->unsignedInteger('mouvement_couponId');
$table->integer('mouvement_nombre');
$table->string('mouvement_commentaire')->nullable();
$table->timestamp('mouvement_created_at')->useCurrent()->useCurrentOnUpdate();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('mouvement');
}
}

View file

@ -0,0 +1,43 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldMurTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('mur', function (Blueprint $table) {
$table->id('mur_id');
$table->integer('mur_campId'); // broken foreign key
$table->integer('mur_contactId'); // broken foreign key
$table->integer('mur_couponId'); // broken foreign key
$table->boolean('mur_deleted')->default(false);
$table->timestamp('mur_createdate')->useCurrent();
// me demandez pas pourquoi iso prod (-_-")
$table->index(['mur_campId'], 'FK_mur_campagne');
$table->index(['mur_contactId'], 'mur_contactId');
$table->index(['mur_couponId'], 'mur_couponId');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('mur');
}
}

View file

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldNotificationTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('old_notification', function (Blueprint $table) {
$table->id('notif_id');
$table->string('notif_email')->default('');
$table->string('notif_name')->nullable();
$table->integer('notif_campId');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('old_notification');
}
}

View file

@ -0,0 +1,41 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldPanierTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('old_panier', function (Blueprint $table) {
$table->id('panier_id');
$table->string('panier_ref', 100)->default('');
$table->boolean('panier_pending')
->comment('1 = en cours; 0 = terminé');
$table->integer('panier_campId');
$table->integer('panier_contactId');
$table->timestamp('panier_createdate')->useCurrent();
$table->timestamp('panier_updatedate')->useCurrent()->useCurrentOnUpdate();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('old_panier');
}
}

View file

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldPanierContentTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('panier_content', function (Blueprint $table) {
$table->id('panier_content_id');
$table->integer('panier_content_quantity')->default(0);
$table->integer('panier_content_printed')->default(0);
$table->integer('panier_content_panierId')->default(0);
$table->integer('panier_content_couponId');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('panier_content');
}
}

View file

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldPasswordResetsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('password_resets', function (Blueprint $table) {
$table->string('email')->index('password_resets_email_index');
$table->string('token');
$table->timestamp('created_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('password_resets');
}
}

View file

@ -0,0 +1,39 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldPrintedWallsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('printed_walls', function (Blueprint $table) {
$table->bigInteger('camp_id');
$table->bigInteger('coupon_id');
$table->bigInteger('customer_id');
// me demandez pas pourquoi iso prod (-_-")
$table->index('camp_id', 'FK_printed_wall_campagne');
$table->index('coupon_id', 'FK_printed_wall_coupon');
$table->index('customer_id', 'FK_printed_wall_customers');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('printed_walls');
}
}

View file

@ -0,0 +1,40 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldSiteTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('site', function (Blueprint $table) {
$table->id();
$table->string('site_nom', 200)->default('');
$table->string('site_logo', 500)->default('');
$table->string('site_contact', 500)->default('');
$table->string('site_rcs', 100)->nullable();
$table->string('site_libelle', 200)->nullable();
$table->string('crm_token')->nullable();
$table->string('crm_password')->nullable();
$table->string('site_id', 50);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('site');
}
}

View file

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldStatistiquesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('statistiques', function (Blueprint $table) {
$table->id();
$table->integer('stat_couponPrinted');
$table->integer('stat_campId');
$table->integer('stat_couponId');
$table->timestamp('created_at')->useCurrent();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('statistiques');
}
}

View file

@ -0,0 +1,40 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->string('roles', 50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}

View file

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOldSiteUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('site_user', function (Blueprint $table) {
$table->foreignId('user_id');
$table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete();
$table->foreignId('site_id');
$table->foreign('site_id')->references('id')->on('site')->cascadeOnDelete();
$table->unique(['user_id', 'site_id']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('site_user');
}
}

18543
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -21,5 +21,8 @@
"popper.js": "^1.12", "popper.js": "^1.12",
"sweetalert": "^2.0.8", "sweetalert": "^2.0.8",
"vue": "^2.5.7" "vue": "^2.5.7"
},
"dependencies": {
"node-sass": "^6.0.1"
} }
} }

View file

@ -87,4 +87,5 @@
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace"> <rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
<exclude-pattern>*/database/migrations/*</exclude-pattern> <exclude-pattern>*/database/migrations/*</exclude-pattern>
</rule> </rule>
<rule ref="SlevomatCodingStandard.Namespaces.UnusedUses" />
</ruleset> </ruleset>

2
public/js/ajax.js vendored

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more