feat: take all VB commits from old git repo
This commit is contained in:
parent
4ebbd47982
commit
0d648778ae
80 changed files with 2704 additions and 1890 deletions
1
.composer/.htaccess
Normal file
1
.composer/.htaccess
Normal file
|
|
@ -0,0 +1 @@
|
|||
Deny from all
|
||||
|
|
@ -2,12 +2,33 @@
|
|||
|
||||
namespace App;
|
||||
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Models\Basket;
|
||||
use App\Models\PrintedWalls;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Kwaadpepper\Enum\Traits\CastsEnums;
|
||||
|
||||
class Campagne extends Model
|
||||
{
|
||||
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
|
||||
|
|
@ -86,13 +107,20 @@ class Campagne extends Model
|
|||
}
|
||||
|
||||
/**
|
||||
* @var array
|
||||
* printedWalls relation
|
||||
* @return HasMany
|
||||
*/
|
||||
protected $fillable = [
|
||||
'camp_siteId',
|
||||
'camp_name',
|
||||
'camp_type',
|
||||
'camp_limitedPrinting',
|
||||
'camp_published'
|
||||
];
|
||||
public function printedWalls()
|
||||
{
|
||||
return $this->hasMany(PrintedWalls::class, 'camp_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Basket model relation
|
||||
* @return HasMany
|
||||
*/
|
||||
public function baskets()
|
||||
{
|
||||
return $this->hasMany(Basket::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App;
|
||||
|
||||
use App\Models\BasketContent;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
|
|
@ -34,6 +35,40 @@ class Coupon extends Model
|
|||
*/
|
||||
protected $primaryKey = 'coupon_id';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'coupon_code',
|
||||
'coupon_norme',
|
||||
'coupon_gs1code',
|
||||
'coupon_name',
|
||||
'coupon_value',
|
||||
'coupon_enablelimitquantity',
|
||||
'coupon_limitquantity',
|
||||
'coupon_enablelimitperiod',
|
||||
'coupon_limitperiod',
|
||||
'coupon_validity',
|
||||
'coupon_mindatediffusion',
|
||||
'coupon_maxdatediffusion',
|
||||
'coupon_maxdatevalidity',
|
||||
'coupon_thumbnail1',
|
||||
'coupon_thumbnail2',
|
||||
'coupon_thumbnail3',
|
||||
'coupon_thumbnail4',
|
||||
'coupon_image',
|
||||
'coupon_published',
|
||||
'coupon_logo_image',
|
||||
'coupon_rcs',
|
||||
'coupon_decoration_image',
|
||||
'coupon_validity_text',
|
||||
'coupon_site_contact',
|
||||
'coupon_legal_mentions',
|
||||
'coupon_legal_mentions_splitted',
|
||||
'coupon_seuil_alert',
|
||||
'coupon_treatment_center'
|
||||
];
|
||||
|
||||
/**
|
||||
* OneToMany
|
||||
* Coupon -> Calendrier
|
||||
|
|
@ -88,36 +123,11 @@ class Coupon extends Model
|
|||
}
|
||||
|
||||
/**
|
||||
* @var array
|
||||
* BasketContent model relation
|
||||
* @return HasMany
|
||||
*/
|
||||
protected $fillable = [
|
||||
'coupon_code',
|
||||
'coupon_norme',
|
||||
'coupon_gs1code',
|
||||
'coupon_name',
|
||||
'coupon_value',
|
||||
'coupon_enablelimitquantity',
|
||||
'coupon_limitquantity',
|
||||
'coupon_enablelimitperiod',
|
||||
'coupon_limitperiod',
|
||||
'coupon_validity',
|
||||
'coupon_mindatediffusion',
|
||||
'coupon_maxdatediffusion',
|
||||
'coupon_maxdatevalidity',
|
||||
'coupon_thumbnail1',
|
||||
'coupon_thumbnail2',
|
||||
'coupon_thumbnail3',
|
||||
'coupon_thumbnail4',
|
||||
'coupon_image',
|
||||
'coupon_published',
|
||||
'coupon_logo_image',
|
||||
'coupon_rcs',
|
||||
'coupon_decoration_image',
|
||||
'coupon_validity_text',
|
||||
'coupon_site_contact',
|
||||
'coupon_legal_mentions',
|
||||
'coupon_legal_mentions_splitted',
|
||||
'coupon_seuil_alert',
|
||||
'coupon_treatment_center'
|
||||
];
|
||||
public function basketContents()
|
||||
{
|
||||
return $this->hasMany(BasketContent::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
39
app/Enums/CampaignTypes.php
Normal file
39
app/Enums/CampaignTypes.php
Normal 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
32
app/Enums/Countries.php
Normal 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
32
app/Enums/UserRoles.php
Normal 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')
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -2,10 +2,8 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Campagne;
|
||||
use App\Coupon;
|
||||
use App\Contact;
|
||||
use App\Panier;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\PanierContent;
|
||||
use App\Statistique;
|
||||
use App\Mur;
|
||||
|
|
@ -13,42 +11,14 @@ use App\Log;
|
|||
use Illuminate\Http\Request;
|
||||
use App\Traits\GenerateBR;
|
||||
use App\Traits\CouponTrait;
|
||||
use App\Http\Controllers;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class AjaxController extends Controller
|
||||
{
|
||||
use GenerateBR;
|
||||
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
|
||||
public function unpublish_coupons_ajax(Request $request)
|
||||
public function unpublishCouponsAjax(Request $request)
|
||||
{
|
||||
$coupon_id = $request->input('couponid');
|
||||
$coupon = Coupon::find($coupon_id);
|
||||
|
|
@ -59,7 +29,7 @@ class AjaxController extends Controller
|
|||
}
|
||||
|
||||
// ---- Publie un coupon
|
||||
public function publish_coupons_ajax(Request $request)
|
||||
public function publishCouponsAjax(Request $request)
|
||||
{
|
||||
$coupon_id = $request->input('couponid');
|
||||
$coupon = Coupon::find($coupon_id);
|
||||
|
|
@ -69,31 +39,8 @@ class AjaxController extends Controller
|
|||
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
|
||||
public function impression_ajax(Request $request)
|
||||
public function impressionAjax(Request $request)
|
||||
{
|
||||
|
||||
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 .= '<TR><TD width="100%" align="center"><div>';
|
||||
|
||||
if ($campagne->camp_type == 0) {
|
||||
if ($campagne->camp_type->equals(CampaignTypes::mur())) {
|
||||
// ---- POUR LES MURS
|
||||
if (!isset($couponsToPrint)) {
|
||||
die();
|
||||
|
|
@ -167,7 +114,7 @@ class AjaxController extends Controller
|
|||
$stat->save();
|
||||
}//end if
|
||||
}//end foreach
|
||||
} elseif ($campagne->camp_type == 1) {
|
||||
} elseif ($campagne->camp_type->equals(CampaignTypes::panier())) {
|
||||
// ---- POUR LES PANIERS
|
||||
if (!isset($panier)) {
|
||||
die();
|
||||
|
|
@ -235,7 +182,7 @@ class AjaxController extends Controller
|
|||
$panier->panier_pending = 1;
|
||||
}
|
||||
$panier->save();
|
||||
} elseif ($campagne->camp_type == 2) {
|
||||
} elseif ($campagne->camp_type->equals(CampaignTypes::murss())) {
|
||||
// ---- POUR LES MURS SANS SELECTION
|
||||
$nbCoupon = 0;
|
||||
$cps = $campagne->coupons()->get();
|
||||
|
|
@ -266,7 +213,7 @@ class AjaxController extends Controller
|
|||
$stat->save();
|
||||
}//end if
|
||||
}//end foreach
|
||||
} elseif ($campagne->camp_type == 3) {
|
||||
} elseif ($campagne->camp_type->equals(CampaignTypes::paniers())) {
|
||||
// ---- POUR LES PANIERS AVEC SELECTION
|
||||
if (!isset($couponsToPrint)) {
|
||||
die();
|
||||
|
|
@ -339,12 +286,12 @@ class AjaxController extends Controller
|
|||
$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)) {
|
||||
die();
|
||||
}
|
||||
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')) {
|
||||
$panier = $request->session()->get('panier');
|
||||
} else {
|
||||
|
|
@ -353,289 +300,4 @@ class AjaxController extends Controller
|
|||
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));
|
||||
}//end if
|
||||
}
|
||||
|
||||
// ---- 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;
|
||||
}//end if
|
||||
return json_encode($url);
|
||||
}//end if
|
||||
}
|
||||
|
||||
// ---- 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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\v1;
|
|||
|
||||
use App\Campagne;
|
||||
use App\Coupon;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Coupons\PrintRequest;
|
||||
use App\Http\Resources\StatusResource;
|
||||
|
|
@ -58,7 +59,7 @@ class CouponsController extends Controller
|
|||
// TODO : Vérifier si les coupons sont dans la campagne
|
||||
// TODO : Logs
|
||||
$coupons = [];
|
||||
if ($campagne->camp_type == 0) {
|
||||
if ($campagne->camp_type->equals(CampaignTypes::mur())) {
|
||||
// ---- POUR LES MURS
|
||||
foreach ($couponsToPrint as $key => $coupon_code) {
|
||||
$cp = Coupon::where(['coupon_code' => $coupon_code])->first();
|
||||
|
|
|
|||
|
|
@ -4,20 +4,25 @@ namespace App\Http\Controllers\Api\v1;
|
|||
|
||||
use App\Calendrier;
|
||||
use App\Campagne;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Http\Requests\Customers\StoreRequest;
|
||||
use App\Http\Resources\CustomersResource;
|
||||
use App\Http\Resources\StatusResource;
|
||||
use App\Models\Customers;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Customers\BasketRequest;
|
||||
use App\Http\Requests\Customers\MurRequest;
|
||||
use App\Http\Requests\Customers\PrintBasketRequest;
|
||||
use App\Http\Resources\CouponsResource;
|
||||
use App\Traits\CouponTrait;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Request;
|
||||
use LDC\LDCCRM\CrmApiV2;
|
||||
|
||||
class CustomerController extends Controller
|
||||
{
|
||||
use CouponTrait;
|
||||
use GenerateBR;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
|
|
@ -107,12 +112,22 @@ class CustomerController extends Controller
|
|||
return new StatusResource(['status' => 'KO', 'code' => '501', 'message' => 'Not Implemented']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Recupere le contenu d'un mur pour une campagne et un user
|
||||
* @param MurRequest $request
|
||||
* @return StatusResource
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function mur(MurRequest $request)
|
||||
{
|
||||
$datas = $request->validated();
|
||||
|
||||
$customer = Customers::where('hashcode', $datas['hashcode'])->first();
|
||||
$campagne = Campagne::find($datas['refcamp']);
|
||||
|
||||
if (!$campagne->camp_type->equals(CampaignTypes::mur())) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign is not mur.']);
|
||||
}
|
||||
if ($campagne->camp_published === 0) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']);
|
||||
}
|
||||
|
|
@ -158,4 +173,140 @@ class CustomerController extends Controller
|
|||
'coupons' => CouponsResource::collection($coupons)
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Recupere le contenu d'un panier pour une campagne et un user
|
||||
* @param BasketRequest $request
|
||||
* @return StatusResource
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function basket(BasketRequest $request)
|
||||
{
|
||||
$montantDispo = 0;
|
||||
$montantTotal = 0;
|
||||
$nbCoupons = 0;
|
||||
$couponTotal = 0;
|
||||
$coupons = [];
|
||||
|
||||
$datas = $request->validated();
|
||||
|
||||
$customer = Customers::where('hashcode', $datas['hashcode'])->first();
|
||||
$campagne = Campagne::find($datas['refcamp']);
|
||||
|
||||
if (!$campagne->camp_type->equals(CampaignTypes::panier())) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign is not basket.']);
|
||||
}
|
||||
if ($campagne->camp_published === 0) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']);
|
||||
}
|
||||
$basket = $customer->baskets()->where('campagne_id', $campagne->camp_id)->first();
|
||||
if (is_null($basket)) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Basket not found.']);
|
||||
}
|
||||
|
||||
foreach ($basket->contents as $content)
|
||||
{
|
||||
$published = true;
|
||||
$nbCoupons += $content->quantity;
|
||||
$couponTotal += $content->printed;
|
||||
$montantTotal += ($content->coupon->coupon_value * $content->printed);
|
||||
$coupon = $content->coupon()->whereRaw("coupon_published = 1 AND (coupon_mindatediffusion IS NULL OR coupon_mindatediffusion <= NOW()) AND (coupon_maxdatediffusion IS NULL OR coupon_maxdatediffusion >= NOW()) AND (coupon_maxdatevalidity IS NULL OR coupon_maxdatevalidity >= NOW())")->first();
|
||||
if (!is_null($coupon))
|
||||
{
|
||||
// ---- Contrôle des calendriers de diffusion
|
||||
$calendars = Calendrier::where(['calendrier_couponId' => $coupon->coupon_id])->get();
|
||||
if (!$calendars->isEmpty()) {
|
||||
$published = false;
|
||||
foreach ($calendars as $calendar) {
|
||||
if (strtotime(date('Y-m-d H:i:s')) > strtotime($calendar->calendrier_startdate) && strtotime(date('Y-m-d H:i:s')) < strtotime($calendar->calendrier_enddate)) {
|
||||
$published = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($published){
|
||||
$montantDispo += ($coupon->coupon_value * $content->quantity);
|
||||
$montantTotal += ($coupon->coupon_value * $content->quantity);
|
||||
$couponTotal += $content->quantity;
|
||||
$coupons = array_merge($coupons, [
|
||||
'quantity' => $content->quantity,
|
||||
'coupon' => new CouponsResource($coupon)
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new StatusResource([
|
||||
'status' => "OK",
|
||||
'name' => $campagne->camp_name,
|
||||
'limited_printing' => $campagne->camp_limitedPrinting,
|
||||
'available_coupon' => $nbCoupons,
|
||||
'available_amount' => $montantDispo,
|
||||
'total_coupon' => $couponTotal,
|
||||
'total_amount' => $montantTotal,
|
||||
'coupons' => $coupons
|
||||
]);
|
||||
}
|
||||
|
||||
public function printBasket(PrintBasketRequest $request)
|
||||
{
|
||||
$datas = $request->validated();
|
||||
|
||||
$customer = Customers::where('hashcode', $datas['hashcode'])->first();
|
||||
$campagne = Campagne::find($datas['refcamp']);
|
||||
|
||||
if (!$campagne->camp_type->equals(CampaignTypes::panier())) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign is not basket.']);
|
||||
}
|
||||
if ($campagne->camp_published === 0) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']);
|
||||
}
|
||||
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]);
|
||||
}
|
||||
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]);
|
||||
}
|
||||
$basket = $customer->baskets()->where('campagne_id', $campagne->camp_id)->first();
|
||||
if (is_null($basket)) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Basket not found.']);
|
||||
}
|
||||
$crm = new CrmApiV2(config('crm.CRM_ENDPOINT'), $campagne->site->crm_token, $campagne->site->crm_password);
|
||||
try {
|
||||
/**
|
||||
* @var \LDC\LDCCRM\Models\Customer
|
||||
*/
|
||||
$crmInfos = $crm->getCustomer($customer->hashcode);
|
||||
} catch (\Exception $e) {
|
||||
Log::critical($e->getMessage());
|
||||
return new StatusResource(['status' => 'KO', 'code' => 422, 'message' => 'Customer not found.']);
|
||||
}
|
||||
if (is_null($crmInfos)) {
|
||||
return new StatusResource(['status' => 'KO', 'code' => 422, 'message' => 'Customer not found.']);
|
||||
}
|
||||
|
||||
foreach ($basket->contents as $content)
|
||||
{
|
||||
$published = true;
|
||||
$coupon = $content->coupon()->whereRaw("coupon_published = 1 AND (coupon_mindatediffusion IS NULL OR coupon_mindatediffusion <= NOW()) AND (coupon_maxdatediffusion IS NULL OR coupon_maxdatediffusion >= NOW()) AND (coupon_maxdatevalidity IS NULL OR coupon_maxdatevalidity >= NOW())")->first();
|
||||
$b64img = $this->printCoupon($coupon, $customer, $crmInfos);
|
||||
if (!is_null($coupon))
|
||||
{
|
||||
// ---- Contrôle des calendriers de diffusion
|
||||
$calendars = Calendrier::where(['calendrier_couponId' => $coupon->coupon_id])->get();
|
||||
if (!$calendars->isEmpty()) {
|
||||
$published = false;
|
||||
foreach ($calendars as $calendar) {
|
||||
if (strtotime(date('Y-m-d H:i:s')) > strtotime($calendar->calendrier_startdate) && strtotime(date('Y-m-d H:i:s')) < strtotime($calendar->calendrier_enddate)) {
|
||||
$published = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($published){
|
||||
// TODO : Print coupon
|
||||
$b64img = $this->printCoupon($coupon, $customer, $crmInfos);
|
||||
dd($b64img);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\v1;
|
|||
|
||||
use App\Calendrier;
|
||||
use App\Campagne;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Murs\MursShowRequest;
|
||||
use App\Http\Resources\CouponsResource;
|
||||
|
|
@ -22,7 +23,7 @@ class MurController extends Controller
|
|||
if ($campagne->camp_published === 0) {
|
||||
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.']);
|
||||
}
|
||||
|
||||
|
|
|
|||
22
app/Http/Controllers/BrandChangeController.php
Normal file
22
app/Http/Controllers/BrandChangeController.php
Normal 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();
|
||||
}
|
||||
}
|
||||
|
|
@ -6,17 +6,25 @@ use App\Campagne;
|
|||
use App\Site;
|
||||
use App\Coupon;
|
||||
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\RemoveNotifCampaign;
|
||||
use App\Http\Requests\Campaign\ShowDemoCampaign;
|
||||
use App\Http\Requests\Campaign\StoreCampaign;
|
||||
use App\Http\Requests\Campaign\StoreNotifCampaign;
|
||||
use App\Http\Requests\Campaign\UpdateCampaign;
|
||||
use App\Mur;
|
||||
use App\PanierContent;
|
||||
use App\Notification;
|
||||
use App\Panier;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use App\Traits\CouponTrait;
|
||||
use Response;
|
||||
|
||||
class CampagneController extends Controller
|
||||
{
|
||||
// use BarcodeGenerator;
|
||||
use CouponTrait;
|
||||
|
||||
/**
|
||||
|
|
@ -26,8 +34,11 @@ class CampagneController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
$campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get();
|
||||
return view('campagne.index')->with('campagnes', $campagnes);
|
||||
// TODO : Revoir le passage du site id ?
|
||||
$siteId = session()->get('site')->site_id;
|
||||
|
||||
$campagnes = Campagne::where('camp_siteId', $siteId)->get();
|
||||
return view('campagnes.index')->with('campagnes', $campagnes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -37,38 +48,32 @@ class CampagneController extends Controller
|
|||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('campagne.create');
|
||||
return view('campagnes.create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param StoreCampaign $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
public function store(StoreCampaign $request)
|
||||
{
|
||||
|
||||
$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;
|
||||
|
||||
// TODO : Revoir le passage du 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)) {
|
||||
// File::makeDirectory(public_path('/landings/' . $campagne->camp_id));
|
||||
if ($campagne->camp_type == 0) {
|
||||
if ($campagne->camp_type->equals(CampaignTypes::mur())) {
|
||||
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));
|
||||
} 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));
|
||||
} 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));
|
||||
}
|
||||
}
|
||||
|
|
@ -84,45 +89,35 @@ class CampagneController extends Controller
|
|||
*/
|
||||
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();
|
||||
$campid = $campagne->camp_id;
|
||||
$couponsNotLinked = Coupon::whereDoesntHave('campagnes', function ($q) use ($campagne) {
|
||||
$q->where('campagne_id', $campagne->camp_id);
|
||||
})->where('coupon_siteId', $siteId)->where('coupon_published', 1)->get();
|
||||
|
||||
$couponsNotLinked = Coupon::whereDoesntHave('campagnes', function ($q) use ($campid) {
|
||||
$q->where('campagne_id', $campid);
|
||||
})->where('coupon_siteId', session()->get('site')->id)->get();
|
||||
|
||||
return view('campagne.edit', ['campagne' => $campagne, 'coupons' => $couponsNotLinked, 'couponsLinked' => $couponsLinked]);
|
||||
return view('campagnes.edit', ['campagne' => $campagne, 'coupons' => $couponsNotLinked]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param UpdateCampaign $request
|
||||
* @param \App\Campagne $campagne
|
||||
* @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();
|
||||
|
||||
$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();
|
||||
$campagne->fill($request->validated());
|
||||
|
||||
if (!isset($request->camp_limitedPrinting)) {
|
||||
$campagne->camp_limitedPrinting = 0;
|
||||
$campagne->save();
|
||||
}
|
||||
|
||||
if ($campagne->update($request->all())) {
|
||||
session()->flash('update_ok', 'La campagne a bien été modifiée');
|
||||
if ($campagne->save()) {
|
||||
session()->flash('update_ok', __('La campagne a bien été modifiée'));
|
||||
} 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]);
|
||||
|
|
@ -131,45 +126,60 @@ class CampagneController extends Controller
|
|||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param DeleteCampaign $request
|
||||
* @param \App\Campagne $campagne
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy(Campagne $campagne)
|
||||
public function destroy(DeleteCampaign $request, Campagne $campagne)
|
||||
{
|
||||
$campagne->camp_published = 0;
|
||||
$campagne->save();
|
||||
// File::deleteDirectory(public_path('/landings/' . $campagne->camp_id));
|
||||
|
||||
if ($campagne->delete()) {
|
||||
return redirect(route('campagne.index'));
|
||||
} else {
|
||||
session()->flash('delete_nok', 'Erreur lors de la suppression');
|
||||
return view('campagne.edit')->with('campagne', $campagne);
|
||||
return view('campagnes.edit')->with('campagne', $campagne);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Illuminate\Http\Request $request
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function saveNotification(Request $request)
|
||||
// ---- Ajoute des coupons à une campagne
|
||||
public function addCoupons(AddCouponsCampaign $request, Campagne $campaign)
|
||||
{
|
||||
$notification = new Notification();
|
||||
$notification->notif_name = $request->input('notif_name');
|
||||
$notification->notif_email = $request->input('notif_email');
|
||||
$notification->notif_campId = $request->input('notif_campId');
|
||||
$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
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function saveNotification(StoreNotifCampaign $request, Campagne $campaign)
|
||||
{
|
||||
$notification = new Notification();
|
||||
$notification->fill(array_merge($request->validated(), ['notif_campId' => $campaign->camp_id]));
|
||||
$notification->save();
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RemoveNotifCampaign $request
|
||||
* @param \App\Notification $notification
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function deleteNotification($id)
|
||||
public function deleteNotification(RemoveNotifCampaign $request, Notification $notification)
|
||||
{
|
||||
$notification = Notification::find($id);
|
||||
if ($notification->delete()) {
|
||||
return redirect()->back();
|
||||
} else {
|
||||
|
|
@ -178,21 +188,107 @@ class CampagneController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \App\Coupon $coupon
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
// 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();
|
||||
// }
|
||||
// }
|
||||
// ---- Montre les campagnes avec un compte de démo
|
||||
public function showDemo(ShowDemoCampaign $request, Campagne $campaign)
|
||||
{
|
||||
$siteId = $campaign->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 \App\Http\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 \App\Http\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);
|
||||
|
||||
dd($res->original, $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)
|
||||
{
|
||||
|
||||
|
|
@ -203,7 +299,7 @@ class CampagneController extends Controller
|
|||
$refcamp = $request->refcamp;
|
||||
$campagne = Campagne::where(['camp_id' => $refcamp])->first();
|
||||
if (!$campagne) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
|
|
@ -216,7 +312,7 @@ class CampagneController extends Controller
|
|||
$refsite = $request->refsite;
|
||||
$site = Site::where(['site_id' => $refsite])->first();
|
||||
if (!$site) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 102,
|
||||
'Message' => 'Le site n\'existe pas'
|
||||
|
|
@ -227,7 +323,7 @@ class CampagneController extends Controller
|
|||
}
|
||||
|
||||
if ($campagne->camp_siteId != $site->site_id) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 108,
|
||||
'Message' => 'Pas de campagne pour ce site'
|
||||
|
|
@ -235,7 +331,7 @@ class CampagneController extends Controller
|
|||
}
|
||||
|
||||
if ($error) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
|
|
@ -244,16 +340,16 @@ class CampagneController extends Controller
|
|||
|
||||
$enligne = ($campagne->camp_published == 1) ? "oui" : "non";
|
||||
switch ($campagne->camp_type) {
|
||||
case 0:
|
||||
case CampaignTypes::mur():
|
||||
$type = "mur";
|
||||
break;
|
||||
case 1:
|
||||
case CampaignTypes::panier():
|
||||
$type = "panier";
|
||||
break;
|
||||
case 2:
|
||||
case CampaignTypes::murss():
|
||||
$type = "mur sans sélection";
|
||||
break;
|
||||
case 3:
|
||||
case CampaignTypes::paniers():
|
||||
$type = "panier avec sélection";
|
||||
break;
|
||||
}
|
||||
|
|
@ -314,7 +410,7 @@ class CampagneController extends Controller
|
|||
$data['Coupons'][] = $codeTraitement;
|
||||
}//end foreach
|
||||
}//end if
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Détails Campagne' => $data
|
||||
]);
|
||||
|
|
@ -328,7 +424,7 @@ class CampagneController extends Controller
|
|||
$refcamp = $request->refcamp;
|
||||
$campagne = Campagne::where(['camp_id' => $refcamp])->first();
|
||||
if (!$campagne) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
|
|
@ -341,7 +437,7 @@ class CampagneController extends Controller
|
|||
$refsite = $request->refsite;
|
||||
$site = Site::where(['site_id' => $refsite])->first();
|
||||
if (!$site) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 102,
|
||||
'Message' => 'Le site n\'existe pas'
|
||||
|
|
@ -355,7 +451,7 @@ class CampagneController extends Controller
|
|||
$refadherent = $request->refadherent;
|
||||
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
|
||||
if (!$contact) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
|
|
@ -366,7 +462,7 @@ class CampagneController extends Controller
|
|||
}
|
||||
|
||||
if ($error) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
|
|
@ -399,6 +495,6 @@ class CampagneController extends Controller
|
|||
$data['Codes traitement'][] = $codeTraitement;
|
||||
}
|
||||
}
|
||||
return Response::json($data);
|
||||
return response()->json($data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -5,11 +5,21 @@ namespace App\Http\Controllers;
|
|||
use App\Contact;
|
||||
use App\Site;
|
||||
use App\Campagne;
|
||||
use Response;
|
||||
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\Panier;
|
||||
use App\PanierContent;
|
||||
use App\Traits\CouponTrait;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ContactController extends Controller
|
||||
{
|
||||
use CouponTrait;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
|
|
@ -17,46 +27,34 @@ class ContactController extends Controller
|
|||
*/
|
||||
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('contacts', $contacts)->with('search', false);
|
||||
return view('contact.index')->with('search', false);
|
||||
}
|
||||
|
||||
|
||||
public function search_contact(Request $request)
|
||||
public function search_contact(SearchContact $request)
|
||||
{
|
||||
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');
|
||||
session()->put('active_route', 'contact');
|
||||
|
||||
if (isset($name) || isset($firstname) || isset($email) || isset($cp) || isset($ville) || isset($country)) {
|
||||
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id)
|
||||
->searchFirstname($firstname)
|
||||
->searchName($name)
|
||||
->searchEmail($email)
|
||||
->searchCp($cp)
|
||||
->searchVille($ville)
|
||||
->searchCountry($country)
|
||||
->paginate(2, ['*'], 'page', $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();
|
||||
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id)
|
||||
->searchFirstname($request->searchFirstname)
|
||||
->searchName($request->searchName)
|
||||
->searchEmail($request->searchEmail)
|
||||
->searchCp($request->searchCp)
|
||||
->searchVille($request->searchVille)
|
||||
->searchCountry($request->searchCountry)
|
||||
->orderBy('contact_createdate', 'DESC')
|
||||
->paginate(15, ['*'], 'page', $request->page);
|
||||
|
||||
return view('contact.index')->with('contacts', $contacts)->with('search', false);
|
||||
}//end if
|
||||
$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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -72,46 +70,22 @@ class ContactController extends Controller
|
|||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param StoreContact $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
public function store(StoreContact $request)
|
||||
{
|
||||
$validatedData = $request->validate([
|
||||
'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();
|
||||
// TODO : Revoir le passage du site
|
||||
$site = session()->get('site');
|
||||
|
||||
$contact = new Contact();
|
||||
$contact->fill($request->validated());
|
||||
$contact->contact_siteId = $site->site_id;
|
||||
|
||||
$contact->save();
|
||||
|
||||
$contacts = Contact::where('contact_siteId', session()->get('site')->site_id)->orderBy('contact_createdate', 'DESC')->take(10)->get();
|
||||
$campagnes = Campagne::where(['camp_siteId' => $contact->contact_siteId, 'camp_published' => 1])->get();
|
||||
|
||||
return view('contact.edit', ['contact' => $contact, 'created' => true, 'contacts' => $contacts, 'campagnes' => $campagnes]);
|
||||
return redirect()->route('contact.edit', ['contact' => $contact]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
|
|
@ -125,47 +99,26 @@ class ContactController extends Controller
|
|||
return view('contact.edit', ['contact' => $contact, 'campagnes' => $campagnes]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Contact $contact
|
||||
* @param UpdateContact $request
|
||||
* @param \App\Contact $contact
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, Contact $contact)
|
||||
public function update(UpdateContact $request, Contact $contact)
|
||||
{
|
||||
$validatedData = $request->validate([
|
||||
'contact_ref' => 'required',
|
||||
'contact_nom' => 'required',
|
||||
'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');
|
||||
$contact->fill($request->validated());
|
||||
if ($contact->save()) {
|
||||
session()->flash('update_ok', __('La campagne a bien été modifiée'));
|
||||
} 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]);
|
||||
}
|
||||
|
||||
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;
|
||||
// ---- Contrôle des paramètres
|
||||
if (isset($request->refadherent) && $request->refadherent != "") {
|
||||
|
|
@ -215,11 +168,7 @@ class ContactController extends Controller
|
|||
}
|
||||
|
||||
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]);
|
||||
// $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([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
|
|
@ -258,12 +207,7 @@ class ContactController extends Controller
|
|||
$contact->contact_hash = strtoupper(md5(uniqid(time(), true)));
|
||||
}
|
||||
} 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]);
|
||||
// $log->log_refsite = $request->refsite;
|
||||
// $log->log_statut = 'NOK';
|
||||
// $log->log_message = "Le site spécifié n'existe pas";
|
||||
// $log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 102,
|
||||
'Message' => 'Le site spécifié n\'existe pas'
|
||||
|
|
@ -272,21 +216,114 @@ class ContactController extends Controller
|
|||
}//end if
|
||||
|
||||
if ($contact->save()) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'contact' => $contact
|
||||
]);
|
||||
} 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]);
|
||||
// $log->log_refsite = $request->refsite;
|
||||
// $log->log_statut = 'NOK';
|
||||
// $log->log_message = "Une erreur est survenue";
|
||||
// $log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 109,
|
||||
'Message' => 'Une erreur est survenue'
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function loadWidget(LoadWidgetContact $request, Contact $contact)
|
||||
{
|
||||
$camp_id = $request->camp_id;
|
||||
$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 {
|
||||
// ---- 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@ use App\Site;
|
|||
use App\Campagne;
|
||||
use App\Mouvement;
|
||||
use App\Calendrier;
|
||||
use App\Http\Requests\Coupons\StoreCoupons;
|
||||
use App\Http\Requests\Coupons\UpdateCoupons;
|
||||
use App\Traits\GenerateBR;
|
||||
use App\Traits\CouponTrait;
|
||||
use Validator;
|
||||
|
||||
class CouponController extends Controller
|
||||
{
|
||||
|
|
@ -25,23 +26,16 @@ class CouponController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
$campIds = Campagne::where('camp_siteId', session()->get('site')->site_id)
|
||||
->get()
|
||||
->pluck('camp_id')
|
||||
->flatten()
|
||||
->toArray();
|
||||
|
||||
$coupons = Coupon::where('coupon_siteId', session()->get('site')->id)->get();
|
||||
|
||||
// TODO : Revoir le passage du site
|
||||
$site = session()->get('site');
|
||||
$coupons = Coupon::where('coupon_siteId', $site->id)->get();
|
||||
foreach ($coupons as $coupon) {
|
||||
// ---- Calcul de la quantité mise à disposition grace aux fonctions dans CouponTrait.php
|
||||
$coupon->coupon_quantity = $this->getFullQuantity($coupon);
|
||||
// ---- 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, 'camps' => $campIds]);
|
||||
return view('coupon.index', ['coupons' => $coupons]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -51,51 +45,32 @@ class CouponController extends Controller
|
|||
*/
|
||||
public function create()
|
||||
{
|
||||
// TODO : Revoir le passage du site
|
||||
$site = session()->get('site');
|
||||
|
||||
$campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get()
|
||||
->pluck('camp_name', 'camp_id');
|
||||
|
||||
$site = Site::where(['id' => session()->get('site')->id])->first();
|
||||
$site = Site::findOrFail($site->id);
|
||||
return view('coupon.create')->with('campagnes', $campagnes)->with('site', $site);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param StoreCoupons $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
public function store(StoreCoupons $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
|
||||
$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();
|
||||
}
|
||||
|
||||
|
||||
$site_id = $request->site_id;
|
||||
|
||||
$datas = $this->saveImg($request);
|
||||
|
||||
$coupon = new Coupon();
|
||||
$coupon->fill($datas);
|
||||
|
||||
$coupon = new Coupon();
|
||||
$coupon->coupon_code = $datas['coupon_code'];
|
||||
$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'])) {
|
||||
$coupon->coupon_thumbnail1 = $datas['coupon_thumbnail1'];
|
||||
}
|
||||
|
|
@ -111,46 +86,21 @@ class CouponController extends Controller
|
|||
if (isset($datas['coupon_image'])) {
|
||||
$coupon->coupon_image = $datas['coupon_image'];
|
||||
}
|
||||
if (isset($datas['coupon_norme'])) {
|
||||
$coupon->coupon_norme = $datas['coupon_norme'];
|
||||
$coupon->coupon_gs1code = $datas['coupon_gs1code'];
|
||||
}
|
||||
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 {
|
||||
|
||||
//TODO : Voir si on peut mettre le set a 0 dans la request
|
||||
if (!isset($datas['coupon_published'])) {
|
||||
$coupon->coupon_published = 0;
|
||||
}
|
||||
if (isset($datas['coupon_legal_mentions_splitted'])) {
|
||||
$coupon->coupon_legal_mentions_splitted = $datas['coupon_legal_mentions_splitted'];
|
||||
} else {
|
||||
if (!isset($datas['coupon_legal_mentions_splitted'])) {
|
||||
$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'];
|
||||
$coupon->coupon_legal_mentions = $datas['coupon_legal_mentions'];
|
||||
if (isset($datas['coupon_decoration_image'])) {
|
||||
$coupon->coupon_decoration_image = $datas['coupon_decoration_image'];
|
||||
}
|
||||
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'];
|
||||
$br_path = $this->generateBase($request, $coupon);
|
||||
$coupon->coupon_image = $br_path;
|
||||
$coupon->coupon_siteId = $site_id;
|
||||
$coupon->save();
|
||||
|
||||
$site = Site::find($request->input('site_id'));
|
||||
$site = Site::findOrFail($site_id);
|
||||
|
||||
$site->coupons()->save($coupon);
|
||||
|
||||
|
|
@ -160,15 +110,6 @@ class CouponController extends Controller
|
|||
$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'])) {
|
||||
foreach ($datas['startdate'] as $key => $value) {
|
||||
$calendar = new Calendrier();
|
||||
|
|
@ -178,22 +119,7 @@ class CouponController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
$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]);
|
||||
return redirect()->route('coupon.edit', ['coupon' => $coupon]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -210,33 +136,13 @@ class CouponController extends Controller
|
|||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param UpdateCoupons $request
|
||||
* @param \App\Coupon $coupon
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, Coupon $coupon)
|
||||
public function update(UpdateCoupons $request, Coupon $coupon)
|
||||
{
|
||||
|
||||
$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();
|
||||
}
|
||||
|
||||
//TODO : Voir si on peut mettre le set a 0 dans la request
|
||||
if (!isset($request->coupon_enablelimitquantity)) {
|
||||
$coupon->coupon_enablelimitquantity = 0;
|
||||
}
|
||||
|
|
@ -252,11 +158,17 @@ class CouponController extends Controller
|
|||
if (!isset($request->coupon_legal_mentions_splitted)) {
|
||||
$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);
|
||||
$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'])) {
|
||||
foreach ($datas['mouvementNbre'] as $key => $value) {
|
||||
$mouvement = new Mouvement();
|
||||
|
|
@ -265,6 +177,8 @@ class CouponController extends Controller
|
|||
$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'])) {
|
||||
$coupon->calendriers()->delete();
|
||||
foreach ($datas['startdate'] as $key => $value) {
|
||||
|
|
@ -295,10 +209,10 @@ class CouponController extends Controller
|
|||
$coupon->coupon_published = 0;
|
||||
$coupon->save();
|
||||
if ($coupon->delete()) {
|
||||
return redirect(route('coupon.index'));
|
||||
return redirect()->route('coupon.index');
|
||||
} else {
|
||||
session()->flash('delete_nok', 'Erreur lors de la suppression');
|
||||
return view('coupon.edit')->with('coupon', $coupon);
|
||||
return back();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -311,8 +225,6 @@ class CouponController extends Controller
|
|||
{
|
||||
$datas = collect($request->all());
|
||||
|
||||
$imgs = collect(array());
|
||||
|
||||
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 (isset($item)) {
|
||||
|
|
|
|||
33
app/Http/Controllers/CustomersController.php
Normal file
33
app/Http/Controllers/CustomersController.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Campagne;
|
||||
use App\Http\Requests\Customers\SearchCustomers;
|
||||
use App\Models\Customers;
|
||||
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'));
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ use App\Traits\CouponTrait;
|
|||
use App\Traits\GraphTrait;
|
||||
use App\Site;
|
||||
use App\Coupon;
|
||||
use App\Http\Requests\Export\PDFExport;
|
||||
use Datetime;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
|
@ -34,11 +35,12 @@ class ExportController extends Controller
|
|||
}
|
||||
|
||||
// ------ AJAX Export
|
||||
public function export_coupons(Request $request)
|
||||
public function exportCoupons(PDFExport $request)
|
||||
{
|
||||
$ids = $request->input('ids');
|
||||
$startdate = date('Y-m-d', strtotime($request->input('startdate')));
|
||||
$enddate = date('Y-m-d', strtotime($request->input('enddate')));
|
||||
$ids = $request->ids;
|
||||
$startdate = $request->startdate;
|
||||
$enddate = $request->enddate;
|
||||
|
||||
$coupons = Coupon::find($ids);
|
||||
|
||||
$labels = $this->getLabelsForStats($startdate, $enddate);
|
||||
|
|
@ -47,8 +49,7 @@ class ExportController extends Controller
|
|||
|
||||
foreach ($coupons as $coupon) {
|
||||
$cpName = str_replace(' ', '', $coupon->coupon_name);
|
||||
$now = strtotime(now());
|
||||
$full_path = 'export/' . $cpName . '_' . $now . '.pdf';
|
||||
$full_path = 'export/' . $cpName . '_' . date('d_m_Y') . '.pdf';
|
||||
$dataCoupon = $this->getDataForCouponAllCamp($labels, $coupon);
|
||||
$coupon->couponQuantity = $this->getFullQuantity($coupon);
|
||||
$coupon->couponFullPrinted = $this->getUsedQuantity($coupon);
|
||||
|
|
@ -71,12 +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->setShadow(true, array("X" => 1,"Y" => 1,"R" => 0,"G" => 0,"B" => 0,"Alpha" => 10));
|
||||
$myPicture->drawLineChart(array("DisplayColor" => DISPLAY_AUTO));
|
||||
$LabelSettings = array("NoTitle" => true);
|
||||
$myPicture->Render('export/temp.png');
|
||||
|
||||
$view = view('export.template')->with(['src' => 'export/temp.png', 'coupon' => $coupon, 'startdate' => $startdate, 'enddate' => $enddate])->render();
|
||||
|
||||
// var_dump($view);
|
||||
$pdf->loadHTML($view);
|
||||
$pdf->save($full_path);
|
||||
array_push($paths, $full_path);
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Requests\Users\StoreUsers;
|
||||
use App\Http\Requests\Users\UpdateUsers;
|
||||
use App\Site;
|
||||
use App\User;
|
||||
use App\Log;
|
||||
|
|
@ -15,15 +17,8 @@ class MaintenanceController extends Controller
|
|||
{
|
||||
$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'));
|
||||
for ($i = 1; $i < 12; $i++) {
|
||||
for ($i = 1; $i < 6; $i++) {
|
||||
$datebefore = date("m/Y", strtotime("-" . $i . " months"));
|
||||
array_push($dates, $datebefore);
|
||||
}
|
||||
|
|
@ -33,14 +28,6 @@ class MaintenanceController extends Controller
|
|||
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]);
|
||||
}
|
||||
|
||||
|
|
@ -50,38 +37,17 @@ class MaintenanceController extends Controller
|
|||
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->name = $nom;
|
||||
$user->email = $email;
|
||||
$user->password = Hash::make($password);
|
||||
$user->roles = $role;
|
||||
$user = new User();
|
||||
$user->fill($request->validated());
|
||||
$user->password = Hash::make($request->password);
|
||||
$user->save();
|
||||
|
||||
// MAJ des sites liés
|
||||
if (isset($request->site)) {
|
||||
$siteids = $request->site;
|
||||
$sites = Site::whereIn('site_id', $siteids)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($sites);
|
||||
}
|
||||
$sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($sites);
|
||||
|
||||
|
||||
$sites = Site::all();
|
||||
$usersites = $user->sites()->get()->pluck('site_id')->toArray();
|
||||
return view('user.edit')->with(['user' => $user, 'sites' => $sites, 'usersites' => $usersites]);
|
||||
return redirect()->route('maintenance.user.edit', ['user' => $user]);
|
||||
}
|
||||
|
||||
public function useredit(User $user)
|
||||
|
|
@ -91,55 +57,32 @@ class MaintenanceController extends Controller
|
|||
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
|
||||
$user->name = $request->name;
|
||||
$user->email = $request->email;
|
||||
$user->roles = $request->roles;
|
||||
//MAJ du User
|
||||
$user->fill($request->validated());
|
||||
$user->save();
|
||||
|
||||
// MAJ des sites liés
|
||||
$siteids = $request->site;
|
||||
$sites = Site::whereIn('site_id', $siteids)->get()->pluck('id')->toArray();
|
||||
//MAJ des sites liés
|
||||
$sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($sites);
|
||||
|
||||
$marques = Auth::user()->sites;
|
||||
$marques = Auth::user()->sites;
|
||||
$submarques = $marques->map(function ($marque) {
|
||||
return $marque->only(['id', 'site_nom', 'site_id', 'site_logo']);
|
||||
});
|
||||
|
||||
session()->put('marques', $submarques);
|
||||
return redirect()->route('maintenance.show');
|
||||
}
|
||||
|
||||
$users = User::all();
|
||||
|
||||
foreach ($users as &$user) {
|
||||
$sites = $user->sites()->get();
|
||||
$user->linkedSites = "";
|
||||
foreach ($sites as $site) {
|
||||
$user->linkedSites .= '<p>' . $site->site_nom . '</p>';
|
||||
}
|
||||
public function userdestroy(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);
|
||||
}
|
||||
$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]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -9,7 +9,6 @@ use App\Mur;
|
|||
use App\Log;
|
||||
use App\Traits\CouponTrait;
|
||||
use App\Traits\ThanksTrait;
|
||||
use Response;
|
||||
|
||||
class MurController extends Controller
|
||||
{
|
||||
|
|
@ -28,7 +27,7 @@ class MurController extends Controller
|
|||
if (!isset($datas['refsite'])) {
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -123,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->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
|
|
@ -138,7 +137,7 @@ class MurController extends Controller
|
|||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "La campagne n'existe pas";
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
|
|
@ -156,7 +155,7 @@ class MurController extends Controller
|
|||
$log->log_message = "Le contact n'existe pas";
|
||||
$log->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
|
|
@ -173,7 +172,7 @@ class MurController extends Controller
|
|||
$log->log_statut = 'OK';
|
||||
$log->log_message = $mur . " enregistrements ont été mis à jour.";
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Message' => $mur . " enregistrements ont été mis à jour."
|
||||
]);
|
||||
|
|
@ -184,7 +183,7 @@ class MurController extends Controller
|
|||
$log->log_statut = 'OK';
|
||||
$log->log_message = 'Aucun contrôle à effacer';
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 110,
|
||||
'Message' => 'Aucun contrôle à effacer'
|
||||
|
|
@ -201,7 +200,7 @@ class MurController extends Controller
|
|||
if (isset($request->refcamp) && $request->refcamp != "") {
|
||||
$refcamp = $request->refcamp;
|
||||
} else {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
|
|
@ -211,7 +210,7 @@ class MurController extends Controller
|
|||
// ------ Recuperation de la campagne
|
||||
$camp = Campagne::where(['camp_id' => $refcamp])->first();
|
||||
if (!$camp) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
|
|
@ -221,7 +220,7 @@ class MurController extends Controller
|
|||
// ------ Récupération des coupons de la campagne
|
||||
$coupons = $camp->coupons()->where(['coupon_published' => 1])->get();
|
||||
if (count($coupons) == 0) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 105,
|
||||
'Message' => 'La campagne est vide'
|
||||
|
|
@ -237,7 +236,7 @@ class MurController extends Controller
|
|||
$montantTotal = number_format($montantTotal, 2, ",", " ");
|
||||
$montantTotal = str_pad($montantTotal, 6, "0", STR_PAD_LEFT);
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Message' => $montantTotal
|
||||
]);
|
||||
|
|
@ -265,7 +264,7 @@ class MurController extends Controller
|
|||
}
|
||||
|
||||
if ($error) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
|
|
@ -275,7 +274,7 @@ class MurController extends Controller
|
|||
$campagne = Campagne::where(['camp_id' => $refcamp])->where('camp_type', 'IN', array(0,2))->first();
|
||||
|
||||
if (!$campagne) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
|
|
@ -284,7 +283,7 @@ class MurController extends Controller
|
|||
|
||||
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
|
||||
if (!$contact) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
|
|
@ -308,7 +307,7 @@ class MurController extends Controller
|
|||
$montantDispo = number_format($montantDispo, 2, ",", " ");
|
||||
$montantDispo = str_pad($montantDispo, 6, "0", STR_PAD_LEFT);
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Message' => $montantDispo
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@ use App\Panier;
|
|||
use App\Campagne;
|
||||
use App\Coupon;
|
||||
use App\Contact;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Site;
|
||||
use App\Log;
|
||||
use App\PanierContent;
|
||||
use App\Traits\CouponTrait;
|
||||
use App\Traits\ThanksTrait;
|
||||
use Response;
|
||||
|
||||
class PanierController extends Controller
|
||||
{
|
||||
|
|
@ -40,7 +40,7 @@ class PanierController extends Controller
|
|||
}
|
||||
session()->put('campagne', $campagne);
|
||||
|
||||
if ($campagne->camp_type == 1) {
|
||||
if ($campagne->camp_type->equals(CampaignTypes::panier())) {
|
||||
$coupons = $this->getCouponsPublished($campagne);
|
||||
} else {
|
||||
$panierContents = $this->getPanierContentPublished($panier);
|
||||
|
|
@ -97,7 +97,7 @@ class PanierController extends Controller
|
|||
$log->log_message = "Le panier n'existe pas";
|
||||
$log->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 106,
|
||||
'Message' => 'Le panier n\'existe pas'
|
||||
|
|
@ -115,7 +115,7 @@ class PanierController extends Controller
|
|||
$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([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'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_message = "Des paramètres de la requête sont mal renseignés ou non présents";
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'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) {
|
||||
array_push($panierCoupons, ['cp_code' => $code, 'qty' => $qty]);
|
||||
}
|
||||
if (sizeof($coupons) == 0) {
|
||||
if (count($coupons) == 0) {
|
||||
die();
|
||||
}
|
||||
} else {
|
||||
|
|
@ -156,7 +156,7 @@ class PanierController extends Controller
|
|||
$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([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'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->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 110,
|
||||
'Message' => 'Le coupon ne correspond pas aux coupons liés a la campagne'
|
||||
|
|
@ -254,12 +254,12 @@ class PanierController extends Controller
|
|||
|
||||
$response->panierContent = $panCont;
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Panier' => $response
|
||||
]);
|
||||
} else {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Panier' => $panier
|
||||
]);
|
||||
|
|
@ -269,7 +269,7 @@ class PanierController extends Controller
|
|||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "Le panier n'existe pas";
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 106,
|
||||
'Message' => 'Le panier n\'existe pas'
|
||||
|
|
@ -280,7 +280,7 @@ class PanierController extends Controller
|
|||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "Le panier n'existe pas";
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 106,
|
||||
'Message' => 'Le panier n\'existe pas'
|
||||
|
|
@ -292,13 +292,13 @@ class PanierController extends Controller
|
|||
if (isset($request->refcamp) && $request->refcamp != "") {
|
||||
$refcamp = $request->refcamp;
|
||||
$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 == 0 || ($campagne->camp_type->value != 1 && $campagne->camp_type->value != 3)) {
|
||||
$log->log_params = json_encode(['refcamp' => $refcamp]);
|
||||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "La campagne n'existe pas ou n'est pas un panier";
|
||||
$log->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'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 != "") {
|
||||
$refsite = $request->refsite;
|
||||
if ($refsite != $campagne->camp_siteId) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'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();
|
||||
}
|
||||
} 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->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'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->save();
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 102,
|
||||
'Message' => 'Le site spécifié n\'existe pas'
|
||||
|
|
@ -454,7 +454,7 @@ class PanierController extends Controller
|
|||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "Une erreur est survenue";
|
||||
$log->save();
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 109,
|
||||
'Message' => 'Une erreur est survenue'
|
||||
|
|
@ -551,12 +551,12 @@ class PanierController extends Controller
|
|||
|
||||
$response->panierContent = $panCont;
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Panier' => $response
|
||||
]);
|
||||
} else {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Panier' => $panier
|
||||
]);
|
||||
|
|
@ -570,7 +570,7 @@ class PanierController extends Controller
|
|||
if (isset($request->basketid) && $request->basketid != "") {
|
||||
$basketid = $request->basketid;
|
||||
} else {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 106,
|
||||
'Message' => 'Le panier n\'existe pas'
|
||||
|
|
@ -579,7 +579,7 @@ class PanierController extends Controller
|
|||
|
||||
$panier = Panier::where('panier_ref', $basketid)->first();
|
||||
if (!$panier) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 106,
|
||||
'Message' => 'Le panier n\'existe pas'
|
||||
|
|
@ -594,7 +594,7 @@ class PanierController extends Controller
|
|||
|
||||
$contact = $panier->contact()->where(['contact_id' => $panier->panier_contactId])->first();
|
||||
if (!$contact) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
|
|
@ -603,7 +603,7 @@ class PanierController extends Controller
|
|||
|
||||
$campagne = $panier->campagne()->where(['camp_id' => $panier->panier_campId])->first();
|
||||
if (!$campagne) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
|
|
@ -612,7 +612,7 @@ class PanierController extends Controller
|
|||
|
||||
$site = $campagne->site()->first();
|
||||
if ($site === null) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 102,
|
||||
'Message' => 'Le site n\'existe pas'
|
||||
|
|
@ -621,7 +621,7 @@ class PanierController extends Controller
|
|||
|
||||
$allPanierContent = $panier->panierContents()->get();
|
||||
if ($allPanierContent->count() == 0) {
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 108,
|
||||
'Message' => 'Le panier n\'a pas de coupons liés'
|
||||
|
|
@ -649,7 +649,7 @@ class PanierController extends Controller
|
|||
|
||||
$response->panierContent = $panCont;
|
||||
|
||||
return Response::json([
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Informations Panier' => $response
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -25,20 +25,6 @@ class StatistiqueController extends Controller
|
|||
if (isset($site->campagnes)) {
|
||||
$campagnes = $site->campagnes;
|
||||
foreach ($campagnes as $campagne) {
|
||||
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;
|
||||
foreach ($coupons as $coupon) {
|
||||
$coupon->quantity = $this->getFullQuantity($coupon);
|
||||
|
|
@ -62,20 +48,6 @@ class StatistiqueController extends Controller
|
|||
{
|
||||
$count = 0;
|
||||
$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;
|
||||
foreach ($coupons as $coupon) {
|
||||
|
|
@ -92,7 +64,7 @@ class StatistiqueController extends Controller
|
|||
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;
|
||||
$startdate = $request->startdate;
|
||||
|
|
|
|||
32
app/Http/Requests/BrandChange/InvokeBrandChange.php
Normal file
32
app/Http/Requests/BrandChange/InvokeBrandChange.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
32
app/Http/Requests/Campaign/AddCouponsCampaign.php
Normal file
32
app/Http/Requests/Campaign/AddCouponsCampaign.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
32
app/Http/Requests/Campaign/DeleteCampaign.php
Normal file
32
app/Http/Requests/Campaign/DeleteCampaign.php
Normal 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 [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
32
app/Http/Requests/Campaign/RemoveCouponCampaign.php
Normal file
32
app/Http/Requests/Campaign/RemoveCouponCampaign.php
Normal 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 [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
32
app/Http/Requests/Campaign/RemoveNotifCampaign.php
Normal file
32
app/Http/Requests/Campaign/RemoveNotifCampaign.php
Normal 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 [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
32
app/Http/Requests/Campaign/ShowDemoCampaign.php
Normal file
32
app/Http/Requests/Campaign/ShowDemoCampaign.php
Normal 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 [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
35
app/Http/Requests/Campaign/StoreCampaign.php
Normal file
35
app/Http/Requests/Campaign/StoreCampaign.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
39
app/Http/Requests/Campaign/StoreNotifCampaign.php
Normal file
39
app/Http/Requests/Campaign/StoreNotifCampaign.php
Normal 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);
|
||||
}),
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
35
app/Http/Requests/Campaign/UpdateCampaign.php
Normal file
35
app/Http/Requests/Campaign/UpdateCampaign.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
32
app/Http/Requests/Contact/LoadWidgetContact.php
Normal file
32
app/Http/Requests/Contact/LoadWidgetContact.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
38
app/Http/Requests/Contact/SearchContact.php
Normal file
38
app/Http/Requests/Contact/SearchContact.php
Normal 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',
|
||||
];
|
||||
}
|
||||
}
|
||||
38
app/Http/Requests/Contact/StoreContact.php
Normal file
38
app/Http/Requests/Contact/StoreContact.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
42
app/Http/Requests/Contact/UpdateContact.php
Normal file
42
app/Http/Requests/Contact/UpdateContact.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
75
app/Http/Requests/Coupons/StoreCoupons.php
Normal file
75
app/Http/Requests/Coupons/StoreCoupons.php
Normal 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);
|
||||
});
|
||||
}
|
||||
}
|
||||
82
app/Http/Requests/Coupons/UpdateCoupons.php
Normal file
82
app/Http/Requests/Coupons/UpdateCoupons.php
Normal 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);
|
||||
});
|
||||
}
|
||||
}
|
||||
45
app/Http/Requests/Customers/BasketRequest.php
Normal file
45
app/Http/Requests/Customers/BasketRequest.php
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Customers;
|
||||
|
||||
use App\Http\Resources\StatusResource;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
|
||||
class BasketRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'refcamp' => 'string|exists:campagne,camp_id|required',
|
||||
'hashcode' => 'string|exists:customers,hashcode|required'
|
||||
];
|
||||
}
|
||||
|
||||
protected function failedValidation(Validator $validator)
|
||||
{
|
||||
if ($this->wantsJson()) {
|
||||
throw new HttpResponseException(response()->json(new StatusResource([
|
||||
'status' => 'KO',
|
||||
'code' => 422,
|
||||
'message' => $validator->errors()->messages()
|
||||
]), 422));
|
||||
}
|
||||
}
|
||||
}
|
||||
52
app/Http/Requests/Customers/PrintBasketRequest.php
Normal file
52
app/Http/Requests/Customers/PrintBasketRequest.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Customers;
|
||||
|
||||
use App\Http\Resources\StatusResource;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
class PrintBasketRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'refcamp' => 'string|exists:campagne,camp_id|required',
|
||||
'hashcode' => 'string|exists:customers,hashcode|required'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* failedValidation
|
||||
* @param Validator $validator
|
||||
* @return void
|
||||
* @throws BindingResolutionException
|
||||
* @throws HttpResponseException
|
||||
*/
|
||||
protected function failedValidation(Validator $validator)
|
||||
{
|
||||
if ($this->wantsJson()) {
|
||||
throw new HttpResponseException(response()->json(new StatusResource([
|
||||
'status' => 'KO',
|
||||
'code' => 422,
|
||||
'message' => $validator->errors()->messages()
|
||||
]), 422));
|
||||
}
|
||||
}
|
||||
}
|
||||
33
app/Http/Requests/Customers/SearchCustomers.php
Normal file
33
app/Http/Requests/Customers/SearchCustomers.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
34
app/Http/Requests/Export/PDFExport.php
Normal file
34
app/Http/Requests/Export/PDFExport.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
36
app/Http/Requests/Users/StoreUsers.php
Normal file
36
app/Http/Requests/Users/StoreUsers.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
39
app/Http/Requests/Users/UpdateUsers.php
Normal file
39
app/Http/Requests/Users/UpdateUsers.php
Normal 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'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -14,7 +14,7 @@ class CouponsResource extends JsonResource
|
|||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
$coupon = [
|
||||
'code' => $this->coupon_code,
|
||||
'name' => $this->coupon_name,
|
||||
'value' => $this->coupon_value,
|
||||
|
|
@ -25,6 +25,13 @@ class CouponsResource extends JsonResource
|
|||
'mobile_image_unavailable' => $this->returnUrl($this->coupon_thumbnail4),
|
||||
'validity_text' => $this->coupon_validity_text
|
||||
];
|
||||
|
||||
if (isset($this->isUsed)){
|
||||
return array_merge($coupon, [
|
||||
'used' => $this->isUsed,
|
||||
]);
|
||||
}
|
||||
return $coupon;
|
||||
}
|
||||
|
||||
private function returnUrl($assets)
|
||||
|
|
|
|||
41
app/Models/Basket.php
Normal file
41
app/Models/Basket.php
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Campagne;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
class Basket extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
* Customer model relation
|
||||
* @return BelongsTo
|
||||
*/
|
||||
public function customer()
|
||||
{
|
||||
return $this->belongsTo(Customers::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Campagne model relation
|
||||
* @return BelongsTo
|
||||
*/
|
||||
public function campagne()
|
||||
{
|
||||
return $this->belongsTo(Campagne::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* BasketContent model relation
|
||||
* @return HasMany
|
||||
*/
|
||||
public function contents()
|
||||
{
|
||||
return $this->hasMany(BasketContent::class);
|
||||
}
|
||||
}
|
||||
31
app/Models/BasketContent.php
Normal file
31
app/Models/BasketContent.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Coupon;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
|
||||
class BasketContent extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
* Basket model relation
|
||||
* @return HasOne
|
||||
*/
|
||||
public function basket()
|
||||
{
|
||||
return $this->hasOne(Basket::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Coupon model relation
|
||||
* @return HasOne
|
||||
*/
|
||||
public function coupon()
|
||||
{
|
||||
return $this->hasOne(Coupon::class, 'coupon_id', 'coupon_id');
|
||||
}
|
||||
}
|
||||
|
|
@ -70,4 +70,13 @@ class Customers extends Model
|
|||
{
|
||||
return $this->hasMany(PrintedWalls::class, 'customer_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Basket model relation
|
||||
* @return HasMany
|
||||
*/
|
||||
public function baskets()
|
||||
{
|
||||
return $this->hasMany(Basket::class, 'customer_id', 'id');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ class Notification extends Model
|
|||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
protected $fillable = ['notif_name', 'notif_email', 'notif_campId'];
|
||||
|
||||
/**
|
||||
* ManyToOne
|
||||
* Notification -> Campagne
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class AuthServiceProvider extends ServiceProvider
|
|||
* @var array
|
||||
*/
|
||||
protected $policies = [
|
||||
'App\Model' => 'App\Policies\ModelPolicy',
|
||||
// 'App\Model' => 'App\Policies\ModelPolicy',
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,8 +6,10 @@ use App\Campagne;
|
|||
use App\Coupon;
|
||||
use App\Contact;
|
||||
use App\Calendrier;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Models\Customers;
|
||||
use App\Models\PrintedWalls;
|
||||
use App\Mouvement;
|
||||
use App\Mur;
|
||||
use App\Panier;
|
||||
use App\PanierContent;
|
||||
|
|
@ -147,22 +149,28 @@ trait CouponTrait
|
|||
|
||||
public function isAvailableToPrint(Coupon $coupon, Campagne $campagne)
|
||||
{
|
||||
$availableToPrint = true;
|
||||
// ---- Contrôle de la publication
|
||||
if ($coupon->coupon_published == 0) {
|
||||
$availableToPrint = false;
|
||||
/**
|
||||
* Contrôle de la publication de la campagne
|
||||
*/
|
||||
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
|
||||
if ($coupon->coupon_mindatediffusion != null) {
|
||||
if ($coupon->coupon_mindatediffusion !== null) {
|
||||
if (strtotime(date('Y-m-d')) < strtotime($coupon->coupon_mindatediffusion)) {
|
||||
$availableToPrint = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// ---- 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)) {
|
||||
$availableToPrint = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -176,31 +184,25 @@ trait CouponTrait
|
|||
}
|
||||
}
|
||||
if (!$pub) {
|
||||
$availableToPrint = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($campagne->camp_published == 0) {
|
||||
$availableToPrint = false;
|
||||
}
|
||||
|
||||
return $availableToPrint;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isPausedToPrint(Coupon $coupon, Campagne $campagne)
|
||||
{
|
||||
$availableToPrint = true;
|
||||
|
||||
// ---- 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)) {
|
||||
$availableToPrint = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// ---- 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)) {
|
||||
$availableToPrint = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -214,11 +216,11 @@ trait CouponTrait
|
|||
}
|
||||
}
|
||||
if (!$pub) {
|
||||
$availableToPrint = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return $availableToPrint;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -263,28 +265,22 @@ trait CouponTrait
|
|||
|
||||
public function getFullQuantity(Coupon $coupon)
|
||||
{
|
||||
$mouvements = $coupon->mouvements()->get();
|
||||
$nombre = array();
|
||||
foreach ($mouvements as $mouvement) {
|
||||
array_push($nombre, $mouvement->mouvement_nombre);
|
||||
}
|
||||
return array_sum($nombre);
|
||||
return (int)Mouvement::where('mouvement_couponId', $coupon->coupon_id)->sum('mouvement_nombre');
|
||||
}
|
||||
|
||||
public function getUsedQuantity(Coupon $coupon)
|
||||
{
|
||||
$countPrinted = 0;
|
||||
$couponId = $coupon->coupon_id;
|
||||
$campagnes = $coupon->campagnes()->get();
|
||||
foreach ($campagnes as $campagne) {
|
||||
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) {
|
||||
// Murs
|
||||
$murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->get();
|
||||
$countPrinted = $countPrinted + count($murs);
|
||||
foreach ($coupon->campagnes as $campagne) {
|
||||
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])->count();
|
||||
$countPrinted += $murs;
|
||||
} else {
|
||||
// Paniers
|
||||
$campagneId = $campagne->camp_id;
|
||||
$countPrinted = PanierContent::where('panier_content_couponId', $couponId)->whereHas('panier', function ($query) use ($campagneId) {
|
||||
// Paniers
|
||||
// TODO : Revoir la requete
|
||||
$campagneId = $campagne->camp_id;
|
||||
$countPrinted = PanierContent::where('panier_content_couponId', $coupon->coupon_id)->whereHas('panier', function ($query) use ($campagneId) {
|
||||
$query->where('panier_campId', $campagneId);
|
||||
})->sum('panier_content_printed');
|
||||
}
|
||||
|
|
@ -295,17 +291,15 @@ trait CouponTrait
|
|||
public function getDiffusedQuantity(Coupon $coupon)
|
||||
{
|
||||
$countPrinted = 0;
|
||||
$couponId = $coupon->coupon_id;
|
||||
$campagnes = $coupon->campagnes()->get();
|
||||
foreach ($campagnes as $campagne) {
|
||||
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) {
|
||||
// Murs
|
||||
$murs = Mur::where(['mur_campid' => $campagne->camp_id, 'mur_couponId' => $coupon->coupon_id])->get();
|
||||
$countPrinted = $countPrinted + count($murs);
|
||||
foreach ($coupon->campagnes as $campagne) {
|
||||
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])->count();
|
||||
$countPrinted += $murs;
|
||||
} else {
|
||||
// Paniers
|
||||
// Paniers
|
||||
$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);
|
||||
})->get();
|
||||
$panierContentCountPrinted = $panierContents->sum('panier_content_printed');
|
||||
|
|
@ -323,7 +317,7 @@ trait CouponTrait
|
|||
$enddate = date('Y-m-d H:i:s', strtotime($enddate));
|
||||
$campagnes = $coupon->campagnes()->get();
|
||||
foreach ($campagnes as $campagne) {
|
||||
if ($campagne->camp_type == 0 || $campagne->camp_type == 2) {
|
||||
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();
|
||||
$countPrinted = $countPrinted + count($murs);
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ trait GenerateBR
|
|||
$hand_picture = 'build/assets/images/coupons/hand.png';
|
||||
$mask_img = 'build/assets/images/coupons/mask.png';
|
||||
|
||||
if (null !== $request->input('site_id')) {
|
||||
$site = Site::where(['id' => $request->input('site_id')])->first();
|
||||
if (!is_null($request->site_id)) {
|
||||
$site = Site::where(['id' => $request->site_id])->first();
|
||||
} else {
|
||||
$site = $coupon->site()->first();
|
||||
}
|
||||
|
|
@ -31,32 +31,10 @@ trait GenerateBR
|
|||
$mask = imagecreatefrompng($mask_img);
|
||||
list($maskWidth, $maskHeight) = getimagesize($mask_img);
|
||||
|
||||
// ---- Contact distributeur
|
||||
$text = $coupon->coupon_site_contact;
|
||||
if (strlen($text) < 30) {
|
||||
$ImageFond = imagecreate(165, 27);
|
||||
$box1 = imagettfbbox(8, 0, $arial, $text);
|
||||
$white = imagecolorallocate($ImageFond, 255, 255, 255);
|
||||
$black = imagecolorallocate($ImageFond, 0, 0, 0);
|
||||
$this->imagettftextSp($ImageFond, 8, 0, 5, 23, $black, $arial, $text, 0.01);
|
||||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopy($mask, $ImageFond, 743, 365, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
} else {
|
||||
$ImageFond = imagecreate(195, 27);
|
||||
$box1 = imagettfbbox(7, 0, $arial, $text);
|
||||
$white = imagecolorallocate($ImageFond, 255, 255, 255);
|
||||
$black = imagecolorallocate($ImageFond, 0, 0, 0);
|
||||
$this->imagettftextSp($ImageFond, 7, 0, 5, 23, $black, $arial, $text, 0);
|
||||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopy($mask, $ImageFond, 713, 365, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
}
|
||||
|
||||
|
||||
// ----- Mentions légales + RCS
|
||||
if ($coupon->coupon_legal_mentions_splitted == 0) {
|
||||
$txt_mentions = $coupon->coupon_legal_mentions . " " . $coupon->coupon_rcs;
|
||||
$ImageMentionFond = imagecreate(415, 100);
|
||||
$boxMentions = imagettfbbox(7, 0, $arial, $txt_mentions);
|
||||
$white = imagecolorallocate($ImageMentionFond, 255, 255, 255);
|
||||
imagefilledrectangle($ImageMentionFond, 0, 0, 414, 99, $white);
|
||||
$black = imagecolorallocate($ImageMentionFond, 0, 0, 0);
|
||||
|
|
@ -66,8 +44,17 @@ trait GenerateBR
|
|||
$this->imagettftextSp($ImageMentionFond, 7, 0, 15, $y, $black, $arial, $line, 0.01);
|
||||
$y = $y + 9;
|
||||
}
|
||||
|
||||
// imagecolortransparent($ImageMentionFond, $white);
|
||||
$this->imagettftextSp(
|
||||
$ImageMentionFond,
|
||||
7,
|
||||
0,
|
||||
15,
|
||||
$y,
|
||||
$black,
|
||||
$arialbd,
|
||||
sprintf("%s : %s", __('Renseignements'), $coupon->coupon_site_contact),
|
||||
0.01
|
||||
);
|
||||
imagecopy($mask, $ImageMentionFond, 335, 235, 0, 0, imagesx($ImageMentionFond), imagesy($ImageMentionFond));
|
||||
}
|
||||
|
||||
|
|
@ -86,9 +73,9 @@ trait GenerateBR
|
|||
$black = imagecolorallocate($ImageFond, 0, 0, 0);
|
||||
$blue = imagecolorallocate($ImageFond, 8, 169, 223);
|
||||
$grey = imagecolorallocate($ImageFond, 219, 219, 221);
|
||||
$this->imagettftext_contour($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->imagettftext_contour($ImageFond, 16, 0, 0, 150, $grey, $impact, $libReduc, $blue, 1, 1, 1, 1);
|
||||
$this->imagettftextContour($ImageFond, 95, 0, 5, 110, $grey, $impact, $textMontant, $blue, 3, 3, 3, 3);
|
||||
$this->imagettftextContour($ImageFond, 50, 0, 220, 55, $grey, $arial, $textEuro, $blue, 2, 2, 2, 2);
|
||||
$this->imagettftextContour($ImageFond, 16, 0, 0, 150, $grey, $impact, $libReduc, $blue, 1, 1, 1, 1);
|
||||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopy($mask, $ImageFond, 360, 10, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
|
||||
|
|
@ -107,13 +94,11 @@ trait GenerateBR
|
|||
$textFiliLines = explode("\r\n", $textFili);
|
||||
$ImageFond = imagecreate(402, 240);
|
||||
$white = imagecolorallocate($ImageFond, 255, 255, 255);
|
||||
$blackOpac = imagecolorallocatealpha($ImageFond, 0, 0, 0, 20);
|
||||
$y = 0;
|
||||
foreach ($textFiliLines as $textFiliLine) {
|
||||
$y = $y + 20;
|
||||
$this->imagettftextSp($ImageFond, 11, 25, -100, $y, $black, $arial, $textFiliLine, 0.01);
|
||||
}
|
||||
// imagettftext($ImageFond , 11 , 25, -100, 11, $blackOpac, $arial, $textReduc);
|
||||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopymerge($mask, $ImageFond, 349, 1, 0, 0, imagesx($ImageFond), imagesy($ImageFond), 30);
|
||||
|
||||
|
|
@ -159,7 +144,7 @@ trait GenerateBR
|
|||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopy($mask, $ImageFond, 360, 170, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
}//end if
|
||||
// imagettftext($ImageFond , 12 , 0, 0, 14, $black, $arialbd, $textReduc);
|
||||
|
||||
// ---- Copie le produit dans le mask
|
||||
$size = getimagesize($product_image);
|
||||
switch ($size['mime']) {
|
||||
|
|
@ -221,7 +206,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_y = array();
|
||||
|
|
@ -417,6 +402,7 @@ trait GenerateBR
|
|||
// imagecolortransparent($ImageMentionFond, $white);
|
||||
imagecopy($mask, $ImageMentionFond, 335, 235, 0, 0, imagesx($ImageMentionFond), imagesy($ImageMentionFond));
|
||||
} else {
|
||||
// FIXME : Semble non utilise ici
|
||||
// FR
|
||||
$txt_mentions = $legalMentions[0] . " " . $coupon->coupon_rcs;
|
||||
$ImageMentionFond = imagecreate(415, 100);
|
||||
|
|
@ -438,7 +424,15 @@ trait GenerateBR
|
|||
|
||||
// ---- Inscription de l'utilisateur et de la ville
|
||||
$libelle = "OFFRE RÉSERVÉE À";
|
||||
$user = $crmInfos->firstname . " " . $crmInfos->lastname . "\r\n" . $crmInfos->postcode . " " . $crmInfos->city;
|
||||
$user = sprintf(
|
||||
"%s %s\r\n%s\r\n%s %s\r\n%s",
|
||||
$crmInfos->firstname,
|
||||
$crmInfos->lastname,
|
||||
$crmInfos->address,
|
||||
$crmInfos->postcode,
|
||||
$crmInfos->city,
|
||||
sprintf("id %s", $crmInfos->crm_id)
|
||||
);
|
||||
$ImageFond = imagecreate(120, 40);
|
||||
$white = imagecolorallocate($ImageFond, 255, 255, 255);
|
||||
$black = imagecolorallocate($ImageFond, 0, 0, 0);
|
||||
|
|
@ -447,7 +441,7 @@ trait GenerateBR
|
|||
imagettftext($ImageFond, 8, 0, (120 / 2) - (abs($box2[4]) - abs($box2[6])) / 2, 10, $black, $arialbd, $libelle);
|
||||
imagettftext($ImageFond, 8, 0, (120 / 2) - (abs($box1[4]) - abs($box1[6])) / 2, 25, $black, $arial, $user);
|
||||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopy($mask, $ImageFond, 770, 50, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
imagecopy($mask, $ImageFond, 770, 40, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
|
||||
// ---- Inscription de la date de validité
|
||||
$libelle = "Valable jusqu'au :";
|
||||
|
|
@ -467,6 +461,21 @@ trait GenerateBR
|
|||
imagecolortransparent($ImageFond, $white);
|
||||
imagecopy($mask, $ImageFond, 780, 142, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
|
||||
// Right barcode
|
||||
$codeBarre = "0000000000001"; // FIXME : put real id here
|
||||
$generator = new \Picqer\Barcode\BarcodeGeneratorPNG();
|
||||
$base64 = $generator->getBarcode($codeBarre, $generator::TYPE_CODE_128_A, 2, 46);
|
||||
$barcodeImage = imagecreatefromstring($base64);
|
||||
imagecopy($mask, $barcodeImage, 540, 342, 0, 0, imagesx($barcodeImage), imagesy($barcodeImage));
|
||||
// Text
|
||||
$ImageFond = imagecreate(380, 15);
|
||||
$white = imagecolorallocate($ImageFond, 255, 255, 255);
|
||||
$black = imagecolorallocate($ImageFond, 0, 0, 0);
|
||||
imagettftext($ImageFond, 11, 0, 0, 14, $black, $arial, $codeBarre);
|
||||
imagecopy($mask, $ImageFond, 795, 390, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
// End text
|
||||
// End right barcode
|
||||
|
||||
// ---- Création code barre
|
||||
if ($customer->country !== 250) {
|
||||
$textReduc = "Traitement ScanCoupon/HighCo Data Benelux";
|
||||
|
|
@ -486,7 +495,7 @@ trait GenerateBR
|
|||
imagecopy($mask, $ImageFond, 52, 322, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
}
|
||||
|
||||
|
||||
// Left barcode
|
||||
if ($customer->country !== 250) {
|
||||
$codeBarre = imagecreatefromjpeg($coupon->coupon_gs1code);
|
||||
imageresolution($codeBarre, 72);
|
||||
|
|
@ -506,22 +515,18 @@ trait GenerateBR
|
|||
|
||||
imagecopy($mask, $test, 60, 250, 0, 0, imagesx($test), imagesy($test));
|
||||
} else {
|
||||
$codeBarre = $coupon->coupon_code . strtoupper($customer->crm_id);
|
||||
$codeBarrePrint = $codeBarre;
|
||||
if (strpos($customer->crm_id, "@") !== false) {
|
||||
$codeBarre = $coupon->coupon_code . strtolower($customer->crm_id);
|
||||
$codeBarrePrint = $coupon->coupon_code . ".@.";
|
||||
}
|
||||
$codeBarre = $coupon->coupon_code;
|
||||
$generator = new \Picqer\Barcode\BarcodeGeneratorPNG();
|
||||
$base64 = $generator->getBarcode($codeBarrePrint, $generator::TYPE_CODE_128_A, 2, 46);
|
||||
$base64 = $generator->getBarcode($codeBarre, $generator::TYPE_CODE_128_A, 2, 46);
|
||||
$barcodeImage = imagecreatefromstring($base64);
|
||||
imagecopy($mask, $barcodeImage, 52, 342, 0, 0, imagesx($barcodeImage), imagesy($barcodeImage));
|
||||
imagecopy($mask, $barcodeImage, 10, 342, 0, 0, imagesx($barcodeImage), imagesy($barcodeImage));
|
||||
$ImageFond = imagecreate(380, 15);
|
||||
$white = imagecolorallocate($ImageFond, 255, 255, 255);
|
||||
$black = imagecolorallocate($ImageFond, 0, 0, 0);
|
||||
imagettftext($ImageFond, 11, 0, 0, 14, $black, $arial, $codeBarre);
|
||||
imagecopy($mask, $ImageFond, 52, 390, 0, 0, imagesx($ImageFond), imagesy($ImageFond));
|
||||
}//end if
|
||||
// End left barcode
|
||||
|
||||
ob_start();
|
||||
imagejpeg($mask, null, 100);
|
||||
|
|
|
|||
|
|
@ -14,11 +14,12 @@
|
|||
"barryvdh/laravel-dompdf": "^0.9.0",
|
||||
"doctrine/dbal": "^2.8",
|
||||
"fideloper/proxy": "^4.0",
|
||||
"kwaadpepper/enum": "^2.0",
|
||||
"laravel/framework": "^8.0",
|
||||
"laravel/tinker": "^2.0",
|
||||
"laravel/ui": "^3.0",
|
||||
"laravelcollective/html": "6.*",
|
||||
"ldc/ldccrmv2client": "^3.0",
|
||||
"ldc/ldccrmv2client": "^3.0.5",
|
||||
"picqer/php-barcode-generator": "^0.3.0",
|
||||
"sentry/sentry-laravel": "^4.13",
|
||||
"szymach/c-pchart": "^3.0",
|
||||
|
|
|
|||
|
|
@ -213,6 +213,9 @@ return [
|
|||
'Html' => Collective\Html\HtmlFacade::class,
|
||||
'Debugbar' => Barryvdh\Debugbar\Facade::class,
|
||||
'PDF' => Barryvdh\DomPDF\Facade::class,
|
||||
'CampaignTypes' => \App\Enums\CampaignTypes::class,
|
||||
'Countries' => \App\Enums\Countries::class,
|
||||
'UserRoles' => \App\Enums\UserRoles::class,
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
|||
|
|
@ -35,5 +35,8 @@
|
|||
"sweetalert": "^2.0.8",
|
||||
"vue": "^2.5.7",
|
||||
"webpack-cli": "^6.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-sass": "^6.0.1"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 68 KiB |
56
resources/js/ajax.js
vendored
56
resources/js/ajax.js
vendored
|
|
@ -6,7 +6,7 @@ $('#addCoupons').on('click', function(event){
|
|||
if($(this).is(':checked')){
|
||||
ids.push($(this).val());
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
|
|
@ -15,14 +15,13 @@ $('#addCoupons').on('click', function(event){
|
|||
});
|
||||
|
||||
$.ajax({
|
||||
url: '/add-coupons-ajax',
|
||||
url: '/bo/campagne/'+ campid +'/add-coupons',
|
||||
type: 'POST',
|
||||
data: {
|
||||
ids: ids ,
|
||||
campid: campid
|
||||
ids: ids
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
success: function (reponse) {
|
||||
$.each(reponse, function(index, coupon){
|
||||
var html = '<tr>';
|
||||
html += '<td>'+coupon.coupon_code+'</td>';
|
||||
|
|
@ -34,7 +33,7 @@ $('#addCoupons').on('click', function(event){
|
|||
$('#addCoupons').parent().find('.inputGroup input').each(function(event){
|
||||
if($(this).val() == coupon.coupon_id){
|
||||
$(this).parent('.inputGroup').remove();
|
||||
}
|
||||
}
|
||||
})
|
||||
$.fancybox.close();
|
||||
});
|
||||
|
|
@ -43,7 +42,7 @@ $('#addCoupons').on('click', function(event){
|
|||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
|
@ -59,21 +58,18 @@ $('body').on('click', '.delete-coupon', function(event){
|
|||
callback : function (value) {
|
||||
if (value) {
|
||||
event.preventDefault();
|
||||
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/remove-coupons-ajax',
|
||||
url: '/bo/campagne/'+ campid +'/remove-coupon/' + couponid,
|
||||
type: 'POST',
|
||||
data: {
|
||||
couponid: couponid,
|
||||
campid: campid
|
||||
},
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
success: function (reponse) {
|
||||
trLinked.remove();
|
||||
var html = "<div class='inputGroup'>";
|
||||
html += "<input id='coupon["+reponse.coupon_id+"]' name='coupon["+reponse.coupon_id+"]' type='checkbox' value='"+reponse.coupon_id+"' >";
|
||||
|
|
@ -87,7 +83,7 @@ $('body').on('click', '.delete-coupon', function(event){
|
|||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
|
|
@ -114,14 +110,14 @@ $('body').on('click', '.unpublish', function(event){
|
|||
couponid: couponid
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
success: function (reponse) {
|
||||
element.empty().html('<i data-couponid="'+couponid+'" class="fas fa-times-circle red publish"></i>')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
|
||||
$('body').on('click', '.publish', function(event){
|
||||
|
|
@ -147,14 +143,14 @@ $('body').on('click', '.publish', function(event){
|
|||
couponid: couponid
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
success: function (reponse) {
|
||||
element.empty().html('<i data-couponid="'+couponid+'" class="fas fa-check-circle green unpublish"></i>')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
|
@ -175,20 +171,18 @@ $('body').on('click', '.unpublishcamp', function(event){
|
|||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/unpublish-camp-ajax',
|
||||
url: '/bo/campagne/'+ campid +'/toggle-publish/0',
|
||||
type: 'POST',
|
||||
data: {
|
||||
campid: campid
|
||||
},
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
success: function (reponse) {
|
||||
element.empty().html('<i data-campid="'+campid+'" class="fas fa-times-circle red publishcamp"></i>')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
|
||||
$('body').on('click', '.publishcamp', function(event){
|
||||
|
|
@ -208,18 +202,16 @@ $('body').on('click', '.publishcamp', function(event){
|
|||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/publish-camp-ajax',
|
||||
url: '/bo/campagne/'+ campid +'/toggle-publish/1',
|
||||
type: 'POST',
|
||||
data: {
|
||||
campid: campid
|
||||
},
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
success: function (reponse) {
|
||||
element.empty().html('<i data-campid="'+campid+'" class="fas fa-check-circle green unpublishcamp"></i>')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fa fa-folder"><i class="fas fa-ticket-alt"></i></i> Nouvelle campagne</h2>
|
||||
<div class="form-wrapper">
|
||||
{!! Form::open(['route' => 'campagne.store']) !!}
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('camp_name', 'Nom') !!}
|
||||
{!! Form::input('text', 'camp_name', null, ['required']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('camp_type', 'Type') !!}
|
||||
{!! Form::select('camp_type', ['Mur', 'Panier', 'Mur sans sélection', 'Panier Sélectionnable']) !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('camp_published', 'Publier') !!}
|
||||
{!! Form::select('camp_published', ['Non', 'Oui']) !!}
|
||||
</div>
|
||||
<div class="form-field limitPrinting">
|
||||
{!! Form::label('camp_limitedPrinting', 'Limiter les impressions à 1 BR à la fois') !!}
|
||||
{!! Form::checkbox('camp_limitedPrinting', 1, false, array('id'=>'camp_limitedPrinting')) !!}
|
||||
{!! Form::label('camp_limitedPrinting', '') !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
{!! Form::submit('Enregistrer') !!}
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fa fa-folder"><i class="fas fa-ticket-alt"></i></i> Editer la campagne</h2>
|
||||
<div class="form-wrapper">
|
||||
{!! Form::model($campagne, ['route' => ['campagne.update', $campagne]]) !!}
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('camp_name', 'Nom') !!}
|
||||
{!! Form::input('text', 'camp_name', null, ['required']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('camp_type', 'Type') !!}
|
||||
{!! Form::select('camp_type', ['Mur', 'Panier', 'Mur sans sélection', 'Panier Sélectionnable']) !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('camp_published', 'Publier') !!}
|
||||
{!! Form::select('camp_published', ['Non', 'Oui']) !!}
|
||||
</div>
|
||||
<div class="form-field limitPrinting">
|
||||
{!! Form::label('camp_limitedPrinting', 'Limiter les impressions à 1 BR à la fois') !!}
|
||||
{!! Form::checkbox('camp_limitedPrinting', 1, ($campagne->camp_limitedPrinting ==1?true:null), array('id'=>'camp_limitedPrinting')) !!}
|
||||
{!! Form::label('camp_limitedPrinting', '') !!}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
{!! Form::submit('Mettre à jour') !!}
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
<div class="coupons-wrapper">
|
||||
<h2><i class="fas fa-ticket-alt"></i> Coupons de la campagne</h2>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>Code</th>
|
||||
<th>Nom</th>
|
||||
<th></th>
|
||||
</thead>
|
||||
@foreach($couponsLinked as $coupon)
|
||||
<tr class="@if($coupon->coupon_published == 0) notPublished @endif">
|
||||
<td>{{ $coupon->coupon_code }}</td>
|
||||
<td>{{ $coupon->coupon_name }}</td>
|
||||
<td><i class="fas fa-times delete-coupon" data-campid={{$campagne->camp_id}} data-couponid={{$coupon->coupon_id}}></i></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@if(count($couponsLinked) == 0)
|
||||
<p class="no-result">Pas de coupons liés</p>
|
||||
@endif
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?php echo csrf_token(); ?>">
|
||||
<button data-fancybox data-src="#coupons-list" href="javascript:;">
|
||||
Ajouter des coupons a cette campagne
|
||||
</button>
|
||||
</div>
|
||||
<div class="notifs-wrapper">
|
||||
<h2><i class="fas fa-bell"></i> Notifications par mail</h2>
|
||||
<div class="form-wrapper">
|
||||
{!! Form::open(['action' => 'CampagneController@saveNotification']) !!}
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('notif_name', 'Nom') !!}
|
||||
{!! Form::input('text', 'notif_name', null, ['required']) !!}
|
||||
{{ Form::hidden('notif_campId', $campagne->camp_id) }}
|
||||
</div>
|
||||
<div class="form-field"></div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('notif_email', 'Email') !!}
|
||||
{!! Form::input('text', 'notif_email', null, ['required']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<span></span>
|
||||
{!! Form::submit('Ajouter') !!}
|
||||
</div>
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('No') }}</th>
|
||||
<th>{{__('Nom') }}</th>
|
||||
<th>{{__('Email') }}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($campagne->notifications as $n)
|
||||
<tr>
|
||||
<td>{{ $n->notif_id }}</td>
|
||||
<td>{{ $n->notif_name }}</td>
|
||||
<td>{{ $n->notif_email }}</td>
|
||||
<td><a href="{{ route('campagne.deleteNotif', $n) }}"><i class="fas fa-times delete-icon"></i></a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="coupons-list" style="display:none;">
|
||||
<h2><i class="fas fa-ticket-alt"></i> Ajouter des Coupons</h2>
|
||||
@foreach($coupons as $coupon)
|
||||
<div class="inputGroup @if($coupon->coupon_published == 0) notPublished @endif">
|
||||
<input id="coupon[{{$coupon->coupon_id}}]" name="coupon[{{$coupon->coupon_id}}]" type="checkbox" value="{{$coupon->coupon_id}}"/>
|
||||
<label for="coupon[{{$coupon->coupon_id}}]">{{$coupon->coupon_name}}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
<input type="hidden" name="camp_id" id="camp_id" value="{{ $campagne->camp_id }}">
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?php echo csrf_token(); ?>">
|
||||
<input type="submit" id="addCoupons" value="Ajouter">
|
||||
</div>
|
||||
{!! Form::open(['id' => 'delete-hidden']) !!}
|
||||
@method('DELETE')
|
||||
{!! Form::close() !!}
|
||||
@endsection
|
||||
55
resources/views/campagnes/create.blade.php
Normal file
55
resources/views/campagnes/create.blade.php
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2>
|
||||
<i class="fa fa-folder">
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
</i>
|
||||
{{ __('Nouvelle campagne') }}
|
||||
</h2>
|
||||
<div class="form-wrapper">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{ route('campagne.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Nom') }}</label>
|
||||
<input type="text" name="camp_name" value="{{ old('camp_name') }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Type') }}</label>
|
||||
<select name="camp_type" id="camp_type">
|
||||
@foreach (CampaignTypes::toArray() as $type)
|
||||
<option value="{{ $type->value }}" @if (old('camp_type') === $type->value) selected @endif>{{ $type->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Publier') }}</label>
|
||||
<select name="camp_published">
|
||||
<option value="0" @if (old('camp_published') === 0) selected @endif>{{ __('Non') }}</option>
|
||||
<option value="1" @if (old('camp_published') === 1) selected @endif>{{ __('Oui') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-field limitPrinting">
|
||||
<label for="camp_limitedPrinting">{{ __('Limiter les impressions à 1 BR à la fois') }}</label>
|
||||
<input id="camp_limitedPrinting" name="camp_limitedPrinting" type="checkbox" value="1">
|
||||
<label for="camp_limitedPrinting"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
<input type="submit" value="{{ __('Enregistrer') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
147
resources/views/campagnes/edit.blade.php
Normal file
147
resources/views/campagnes/edit.blade.php
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2>
|
||||
<i class="fa fa-folder">
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
</i>
|
||||
{{ __('Editer la campagne') }}
|
||||
</h2>
|
||||
|
||||
<div class="form-wrapper">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{ route('campagne.update', ['campagne' => $campagne]) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Nom') }}</label>
|
||||
<input type="text" name="camp_name" value="{{ $campagne->camp_name }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Type') }}</label>
|
||||
<select name="camp_type" id="camp_type">
|
||||
@foreach (CampaignTypes::toArray() as $type)
|
||||
<option value="{{ $type->value }}" @if ($campagne->camp_type->equals($type)) selected @endif>{{ $type->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Publier') }}</label>
|
||||
<select name="camp_published">
|
||||
<option value="0" @if ($campagne->camp_published === 0) selected @endif>{{ __('Non') }}</option>
|
||||
<option value="1" @if ($campagne->camp_published === 1) selected @endif>{{ __('Oui') }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-field limitPrinting">
|
||||
<label for="camp_limitedPrinting">{{ __('Limiter les impressions à 1 BR à la fois') }}</label>
|
||||
<input id="camp_limitedPrinting" {{ $campagne->camp_limitedPrinting === 1 ? 'checked="checked"' : '' }} name="camp_limitedPrinting" type="checkbox" value="{{ $campagne->camp_limitedPrinting }}">
|
||||
<label for="camp_limitedPrinting"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
<input type="submit" value="{{ __('Mettre à jour') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="coupons-wrapper">
|
||||
<h2>
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
{{ __('Coupons de la campagne') }}
|
||||
</h2>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th>{{ __('Code') }}</th>
|
||||
<th>{{ __('Nom') }}</th>
|
||||
<th></th>
|
||||
</thead>
|
||||
@foreach($campagne->coupons as $coupon)
|
||||
<tr class="@if($coupon->coupon_published == 0) notPublished @endif">
|
||||
<td>{{ $coupon->coupon_code }}</td>
|
||||
<td>{{ $coupon->coupon_name }}</td>
|
||||
<td><i class="fas fa-times delete-coupon" data-campid={{$campagne->camp_id}} data-couponid={{$coupon->coupon_id}}></i></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@if(count($campagne->coupons) === 0)
|
||||
<p class="no-result">{{ __('Pas de coupons liés') }}</p>
|
||||
@endif
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?= csrf_token(); ?>">
|
||||
<button data-fancybox data-src="#coupons-list" href="javascript:;">
|
||||
{{ __('Ajouter des coupons a cette campagne') }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="notifs-wrapper">
|
||||
<h2><i class="fas fa-bell"></i> {{ __('Notifications par mail') }}</h2>
|
||||
<div class="form-wrapper">
|
||||
<form action="{{ route('campaign.new-notif', ['campaign' => $campagne]) }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Nom') }}</label>
|
||||
<input type="text" name="notif_name" required>
|
||||
</div>
|
||||
<div class="form-field"></div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Email') }}</label>
|
||||
<input type="email" name="notif_email" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<span></span>
|
||||
<input type="submit" value="{{ __('Ajouter') }}">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('No') }}</th>
|
||||
<th>{{__('Nom') }}</th>
|
||||
<th>{{__('Email') }}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($campagne->notifications as $n)
|
||||
<tr>
|
||||
<td>{{ $n->notif_id }}</td>
|
||||
<td>{{ $n->notif_name }}</td>
|
||||
<td>{{ $n->notif_email }}</td>
|
||||
<td><a href="{{ route('campaign.delete-notif', $n->notif_id) }}"><i class="fas fa-times delete-icon"></i></a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="coupons-list" style="display:none;">
|
||||
<h2>
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
{{ __('Ajouter des Coupons') }}
|
||||
</h2>
|
||||
@foreach($coupons as $coupon)
|
||||
<div class="inputGroup @if($coupon->coupon_published == 0) notPublished @endif">
|
||||
<input id="coupon[{{$coupon->coupon_id}}]" name="coupon[{{$coupon->coupon_id}}]" type="checkbox" value="{{$coupon->coupon_id}}"/>
|
||||
<label for="coupon[{{$coupon->coupon_id}}]">{{$coupon->coupon_name}}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
<input type="hidden" name="camp_id" id="camp_id" value="{{ $campagne->camp_id }}">
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?= csrf_token(); ?>">
|
||||
<input type="submit" id="addCoupons" value="Ajouter">
|
||||
</div>
|
||||
<form method="POST" id="delete-hidden">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
@endsection
|
||||
|
|
@ -1,7 +1,16 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fa fa-folder"><i class="fas fa-ticket-alt"></i></i> Campagnes <a href="{{ route('campagne.create') }}" class="add-button"><i class="fas fa-plus-square"></i> Ajouter</a></h2>
|
||||
<h2>
|
||||
<i class="fa fa-folder">
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
</i>
|
||||
{{ __('Campagnes') }}
|
||||
<a href="{{ route('campagne.create') }}" class="add-button">
|
||||
<i class="fas fa-plus-square"></i>
|
||||
{{ __('Ajouter') }}
|
||||
</a>
|
||||
</h2>
|
||||
<div class="content-list">
|
||||
<table>
|
||||
<thead>
|
||||
|
|
@ -19,49 +28,52 @@
|
|||
<tr>
|
||||
<td>{{ $c->camp_id }}</td>
|
||||
<td><a href="{{ route('campagne.edit', $c) }}">{{ $c->camp_name }}</a></td>
|
||||
<td>{{ $c->camp_createdate }}</td>
|
||||
<td>{{ date('d/m/Y H:i', strtotime($c->camp_createdate)) }}</td>
|
||||
@if ( $c->camp_published === 1)
|
||||
<td class="pub center"><i data-campid="{{ $c->camp_id }}" class="fas fa-check-circle green unpublishcamp"></i></td>
|
||||
@else
|
||||
<td class="pub center"><i data-campid="{{ $c->camp_id }}" class="fas fa-times-circle red publishcamp"></i></td>
|
||||
@endif
|
||||
<td class="center"><i class="fas fa-eye showTemplate" data-campid="{{ $c->camp_id }}"></i></td>
|
||||
<td><a href="{{ route('campagne.destroy', $c) }}"><i class="fas fa-times delete-icon"></i></a></td>
|
||||
<td class="center">
|
||||
@if ( $c->camp_published === 1)
|
||||
<i class="fas fa-eye showTemplate" data-campid="{{ $c->camp_id }}"></i>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
@if ($c->camp_published === 0)
|
||||
<a href="{{ route('campagne.destroy', $c) }}"><i class="fas fa-times delete-icon"></i></a>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?php echo csrf_token(); ?>">
|
||||
</div>
|
||||
<div class="actions">
|
||||
|
||||
</div>
|
||||
{!! Form::open(['id' => 'delete-hidden']) !!}
|
||||
<form method="POST" id="delete-hidden">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
{!! Form::close() !!}
|
||||
</form>
|
||||
<input type="hidden" id="csrf" value="<?= csrf_token(); ?>">
|
||||
@endsection
|
||||
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
$('.content-list').on('click', '.showTemplate', function(event){
|
||||
event.preventDefault();
|
||||
let campid = $(this).attr('data-campid');
|
||||
event.preventDefault();
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/showDemo',
|
||||
url: '/bo/campagne/'+ campid +'/showDemo',
|
||||
type: 'POST',
|
||||
data: {
|
||||
camp_id: campid,
|
||||
},
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function (response) {
|
||||
window.open(response, '_blank');
|
||||
//console.log(response);
|
||||
success: function (response) {
|
||||
window.open(response, '_blank');
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e.responseText);
|
||||
|
|
@ -1,7 +1,10 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-users"></i> Créer un contact</h2>
|
||||
<h2>
|
||||
<i class="fas fa-users"></i>
|
||||
{{ __('Créer un contact') }}
|
||||
</h2>
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
|
|
@ -12,53 +15,52 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
{!! Form::open(['route' => 'contact.store', 'enctype' => 'multipart/form-data']) !!}
|
||||
<form action="{{ route('contact.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_ref', 'Ref *') !!}
|
||||
{!! Form::input('text', 'contact_ref', null, ['required']) !!}
|
||||
<label>{{ __('Ref') }} *</label>
|
||||
<input type="text" name="contact_ref" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_email', 'Email *') !!}
|
||||
{!! Form::email('contact_email', null, ['required']) !!}
|
||||
<label>{{ __('Email') }} *</label>
|
||||
<input type="email" name="contact_email" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_nom', 'Nom *') !!}
|
||||
{!! Form::input('text','contact_nom', null, ['required']) !!}
|
||||
<label>{{ __('Nom') }} *</label>
|
||||
<input type="text" name="contact_nom" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_prenom', 'Prénom *') !!}
|
||||
{!! Form::input('text','contact_prenom', null, ['required']) !!}
|
||||
<label>{{ __('Prénom') }} *</label>
|
||||
<input type="text" name="contact_prenom" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_cp', 'Code Postal *') !!}
|
||||
{!! Form::input('text','contact_cp', null, ['required']) !!}
|
||||
<label>{{ __('Code Postal') }} *</label>
|
||||
<input type="text" name="contact_cp" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_ville', 'Ville *') !!}
|
||||
{!! Form::input('text','contact_ville', null, ['required']) !!}
|
||||
</div>
|
||||
<label>{{ __('Ville') }} *</label>
|
||||
<input type="text" name="contact_ville" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
|
||||
<div class="form-field">
|
||||
<label for="contact_country">Pays</label>
|
||||
<label for="contact_country">{{ __('Pays') }}</label>
|
||||
<select name="contact_country" id="contact_country">
|
||||
<option value="250">France</option>
|
||||
<option value="056">Belgique</option>
|
||||
<option value="442">Luxembourg</option>
|
||||
@foreach (Countries::toArray() as $country)
|
||||
<option value="{{ $country->value }}">{{ $country->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-field submit">
|
||||
<span>Les champs avec un * sont obligatoires</span>
|
||||
{!! Form::submit('Enregistrer') !!}
|
||||
<span>{{ __('Les champs avec un * sont obligatoires') }}</span>
|
||||
<input type="submit" value="{{ __('Enregistrer') }}">
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-users"></i> Editer le contact</h2>
|
||||
<h2>
|
||||
<i class="fas fa-users"></i>
|
||||
{{ __('Editer le contact') }}
|
||||
</h2>
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
|
|
@ -12,81 +15,76 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
{!! Form::model($contact, ['route' => ['contact.update', $contact], 'enctype' => 'multipart/form-data']) !!}
|
||||
<form action="{{ route('contact.update', $contact) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_ref', 'Ref *') !!}
|
||||
{!! Form::input('text', 'contact_ref', null, ['required', 'readonly']) !!}
|
||||
<label>{{ __('Ref') }} *</label>
|
||||
<input type="text" name="contact_ref" value="{{ $contact->contact_ref }}" required readonly>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_email', 'Email *') !!}
|
||||
{!! Form::email('contact_email', null, ['required']) !!}
|
||||
<label>{{ __('Email') }} *</label>
|
||||
<input type="email" name="contact_email" value="{{ $contact->contact_email }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_nom', 'Nom *') !!}
|
||||
{!! Form::input('text','contact_nom', null, ['required']) !!}
|
||||
<label>{{ __('Nom') }} *</label>
|
||||
<input type="text" name="contact_nom" value="{{ $contact->contact_nom }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_prenom', 'Prénom *') !!}
|
||||
{!! Form::input('text','contact_prenom', null, ['required']) !!}
|
||||
<label>{{ __('Prénom') }} *</label>
|
||||
<input type="text" name="contact_prenom" value="{{ $contact->contact_prenom }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_cp', 'Code Postal *') !!}
|
||||
{!! Form::input('text','contact_cp', null, ['required']) !!}
|
||||
<label>{{ __('Code Postal') }} *</label>
|
||||
<input type="text" name="contact_cp" value="{{ $contact->contact_cp }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('contact_ville', 'Ville *') !!}
|
||||
{!! Form::input('text','contact_ville', null, ['required']) !!}
|
||||
<label>{{ __('Ville') }} *</label>
|
||||
<input type="text" name="contact_ville" value="{{ $contact->contact_ville }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
|
||||
<div class="form-field">
|
||||
<label for="contact_country">Pays *</label>
|
||||
<label for="contact_country">{{ __('Pays') }}</label>
|
||||
<select name="contact_country" id="contact_country">
|
||||
<option value="" >Tous</option>
|
||||
<option value="250" @if ($contact->contact_country == 250) selected="selected" @endif>France</option>
|
||||
<option value="56" @if ($contact->contact_country == 56) selected="selected" @endif>Belgique</option>
|
||||
<option value="442" @if ($contact->contact_country == 442) selected="selected" @endif>Luxembourg</option>
|
||||
@foreach (Countries::toArray() as $country)
|
||||
<option value="{{ $country->value }}" @if ($contact->contact_country === $country->value) selected @endif>{{ $country->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-field submit">
|
||||
<span>Les champs avec un * sont obligatoires</span>
|
||||
{!! Form::submit('Mettre à jour') !!}
|
||||
<span>{{ __('Les champs avec un * sont obligatoires') }}</span>
|
||||
<input type="submit" value="{{ __('Mettre à jour') }}">
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</form>
|
||||
</div>
|
||||
<h2><i class="fa fa-folder"><i class="fas fa-ticket-alt"></i></i> Campagnes liées</h2>
|
||||
<h2>
|
||||
<i class="fa fa-folder">
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
</i>
|
||||
{{ __('Campagnes liées') }}
|
||||
</h2>
|
||||
<div class="contactWidgets">
|
||||
<input type="hidden" name="hash" id="hash" value="{{ $contact->contact_hash }}">
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?php echo csrf_token(); ?>">
|
||||
<input type="hidden" name="contact_id" id="contact_id" value="{{ $contact->contact_id }}">
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?= csrf_token(); ?>">
|
||||
@foreach ($campagnes as $campagne)
|
||||
<div class="campagne" data-campid="{{ $campagne->camp_id }}" data-campsite = "{{ $campagne->camp_siteId }}">
|
||||
<h4>{{$campagne->camp_name}}</h4>
|
||||
@switch($campagne->camp_type)
|
||||
@case(0)
|
||||
<p>Type : Mur</p>
|
||||
@break
|
||||
@case(1)
|
||||
<p>Type : Panier</p>
|
||||
@break
|
||||
@case(2)
|
||||
<p>Type : Mur non sélectionnable</p>
|
||||
@break
|
||||
@case(3)
|
||||
<p>Type : Panier sélectionnable</p>
|
||||
@break
|
||||
@endswitch
|
||||
<p>{{ __('Type') }} : {{ $campagne->camp_type->label }}</p>
|
||||
|
||||
<div class="loader">
|
||||
<div class="lds-ripple"><div></div><div></div></div>
|
||||
<h4>Chargement...</h4>
|
||||
<div class="lds-ripple">
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<h4>{{ __('Chargement') }}...</h4>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -104,10 +102,9 @@
|
|||
});
|
||||
|
||||
$.ajax({
|
||||
url: '/loadWidget',
|
||||
url: '/bo/contact/'+ $('#contact_id').val() +'/load-widget',
|
||||
type: 'POST',
|
||||
data: {
|
||||
contact_hash: $('#hash').val(),
|
||||
camp_id : campagne.attr('data-campid'),
|
||||
},
|
||||
dataType: 'JSON',
|
||||
|
|
@ -116,7 +113,7 @@
|
|||
campagne.append(reponse.html);
|
||||
$('.loader').hide();
|
||||
} else {
|
||||
campagne.append("Erreur lors du chargement");
|
||||
campagne.append("{{ __('Erreur lors du chargement') }}");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
|
|
@ -159,15 +156,15 @@
|
|||
campagne.find('.loader').show();
|
||||
loadWidget(campagne);
|
||||
$.fancyInfo({
|
||||
title : "<i class='fas fa-info-circle'></i> Succès",
|
||||
message : "Le mur a bien été réinitialisé.",
|
||||
okButton : 'Valider',
|
||||
title : "<i class='fas fa-info-circle'></i> {{ __('Succès') }}",
|
||||
message : "{{ __('Le mur a bien été réinitialisé.') }}",
|
||||
okButton : "{{ __('Valider') }}",
|
||||
noButton : "",
|
||||
callback : function (value) {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log("Erreur : "+reponse.Code+" - "+reponse.Message)
|
||||
console.log("{{ __('Erreur') }} : "+reponse.Code+" - "+reponse.Message)
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
|
|
@ -221,9 +218,9 @@
|
|||
campagne.find('.loader').show();
|
||||
loadWidget(campagne);
|
||||
$.fancyInfo({
|
||||
title : "<i class='fas fa-info-circle'></i> Succès",
|
||||
message : "Le panier a bien été mis à jour.",
|
||||
okButton : 'Valider',
|
||||
title : "<i class='fas fa-info-circle'></i> {{ __('Succès') }}",
|
||||
message : "{{ __('Le panier a bien été mis à jour.') }}",
|
||||
okButton : "{{ __('Valider') }}",
|
||||
noButton : "",
|
||||
callback : function (value) {
|
||||
}
|
||||
|
|
@ -261,9 +258,9 @@
|
|||
campagne.find('.loader').show();
|
||||
loadWidget(campagne);
|
||||
$.fancyInfo({
|
||||
title : "<i class='fas fa-info-circle'></i> Succès",
|
||||
message : "Le panier a bien été créé.",
|
||||
okButton : 'Valider',
|
||||
title : "<i class='fas fa-info-circle'></i> {{ __('Succès') }}",
|
||||
message : "{{ __('Le panier a bien été créé.') }}",
|
||||
okButton : "{{ __('Valider') }}",
|
||||
noButton : "",
|
||||
callback : function (value) {
|
||||
}
|
||||
|
|
@ -282,16 +279,3 @@
|
|||
|
||||
</script>
|
||||
@endsection
|
||||
@if(isset($created) && $created)
|
||||
@section('scripts')
|
||||
<script defer>
|
||||
$.fancyInfo({
|
||||
title : "<i class='fas fa-info-circle'></i> Parfait",
|
||||
message : "Le contact a bien été créé.",
|
||||
okButton : 'Valider',
|
||||
callback : function (value) {
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@endif
|
||||
|
|
|
|||
|
|
@ -2,46 +2,69 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
<h2><i class="fas fa-users"></i> Recherche de contacts <a href="{{ route('contact.create') }}" class="add-button"><i class="fas fa-plus-square"></i> Ajouter</a></h2>
|
||||
<h2>
|
||||
<i class="fas fa-users"></i>
|
||||
{{ __('Recherche de contacts') }}
|
||||
<a href="{{ route('contact.create') }}" class="add-button">
|
||||
<i class="fas fa-plus-square"></i>
|
||||
{{ __('Ajouter') }}
|
||||
</a>
|
||||
</h2>
|
||||
<div class="form-wrapper">
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<form action="{{ route('contact.search') }}" method="GET" role="search">
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label for="searchName">Nom</label>
|
||||
<label for="searchName">{{ __('Nom') }}</label>
|
||||
<input type="text" name="searchName" id="searchName" value="@if(isset($searchData['name'])){{$searchData['name']}}@endif">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label for="searchFirstname">Prénom</label>
|
||||
<label for="searchFirstname">{{ __('Prénom') }}</label>
|
||||
<input type="text" name="searchFirstname" id="searchFirstname" value="@if(isset($searchData['firstname'])){{$searchData['firstname']}}@endif">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label for="searchEmail">Email</label>
|
||||
<label for="searchEmail">{{ __('Email') }}</label>
|
||||
<input type="email" name="searchEmail" id="searchEmail" value="@if(isset($searchData['email'])){{$searchData['email']}}@endif">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label for="searchCp">Code Postal</label>
|
||||
<label for="searchCp">{{ __('Code Postal') }}</label>
|
||||
<input type="text" maxlength="6" name="searchCp" id="searchCp" value="@if(isset($searchData['cp'])){{$searchData['cp']}}@endif">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label for="searchVille">Ville</label>
|
||||
<label for="searchVille">{{ __('Ville') }}</label>
|
||||
<input type="text" name="searchVille" id="searchVille" value="@if(isset($searchData['ville'])){{$searchData['ville']}}@endif">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label for="searchCountry">Pays</label>
|
||||
<label for="searchCountry">{{ __('Pays') }}</label>
|
||||
<select name="searchCountry" id="searchCountry">
|
||||
<option value="">Tous</option>
|
||||
<option value="250" @if(isset($searchData['pays']) && $searchData['pays'] == 250) selected @endif>France</option>
|
||||
<option value="056" @if(isset($searchData['pays']) && $searchData['pays'] == 056) selected @endif>Belgique</option>
|
||||
<option value="442" @if(isset($searchData['pays']) && $searchData['pays'] == 442) selected @endif>Luxembourg</option>
|
||||
<option value="0">{{ __('Tous') }}</option>
|
||||
@foreach (Countries::toArray() as $country)
|
||||
<option
|
||||
value="{{ $country->value }}"
|
||||
@if(isset($searchData['pays']) && $searchData['pays'] == $country->value)
|
||||
selected
|
||||
@endif
|
||||
>
|
||||
{{ $country->label }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
<input type="submit" value="Rechercher">
|
||||
<input type="submit" value="{{ __('Rechercher') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -50,28 +73,17 @@
|
|||
<div class="content-list">
|
||||
<table>
|
||||
<thead>
|
||||
<th>Ref</th>
|
||||
<th>Nom</th>
|
||||
<th>Email</th>
|
||||
<th>Code Postal</th>
|
||||
<th>Ville</th>
|
||||
<th>Pays</th>
|
||||
<th>{{ __('Ref') }}</th>
|
||||
<th>{{ __('Nom') }}</th>
|
||||
<th>{{ __('Email') }}</th>
|
||||
<th>{{ __('Code Postal') }}</th>
|
||||
<th>{{ __('Ville') }}</th>
|
||||
<th>{{ __('Pays') }}</th>
|
||||
</thead>
|
||||
@foreach ($contacts as $contact)
|
||||
@php
|
||||
switch ($contact->contact_country) {
|
||||
case 250:
|
||||
$contact->contact_country = 'France';
|
||||
break;
|
||||
case 56:
|
||||
$contact->contact_country = 'Belgique';
|
||||
break;
|
||||
case 442:
|
||||
$contact->contact_country = 'Luxembourg';
|
||||
break;
|
||||
default:
|
||||
$contact->contact_country = 'France';
|
||||
break;
|
||||
if (!in_array($contact->contact_country, Countries::toValues())) {
|
||||
$contact->contact_country = 250;
|
||||
}
|
||||
@endphp
|
||||
<tr>
|
||||
|
|
@ -80,7 +92,7 @@
|
|||
<td>{{ $contact->contact_email }}</td>
|
||||
<td>{{ $contact->contact_cp }}</td>
|
||||
<td>{{ $contact->contact_ville }}</td>
|
||||
<td>{{ $contact->contact_country }}</td>
|
||||
<td>{{ Countries::make($contact->contact_country)->label }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
<tfoot>
|
||||
|
|
|
|||
|
|
@ -11,186 +11,192 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
<h2><i class="fas fa-ticket-alt"></i> Nouveau Coupon</h2>
|
||||
{!! Form::open(['route' => 'coupon.store', 'enctype' => 'multipart/form-data']) !!}
|
||||
<h2>
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
{{ __('Nouveau Coupon') }}
|
||||
</h2>
|
||||
<form method="POST" action="{{ route('coupon.store') }}" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_code', 'Code de traitement *') !!}
|
||||
{!! Form::input('text', 'coupon_code', null, ['required']) !!}
|
||||
<label>{{ __('Code de traitement') }} *</label>
|
||||
<input type="text" name="coupon_code" value="{{ old('coupon_code') }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_name', 'Nom interne *') !!}
|
||||
{!! Form::input('text', 'coupon_name', null, ['required']) !!}
|
||||
<label>{{ __('Nom interne') }} *</label>
|
||||
<input type="text" name="coupon_name" value="{{ old('coupon_name') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_value', 'Valeur faciale *') !!}
|
||||
{!! Form::number('coupon_value', null, ['step' => '0.05', 'required']) !!}
|
||||
<label>{{ __('Valeur faciale') }} *</label>
|
||||
<input type="number" name="coupon_value" step="0.05" value="{{ old('coupon_value') }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('initial_quantity', 'Quantité initiale *') !!}
|
||||
{!! Form::text('initial_quantity', null, ['required']) !!}
|
||||
<label>{{ __('Quantité initiale') }} *</label>
|
||||
<input type="text" name="initial_quantity" value="{{ old('initial_quantity') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_norme', 'Activer la Norme GS1') !!}
|
||||
{!! Form::checkbox('coupon_norme', 1, false, array('id'=>'coupon_norme')) !!}
|
||||
{!! Form::label('coupon_norme', 'Activer') !!}
|
||||
<label for="coupon_norme">{{ __('Activer la Norme GS1') }}</label>
|
||||
<input type="checkbox" id="coupon_norme" name="coupon_norme" value="1" {{ (old('coupon_norme') === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_norme">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_seuil_alert', 'Seuil d\'alerte *') !!}
|
||||
{!! Form::number('coupon_seuil_alert', 100, ['required']) !!}
|
||||
<label>{{ __("Seuil d'alerte") }} *</label>
|
||||
<input type="number" name="coupon_seuil_alert" value="{{ !empty(old('coupon_seuil_alert')) ? old('coupon_seuil_alert') : 100 }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_enablelimitquantity', 'Activer La limite de quantité') !!}
|
||||
{!! Form::checkbox('coupon_enablelimitquantity', 1, false, array('id'=>'coupon_enablelimitquantity')) !!}
|
||||
{!! Form::label('coupon_enablelimitquantity', 'Activer') !!}
|
||||
<label for="coupon_enablelimitquantity">{{ __('Activer La limite de quantité') }}</label>
|
||||
<input type="checkbox" id="coupon_enablelimitquantity" name="coupon_enablelimitquantity" value="1" {{ (old('coupon_enablelimitquantity') === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_enablelimitquantity">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_enablelimitperiod', 'Activer la limite sur une période') !!}
|
||||
{!! Form::checkbox('coupon_enablelimitperiod', 1, false, array('id'=>'coupon_enablelimitperiod')) !!}
|
||||
{!! Form::label('coupon_enablelimitperiod', 'Activer') !!}
|
||||
<label for="coupon_enablelimitperiod">{{ __('Activer la limite sur une période') }}</label>
|
||||
<input type="checkbox" id="coupon_enablelimitperiod" name="coupon_enablelimitperiod" value="1" {{ (old('coupon_enablelimitperiod') === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_enablelimitperiod">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field enablelimitquantity">
|
||||
{!! Form::label('coupon_limitquantity', 'Limiter la diffusion à') !!}
|
||||
<label>{{ __('Limiter la diffusion à') }}</label>
|
||||
<span>
|
||||
{!! Form::number('coupon_limitquantity', null, ['class'=>'small']) !!} coupons
|
||||
<input type="number" name="coupon_limitquantity" value="{{ old('coupon_limitquantity') }}" class="small"> {{ __('coupons') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-field enablelimitperiod">
|
||||
{!! Form::label('coupon_limitperiod', 'Limiter la diffusion à une offre tous les') !!}
|
||||
<label>{{ __('Limiter la diffusion à une offre tous les') }}</label>
|
||||
<span>
|
||||
{!! Form::number('coupon_limitperiod', null, ['class'=>'small']) !!} jours
|
||||
<input type="number" name="coupon_limitperiod" value="{{ old('coupon_limitperiod') }}" class="small"> {{ __('jours') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<h4>Validité</h4>
|
||||
<h4>{{ __('Validité') }}</h4>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_mindatediffusion', 'Date de début de diffusion') !!}
|
||||
{!! Form::date('coupon_mindatediffusion') !!}
|
||||
<label>{{ __('Date de début de diffusion') }}</label>
|
||||
<input type="date" name="coupon_mindatediffusion">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_maxdatediffusion', 'Date de fin de diffusion') !!}
|
||||
{!! Form::date('coupon_maxdatediffusion') !!}
|
||||
<label>{{ __('Date de fin de diffusion') }}</label>
|
||||
<input type="date" name="coupon_maxdatediffusion">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_validity', 'Durée de validité à l\'impression') !!}
|
||||
<span>
|
||||
{!! Form::number('coupon_validity', 30, ['class'=>'small', 'required']) !!} jours
|
||||
</span>
|
||||
</div>
|
||||
<label>{{ __("Durée de validité à l'impression") }}</label>
|
||||
<span>
|
||||
<input type="number" name="coupon_validity" value="{{ !empty(old('coupon_validity')) ? old('coupon_validity') : 30 }}" class="small" required> {{ __('jours') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_maxdatevalidity', 'Date de fin de validité') !!}
|
||||
{!! Form::date('coupon_maxdatevalidity') !!}
|
||||
<label>{{ __('Date de fin de validité') }}</label>
|
||||
<input type="date" name="coupon_maxdatevalidity" value="{{ old('coupon_maxdatevalidity') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="calendar">
|
||||
<h4><i class="fas fa-plus-square addcalendar"></i> Calendrier de diffusion</h4>
|
||||
<h4><i class="fas fa-plus-square addcalendar"></i> {{ __('Calendrier de diffusion') }}</h4>
|
||||
</div>
|
||||
<h4>Vignettes</h4>
|
||||
<h4>{{ __('Vignettes') }}</h4>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail1', 'Vignette Desktop active') !!}
|
||||
{!! Form::file('coupon_thumbnail1', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail1">{{ __('Vignette Desktop active') }}</label>
|
||||
<input type="file" id="coupon_thumbnail1" name="coupon_thumbnail1" class="input-file">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail2', 'Vignette Desktop grise') !!}
|
||||
{!! Form::file('coupon_thumbnail2', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail2">{{ __('Vignette Desktop grise') }}</label>
|
||||
<input type="file" id="coupon_thumbnail2" name="coupon_thumbnail2" class="input-file">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail3', 'Vignette Mobile active') !!}
|
||||
{!! Form::file('coupon_thumbnail3', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail3">{{ __('Vignette Mobile active') }}</label>
|
||||
<input type="file" id="coupon_thumbnail3" name="coupon_thumbnail3" class="input-file">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail4', 'Vignette Mobile grise') !!}
|
||||
{!! Form::file('coupon_thumbnail4', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail4">{{ __('Vignette Mobile grise') }}</label>
|
||||
<input type="file" id="coupon_thumbnail4" name="coupon_thumbnail4" class="input-file">
|
||||
</div>
|
||||
</div>
|
||||
<h4>Informations pour génération</h4>
|
||||
<?php
|
||||
<h4>{{ __('Informations pour génération') }}</h4>
|
||||
<?php
|
||||
$mentions = "Sur remise de ce bon en caisse, votre magasin vous fera bénéficier\r\nde la remise correspondante. Aucune monnaie ne sera rendue en\r\ncaisse. Toute photocopie ou utilisation de ce bon pour tout autre\r\nachat qu'un des produits mentionnés ci-dessous donnera lieu à des\r\npoursuites. Valable en France métropolitaine seulement (Corse\r\ncomprise) dans la période de validité. Offre non cumulable avec\r\nun autre bon de réduction ou offre promotionnelle. Ne peut être\r\nvendu.";
|
||||
?>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_treatment_center', 'Centre de traitement *') !!}
|
||||
{!! Form::select('coupon_treatment_center', ['HighCo', 'Sogec']) !!}
|
||||
<label>{{ __('Centre de traitement') }} *</label>
|
||||
<select name="coupon_treatment_center">
|
||||
<option value="0" @if (old('coupon_treatment_center') === 0) selected @endif>HighCo</option>
|
||||
<option value="1" @if (old('coupon_treatment_center') === 1) selected @endif>Sogec</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_legal_mentions_splitted', 'Activer les mentions internationnales') !!}
|
||||
{!! Form::checkbox('coupon_legal_mentions_splitted', 1, false) !!}
|
||||
{!! Form::label('coupon_legal_mentions_splitted', 'Activer') !!}
|
||||
<label for="coupon_legal_mentions_splitted">{{ __('Activer les mentions internationnales') }}</label>
|
||||
<input type="checkbox" id="coupon_legal_mentions_splitted" name="coupon_legal_mentions_splitted" value="1" {{ (old('coupon_legal_mentions_splitted') === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_legal_mentions_splitted">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field-textarea">
|
||||
{!! Form::label('coupon_validity_text', 'Texte de validité *') !!}
|
||||
{!! Form::textarea('coupon_validity_text', null, ['required']) !!}
|
||||
<label>{{ __('Texte de validité') }} *</label>
|
||||
<textarea name="coupon_validity_text" cols="30" rows="10" required>{{ old('coupon_validity_text') }}</textarea>
|
||||
</div>
|
||||
<div class="form-field-textarea">
|
||||
{!! Form::label('coupon_legal_mentions', 'Mentions légales *') !!}
|
||||
{!! Form::textarea('coupon_legal_mentions', $mentions, ['required']) !!}
|
||||
<label>{{ __('Mentions légales') }} *</label>
|
||||
<textarea name="coupon_legal_mentions" cols="30" rows="10" required>{{ !empty(old('coupon_legal_mentions')) ? old('coupon_legal_mentions') : $mentions }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<div class="title">
|
||||
{!! Form::label('coupon_decoration_image', 'Image de décoration *') !!}
|
||||
<span>(280x260px ou 280x160px si GS1)</span>
|
||||
<span>Formats : JPG ou PNG</span>
|
||||
<label for="coupon_decoration_image">{{ __('Image de décoration') }} *</label>
|
||||
<span>{{ __('280x260px ou 280x160px si GS1') }}</span>
|
||||
<span>{{ __('Formats : JPG ou PNG') }}</span>
|
||||
</div>
|
||||
{!! Form::file('coupon_decoration_image', ['class' => 'input-file', 'required', 'accept' => '.jpg,.jpeg,.png']) !!}
|
||||
<input type="file" id="coupon_decoration_image" name="coupon_decoration_image" class="input-file" accept=".jpg,.jpeg,.png">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<div class="title">
|
||||
{!! Form::label('coupon_logo_image', 'Logo à afficher *') !!}
|
||||
<span>135x70px</span>
|
||||
<span>Formats : JPG ou PNG</span>
|
||||
<label for="coupon_logo_image">{{ __('Logo à afficher') }} *</label>
|
||||
<span>{{ __('135x70px') }}</span>
|
||||
<span>{{ __('Formats : JPG ou PNG') }}</span>
|
||||
</div>
|
||||
{!! Form::file('coupon_logo_image', ['class' => 'input-file', 'required']) !!}
|
||||
<input type="file" id="coupon_logo_image" name="coupon_logo_image" class="input-file" accept=".jpg,.jpeg,.png">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_rcs', 'RCS du site *') !!}
|
||||
{!! Form::text('coupon_rcs', $site->site_rcs, ['required']) !!}
|
||||
<label>{{ __('RCS du site') }} *</label>
|
||||
<input type="text" name="coupon_rcs" value="{{ !empty(old('coupon_rcs')) ? old('coupon_rcs') : $site->site_rcs }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_site_contact', 'Contact mail *') !!}
|
||||
{!! Form::text('coupon_site_contact', $site->site_contact, ['required']) !!}
|
||||
<label>{{ __('Contact mail') }} *</label>
|
||||
<input type="text" name="coupon_site_contact" value="{{ !empty(old('coupon_site_contact')) ? old('coupon_site_contact') : $site->site_contact }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field gs1code">
|
||||
<div class="title">
|
||||
{!! Form::label('coupon_gs1code', 'Image du code barre GS1 *') !!}
|
||||
<span>Formats : JPG</span>
|
||||
<label for="coupon_gs1code">{{ __('Image du code barre GS1') }} *</label>
|
||||
<span>{{ __('Formats : JPG') }}</span>
|
||||
</div>
|
||||
{!! Form::file('coupon_gs1code', ['class' => 'input-file']) !!}
|
||||
<input type="file" id="coupon_gs1code" name="coupon_gs1code" class="input-file" accept=".jpg">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_published', 'Publié ?') !!}
|
||||
{!! Form::checkbox('coupon_published', 1, false, array('id'=>'coupon_published')) !!}
|
||||
{!! Form::label('coupon_published', 'Activer') !!}
|
||||
<label for="coupon_published">{{ __('Publié ?') }}</label>
|
||||
<input type="checkbox" id="coupon_published" name="coupon_published" value="1" {{ (old('coupon_published') === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_published">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{!! Form::hidden('site_id', session()->get('site')->id) !!}
|
||||
<!-- TODO : Revoir le passage du site_id -->
|
||||
<input type="hidden" name="site_id" value="{{ session()->get('site')->id }}">
|
||||
<div class="form-field submit">
|
||||
<span>Les champs avec un * sont obligatoires</span>
|
||||
{!! Form::submit('Créer coupon') !!}
|
||||
<span>{{ __('Les champs avec un * sont obligatoires') }}</span>
|
||||
<input type="submit" value="{{ __('Créer coupon') }}">
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -11,90 +11,94 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
<h2><i class="fas fa-ticket-alt"></i> Editer le Coupon</h2>
|
||||
{!! Form::model($coupon, ['route' => ['coupon.update', $coupon], 'enctype' => 'multipart/form-data']) !!}
|
||||
<h2>
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
{{ __('Editer le Coupon')}}
|
||||
</h2>
|
||||
<form method="POST" action="{{ route('coupon.update', $coupon) }}" enctype="multipart/form-data">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_code', 'Code de traitement *') !!}
|
||||
{!! Form::input('text', 'coupon_code', $coupon->coupon_code, ['required']) !!}
|
||||
<label>{{ __('Code de traitement') }} *</label>
|
||||
<input type="text" name="coupon_code" value="{{ $coupon->coupon_code }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_name', 'Nom interne *') !!}
|
||||
{!! Form::input('text', 'coupon_name', $coupon->coupon_name, ['required']) !!}
|
||||
<label>{{ __('Nom interne') }} *</label>
|
||||
<input type="text" name="coupon_name" value="{{ $coupon->coupon_name }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_value', 'Valeur faciale *') !!}
|
||||
{!! Form::number('coupon_value', null, ['step' => '0.05', 'required']) !!}
|
||||
<label>{{ __('Valeur faciale') }} *</label>
|
||||
<input type="number" name="coupon_value" value="{{ $coupon->coupon_value }}" step="0.05" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_norme', 'Activer la Norme GS1') !!}
|
||||
{!! Form::checkbox('coupon_norme', 1, ($coupon->coupon_norme ==1?true:null), array('id'=>'coupon_norme')) !!}
|
||||
{!! Form::label('coupon_norme', 'Activer') !!}
|
||||
<label for="coupon_norme">{{ __('Activer la Norme GS1') }}</label>
|
||||
<input type="checkbox" id="coupon_norme" name="coupon_norme" value="1" {{ ($coupon->coupon_norme === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_norme">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_seuil_alert', 'Seuil d\'alerte *') !!}
|
||||
{!! Form::number('coupon_seuil_alert', $coupon->coupon_seuil_alert, ['required']) !!}
|
||||
<label>{{ __("Seuil d'alerte") }} *</label>
|
||||
<input type="number" name="coupon_seuil_alert" value="{{ $coupon->coupon_seuil_alert }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_enablelimitquantity', 'Activer La limite de quantité') !!}
|
||||
{!! Form::checkbox('coupon_enablelimitquantity', 1, ($coupon->coupon_enablelimitquantity ==1?true:null), array('id'=>'coupon_enablelimitquantity')) !!}
|
||||
{!! Form::label('coupon_enablelimitquantity', 'Activer') !!}
|
||||
<label for="coupon_enablelimitquantity">{{ __('Activer La limite de quantité') }}</label>
|
||||
<input type="checkbox" id="coupon_enablelimitquantity" name="coupon_enablelimitquantity" value="1" {{ ($coupon->coupon_enablelimitquantity === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_enablelimitquantity">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_enablelimitperiod', 'Activer la limite sur une période') !!}
|
||||
{!! Form::checkbox('coupon_enablelimitperiod', 1, ($coupon->coupon_enablelimitperiod ==1?true:null), array('id'=>'coupon_enablelimitperiod')) !!}
|
||||
{!! Form::label('coupon_enablelimitperiod', 'Activer') !!}
|
||||
<label for="coupon_enablelimitperiod">{{ __('Activer la limite sur une période') }}</label>
|
||||
<input type="checkbox" id="coupon_enablelimitperiod" name="coupon_enablelimitperiod" value="1" {{ ($coupon->coupon_enablelimitperiod === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_enablelimitperiod">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field enablelimitquantity">
|
||||
{!! Form::label('coupon_limitquantity', 'Limiter la diffusion à') !!}
|
||||
<label>{{ __('Limiter la diffusion à') }}</label>
|
||||
<span>
|
||||
{!! Form::number('coupon_limitquantity', null, ['class'=>'small']) !!} coupons
|
||||
<input type="number" name="coupon_limitquantity" class="small" value="{{ $coupon->coupon_limitquantity }}"> {{ __('coupons') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-field enablelimitperiod">
|
||||
{!! Form::label('coupon_limitperiod', 'Limiter la diffusion à une offre tous les') !!}
|
||||
<label>{{ __('Limiter la diffusion à une offre tous les') }}</label>
|
||||
<span>
|
||||
{!! Form::number('coupon_limitperiod', null, ['class'=>'small']) !!} jours
|
||||
<input type="number" name="coupon_limitperiod" value="{{ $coupon->coupon_limitperiod }}" class="small"> {{ __('jours') }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<h4>Validité</h4>
|
||||
<h4>{{ __('Validité') }}</h4>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_mindatediffusion', 'Date de début de diffusion') !!}
|
||||
{!! Form::date('coupon_mindatediffusion') !!}
|
||||
<label>{{ __('Date de début de diffusion') }}</label>
|
||||
<input type="date" name="coupon_mindatediffusion" value="{{ $coupon->coupon_mindatediffusion }}"">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_maxdatediffusion', 'Date de fin de diffusion') !!}
|
||||
{!! Form::date('coupon_maxdatediffusion') !!}
|
||||
<label>{{ __('Date de fin de diffusion') }}</label>
|
||||
<input type="date" name="coupon_maxdatediffusion" value="{{ $coupon->coupon_maxdatediffusion }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_validity', 'Durée de validité à l\'impression') !!}
|
||||
<label>{{ __("Durée de validité à l'impression") }}</label>
|
||||
<span>
|
||||
{!! Form::number('coupon_validity', null, ['class'=>'small', 'required']) !!} jours
|
||||
<input type="number" name="coupon_validity" value="{{ $coupon->coupon_validity }}" class="small" required> {{ __('jours') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_maxdatevalidity', 'Date de fin de validité') !!}
|
||||
{!! Form::date('coupon_maxdatevalidity') !!}
|
||||
<label>{{ __('Date de fin de validité') }}</label>
|
||||
<input type="date" name="coupon_maxdatevalidity" value="{{ $coupon->coupon_maxdatevalidity }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="calendar">
|
||||
<h4><i class="fas fa-plus-square addcalendar"></i> Calendrier de diffusion</h4>
|
||||
<h4><i class="fas fa-plus-square addcalendar"></i> {{ __('Calendrier de diffusion') }}</h4>
|
||||
@foreach ($coupon->calendriers()->get() as $calendrier)
|
||||
<div class="form-field-calendar">
|
||||
<input type="date" name="startdate[]" value="{{ $calendrier->calendrier_startdate->format('Y-m-d') }}">
|
||||
|
|
@ -103,12 +107,12 @@
|
|||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<h4>Mouvements</h4>
|
||||
<h4>{{ __('Mouvements') }}</h4>
|
||||
<div class="form-field">
|
||||
<table>
|
||||
<thead>
|
||||
<th>Date</th>
|
||||
<th class="center">Quantité</th>
|
||||
<th>{{ __('Date') }}</th>
|
||||
<th class="center">{{ __('Quantité') }}</th>
|
||||
<th></th>
|
||||
</thead>
|
||||
@foreach ($coupon->mouvements()->get() as $mouvement)
|
||||
|
|
@ -126,136 +130,138 @@
|
|||
</table>
|
||||
|
||||
</div>
|
||||
<h4>Vignettes</h4>
|
||||
<h4>{{ __('Vignettes') }}</h4>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail1', 'Vignette Desktop active') !!}
|
||||
{!! Form::file('coupon_thumbnail1', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail1">{{ __('Vignette Desktop active') }}</label>
|
||||
<input type="file" id="coupon_thumbnail1" name="coupon_thumbnail1" class="input-file">
|
||||
@if($coupon->coupon_thumbnail1 != "")
|
||||
<figure class="figure-desktop">
|
||||
<img src="{{ asset($coupon->coupon_thumbnail1) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
@endif
|
||||
{!! Form::input('hidden', 'coupon_thumbnail1_hidden', $coupon->coupon_thumbnail1) !!}
|
||||
<input type="hidden" name="coupon_thumbnail1_hidden" value="{{ $coupon->coupon_thumbnail1 }}">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail2', 'Vignette Desktop grise') !!}
|
||||
{!! Form::file('coupon_thumbnail2', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail2">{{ __('Vignette Desktop grise') }}</label>
|
||||
<input type="file" id="coupon_thumbnail2" name="coupon_thumbnail2" class="input-file">
|
||||
@if($coupon->coupon_thumbnail2 != "")
|
||||
<figure class="figure-desktop">
|
||||
<img src="{{ asset($coupon->coupon_thumbnail2) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
@endif
|
||||
{!! Form::input('hidden', 'coupon_thumbnail2_hidden', $coupon->coupon_thumbnail2) !!}
|
||||
<input type="hidden" name="coupon_thumbnail2_hidden" value="{{ $coupon->coupon_thumbnail2 }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split align-start">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail3', 'Vignette Mobile active') !!}
|
||||
{!! Form::file('coupon_thumbnail3', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail3">{{ __('Vignette Mobile active') }}</label>
|
||||
<input type="file" id="coupon_thumbnail3" name="coupon_thumbnail3" class="input-file">
|
||||
@if($coupon->coupon_thumbnail3 != "")
|
||||
<figure class="figure-mobile">
|
||||
<img src="{{ asset($coupon->coupon_thumbnail3) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
@endif
|
||||
{!! Form::input('hidden', 'coupon_thumbnail3_hidden', $coupon->coupon_thumbnail3) !!}
|
||||
<input type="hidden" name="coupon_thumbnail3_hidden" value="{{ $coupon->coupon_thumbnail3 }}">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_thumbnail4', 'Vignette Mobile grise') !!}
|
||||
{!! Form::file('coupon_thumbnail4', ['class' => 'input-file']) !!}
|
||||
<label for="coupon_thumbnail4">{{ __('Vignette Mobile grise') }}</label>
|
||||
<input type="file" id="coupon_thumbnail4" name="coupon_thumbnail4" class="input-file">
|
||||
@if($coupon->coupon_thumbnail4 != "")
|
||||
<figure class="figure-mobile">
|
||||
<img src="{{ asset($coupon->coupon_thumbnail4) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
@endif
|
||||
{!! Form::input('hidden', 'coupon_thumbnail4_hidden', $coupon->coupon_thumbnail4) !!}
|
||||
<input type="hidden" name="coupon_thumbnail4_hidden" value="{{ $coupon->coupon_thumbnail4 }}">
|
||||
</div>
|
||||
</div>
|
||||
<h4>Informations pour génération</h4>
|
||||
<h4>{{ __('Informations pour génération') }}</h4>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_treatment_center', 'Centre de traitement *') !!}
|
||||
{!! Form::select('coupon_treatment_center', ['HighCo', 'Sogec']) !!}
|
||||
<label>{{ __('Centre de traitement') }} *</label>
|
||||
<select name="coupon_treatment_center">
|
||||
<option value="0" @if ($coupon->coupon_treatment_center === 0) selected @endif>HighCo</option>
|
||||
<option value="1" @if ($coupon->coupon_treatment_center === 1) selected @endif>Sogec</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_legal_mentions_splitted', 'Activer les mentions internationnales') !!}
|
||||
{!! Form::checkbox('coupon_legal_mentions_splitted', 1, ($coupon->coupon_legal_mentions_splitted ==1?true:null)) !!}
|
||||
{!! Form::label('coupon_legal_mentions_splitted', 'Activer') !!}
|
||||
<label for="coupon_legal_mentions_splitted">{{ __('Activer les mentions internationnales') }}</label>
|
||||
<input type="checkbox" id="coupon_legal_mentions_splitted" name="coupon_legal_mentions_splitted" value="1" {{ ($coupon->coupon_legal_mentions_splitted === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_legal_mentions_splitted">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field-textarea">
|
||||
{!! Form::label('coupon_validity_text', 'Texte de validité *') !!}
|
||||
{!! Form::textarea('coupon_validity_text', null, ['required']) !!}
|
||||
<label>{{ __('Texte de validité') }} *</label>
|
||||
<textarea name="coupon_validity_text" cols="30" rows="10" required>{{ $coupon->coupon_validity_text }}</textarea>
|
||||
</div>
|
||||
<div class="form-field-textarea">
|
||||
{!! Form::label('coupon_legal_mentions', 'Mentions légales *') !!}
|
||||
{!! Form::textarea('coupon_legal_mentions', null, ['required']) !!}
|
||||
<label>{{ __('Mentions légales') }} *</label>
|
||||
<textarea name="coupon_legal_mentions" cols="30" rows="10" required>{{ $coupon->coupon_legal_mentions }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split align-start">
|
||||
<div class="form-field">
|
||||
<div class="title">
|
||||
{!! Form::label('coupon_decoration_image', 'Image de décoration *') !!}
|
||||
<span>280x260px ou 280x160px si GS1</span>
|
||||
<span>Formats : JPG ou PNG</span>
|
||||
<label for="coupon_decoration_image">{{ __('Image de décoration') }} *</label>
|
||||
<span>{{ __('280x260px ou 280x160px si GS1') }}</span>
|
||||
<span>{{ __('Formats : JPG ou PNG') }}</span>
|
||||
</div>
|
||||
|
||||
{!! Form::file('coupon_decoration_image', ['class' => 'input-file', 'accept' => '.jpg,.jpeg,.png']) !!}
|
||||
<input type="file" id="coupon_decoration_image" name="coupon_decoration_image" class="input-file" accept=".jpg,.jpeg,.png">
|
||||
@if($coupon->coupon_decoration_image != "")
|
||||
<figure class="figure-desktop">
|
||||
<img src="{{ asset($coupon->coupon_decoration_image) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
@endif
|
||||
{!! Form::input('hidden', 'coupon_decoration_image_hidden', $coupon->coupon_decoration_image) !!}
|
||||
<input type="hidden" name="coupon_decoration_image_hidden" value="{{ $coupon->coupon_decoration_image }}">
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<div class="title">
|
||||
{!! Form::label('coupon_logo_image', 'Logo à afficher *') !!}
|
||||
<span>135x70px</span>
|
||||
<span>Formats : JPG ou PNG</span>
|
||||
<label for="coupon_logo_image">{{ __('Logo à afficher') }} *</label>
|
||||
<span>{{ __('135x70px') }}</span>
|
||||
<span>{{ __('Formats : JPG ou PNG') }}</span>
|
||||
</div>
|
||||
{!! Form::file('coupon_logo_image', ['class' => 'input-file']) !!}
|
||||
<input type="file" id="coupon_logo_image" name="coupon_logo_image" class="input-file" accept=".jpg,.jpeg,.png">
|
||||
@if($coupon->coupon_logo_image != "")
|
||||
<figure class="figure-desktop">
|
||||
<img src="{{ asset($coupon->coupon_logo_image) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
@endif
|
||||
{!! Form::input('hidden', 'coupon_logo_image_hidden', $coupon->coupon_logo_image) !!}
|
||||
<input type="hidden" name="coupon_logo_image_hidden" value="$coupon->coupon_logo_image">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_rcs', 'RCS du site *') !!}
|
||||
{!! Form::text('coupon_rcs', null, ['required']) !!}
|
||||
<label>{{ __('RCS du site') }} *</label>
|
||||
<input type="text" name="coupon_rcs" value="{{ $coupon->coupon_rcs }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_site_contact', 'Contact mail *') !!}
|
||||
{!! Form::text('coupon_site_contact', null, ['required']) !!}
|
||||
<label>{{ __('Contact mail') }} *</label>
|
||||
<input type="text" name="coupon_site_contact" value="{{ $coupon->coupon_site_contact }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field gs1code">
|
||||
<div class="title">
|
||||
{!! Form::label('coupon_gs1code', 'Image du code barre GS1 *') !!}
|
||||
<span>Formats : JPG</span>
|
||||
<label for="coupon_gs1code">{{ __('Image du code barre GS1') }} *</label>
|
||||
<span>{{ __('Formats : JPG') }}</span>
|
||||
</div>
|
||||
{!! Form::file('coupon_gs1code', ['class' => 'input-file']) !!}
|
||||
<input type="file" id="coupon_gs1code" name="coupon_gs1code" class="input-file" accept=".jpg">
|
||||
@if($coupon->coupon_gs1code != "")
|
||||
<figure class="figure-mobile">
|
||||
<img src="{{ asset($coupon->coupon_gs1code) }}" alt="{{ $coupon->coupon_name }}">
|
||||
</figure>
|
||||
{!! Form::input('hidden', 'coupon_gs1code_image_hidden', $coupon->coupon_gs1code, array('id'=>'coupon_gs1code_image_hidden')) !!}
|
||||
<input type="hidden" name="coupon_gs1code_image_hidden" value="{{ $coupon->coupon_gs1code }}">
|
||||
@endif
|
||||
|
||||
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('coupon_published', 'Publié ?') !!}
|
||||
{!! Form::checkbox('coupon_published', 1, ($coupon->coupon_published ==1?true:null), array('id'=>'coupon_published')) !!}
|
||||
{!! Form::label('coupon_published', 'Activer') !!}
|
||||
<label for="coupon_published">{{ __('Publié ?') }}</label>
|
||||
<input type="checkbox" id="coupon_published" name="coupon_published" value="1" {{ ($coupon->coupon_published === 1 ? 'checked' : null) }}>
|
||||
<label for="coupon_published">{{ __('Activer') }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4>Bon généré :</h4>
|
||||
<h4>{{ __('Bon généré') }} :</h4>
|
||||
<div class="form-split" style="justify-content:center;">
|
||||
@if($coupon->coupon_image != "")
|
||||
<figure class="figure-mobile">
|
||||
|
|
@ -263,12 +269,13 @@
|
|||
</figure>
|
||||
@endif
|
||||
</div>
|
||||
{!! Form::hidden('site_id', session()->get('site')->id) !!}
|
||||
<!-- TODO : Revoir le passage du site_id -->
|
||||
<input type="hidden" name="site_id" value="{{ session()->get('site')->id }}">
|
||||
|
||||
<div class="form-field submit">
|
||||
{!! Form::submit('Mettre à jour') !!}
|
||||
<input type="submit" value="{{ __('Mettre à jour') }}">
|
||||
</div>
|
||||
|
||||
{!! Form::close() !!}
|
||||
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,7 +1,14 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-ticket-alt"></i> Coupons <a href="{{ route('coupon.create') }}" class="add-button"><i class="fas fa-plus-square"></i> Ajouter</a></h2>
|
||||
<h2>
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
{{ __('Coupons') }}
|
||||
<a href="{{ route('coupon.create') }}" class="add-button">
|
||||
<i class="fas fa-plus-square"></i>
|
||||
{{ __('Ajouter') }}
|
||||
</a>
|
||||
</h2>
|
||||
<div class="campagne-select"></div>
|
||||
<div class="content-list">
|
||||
<table>
|
||||
|
|
@ -38,9 +45,10 @@
|
|||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?php echo csrf_token(); ?>">
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?= csrf_token(); ?>">
|
||||
</div>
|
||||
{!! Form::open(['id' => 'delete-hidden']) !!}
|
||||
<form id="delete-hidden" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
{!! Form::close() !!}
|
||||
</form>
|
||||
@endsection
|
||||
|
|
|
|||
81
resources/views/customers/index.blade.php
Normal file
81
resources/views/customers/index.blade.php
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h2>
|
||||
<i class="fas fa-cogs"></i>
|
||||
{{ __('Customers') }} {{ $site->site_nom }}
|
||||
</h2>
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="user-app">
|
||||
<div class="heading">
|
||||
<form>
|
||||
@csrf
|
||||
<input type="email" name="email" placeholder="{{ __('Adresse email') }}" value="{{ $email }}" minlength="5" required>
|
||||
<input type="submit" value="{{ __('Rechercher') }}">
|
||||
</form>
|
||||
</div>
|
||||
@if (!is_null($email))
|
||||
<table>
|
||||
<thead>
|
||||
<th>{{ __('Email') }}</th>
|
||||
<th>{{ __('Pays') }}</th>
|
||||
<th></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (!count($campaigns))
|
||||
<tr>
|
||||
<td colspan="3">{{ __('Aucun résultat.') }}</td>
|
||||
</tr>
|
||||
@else
|
||||
<tr>
|
||||
<td>{{ $customer->email }}</td>
|
||||
<td>{{ Countries::make($customer->country)->label }}</td>
|
||||
<td><a href="#">Détails</a></td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
@dump($campaigns)
|
||||
@foreach ($campaigns as $campaign)
|
||||
<div class="campagne" data-campid="102" data-campsite="LGL89">
|
||||
<h4>{{ $campaign->camp_name }}</h4>
|
||||
<p>Type : {{ $campaign->camp_type->label }}</p>
|
||||
<div class="widget">
|
||||
<div class="widgetContent">
|
||||
<p>Pas de contrôle à réinitialiser</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
{{-- <div class="contactWidgets">
|
||||
<div class="campagne" data-campid="102" data-campsite="LGL89">
|
||||
<h4>Mur BR Le Gaulois</h4>
|
||||
<p>Type : Mur</p>
|
||||
<div class="widget">
|
||||
<div class="widgetContent">
|
||||
<p>Pas de contrôle à réinitialiser</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="campagne" data-campid="762" data-campsite="LGL89">
|
||||
<h4>OP Gauloisirs</h4>
|
||||
<p>Type : Panier</p>
|
||||
<div class="widget">
|
||||
<div class="widgetContent">
|
||||
<input type="submit" class="update-basket" data-panier="" value="Valider">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,29 +1,28 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-file-export"></i> Export des données coupons</h2>
|
||||
<h2>
|
||||
<i class="fas fa-file-export"></i>
|
||||
{{ __('Export des données coupons') }}
|
||||
</h2>
|
||||
<div class="selector-export">
|
||||
<h4>Période :</h4>
|
||||
<h4>{{ __('Période') }} :</h4>
|
||||
<input type="date" name="startdate" id="startdate" value="{{ $startdate }}">
|
||||
<input type="date" name="enddate" id="enddate" value="{{ $enddate }}">
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?php echo csrf_token(); ?>">
|
||||
<a href="#" class="add-button export-data"><i class="fas fa-file-export"></i> Exporter les données</a>
|
||||
<input type="hidden" name="csrf" id="csrf" value="<?= csrf_token(); ?>">
|
||||
<a href="#" class="add-button export-data"><i class="fas fa-file-export"></i> {{ __('Exporter les données') }}</a>
|
||||
</div>
|
||||
@foreach ($sites as $site)
|
||||
|
||||
<h4>{{ $site->site_nom }} ({{ $site->site_id }})</h4>
|
||||
@if (isset($site->coupons) && $site->coupons->count()>0)
|
||||
@foreach ($site->coupons as $coupon)
|
||||
<div class="inputGroup-export">
|
||||
<input id="coupon[{{$coupon->coupon_id}}]" name="coupon[{{$coupon->coupon_id}}]" type="checkbox" value="{{$coupon->coupon_id}}"/>
|
||||
<label for="coupon[{{$coupon->coupon_id}}]">{{$coupon->coupon_name}}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@endforeach
|
||||
<div class="export-btn">
|
||||
<a href="#" class="add-button export-data"><i class="fas fa-file-export"></i> Exporter les données</a>
|
||||
<a href="#" class="add-button export-data"><i class="fas fa-file-export"></i> {{ __('Exporter les données') }}</a>
|
||||
<a href="" download class="dl-pdf"></a>
|
||||
</div>
|
||||
|
||||
|
|
@ -38,15 +37,19 @@
|
|||
if($(this).is(':checked')){
|
||||
ids.push($(this).val());
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
});
|
||||
if (ids.length === 0) {
|
||||
alert('{{ __('Vous devez sélectionner au moins un coupon.') }}');
|
||||
return;
|
||||
}
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/exportCoupon',
|
||||
url: '/bo/export/coupon',
|
||||
type: 'POST',
|
||||
data: {
|
||||
ids: ids,
|
||||
|
|
@ -54,11 +57,11 @@
|
|||
enddate: $('#enddate').val(),
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (response) {
|
||||
success: function (response) {
|
||||
$.each(response, function(index, element){
|
||||
$('.dl-pdf').attr("href", '/'+element);
|
||||
$('.dl-pdf').get(0).click();
|
||||
})
|
||||
})
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e.responseText);
|
||||
|
|
@ -67,4 +70,4 @@
|
|||
})
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@
|
|||
<div class="wrapper">
|
||||
<h1 style="text-align:center; margin-bottom:5px;">MesBR.eu</h1>
|
||||
<h2 style="text-align:center; margin:5px;">{{ $coupon->coupon_name }}</h2>
|
||||
<h3 style="margin-bottom:80px; margin-top:5px; text-align:center;">Diffusions du {{ date('d/m/Y', strtotime($startdate)) }} au {{ date('d/m/Y', strtotime($enddate)) }}</h3>
|
||||
<h3 style="margin-bottom:80px; margin-top:5px; text-align:center;">{{ __('Diffusions du') }} {{ date('d/m/Y', strtotime($startdate)) }} {{ __('au') }} {{ date('d/m/Y', strtotime($enddate)) }}</h3>
|
||||
<img style="width:80%; margin-left:10%; margin-bottom:20px;" src="{{ $coupon->coupon_image }}" alt="">
|
||||
<h3 style="margin:0; margin-bottom:10px;">Détail du coupon</h3>
|
||||
<h3 style="margin:0; margin-bottom:10px;">{{ __('Détail du coupon') }}</h3>
|
||||
<table style="font-size:12px;">
|
||||
<tr style="background-color:#2d2d2d; color:#FFF; text-align:center;">
|
||||
<th style="width:25%">Nom</th>
|
||||
<th style="width:15%">Code</th>
|
||||
<th style="width:10%">Quantité totale</th>
|
||||
<th style="width:10%">Qté totale diffusée</th>
|
||||
<th style="width:15%">Date de début de diffusion</th>
|
||||
<th style="width:15%">Date de fin de diffusion</th>
|
||||
<th style="width:25%">{{ __('Nom') }}</th>
|
||||
<th style="width:15%">{{ __('Code') }}</th>
|
||||
<th style="width:10%">{{ __('Quantité totale') }}</th>
|
||||
<th style="width:10%">{{ __('Qté totale diffusée') }}</th>
|
||||
<th style="width:15%">{{ __('Date de début de diffusion') }}</th>
|
||||
<th style="width:15%">{{ __('Date de fin de diffusion') }}</th>
|
||||
</tr>
|
||||
<tr style="background-color:#adb5bd; color:#000; text-align:center;">
|
||||
<td style="padding:5px 0;">{{ $coupon->coupon_name }}</td>
|
||||
|
|
@ -30,17 +30,17 @@
|
|||
@if($coupon->coupon_mindatediffusion != null)
|
||||
<td>{{ date('d/m/Y', strtotime($coupon->coupon_mindatediffusion)) }}</td>
|
||||
@else
|
||||
<td>n/c</td>
|
||||
<td>{{ __('n/c') }}</td>
|
||||
@endif
|
||||
@if($coupon->coupon_maxdatediffusion != null)
|
||||
<td>{{ date('d/m/Y', strtotime($coupon->coupon_maxdatediffusion)) }}</td>
|
||||
@else
|
||||
<td>n/c</td>
|
||||
<td>{{ __('n/c') }}</td>
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Graphique de diffusion sur la période du {{ date('d/m/Y', strtotime($startdate)) }} au {{ date('d/m/Y', strtotime($enddate)) }}</h3>
|
||||
<p style="margin-bottom:20px;">Nombre de coupons diffusés : {{ $coupon->couponPrinted }}</p>
|
||||
<h3>{{ __('Graphique de diffusion sur la période du') }} {{ date('d/m/Y', strtotime($startdate)) }} {{ __('au') }} {{ date('d/m/Y', strtotime($enddate)) }}</h3>
|
||||
<p style="margin-bottom:20px;">{{ __('Nombre de coupons diffusés') }} : {{ $coupon->couponPrinted }}</p>
|
||||
<img src="{{ $src }}" alt="">
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
<div class="title">
|
||||
<a href="{{ route('home') }}" class="logo">
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
<i class="fas fa-hand-holding"></i>
|
||||
<i class="fas fa-hand-holding"></i>
|
||||
</a>
|
||||
<h1>Mes BR</h1>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="marque">
|
||||
<img src="{{ asset(session()->get('current_logo')['site_logo']) }}" alt="Logo Marque">
|
||||
<i class="fas fa-angle-down"></i>
|
||||
|
|
@ -16,15 +16,15 @@
|
|||
<ul>
|
||||
@foreach (session()->get('marques') as $marque)
|
||||
<li>
|
||||
{!! Form::open(['route' => 'change_marque', 'class' => 'marques']) !!}
|
||||
<input type="hidden" name="current_route" value="{{session()->get('active_route')}}">
|
||||
<form action="{{ route('brand-change') }}" method="POST" class='marques'>
|
||||
@csrf
|
||||
<input type="hidden" name="site_id" value="{{ $marque['id'] }}">
|
||||
<button type="submit">{{$marque['site_nom']}}</button>
|
||||
{!! Form::close() !!}
|
||||
<button type="submit">{{$marque['site_nom']}}</button>
|
||||
</form>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</header>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<a href="{{ route('campagne.index') }}" class="menu-item @if(session()->get('active_route') == 'campagne') active @endif"><i class="fa fa-folder"><i class="fas fa-ticket-alt"></i></i> <span>Campagnes</span></a>
|
||||
<a href="{{ route('coupon.index') }}" class="menu-item @if(session()->get('active_route') == 'coupon') active @endif"><i class="fas fa-ticket-alt"></i> <span>Coupons</span></a>
|
||||
<a href="{{ route('contact.index') }}" class="menu-item @if(session()->get('active_route') == 'contact') active @endif"><i class="fas fa-users"></i> <span>Contacts</span></a>
|
||||
<a href="{{ route('customer.index', ['site' => session()->has('site') ? session('site')->id : 1]) }}" class="menu-item @if(session()->get('active_route') == 'customer') active @endif"><i class="fas fa-users"></i> <span>{{ __('Customers') }}</span></a>
|
||||
@endif
|
||||
@if(Auth::user()->roles == "superadmin")
|
||||
<a href="{{ route('maintenance.show') }}" class="menu-item @if(session()->get('active_route') == 'maintenance') active @endif"><i class="fas fa-cogs"></i> <span>Maintenance</span></a>
|
||||
|
|
|
|||
|
|
@ -2,21 +2,24 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
<h2><i class="fas fa-cogs"></i> Maintenance </h2>
|
||||
<h2>
|
||||
<i class="fas fa-cogs"></i>
|
||||
{{ __('Maintenance') }}
|
||||
</h2>
|
||||
|
||||
<div class="user-app">
|
||||
<div class="heading">
|
||||
<h5><i class="fas fa-users-cog"></i> Gestion des utilisateurs</h5>
|
||||
<a class="add-button" href="{{ route('maintenance.user.create') }}"><i class="fas fa-plus-square"></i> Ajouter</a>
|
||||
<h5><i class="fas fa-users-cog"></i> {{ __('Gestion des utilisateurs') }}</h5>
|
||||
<a href="{{ route('maintenance.user.create') }}" class="add-button"><i class="fas fa-plus-square"></i> {{ __('Ajouter') }}</a>
|
||||
</div>
|
||||
|
||||
@if (isset($users) && count($users) > 0)
|
||||
<table>
|
||||
<thead>
|
||||
<th>Nom</th>
|
||||
<th>Email</th>
|
||||
<th>Rôle</th>
|
||||
<th>Site liés</th>
|
||||
<th>{{ __('Nom') }}</th>
|
||||
<th>{{ __('Email') }}</th>
|
||||
<th>{{ __('Rôle') }}</th>
|
||||
<th>{{ __('Site liés') }}</th>
|
||||
<th></th>
|
||||
</thead>
|
||||
@foreach ($users as $user)
|
||||
|
|
@ -24,8 +27,12 @@
|
|||
<td><a href="{{ route('maintenance.user.edit', $user) }}">{{ $user->name }}</a></td>
|
||||
<td>{{ $user->email }}</td>
|
||||
<td>{{ $user->roles }}</td>
|
||||
<td class="sites">{!! $user->linkedSites !!}</td>
|
||||
@if (Auth::user()->id == $user->id)
|
||||
<td class="sites">
|
||||
@foreach ($user->sites as $site)
|
||||
<p>{{ $site->site_nom }}</p>
|
||||
@endforeach
|
||||
</td>
|
||||
@if (Auth::user()->id === $user->id)
|
||||
<td></td>
|
||||
@else
|
||||
<td><a href="{{ route('maintenance.user.destroy', $user) }}"><i class="fas fa-times delete-icon"></i></a></td>
|
||||
|
|
@ -41,53 +48,14 @@
|
|||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
{!! Form::open(['id' => 'delete-hidden']) !!}
|
||||
@method('DELETE')
|
||||
{!! Form::close() !!}
|
||||
<form method="POST" id="delete-hidden">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
<div class="clean-app">
|
||||
<h5><i class="fas fa-database"></i> Nettoyage de la base</h5>
|
||||
<div class="clean-line">
|
||||
<p>Nettoyer les murs <span>(datant de plus d'un an)</span></p>
|
||||
<div class="btn-clean">
|
||||
<div class="loader-mini">
|
||||
<div class="lds-ripple">
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
<a class="add-button clean-walls" href="#"><i class="fas fa-broom"></i> Nettoyer</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clean-line">
|
||||
<p>Nettoyer les paniers <span>(qui ont été imprimés et datant de plus de deux mois)</span></p>
|
||||
<div class="btn-clean">
|
||||
<div class="loader-mini">
|
||||
<div class="lds-ripple">
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
<a class="add-button clean-baskets" href="#"><i class="fas fa-broom"></i> Nettoyer</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clean-line">
|
||||
<p>Nettoyer les contacts <span>(qui n'ont pas de paniers ni de murs liés et datant de plus d'un mois)</span></p>
|
||||
<div class="btn-clean">
|
||||
<div class="loader-mini">
|
||||
<div class="lds-ripple">
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
</div>
|
||||
<a class="add-button clean-contacts" href="#"><i class="fas fa-broom"></i> Nettoyer</a>
|
||||
</div>
|
||||
</div>
|
||||
<input id="csrf" name="csrf" type="hidden" value="<?php echo csrf_token(); ?>">
|
||||
</div>
|
||||
<div class="error-log">
|
||||
<h5><i class="fas fa-file-alt"></i> Erreur d'appels :</h5>
|
||||
<h5><i class="fas fa-file-alt"></i> {{ __("Erreur d'appels") }} :</h5>
|
||||
<canvas id="myChart" height="300" width="200"></canvas>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -113,7 +81,7 @@
|
|||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: 'Nombres d\'erreurs API',
|
||||
label: '{{ __("Erreurs") }}',,
|
||||
data: errorCount,
|
||||
backgroundColor: 'rgba(255, 0, 0, 0.2)',
|
||||
borderColor: 'rgba(255,0,0,1)',
|
||||
|
|
@ -132,164 +100,5 @@
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('.clean-app').on('click', '.clean-contacts', function(event) {
|
||||
event.preventDefault();
|
||||
let loader = $(this).parent().find('.loader-mini');
|
||||
loader.show();
|
||||
$.fancyConfirm({
|
||||
title: "<i class='fas fa-broom'></i> Nettoyage",
|
||||
message: "Êtes-vous sûr de vouloir nettoyer la base des contacts qui n'ont pas de paniers ni de murs liés et datant de plus d'un mois ?",
|
||||
okButton: 'Supprimer',
|
||||
noButton: 'Annuler',
|
||||
callback: function(value) {
|
||||
if (value) {
|
||||
$.ajax({
|
||||
url: '/displayCleanContacts',
|
||||
type: 'POST',
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function(response) {
|
||||
$.fancyConfirm({
|
||||
title: "<i class='fas fa-broom'></i> Nettoyage",
|
||||
message: "Vous allez supprimer " + response.contact_count +
|
||||
" contacts qui ont plus d'un mois et qui n'ont pas de panier ni de murs en cours, Êtes-vous sûr ?",
|
||||
okButton: 'Supprimer',
|
||||
noButton: "Annuler",
|
||||
callback: function(value) {
|
||||
if (value) {
|
||||
$.ajax({
|
||||
url: '/cleanContacts',
|
||||
type: 'POST',
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function(response) {
|
||||
$.fancyInfo({
|
||||
title: "<i class='fas fa-info-circle'></i> Succès",
|
||||
message: "Le nettoyage des contacts a bien été effectué.",
|
||||
okButton: 'Valider',
|
||||
noButton: "",
|
||||
callback: function(
|
||||
value) {
|
||||
if (
|
||||
value) {} else {
|
||||
loader
|
||||
.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
loader.hide();
|
||||
},
|
||||
error: function(e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
loader.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
loader.hide();
|
||||
},
|
||||
error: function(e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
loader.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$('.clean-app').on('click', '.clean-walls', function(event) {
|
||||
event.preventDefault();
|
||||
let loader = $(this).parent().find('.loader-mini');
|
||||
loader.show();
|
||||
$.fancyConfirm({
|
||||
title: "<i class='fas fa-broom'></i> Nettoyage",
|
||||
message: "Êtes-vous sûr de vouloir nettoyer la base des mur imprimés ?",
|
||||
okButton: 'Supprimer',
|
||||
noButton: 'Annuler',
|
||||
callback: function(value) {
|
||||
if (value) {
|
||||
$.ajax({
|
||||
url: '/cleanWalls',
|
||||
type: 'POST',
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function(response) {
|
||||
$.fancyInfo({
|
||||
title: "<i class='fas fa-info-circle'></i> Succès",
|
||||
message: "Le nettoyage des murs a bien été effectué.",
|
||||
okButton: 'Valider',
|
||||
noButton: "",
|
||||
callback: function(value) {
|
||||
|
||||
}
|
||||
});
|
||||
loader.hide();
|
||||
},
|
||||
error: function(e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
loader.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
$('.clean-app').on('click', '.clean-baskets', function(event) {
|
||||
event.preventDefault();
|
||||
let loader = $(this).parent().find('.loader-mini');
|
||||
loader.show();
|
||||
$.fancyConfirm({
|
||||
title: "<i class='fas fa-broom'></i> Nettoyage",
|
||||
message: "Êtes-vous sûr de vouloir nettoyer la base des panier imprimés ?",
|
||||
okButton: 'Supprimer',
|
||||
noButton: 'Annuler',
|
||||
callback: function(value) {
|
||||
if (value) {
|
||||
$.ajax({
|
||||
url: '/cleanBaskets',
|
||||
type: 'POST',
|
||||
data: {},
|
||||
dataType: 'JSON',
|
||||
success: function(response) {
|
||||
$.fancyInfo({
|
||||
title: "<i class='fas fa-info-circle'></i> Succès",
|
||||
message: "Le nettoyage des paniers a bien été effectué.",
|
||||
okButton: 'Valider',
|
||||
noButton: "",
|
||||
callback: function(value) {
|
||||
|
||||
}
|
||||
});
|
||||
loader.hide();
|
||||
},
|
||||
error: function(e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
loader.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td>Type</td>
|
||||
<td>{{ $campagne->camp_type }}</td>
|
||||
<td>{{ $campagne->camp_type->label }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Impression limité</td>
|
||||
|
|
|
|||
|
|
@ -19,10 +19,10 @@
|
|||
<i class="fas fa-check-circle green"></i>
|
||||
@else
|
||||
<i class="fas fa-times-circle red"></i>
|
||||
@endif
|
||||
@endif
|
||||
</p>
|
||||
<p><a href="{{ route('camp.stats', $campagne) }}">{{ $campagne->camp_name }} ({{ $campagne->camp_id }})</a></p>
|
||||
<p>{{ $campagne->camp_type }}</p>
|
||||
<p>{{ $campagne->camp_type->label }}</p>
|
||||
<p>{{ $campagne->coupons->count() }} Coupon(s) <i class="fas fa-exclamation-triangle red tooltip"><span class="tooltiptext">Des coupons de cette campagne ne sont plus imprimables.</span></i></p>
|
||||
<p>{{ date('d/m/Y', strtotime($campagne->camp_createdate)) }}</p>
|
||||
<p>@if (isset($campagne->coupons) && $campagne->coupons->count()>0)<i class="fas fa-angle-down"></i>@endif</p>
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
@else
|
||||
<i class="fas fa-times-circle red"></i>
|
||||
@endif
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
{{-- <p>{{$coupon->remain}}/{{$coupon->quantity}}</p> --}}
|
||||
</tr>
|
||||
|
|
@ -73,11 +73,14 @@
|
|||
</div>
|
||||
@endif
|
||||
</div>
|
||||
{{-- LA CA MARCHE --}}
|
||||
{{-- @dd('erherh') --}}
|
||||
@endforeach
|
||||
{{-- LA C PT --}}
|
||||
@else
|
||||
<h5>Pas de campagnes pour ce site</h5>
|
||||
@endif
|
||||
|
||||
|
||||
</div>
|
||||
@endforeach
|
||||
<svg></svg>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-users-cog"></i> Nouvel utilisateur</h2>
|
||||
<h2>
|
||||
<i class="fas fa-users-cog"></i>
|
||||
{{ __('Nouvel utilisateur') }}
|
||||
</h2>
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
|
|
@ -12,41 +15,46 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
{!! Form::open(['route' => 'maintenance.user.create-submit', 'enctype' => 'multipart/form-data', 'autocomplete' => 'off']) !!}
|
||||
<form method="POST" action="{{ route('maintenance.user.create-submit') }}" autocomplete="off">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('name', 'Nom *') !!}
|
||||
{!! Form::text('name', null, ['required']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('email', 'Email *') !!}
|
||||
{!! Form::input('text', 'email', null, ['required']) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Nom') }} *</label>
|
||||
<input type="text" name="name" value="{{ old('name') }}" required>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('password', 'Mot de passe *') !!}
|
||||
{!! Form::password('password', $attributes = ['autocomplete' => 'new-password', 'required' => 'required', 'minlength' => 6]) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('roles', 'Rôle') !!}
|
||||
{!! Form::select('roles', array('superadmin' => 'Super Administrateur', 'admin' => 'Administrateur', 'marketing' => 'Marketing')) !!}
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Email') }} *</label>
|
||||
<input type="email" name="email" value="{{ old('email') }}" required>
|
||||
</div>
|
||||
<h4>Sites liés</h4>
|
||||
<div class="form-split sitesChoice">
|
||||
@foreach($sites as $site)
|
||||
<div class="inputGroup">
|
||||
<input id="site[{{$site->id}}]" name="site[{{$site->coupon_id}}]" type="checkbox" value="{{$site->site_id}}"/>
|
||||
<label for="site[{{$site->id}}]">{{$site->site_nom}}</label>
|
||||
<label for="site[{{$site->id}}]">{{$site->site_nom}}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
<span>Les champs avec un * sont obligatoires</span>
|
||||
{!! Form::submit('Enregistrer') !!}
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Mot de passe') }} *</label>
|
||||
<input type="password" name="password" autocomplete="new-password" minlength="8" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Rôle') }}</label>
|
||||
<select name="roles">
|
||||
@foreach (UserRoles::toArray() as $role)
|
||||
<option value="{{ $role->value }}" @if (old('roles') === $role->value) selected @endif>{{ $role->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<h4>{{ __('Sites liés') }}</h4>
|
||||
<div class="form-split sitesChoice">
|
||||
@foreach($sites as $site)
|
||||
<div class="inputGroup">
|
||||
<input id="site[{{$site->id}}]" name="site[{{$site->coupon_id}}]" type="checkbox" value="{{$site->site_id}}"/>
|
||||
<label for="site[{{$site->id}}]">{{$site->site_nom}}</label>
|
||||
<label for="site[{{$site->id}}]">{{$site->site_nom}}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
<span>{{ __('Les champs avec un * sont obligatoires') }}</span>
|
||||
<input type="submit" value="{{ __('Enregistrer') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -1,27 +1,44 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-users-cog"></i> Editer l'utilisateur</h2>
|
||||
<h2>
|
||||
<i class="fas fa-users-cog"></i>
|
||||
{{ __("Editer l'utilisateur") }}
|
||||
</h2>
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
{!! Form::model($user, ['route' => ['maintenance.user.edit-submit', $user], 'enctype' => 'multipart/form-data']) !!}
|
||||
<form method="POST" action="{{ route('maintenance.user.edit-submit', ['user' => $user]) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('name', 'Nom') !!}
|
||||
{!! Form::text('name', null, ['required']) !!}
|
||||
<label>{{ __('Nom') }} *</label>
|
||||
<input type="text" name="name" value="{{ $user->name }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
{!! Form::label('email', 'Email') !!}
|
||||
{!! Form::input('text', 'email', null, ['required']) !!}
|
||||
<label>{{ __('Email') }} *</label>
|
||||
<input type="email" name="email" value="{{ $user->email }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
{!! Form::label('roles', 'Rôle') !!}
|
||||
{!! Form::select('roles', array('superadmin' => 'Super Administrateur', 'admin' => 'Administrateur', 'marketing' => 'Marketing')) !!}
|
||||
<label>{{ __('Rôle') }}</label>
|
||||
<select name="roles">
|
||||
@foreach (UserRoles::toArray() as $role)
|
||||
<option value="{{ $role->value }}" @if ($user->roles === $role->value) selected @endif>{{ $role->label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<h4>Sites liés</h4>
|
||||
<h4>{{ __('Sites liés') }}</h4>
|
||||
<div class="form-split sitesChoice">
|
||||
@foreach($sites as $site)
|
||||
<div class="inputGroup">
|
||||
|
|
@ -32,8 +49,8 @@
|
|||
@endforeach
|
||||
</div>
|
||||
<div class="form-field submit">
|
||||
{!! Form::submit('Enregistrer') !!}
|
||||
<input type="submit" value="{{ __('Enregistrer') }}">
|
||||
</div>
|
||||
{!! Form::close() !!}
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
Route::prefix('v1')
|
||||
->group(function () {
|
||||
Route::get('/customer/mur', 'Api\v1\CustomerController@mur');
|
||||
Route::get('/customer/basket', 'Api\v1\CustomerController@basket');
|
||||
Route::get('/customer/basket/print', 'Api\v1\CustomerController@printBasket');
|
||||
Route::resource('customer', 'Api\v1\CustomerController');
|
||||
Route::get('/mur', 'Api\v1\MurController@show');
|
||||
Route::get('/coupons/print', 'Api\v1\CouponsController@print');
|
||||
|
|
|
|||
|
|
@ -13,10 +13,20 @@ Route::group(['prefix' => 'bo', 'middleware' => ['auth', 'saveroute']], function
|
|||
Route::get('/statistiques/{campagne}', 'StatistiqueController@statdetail')->name('camp.stats');
|
||||
// ---- Routes pour les ressources en CRUD
|
||||
Route::resource('coupon', 'CouponController')->except(['show'])->middleware('admin');
|
||||
// Routes campagne
|
||||
Route::post('/campagne/{campaign}/add-coupons', 'CampagneController@addCoupons');
|
||||
Route::post('/campagne/{campaign}/remove-coupon/{coupon}', 'CampagneController@removeCoupon');
|
||||
Route::post('/campagne/{campaign}/new-notification', 'CampagneController@saveNotification')->name('campaign.new-notif');
|
||||
Route::delete('/campagne/delete-notification/{notification}', 'CampagneController@deleteNotification')->name('campaign.delete-notif');
|
||||
Route::post('/campagne/{campaign}/showDemo', 'CampagneController@showDemo');
|
||||
Route::post('/campagne/{campaign}/toggle-publish/{state}', 'CampagneController@togglePublish');
|
||||
Route::resource('campagne', 'CampagneController')->except(['show'])->middleware('admin');
|
||||
|
||||
// Routes contact
|
||||
Route::get('/contact/search', 'ContactController@search')->name('contact.search');
|
||||
Route::post('/contact/{contact}/load-widget', 'ContactController@loadWidget');
|
||||
Route::resource('contact', 'ContactController')->except(['show', 'destroy'])->middleware('admin');
|
||||
Route::resource('site', 'SiteController')->except(['destroy', 'show'])->middleware('admin');
|
||||
Route::resource('mouvement', 'MouvementController')->only(['store'])->middleware('admin');
|
||||
// ----- Routes de la partie maintenance
|
||||
Route::group(['middleware' => ['superadmin']], function () {
|
||||
Route::get('maintenance', 'MaintenanceController@show')->middleware('superadmin')->name('maintenance.show');
|
||||
|
|
@ -34,44 +44,23 @@ Route::group(['prefix' => 'bo', 'middleware' => ['auth', 'saveroute']], function
|
|||
// ---- Logout
|
||||
Route::get('logout', '\App\Http\Controllers\Auth\LoginController@logout');
|
||||
// ---- Route de changement de site
|
||||
Route::post('/change_marque', 'ChangeMarqueController')->name('change_marque');
|
||||
// ---- Routes pour la gestion des mails d'alerte
|
||||
Route::post('new-notification', array('uses' => 'CampagneController@saveNotification'));
|
||||
Route::delete('delete-notification/{id}', array('uses' => 'CampagneController@deleteNotification'))
|
||||
->name('campagne.deleteNotif');
|
||||
Route::post('/brand-change', 'BrandChangeController')->name('brand-change');
|
||||
// ---- Route Export PDF
|
||||
Route::get('export', 'ExportController@show')->name('export.coupons');
|
||||
Route::get('/export', 'ExportController@show')->name('export.coupons');
|
||||
Route::post('/export/coupon', 'ExportController@exportCoupons');
|
||||
|
||||
// VB : V2
|
||||
Route::resource('{site}/customer', 'CustomersController');
|
||||
});
|
||||
|
||||
// ---- Routes Ajax:
|
||||
// ---- Ajout/Suppression de coupons dans une campagne
|
||||
Route::post('/add-coupons-ajax', 'AjaxController@add_coupons_ajax');
|
||||
Route::post('/remove-coupons-ajax', 'AjaxController@remove_coupons_ajax');
|
||||
// ---- Publier/Depublier des coupons
|
||||
Route::post('/unpublish-coupons-ajax', 'AjaxController@unpublish_coupons_ajax');
|
||||
Route::post('/publish-coupons-ajax', 'AjaxController@publish_coupons_ajax');
|
||||
// ---- Publier/Depublier des campagnes
|
||||
Route::post('/unpublish-camp-ajax', 'AjaxController@unpublish_camp_ajax');
|
||||
Route::post('/publish-camp-ajax', 'AjaxController@publish_camp_ajax');
|
||||
Route::post('/unpublish-coupons-ajax', 'AjaxController@unpublishCouponsAjax');
|
||||
Route::post('/publish-coupons-ajax', 'AjaxController@publishCouponsAjax');
|
||||
// ---- Impressions de coupons
|
||||
Route::post('/ajx_impression', 'AjaxController@impression_ajax');
|
||||
// ---- Recherche Contact
|
||||
Route::any('bo/contact/search', 'ContactController@search_contact')->name('contact.search');
|
||||
// ---- Chargement des widget par contacts
|
||||
Route::post('/loadWidget', 'AjaxController@load_widget');
|
||||
// ---- Visualisation des campagnes avec un compte démo
|
||||
Route::post('/showDemo', 'AjaxController@show_demo');
|
||||
// ---- Maintenance : Nettoyer les contacts
|
||||
Route::post('/displayCleanContacts', 'AjaxController@get_clean_contacts_detail');
|
||||
Route::post('/cleanContacts', 'AjaxController@clean_contacts');
|
||||
// ---- Maintenance : Nettoyer les murs
|
||||
Route::post('/cleanWalls', 'AjaxController@clean_walls');
|
||||
// ---- Maintenance : Nettoyer les paniers
|
||||
Route::post('/cleanBaskets', 'AjaxController@clean_baskets');
|
||||
Route::post('/ajx_impression', 'AjaxController@impressionAjax');
|
||||
// ---- Statistiques
|
||||
Route::post('/loadStat', 'StatistiqueController@load_stats');
|
||||
// ---- Export Coupons
|
||||
Route::post('/exportCoupon', 'ExportController@export_coupons');
|
||||
Route::post('/loadStat', 'StatistiqueController@loadStats');
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue