cleeeeaaaaannnnnnnnnnn
This commit is contained in:
parent
94a4e04b50
commit
cfd7b828da
50 changed files with 283 additions and 2779 deletions
|
|
@ -6,7 +6,6 @@ use Kwaadpepper\Enum\BaseEnum;
|
|||
|
||||
/**
|
||||
* @method static self updatebasket()
|
||||
* @method static self delctrlcontact()
|
||||
* @method static self impression()
|
||||
* @method static self updatecontact()
|
||||
*/
|
||||
|
|
@ -17,7 +16,6 @@ class LogActions extends BaseEnum
|
|||
{
|
||||
return [
|
||||
'updatebasket' => 1,
|
||||
'delctrlcontact' => 2,
|
||||
'impression' => 3,
|
||||
'updatecontact' => 4,
|
||||
];
|
||||
|
|
@ -27,7 +25,6 @@ class LogActions extends BaseEnum
|
|||
{
|
||||
return [
|
||||
'updatebasket' => 'Mise à jour du panier',
|
||||
'delctrlcontact' => 'Réinitialisation du mur',
|
||||
'impression' => 'Impression',
|
||||
'updatecontact' => 'Mise à jour du contact',
|
||||
];
|
||||
|
|
|
|||
|
|
@ -309,16 +309,7 @@ class AjaxController extends Controller
|
|||
die();
|
||||
}
|
||||
|
||||
if ($request->session()->has('contact')) {
|
||||
$contact = $request->session()->get('contact');
|
||||
}
|
||||
|
||||
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->equals(CampaignTypes::panier()) || $campagne->camp_type->equals(CampaignTypes::paniers())) {
|
||||
if ($campagne->camp_type->equals(CampaignTypes::panier()) || $campagne->camp_type->equals(CampaignTypes::paniers())) {
|
||||
if ($request->session()->has('panier')) {
|
||||
$panier = $request->session()->get('panier');
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -44,6 +44,6 @@ class LoginController extends Controller
|
|||
*/
|
||||
protected function authenticated()
|
||||
{
|
||||
return redirect()->route('home');
|
||||
return redirect('/');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
29
app/Http/Controllers/Bo/MaintenanceController.php
Normal file
29
app/Http/Controllers/Bo/MaintenanceController.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Log;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MaintenanceController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$datas = Log::select(
|
||||
DB::raw("DATE_FORMAT(created_at, '%m/%Y') as month"),
|
||||
DB::raw("COUNT(*) as count")
|
||||
)
|
||||
->where('log_statut', 'NOK')
|
||||
->where('created_at', '>=', Carbon::now()->subMonths(5)->startOfMonth())
|
||||
->groupBy('month')
|
||||
->orderBy('month', 'asc')
|
||||
->get();
|
||||
|
||||
$logs = $datas->toArray();
|
||||
|
||||
return view('bo.maintenance.index', compact('logs'));
|
||||
}
|
||||
}
|
||||
76
app/Http/Controllers/Bo/UserController.php
Normal file
76
app/Http/Controllers/Bo/UserController.php
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bo;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Bo\Users\DestroyUserRequest;
|
||||
use App\Http\Requests\Bo\Users\StoreUserRequest;
|
||||
use App\Http\Requests\Bo\Users\UpdateUserRequest;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Site;
|
||||
use App\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$users = User::all();
|
||||
return view('bo.users.index')->with(['users' => $users, 'logs' => []]);
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$sites = Site::all();
|
||||
return view('bo.users.create', compact('sites'));
|
||||
}
|
||||
|
||||
public function store(StoreUserRequest $request)
|
||||
{
|
||||
$user = new User();
|
||||
$user->fill($request->validated());
|
||||
$user->password = Hash::make($request->password);
|
||||
$user->save();
|
||||
|
||||
$sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($sites);
|
||||
|
||||
return redirect()->route('bo.users.edit', $user);
|
||||
}
|
||||
|
||||
public function edit(User $user)
|
||||
{
|
||||
$sites = Site::all();
|
||||
$usersites = $user->sites()->get()->pluck('site_id')->toArray();
|
||||
|
||||
return view('bo.users.edit', compact('user', 'sites', 'usersites'));
|
||||
}
|
||||
|
||||
public function update(UpdateUserRequest $request, User $user)
|
||||
{
|
||||
$user->fill($request->validated());
|
||||
$user->save();
|
||||
|
||||
$sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($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('bo.users.edit', $user);
|
||||
}
|
||||
|
||||
public function destroy(DestroyUserRequest $request, User $user)
|
||||
{
|
||||
if ($user->delete()) {
|
||||
return redirect()->route('bo.users.index');
|
||||
} else {
|
||||
session()->flash('delete_nok', 'Erreur lors de la suppression');
|
||||
return view('bo.user.index');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -412,86 +412,4 @@ class CampagneController extends Controller
|
|||
'Détails Campagne' => $data
|
||||
]);
|
||||
}
|
||||
|
||||
public function getDiffCamp(Request $request)
|
||||
{
|
||||
$error = false;
|
||||
// ---- Contrôle des paramètres
|
||||
if (isset($request->refcamp) && $request->refcamp != "") {
|
||||
$refcamp = $request->refcamp;
|
||||
$campagne = Campagne::where(['camp_id' => $refcamp])->first();
|
||||
if (!$campagne) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
if (isset($request->refsite) && $request->refsite != "") {
|
||||
$refsite = $request->refsite;
|
||||
$site = Site::where(['site_id' => $refsite])->first();
|
||||
if (!$site) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 102,
|
||||
'Message' => 'Le site n\'existe pas'
|
||||
]);
|
||||
};
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
|
||||
if (isset($request->refadherent) && $request->refadherent != "") {
|
||||
$refadherent = $request->refadherent;
|
||||
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
|
||||
if (!$contact) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
|
||||
if ($error) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
]);
|
||||
}
|
||||
|
||||
$data = array (
|
||||
'Statut' => 'OK',
|
||||
'Site' => $site->site_nom,
|
||||
'Ref campagne' => $campagne->camp_id,
|
||||
'Nom campagne' => $campagne->camp_name,
|
||||
"Ref contact" => $refadherent,
|
||||
"Email contact" => $contact->contact_email,
|
||||
);
|
||||
|
||||
$coupons = $campagne->coupons()->get();
|
||||
|
||||
if ($coupons->count() > 0) {
|
||||
foreach ($coupons as &$coupon) {
|
||||
if ($this->isAvailable($coupon, $campagne, $contact)) {
|
||||
$dispo = 1;
|
||||
} else {
|
||||
$dispo = 0;
|
||||
}
|
||||
$codeTraitement = array (
|
||||
"Code traitement" => $coupon->coupon_code,
|
||||
"Nom" => $coupon->coupon_name,
|
||||
"Nb disponible" => $dispo,
|
||||
);
|
||||
$data['Codes traitement'][] = $codeTraitement;
|
||||
}
|
||||
}
|
||||
return response()->json($data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,15 +4,6 @@ namespace App\Http\Controllers;
|
|||
|
||||
use App\Contact;
|
||||
use App\Site;
|
||||
use App\Campagne;
|
||||
use App\Enums\CampaignTypes;
|
||||
use App\Http\Requests\Contact\LoadWidgetContact;
|
||||
use App\Http\Requests\Contact\SearchContact;
|
||||
use App\Http\Requests\Contact\StoreContact;
|
||||
use App\Http\Requests\Contact\UpdateContact;
|
||||
use App\Log;
|
||||
use App\Panier;
|
||||
use App\PanierContent;
|
||||
use App\Traits\CouponTrait;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
|
@ -20,103 +11,6 @@ class ContactController extends Controller
|
|||
{
|
||||
use CouponTrait;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
return view('contact.index')->with('search', false);
|
||||
}
|
||||
|
||||
|
||||
public function search(SearchContact $request)
|
||||
{
|
||||
session()->put('active_route', 'contact');
|
||||
|
||||
$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);
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('contact.create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param StoreContact $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(StoreContact $request)
|
||||
{
|
||||
// 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();
|
||||
|
||||
return redirect()->route('contact.edit', ['contact' => $contact]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param \App\Campagne $campagne
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit(Contact $contact)
|
||||
{
|
||||
$campagnes = Campagne::where(['camp_siteId' => $contact->contact_siteId, 'camp_published' => 1])->get();
|
||||
|
||||
return view('contact.edit', ['contact' => $contact, 'campagnes' => $campagnes]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param UpdateContact $request
|
||||
* @param \App\Contact $contact
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(UpdateContact $request, Contact $contact)
|
||||
{
|
||||
$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");
|
||||
}
|
||||
return redirect()->route('contact.edit', ['contact' => $contact]);
|
||||
}
|
||||
|
||||
public function updateContact(Request $request)
|
||||
{
|
||||
$error = false;
|
||||
|
|
@ -228,102 +122,4 @@ class ContactController extends Controller
|
|||
]);
|
||||
}
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
<?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('printedCoupons', 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'));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App;
|
||||
use CpChart\Data;
|
||||
use CpChart\Image;
|
||||
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;
|
||||
|
||||
class ExportController extends Controller
|
||||
{
|
||||
use CouponTrait;
|
||||
use GraphTrait;
|
||||
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(Request $request)
|
||||
{
|
||||
$sites = Site::all();
|
||||
$startdate = new DateTime("first day of last month");
|
||||
$startdate = $startdate->format('Y-m-d');
|
||||
$enddate = date('Y-m-d');
|
||||
|
||||
return view('export.index')->with(['sites' => $sites, 'startdate' => $startdate, 'enddate' => $enddate]);
|
||||
}
|
||||
|
||||
// ------ AJAX Export
|
||||
public function exportCoupons(PDFExport $request)
|
||||
{
|
||||
$ids = $request->ids;
|
||||
$startdate = $request->startdate;
|
||||
$enddate = $request->enddate;
|
||||
|
||||
$coupons = Coupon::find($ids);
|
||||
|
||||
$labels = $this->getLabelsForStats($startdate, $enddate);
|
||||
|
||||
$paths = array();
|
||||
|
||||
foreach ($coupons as $coupon) {
|
||||
$cpName = str_replace(' ', '', $coupon->coupon_name);
|
||||
$full_path = 'export/' . $cpName . '_' . date('d_m_Y') . '.pdf';
|
||||
$dataCoupon = $this->getDataForCouponAllCamp($labels, $coupon);
|
||||
$coupon->couponQuantity = $this->getFullQuantity($coupon);
|
||||
$coupon->couponFullPrinted = $this->getUsedQuantity($coupon);
|
||||
$coupon->couponPrinted = $this->getUsedQuantityOnPeriod($coupon, $startdate, $enddate);
|
||||
|
||||
$pdf = App::make('dompdf.wrapper');
|
||||
|
||||
$myData = new Data();
|
||||
|
||||
$myData->addPoints($dataCoupon, "My Serie 1");
|
||||
$myData->addPoints($labels, "My Serie 2");
|
||||
$myData->setAxisName(0, "Coupons Diffusés");
|
||||
$myData->setAbscissa("My Serie 2");
|
||||
$myData->setSerieTicks("My Serie 2", 2);
|
||||
$serieSettings = array("R" => 229,"G" => 11,"B" => 11);
|
||||
$myData->setPalette("My Serie 1", $serieSettings);
|
||||
$myPicture = new Image(700, 230, $myData);
|
||||
$myPicture->setGraphArea(60, 40, 670, 190);
|
||||
$myPicture->setFontProperties(array("FontSize" => 10));
|
||||
$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));
|
||||
$myPicture->Render('export/temp.png');
|
||||
|
||||
$view = view('export.template')->with(['src' => 'export/temp.png', 'coupon' => $coupon, 'startdate' => $startdate, 'enddate' => $enddate])->render();
|
||||
|
||||
$pdf->loadHTML($view);
|
||||
$pdf->save($full_path);
|
||||
array_push($paths, $full_path);
|
||||
}//end foreach
|
||||
|
||||
return json_encode($paths);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
<?php
|
||||
|
||||
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;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class MaintenanceController extends Controller
|
||||
{
|
||||
public function show(Request $request)
|
||||
{
|
||||
$users = User::all();
|
||||
|
||||
$dates = array(date('m/Y'));
|
||||
for ($i = 1; $i < 6; $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]);
|
||||
}
|
||||
|
||||
public function usercreate(Request $request)
|
||||
{
|
||||
$sites = Site::all();
|
||||
return view('user.create')->with(['sites' => $sites]);
|
||||
}
|
||||
|
||||
public function userstore(StoreUsers $request)
|
||||
{
|
||||
$user = new User();
|
||||
$user->fill($request->validated());
|
||||
$user->password = Hash::make($request->password);
|
||||
$user->save();
|
||||
|
||||
$sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($sites);
|
||||
|
||||
return redirect()->route('maintenance.user.edit', ['user' => $user]);
|
||||
}
|
||||
|
||||
public function useredit(User $user)
|
||||
{
|
||||
$sites = Site::all();
|
||||
$usersites = $user->sites()->get()->pluck('site_id')->toArray();
|
||||
return view('user.edit')->with(['user' => $user, 'sites' => $sites, 'usersites' => $usersites]);
|
||||
}
|
||||
|
||||
public function userupdate(UpdateUsers $request, User $user)
|
||||
{
|
||||
//MAJ du User
|
||||
$user->fill($request->validated());
|
||||
$user->save();
|
||||
|
||||
//MAJ des sites liés
|
||||
$sites = Site::whereIn('site_id', $request->site)->get()->pluck('id')->toArray();
|
||||
$user->sites()->sync($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');
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,315 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Campagne;
|
||||
use App\Contact;
|
||||
use App\Mur;
|
||||
use App\Log;
|
||||
use App\Traits\CouponTrait;
|
||||
use App\Traits\ThanksTrait;
|
||||
|
||||
class MurController extends Controller
|
||||
{
|
||||
use CouponTrait;
|
||||
use ThanksTrait;
|
||||
|
||||
public function show(Request $request)
|
||||
{
|
||||
$datas = $request->all();
|
||||
if (isset($datas['refcamp'])) {
|
||||
$ref = intval($datas['refcamp']);
|
||||
$campagne = Campagne::where(['camp_id' => $ref])->first();
|
||||
} else {
|
||||
abort(404);
|
||||
}
|
||||
if (!isset($datas['refsite'])) {
|
||||
abort(404);
|
||||
}
|
||||
if (!isset($campagne) || $campagne->camp_published == 0 || ($campagne->camp_type->value != 0 && $campagne->camp_type->value != 2)) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
if (isset($datas['hash'])) {
|
||||
$contact = Contact::where([
|
||||
'contact_hash' => $datas['hash'], 'contact_siteId' => $campagne->camp_siteId
|
||||
])->first();
|
||||
} else {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$coupons = $this->getCouponsPublished($campagne);
|
||||
|
||||
foreach ($coupons as $coupon) {
|
||||
$coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact);
|
||||
$coupon->isAvailableToPrint = $this->isAvailableToPrint($coupon, $campagne);
|
||||
}
|
||||
unset($coupon);
|
||||
|
||||
// Montant total et Nombre réductions disponible
|
||||
$montantDispo = 0;
|
||||
$montantTotal = 0;
|
||||
$nbCoupon = 0;
|
||||
$nbCouponToPrint = 0;
|
||||
foreach ($coupons as $coupon) {
|
||||
$montantTotal += $coupon->coupon_value;
|
||||
if ($coupon->isAvailable == true) {
|
||||
$montantDispo += $coupon->coupon_value;
|
||||
$nbCoupon++;
|
||||
}
|
||||
if ($coupon->isAvailableToPrint == true) {
|
||||
$nbCouponToPrint++;
|
||||
}
|
||||
}
|
||||
|
||||
session()->put('campagne', $campagne);
|
||||
session()->put('site', $campagne->site);
|
||||
session()->put('contact', $contact);
|
||||
|
||||
return view('landings::' . $ref . '.index')
|
||||
->with(['ref' => $ref, 'coupons' => $coupons, 'contact' => $contact, 'nb' => $nbCoupon, 'nbAvailableToPrint' => $nbCouponToPrint, 'montantDispo' => $montantDispo]);
|
||||
}
|
||||
|
||||
public function printMur(Request $request)
|
||||
{
|
||||
if (isset($request->coupons)) {
|
||||
session()->put('coupons', $request->coupons);
|
||||
$coupons = $request->coupons;
|
||||
}
|
||||
|
||||
if ($request->session()->has('campagne')) {
|
||||
$campagne = $request->session()->get('campagne');
|
||||
} else {
|
||||
abort(419);
|
||||
}
|
||||
|
||||
$ref = $campagne->camp_id;
|
||||
|
||||
return view('landings::' . $ref . '.imprimer')
|
||||
->with(['ref' => $ref, 'coupons' => $coupons, 'contact' => $request->session()->get('contact')]);
|
||||
}
|
||||
|
||||
public function deleteControlContact(Request $request)
|
||||
{
|
||||
if (isset($request->admin)) {
|
||||
$source = 'ADMIN';
|
||||
} else {
|
||||
$source = 'API';
|
||||
}
|
||||
|
||||
// ---- INIT du log
|
||||
$log = new Log();
|
||||
$log->log_action = config('constants.delctrlcontact');
|
||||
$log->log_source = $source;
|
||||
|
||||
$error = false;
|
||||
// ---- Contrôle des paramètres
|
||||
if (isset($request->refcamp) && $request->refcamp != "") {
|
||||
$refcamp = $request->refcamp;
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
if (isset($request->refadherent) && $request->refadherent != "") {
|
||||
$refadherent = $request->refadherent;
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
// Erreur si paramètres mal renseignés
|
||||
if ($error) {
|
||||
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
|
||||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents";
|
||||
$log->save();
|
||||
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
]);
|
||||
}
|
||||
|
||||
// Check de la campagne
|
||||
$campagne = Campagne::where('camp_id', $refcamp)->first();
|
||||
|
||||
if (!$campagne) {
|
||||
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
|
||||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "La campagne n'existe pas";
|
||||
$log->save();
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
// Check du contact
|
||||
$contact = Contact::where(['contact_ref' => $refadherent, 'contact_siteId' => $campagne->camp_siteId])->first();
|
||||
|
||||
if (!$contact) {
|
||||
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
|
||||
$log->log_refsite = $campagne->camp_siteId;
|
||||
$log->log_statut = 'NOK';
|
||||
$log->log_message = "Le contact n'existe pas";
|
||||
$log->save();
|
||||
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
]);
|
||||
}
|
||||
|
||||
if ($campagne) {
|
||||
// Update
|
||||
$mur = Mur::where(['mur_campId' => $refcamp, 'mur_contactId' => $contact->contact_id])->update(['mur_deleted' => '1']);
|
||||
if ($mur != 0) {
|
||||
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
|
||||
$log->log_refsite = $campagne->camp_siteId;
|
||||
$log->log_contactId = $contact->contact_id;
|
||||
$log->log_statut = 'OK';
|
||||
$log->log_message = $mur . " enregistrements ont été mis à jour.";
|
||||
$log->save();
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Message' => $mur . " enregistrements ont été mis à jour."
|
||||
]);
|
||||
} else {
|
||||
$log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent]);
|
||||
$log->log_refsite = $campagne->camp_siteId;
|
||||
$log->log_contactId = $contact->contact_id;
|
||||
$log->log_statut = 'OK';
|
||||
$log->log_message = 'Aucun contrôle à effacer';
|
||||
$log->save();
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 110,
|
||||
'Message' => 'Aucun contrôle à effacer'
|
||||
]);
|
||||
}//end if
|
||||
}//end if
|
||||
return;
|
||||
}
|
||||
|
||||
public function montantDispoCampagne(Request $request)
|
||||
{
|
||||
|
||||
// ---- Contrôle des paramètres
|
||||
if (isset($request->refcamp) && $request->refcamp != "") {
|
||||
$refcamp = $request->refcamp;
|
||||
} else {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
]);
|
||||
}
|
||||
|
||||
// ------ Recuperation de la campagne
|
||||
$camp = Campagne::where(['camp_id' => $refcamp])->first();
|
||||
if (!$camp) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
]);
|
||||
}
|
||||
|
||||
// ------ Récupération des coupons de la campagne
|
||||
$coupons = $camp->coupons()->where(['coupon_published' => 1])->get();
|
||||
if (count($coupons) == 0) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 105,
|
||||
'Message' => 'La campagne est vide'
|
||||
]);
|
||||
}
|
||||
|
||||
// ---- Montant total et Nombre réductions disponible
|
||||
$montantTotal = 0;
|
||||
foreach ($coupons as $coupon) {
|
||||
$montantTotal += $coupon->coupon_value;
|
||||
}
|
||||
|
||||
$montantTotal = number_format($montantTotal, 2, ",", " ");
|
||||
$montantTotal = str_pad($montantTotal, 6, "0", STR_PAD_LEFT);
|
||||
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Message' => $montantTotal
|
||||
]);
|
||||
}
|
||||
|
||||
public function montantDispoContact(Request $request)
|
||||
{
|
||||
$error = false;
|
||||
if (isset($request->refcamp) && $request->refcamp != "") {
|
||||
$refcamp = $request->refcamp;
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
|
||||
if (isset($request->refsite) && $request->refsite != "") {
|
||||
$refsite = $request->refsite;
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
|
||||
if (isset($request->refadherent) && $request->refadherent != "") {
|
||||
$refadherent = $request->refadherent;
|
||||
} else {
|
||||
$error = true;
|
||||
}
|
||||
|
||||
if ($error) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 101,
|
||||
'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents'
|
||||
]);
|
||||
}
|
||||
|
||||
$campagne = Campagne::where(['camp_id' => $refcamp])->where('camp_type', 'IN', array(0,2))->first();
|
||||
|
||||
if (!$campagne) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 103,
|
||||
'Message' => 'La campagne n\'existe pas'
|
||||
]);
|
||||
}
|
||||
|
||||
$contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first();
|
||||
if (!$contact) {
|
||||
return response()->json([
|
||||
'Statut' => 'KO',
|
||||
'Code' => 104,
|
||||
'Message' => 'Le contact n\'existe pas'
|
||||
]);
|
||||
}
|
||||
|
||||
$coupons = $this->getCouponsPublished($campagne);
|
||||
|
||||
foreach ($coupons as &$coupon) {
|
||||
$coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact);
|
||||
}
|
||||
unset($coupon);
|
||||
|
||||
$montantDispo = 0;
|
||||
foreach ($coupons as $coupon) {
|
||||
if ($coupon->isAvailable == true) {
|
||||
$montantDispo += $coupon->coupon_value;
|
||||
}
|
||||
}
|
||||
|
||||
$montantDispo = number_format($montantDispo, 2, ",", " ");
|
||||
$montantDispo = str_pad($montantDispo, 6, "0", STR_PAD_LEFT);
|
||||
|
||||
return response()->json([
|
||||
'Statut' => 'OK',
|
||||
'Message' => $montantDispo
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -15,16 +15,12 @@ class RedirectController extends Controller
|
|||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$mur = new Controllers\MurController();
|
||||
$panier = new Controllers\PanierController();
|
||||
|
||||
if (isset($request->basketid)) {
|
||||
return $panier->showTemplate($request);
|
||||
// $this->showTemplate($request);
|
||||
} elseif (isset($request->hash)) {
|
||||
return $mur->show($request);
|
||||
} else {
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('login');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,93 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Campagne;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Traits\CouponTrait;
|
||||
use App\Traits\GraphTrait;
|
||||
|
||||
class StatistiqueController extends Controller
|
||||
{
|
||||
use CouponTrait;
|
||||
use GraphTrait;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// $sites = Auth::user()->sites()->get();
|
||||
// foreach ($sites as $site) {
|
||||
// if (isset($site->campagnes)) {
|
||||
// $campagnes = $site->campagnes;
|
||||
// foreach ($campagnes as $campagne) {
|
||||
// $coupons = $campagne->coupons;
|
||||
// foreach ($coupons as $coupon) {
|
||||
// $coupon->quantity = $this->getFullQuantity($coupon);
|
||||
// $coupon->remain = $this->getFullQuantity($coupon) - $this->getUsedQuantity($coupon);
|
||||
// $coupon->diffused = $this->getDiffusedQuantity($coupon);
|
||||
// $coupon->isPrintable = $this->isAvailableToPrint($coupon, $campagne);
|
||||
// $coupon->isPaused = $this->isPausedToPrint($coupon, $campagne);
|
||||
// }
|
||||
// }//end foreach
|
||||
// }//end if
|
||||
// }//end foreach
|
||||
$sites = [];
|
||||
return view('stats.index')->with(['sites' => $sites]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the stat detail of a campaign.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function statdetail(Campagne $campagne)
|
||||
{
|
||||
$count = 0;
|
||||
$colors = config('constants.colors');
|
||||
|
||||
$coupons = $campagne->coupons;
|
||||
foreach ($coupons as $coupon) {
|
||||
$coupon->quantity = $this->getFullQuantity($coupon);
|
||||
$coupon->remain = $coupon->quantity - $this->getUsedQuantity($coupon);
|
||||
$coupon->diffused = $this->getDiffusedQuantity($coupon);
|
||||
$coupon->isPrintable = $this->isAvailableToPrint($coupon, $campagne);
|
||||
$coupon->isPaused = $this->isPausedToPrint($coupon, $campagne);
|
||||
$coupon->color = $coupon->color = "#" . str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT) . str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT) . str_pad(dechex(mt_rand(0, 255)), 2, '0', STR_PAD_LEFT);
|
||||
$count++;
|
||||
}
|
||||
$enddate = date('Y-m-d');
|
||||
$startdate = date('Y-m-d', strtotime("-30 days"));
|
||||
return view('stats.detail')->with(['campagne' => $campagne, 'startdate' => $startdate, 'enddate' => $enddate]);
|
||||
}
|
||||
|
||||
public function loadStats(Request $request)
|
||||
{
|
||||
$campid = $request->campid;
|
||||
$startdate = $request->startdate;
|
||||
$enddate = $request->enddate;
|
||||
|
||||
// ---- Labels pour la période
|
||||
$labels = $this->getLabelsForStats($startdate, $enddate);
|
||||
|
||||
// ---- Data pour le graphique global
|
||||
$dataGlobal = $this->getDataForCamp($labels, $campid);
|
||||
|
||||
// ---- Data pour le graphique par coupons
|
||||
$campagne = Campagne::where(['camp_id' => $campid])->first();
|
||||
$coupons = $campagne->coupons;
|
||||
$dataSpec = [];
|
||||
foreach ($coupons as $coupon) {
|
||||
$dataCoupon = $this->getDataForCoupon($labels, $campid, $coupon);
|
||||
$dataSpec[$coupon->coupon_code] = $dataCoupon;
|
||||
}
|
||||
|
||||
$data = array('labels' => $labels, 'dataGlobal' => $dataGlobal, 'dataSpec' => $dataSpec);
|
||||
|
||||
return json_encode($data);
|
||||
}
|
||||
}
|
||||
|
|
@ -60,11 +60,7 @@ class Kernel extends HttpKernel
|
|||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'process.url' => \App\Http\Middleware\ProcessSpecificUrl::class,
|
||||
'saveroute' => \App\Http\Middleware\SaveCurrentRoute::class,
|
||||
'superadmin' => \App\Http\Middleware\SuperAdmin::class,
|
||||
'admin' => \App\Http\Middleware\Admin::class,
|
||||
'marketing' => \App\Http\Middleware\Marketing::class,
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Auth;
|
||||
use Closure;
|
||||
|
||||
class Admin
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (Auth::check() && Auth::user()->roles == 'admin') {
|
||||
return $next($request);
|
||||
} elseif (Auth::check() && Auth::user()->roles == 'superadmin') {
|
||||
return $next($request);
|
||||
} else {
|
||||
return redirect('/bo/home');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
|
||||
class Marketing
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use App\Http\Controllers;
|
||||
|
||||
class ProcessSpecificUrl
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$path = $request->path();
|
||||
$params = $request->all();
|
||||
$paramsCount = count($params);
|
||||
$contact = new Controllers\ContactController();
|
||||
$mur = new Controllers\MurController();
|
||||
$panier = new Controllers\PanierController();
|
||||
$campagne = new Controllers\CampagneController();
|
||||
$ajax = new Controllers\AjaxController();
|
||||
switch ($path) {
|
||||
case 'updatecontact':
|
||||
$res = $contact->updateContact($request);
|
||||
break;
|
||||
case 'delctrlcontact':
|
||||
$res = $mur->deleteControlContact($request);
|
||||
break;
|
||||
case 'mntdispocampagne':
|
||||
$res = $mur->montantDispoCampagne($request);
|
||||
break;
|
||||
case 'mntdispocontact':
|
||||
$res = $mur->montantDispoContact($request);
|
||||
break;
|
||||
case 'updatebasket':
|
||||
$res = $panier->updateBasket($request);
|
||||
break;
|
||||
case 'showbasket':
|
||||
$res = $panier->showBasket($request);
|
||||
break;
|
||||
case 'getdetailcampaign':
|
||||
$res = $campagne->getDetail($request);
|
||||
break;
|
||||
case 'getdiffctccampaign':
|
||||
$res = $campagne->getDiffCamp($request);
|
||||
break;
|
||||
case 'imprime':
|
||||
$res = $panier->printPanierSelect($request);
|
||||
return $next($request);
|
||||
break;
|
||||
case 'imprimer':
|
||||
$res = $mur->printMur($request);
|
||||
return $next($request);
|
||||
break;
|
||||
case 'merci':
|
||||
$res = $mur->getThanks($request);
|
||||
return $next($request);
|
||||
break;
|
||||
case 'merci-panier':
|
||||
$res = $panier->getThanks($request);
|
||||
return $next($request);
|
||||
break;
|
||||
case 'index':
|
||||
$res = $ajax->backToIndex($request);
|
||||
break;
|
||||
default:
|
||||
switch ($paramsCount) {
|
||||
case 0:
|
||||
return redirect('bo/home');
|
||||
break;
|
||||
case 1:
|
||||
$res = $panier->showTemplate($request);
|
||||
return $next($request);
|
||||
break;
|
||||
case 3:
|
||||
$res = $mur->show($request);
|
||||
return $next($request);
|
||||
break;
|
||||
case 4:
|
||||
$res = $mur->show($request);
|
||||
return $next($request);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}//end switch
|
||||
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@ class RedirectIfAuthenticated
|
|||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
if (Auth::guard($guard)->check()) {
|
||||
return redirect()->route('home');
|
||||
return redirect()->route('campagne.index');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Auth;
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class SaveCurrentRoute
|
||||
{
|
||||
|
|
@ -16,26 +16,22 @@ class SaveCurrentRoute
|
|||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$routeName = explode('.', \Route::currentRouteName());
|
||||
|
||||
session()->put('active_route', $routeName[0]);
|
||||
|
||||
$site = session()->get('site');
|
||||
|
||||
if (!isset($site)) {
|
||||
session()->put('site', Auth::user()->sites->first());
|
||||
}
|
||||
|
||||
$currentLogo = session()->get('site')->only(['site_logo']);
|
||||
session()->put('current_logo', $currentLogo);
|
||||
$siteId = session()->get('marques');
|
||||
|
||||
if (!isset($siteId)) {
|
||||
$marques = Auth::user()->sites;
|
||||
if (!$site) {
|
||||
$site = Auth::user()->sites->first();
|
||||
session()->put('site', $site);
|
||||
}
|
||||
|
||||
$currentLogo = $site->only(['site_logo']);
|
||||
session()->put('current_logo', $currentLogo);
|
||||
|
||||
if (!$siteId) {
|
||||
$marques = Auth::user()->sites;
|
||||
$submarques = $marques->map(function ($marque) {
|
||||
return $marque->only(['id', 'site_nom', 'site_id', 'site_logo']);
|
||||
});
|
||||
|
||||
session()->put('marques', $submarques);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Auth;
|
||||
use Closure;
|
||||
|
||||
class SuperAdmin
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (Auth::check() && Auth::user()->roles == 'superadmin') {
|
||||
return $next($request);
|
||||
} else {
|
||||
return redirect('/bo/home');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -22,6 +22,5 @@ class VerifyCsrfToken extends Middleware
|
|||
'updatecontact',
|
||||
'updatebasket',
|
||||
'showbasket',
|
||||
'delctrlcontact'
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Contact;
|
||||
namespace App\Http\Requests\Bo\Users;
|
||||
|
||||
use App\Enums\UserRoles;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class LoadWidgetContact extends FormRequest
|
||||
class DestroyUserRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
|
|
@ -15,7 +14,7 @@ class LoadWidgetContact extends FormRequest
|
|||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
|
||||
return Auth::check();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -26,7 +25,7 @@ class LoadWidgetContact extends FormRequest
|
|||
public function rules()
|
||||
{
|
||||
return [
|
||||
'camp_id' => 'required|exists:campagne,camp_id'
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Users;
|
||||
namespace App\Http\Requests\Bo\Users;
|
||||
|
||||
use App\Enums\UserRoles;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class StoreUsers extends FormRequest
|
||||
class StoreUserRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
|
|
@ -15,7 +14,7 @@ class StoreUsers extends FormRequest
|
|||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
|
||||
return Auth::check();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Users;
|
||||
namespace App\Http\Requests\Bo\Users;
|
||||
|
||||
use App\Enums\UserRoles;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class UpdateUsers extends FormRequest
|
||||
class UpdateUserRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
|
|
@ -16,7 +15,7 @@ class UpdateUsers extends FormRequest
|
|||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return Auth::check() && (Auth::user()->roles === UserRoles::superadmin()->value || Auth::user()->roles === UserRoles::admin()->value);
|
||||
return Auth::check();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?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',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?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'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?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'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use App\Statistique;
|
||||
use DateTime;
|
||||
|
||||
trait GraphTrait
|
||||
{
|
||||
// ------ Make Labels
|
||||
public function getLabelsForStats($startdate, $enddate)
|
||||
{
|
||||
// ---- Calcul de l'intervalle en jour
|
||||
$datetime1 = new DateTime($startdate);
|
||||
$datetime2 = new DateTime($enddate);
|
||||
$interval = $datetime1->diff($datetime2);
|
||||
$days = $interval->format('%a');
|
||||
|
||||
// ---- Labels des graphiques
|
||||
$labels = [];
|
||||
for ($i = 0; $i <= $days; $i++) {
|
||||
$date = date('d/m/Y', strtotime("+" . $i . " days", strtotime($startdate)));
|
||||
array_push($labels, $date);
|
||||
}
|
||||
|
||||
return $labels;
|
||||
}
|
||||
|
||||
// ---- Data for global graph
|
||||
public function getDataForCamp($labels, $campid)
|
||||
{
|
||||
$dataGlobal = [];
|
||||
foreach ($labels as $label) {
|
||||
$date = date('Y-m-d', strtotime(str_replace('/', '-', $label)));
|
||||
$stat = Statistique::where(['stat_campId' => $campid])->whereDate('created_at', '=', $date)->sum('stat_couponPrinted');
|
||||
if (isset($stat)) {
|
||||
$dataGlobal[] = $stat;
|
||||
} else {
|
||||
$dataGlobal[] = 0;
|
||||
}
|
||||
}
|
||||
return $dataGlobal;
|
||||
}
|
||||
|
||||
// ---- Data for one coupon on one camp
|
||||
public function getDataForCoupon($labels, $campid, $coupon)
|
||||
{
|
||||
$dataCoupon = [];
|
||||
foreach ($labels as $label) {
|
||||
$date = date('Y-m-d', strtotime(str_replace('/', '-', $label)));
|
||||
$stat = Statistique::where(['stat_campId' => $campid, 'stat_couponId' => $coupon->coupon_id])->whereDate('created_at', '=', $date)->sum('stat_couponPrinted');
|
||||
if (isset($stat)) {
|
||||
$dataCoupon[] = $stat;
|
||||
} else {
|
||||
$dataCoupon[] = 0;
|
||||
}
|
||||
}
|
||||
return $dataCoupon;
|
||||
}
|
||||
|
||||
// ---- Data for one coupon all camp
|
||||
public function getDataForCouponAllCamp($labels, $coupon)
|
||||
{
|
||||
$dataCoupon = [];
|
||||
foreach ($labels as $label) {
|
||||
$date = date('Y-m-d', strtotime(str_replace('/', '-', $label)));
|
||||
$stat = Statistique::where(['stat_couponId' => $coupon->coupon_id])->whereDate('created_at', '=', $date)->sum('stat_couponPrinted');
|
||||
if (isset($stat)) {
|
||||
$dataCoupon[] = $stat;
|
||||
} else {
|
||||
$dataCoupon[] = 0;
|
||||
}
|
||||
}
|
||||
return $dataCoupon;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +1,6 @@
|
|||
{
|
||||
"name": "laravel/laravel",
|
||||
"description": "The Laravel Framework.",
|
||||
"keywords": [
|
||||
"framework",
|
||||
"laravel"
|
||||
],
|
||||
"license": "MIT",
|
||||
"name": "uwil/mesbr",
|
||||
"description": "Webcoupon management system",
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": "^7.3",
|
||||
|
|
@ -22,7 +17,6 @@
|
|||
"ldc/ldccrmv2client": "^3.0.5",
|
||||
"picqer/php-barcode-generator": "^0.3.0",
|
||||
"sentry/sentry-laravel": "^4.13",
|
||||
"szymach/c-pchart": "^3.0",
|
||||
"uxweb/sweet-alert": "^2.0",
|
||||
"vladimir-yuldashev/laravel-queue-rabbitmq": "^11.3"
|
||||
},
|
||||
|
|
|
|||
73
composer.lock
generated
73
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "30db3ec95147621d8486d7ad5796a124",
|
||||
"content-hash": "1b3d7e201bf5b5d95441c22f9c4d2265",
|
||||
"packages": [
|
||||
{
|
||||
"name": "barryvdh/laravel-dompdf",
|
||||
|
|
@ -6572,77 +6572,6 @@
|
|||
],
|
||||
"time": "2024-11-08T15:21:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "szymach/c-pchart",
|
||||
"version": "v3.0.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/szymach/c-pchart.git",
|
||||
"reference": "c022568da78f73bb7acf7db7a974934a434d47d7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/szymach/c-pchart/zipball/c022568da78f73bb7acf7db7a974934a434d47d7",
|
||||
"reference": "c022568da78f73bb7acf7db7a974934a434d47d7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-gd": "*",
|
||||
"php": "^5.4|^7.0|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codeception/codeception": "^4.1.22",
|
||||
"codeception/module-asserts": "^1.3",
|
||||
"codeception/module-filesystem": "^1.0",
|
||||
"phpunit/phpunit": "^5.7|^9.5",
|
||||
"squizlabs/php_codesniffer": "^3.4"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"2.0": "2.0.x-dev",
|
||||
"dev-master": "3.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"constants.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"CpChart\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"GPL-3.0-only"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jean-Damien Pogolotti",
|
||||
"homepage": "http://www.pchart.net",
|
||||
"role": "Creator of the original pChart library"
|
||||
},
|
||||
{
|
||||
"name": "Piotr Szymaszek",
|
||||
"homepage": "https://github.com/szymach",
|
||||
"role": "Developer of the CpChart wrapper package"
|
||||
}
|
||||
],
|
||||
"description": "Port of \"pChart\" library into PHP 5+",
|
||||
"homepage": "https://github.com/szymach/c-pchart",
|
||||
"keywords": [
|
||||
"CpChart",
|
||||
"c-pChart",
|
||||
"charts",
|
||||
"pchart",
|
||||
"statistics"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/szymach/c-pchart/issues",
|
||||
"source": "https://github.com/szymach/c-pchart/tree/v3.0.17"
|
||||
},
|
||||
"time": "2023-05-27T11:12:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tijsverkoyen/css-to-inline-styles",
|
||||
"version": "v2.2.7",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
return [
|
||||
'updatebasket' => 1,
|
||||
'delctrlcontact' => 2,
|
||||
'impression' => 3,
|
||||
'updatecontact' => 4,
|
||||
'colors' => ['#ffe258', '#8c86ff', '#86ffbc', '#ffc286', '#86caff', '#ff86e7', '#ff869d', '#b9ff86', '#e7ff86', '#b986ff', '#ffae86', '#5c60ff', '#ff5c5c', '#3ba33b', '#8c86ff', '#86ffbc', '#ffc286', '#86caff', '#ff86e7', '#ff869d', '#b9ff86', '#e7ff86', '#b986ff', '#ffae86', '#5c60ff', '#ff5c5c', '#3ba33b']
|
||||
|
|
|
|||
14
resources/js/app.js
vendored
14
resources/js/app.js
vendored
|
|
@ -306,17 +306,3 @@ $('body').on('click', '.expand', function(event){
|
|||
contentDiv.slideUp();
|
||||
}
|
||||
})
|
||||
|
||||
$('.open-all-stats').on('click', function(event){
|
||||
event.preventDefault();
|
||||
$('.couponStats .content').each(function(){
|
||||
$(this).slideDown(500);
|
||||
})
|
||||
})
|
||||
|
||||
$('.close-all-stats').on('click', function(event){
|
||||
event.preventDefault();
|
||||
$('.couponStats .content').each(function(){
|
||||
$(this).slideUp(500);
|
||||
})
|
||||
})
|
||||
54
resources/views/bo/maintenance/index.blade.php
Normal file
54
resources/views/bo/maintenance/index.blade.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h2>
|
||||
<i class="fas fa-cogs"></i>
|
||||
{{ __('Maintenance') }}
|
||||
</h2>
|
||||
<div class="error-log">
|
||||
<h5><i class="fas fa-file-alt"></i> {{ __("Erreur d'appels") }} :</h5>
|
||||
<canvas id="myChart" height="300" width="200"></canvas>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script src="{{ mix('js/Chart.js', 'build') }}" charset="utf-8"></script>
|
||||
<script>
|
||||
var truc = {!! json_encode($logs, JSON_UNESCAPED_SLASHES) !!};
|
||||
var labels = [];
|
||||
var errorCount = [];
|
||||
$.each(truc, function(index, value) {
|
||||
labels.push(value.month);
|
||||
errorCount.push(value.count);
|
||||
});
|
||||
|
||||
//---- GRAPH ERRORS
|
||||
var ctx = document.getElementById("myChart").getContext('2d');
|
||||
ctx.height = 300;
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: '{{ __("Erreurs") }}',
|
||||
data: errorCount,
|
||||
backgroundColor: 'rgba(255, 0, 0, 0.2)',
|
||||
borderColor: 'rgba(255,0,0,1)',
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
maintainAspectRatio: false,
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
beginAtZero: true,
|
||||
stepSize: 1,
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
<form method="POST" action="{{ route('maintenance.user.create-submit') }}" autocomplete="off">
|
||||
<form method="POST" action="{{ route('bo.users.store') }}" autocomplete="off">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
</div>
|
||||
@endif
|
||||
<div class="form-wrapper">
|
||||
<form method="POST" action="{{ route('maintenance.user.edit-submit', ['user' => $user]) }}">
|
||||
<form method="POST" action="{{ route('bo.users.update', $user) }}">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
51
resources/views/bo/users/index.blade.php
Normal file
51
resources/views/bo/users/index.blade.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
|
||||
<h2>
|
||||
<i class="fas fa-cogs"></i>
|
||||
{{ __('Users') }}
|
||||
</h2>
|
||||
|
||||
<div class="user-app">
|
||||
<div class="heading">
|
||||
<h5><i class="fas fa-users-cog"></i> {{ __('Gestion des utilisateurs') }}</h5>
|
||||
<a href="{{ route('bo.users.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></th>
|
||||
</thead>
|
||||
@foreach ($users as $user)
|
||||
<tr>
|
||||
<td><a href="{{ route('bo.users.edit', $user) }}">{{ $user->name }}</a></td>
|
||||
<td>{{ $user->email }}</td>
|
||||
<td>{{ $user->roles }}</td>
|
||||
<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>
|
||||
<form action="{{ route('bo.users.destroy', $user) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit"><i class="fas fa-times"></i></button>
|
||||
</form>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2>
|
||||
<i class="fas fa-users"></i>
|
||||
{{ __('Créer un contact') }}
|
||||
</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 action="{{ route('contact.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Ref') }} *</label>
|
||||
<input type="text" name="contact_ref" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Email') }} *</label>
|
||||
<input type="email" name="contact_email" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Nom') }} *</label>
|
||||
<input type="text" name="contact_nom" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Prénom') }} *</label>
|
||||
<input type="text" name="contact_prenom" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Code Postal') }} *</label>
|
||||
<input type="text" name="contact_cp" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<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>
|
||||
<select name="contact_country" id="contact_country">
|
||||
@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>
|
||||
<input type="submit" value="{{ __('Enregistrer') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,281 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2>
|
||||
<i class="fas fa-users"></i>
|
||||
{{ __('Editer le contact') }}
|
||||
</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 action="{{ route('contact.update', $contact) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Ref') }} *</label>
|
||||
<input type="text" name="contact_ref" value="{{ $contact->contact_ref }}" required readonly>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<label>{{ __('Email') }} *</label>
|
||||
<input type="email" name="contact_email" value="{{ $contact->contact_email }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-split">
|
||||
<div class="form-field">
|
||||
<label>{{ __('Nom') }} *</label>
|
||||
<input type="text" name="contact_nom" value="{{ $contact->contact_nom }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<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">
|
||||
<label>{{ __('Code Postal') }} *</label>
|
||||
<input type="text" name="contact_cp" value="{{ $contact->contact_cp }}" required>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<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>
|
||||
<select name="contact_country" id="contact_country">
|
||||
@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>
|
||||
<input type="submit" value="{{ __('Mettre à jour') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<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="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>
|
||||
<p>{{ __('Type') }} : {{ $campagne->camp_type->label }}</p>
|
||||
|
||||
<div class="loader">
|
||||
<div class="lds-ripple">
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
<h4>{{ __('Chargement') }}...</h4>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script>
|
||||
$('.loader').show();
|
||||
function loadWidget(campagne){
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: '/bo/contact/'+ $('#contact_id').val() +'/load-widget',
|
||||
type: 'POST',
|
||||
data: {
|
||||
camp_id : campagne.attr('data-campid'),
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
if(reponse.success){
|
||||
campagne.append(reponse.html);
|
||||
$('.loader').hide();
|
||||
} else {
|
||||
campagne.append("{{ __('Erreur lors du chargement') }}");
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$('.campagne').each(function(index){
|
||||
var camp = $(this);
|
||||
loadWidget(camp);
|
||||
});
|
||||
|
||||
|
||||
// ---- widgets : Réinitialiser le mur
|
||||
$('.campagne').on('click', '.update-wall', function(event){
|
||||
event.preventDefault();
|
||||
let campagne = $(this).parent().parent().parent('.campagne');
|
||||
let campid = campagne.attr('data-campid');
|
||||
let contactRef = $('#contact_ref').val();
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: '/delctrlcontact',
|
||||
type: 'POST',
|
||||
data: {
|
||||
refcamp: campid,
|
||||
refadherent : contactRef,
|
||||
admin : 1
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
if(reponse.Statut == "OK"){
|
||||
campagne.find('.widget').remove();
|
||||
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') }}",
|
||||
noButton : "",
|
||||
callback : function (value) {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log("{{ __('Erreur') }} : "+reponse.Code+" - "+reponse.Message)
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
// ---- widgets : Ajout dans un panier ou création d'un panier
|
||||
$('.campagne').on('click', '.update-basket', function(event){
|
||||
let panierId = $(this).attr('data-panier');
|
||||
let campagne = $(this).parent().parent().parent('.campagne');
|
||||
let campid = campagne.attr('data-campid');
|
||||
let campsiteid = campagne.attr('data-campsite');
|
||||
let couponsList = $(this).parent('.widgetContent').find('.coupon');
|
||||
let couponsTotal = couponsList.length;
|
||||
let couponsAdded = 0;
|
||||
let coupons = "";
|
||||
|
||||
|
||||
couponsList.each(function(index){
|
||||
let couponCode = $(this).find('input').attr('data-couponcode');
|
||||
let couponQty = $(this).find('input').val();
|
||||
coupons += "("+couponQty+")"+couponCode;
|
||||
couponsAdded++;
|
||||
if(couponsAdded < couponsTotal){
|
||||
coupons += ",";
|
||||
}
|
||||
})
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
|
||||
if(panierId != ""){
|
||||
// ---- BasketId existant - Update du panier
|
||||
$.ajax({
|
||||
url: '/updatebasket',
|
||||
type: 'POST',
|
||||
data: {
|
||||
basketid: panierId,
|
||||
panier : coupons,
|
||||
admin:1
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
if(reponse.Statut == "OK"){
|
||||
campagne.find('.widget').remove();
|
||||
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') }}",
|
||||
noButton : "",
|
||||
callback : function (value) {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log("Erreur : "+reponse.Code+" - "+reponse.Message)
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// ---- BasketId non existant - Création du panier
|
||||
$.ajax({
|
||||
url: '/updatebasket',
|
||||
type: 'POST',
|
||||
data: {
|
||||
refsite: campsiteid,
|
||||
refcamp: campid,
|
||||
refadherent: $('#contact_ref').val(),
|
||||
nom: $('#contact_nom').val(),
|
||||
prenom: $('#contact_prenom').val(),
|
||||
email: $('#contact_email').val(),
|
||||
code_postal: $('#contact_cp').val(),
|
||||
commune: $('#contact_ville').val(),
|
||||
pays: $('#contact_country').val(),
|
||||
panier : coupons,
|
||||
admin:1
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function (reponse) {
|
||||
if(reponse.Statut == "OK"){
|
||||
campagne.find('.widget').remove();
|
||||
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') }}",
|
||||
noButton : "",
|
||||
callback : function (value) {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
console.log("Erreur : "+reponse.Code+" - "+reponse.Message)
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<select name="searchCountry" id="searchCountry">
|
||||
<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') }}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="separator"></div>
|
||||
@if(isset($contacts) && count($contacts)>0)
|
||||
<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>
|
||||
</thead>
|
||||
@foreach ($contacts as $contact)
|
||||
@php
|
||||
if (!in_array($contact->contact_country, Countries::toValues())) {
|
||||
$contact->contact_country = 250;
|
||||
}
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ $contact->contact_ref }}</td>
|
||||
<td><a href="{{ route('contact.edit', $contact) }}">{{ $contact->contact_prenom }} {{$contact->contact_nom}}</a></td>
|
||||
<td>{{ $contact->contact_email }}</td>
|
||||
<td>{{ $contact->contact_cp }}</td>
|
||||
<td>{{ $contact->contact_ville }}</td>
|
||||
<td>{{ Countries::make($contact->contact_country)->label }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
@if($search)
|
||||
{{ $contacts->appends(request()->input())->links() }}
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
@endif
|
||||
@endsection
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
@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>
|
||||
@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,73 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2>
|
||||
<i class="fas fa-file-export"></i>
|
||||
{{ __('Export des données coupons') }}
|
||||
</h2>
|
||||
<div class="selector-export">
|
||||
<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="<?= 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>
|
||||
@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
|
||||
@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="" download class="dl-pdf"></a>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script>
|
||||
$('.export-data').on('click', function(event){
|
||||
event.preventDefault();
|
||||
let ids = [];
|
||||
$('.inputGroup-export input').each(function(event){
|
||||
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: '/bo/export/coupon',
|
||||
type: 'POST',
|
||||
data: {
|
||||
ids: ids,
|
||||
startdate: $('#startdate').val(),
|
||||
enddate: $('#enddate').val(),
|
||||
},
|
||||
dataType: 'JSON',
|
||||
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);
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
</head>
|
||||
|
||||
<body style="font-family:Helvetica;">
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</tr>
|
||||
<tr style="background-color:#adb5bd; color:#000; text-align:center;">
|
||||
<td style="padding:5px 0;">{{ $coupon->coupon_name }}</td>
|
||||
<td>{{ $coupon->coupon_code }}</td>
|
||||
<td>{{ $coupon->couponQuantity }}</td>
|
||||
<td>{{ $coupon->couponFullPrinted }}</td>
|
||||
@if($coupon->coupon_mindatediffusion != null)
|
||||
<td>{{ date('d/m/Y', strtotime($coupon->coupon_mindatediffusion)) }}</td>
|
||||
@else
|
||||
<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>
|
||||
@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>
|
||||
<img src="{{ $src }}" alt="">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<header>
|
||||
<div class="marque-wrapper">
|
||||
<div class="title">
|
||||
<a href="{{ route('home') }}" class="logo">
|
||||
<a href="/" class="logo">
|
||||
<i class="fas fa-ticket-alt"></i>
|
||||
<i class="fas fa-hand-holding"></i>
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
@php
|
||||
$authUserRole = Auth::user()->roles;
|
||||
@endphp
|
||||
<nav>
|
||||
<div class="menu-content">
|
||||
<div class="menu-item-list">
|
||||
<a href="{{ route('home') }}" class="menu-item @if(session()->get('active_route') == 'home' || session()->get('active_route') == 'camp') active @endif"><i class="fas fa-chart-line"></i> <span>Statistiques</span></a>
|
||||
@if(Auth::user()->roles == "superadmin" || Auth::user()->roles == "admin")
|
||||
<a href="{{ route('site.index') }}" class="menu-item @if(session()->get('active_route') == 'site') active @endif"><i class="fas fa-building"></i> <span>Sites</span></a>
|
||||
<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>
|
||||
@if(in_array($authUserRole, ["superadmin", "admin"]))
|
||||
<a href="{{ route('site.index') }}" class="menu-item @if(str_contains(Route::currentRouteName(), 'site')) active @endif"><i class="fas fa-building"></i> <span>Sites</span></a>
|
||||
<a href="{{ route('campagne.index') }}" class="menu-item @if(str_contains(Route::currentRouteName(), '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(str_contains(Route::currentRouteName(), 'coupon')) active @endif"><i class="fas fa-ticket-alt"></i> <span>Coupons</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>
|
||||
<a href="{{ route('export.coupons') }}" class="menu-item @if(session()->get('active_route') == 'export') active @endif"><i class="fas fa-file-export"></i> <span>Exportation</span></a>
|
||||
@if($authUserRole === "superadmin")
|
||||
<a href="{{ route('bo.maintenance.index') }}" class="menu-item @if(str_contains(Route::currentRouteName(), 'bo.maintenance')) active @endif"><i class="fas fa-cogs"></i> <span>Maintenance</span></a>
|
||||
<a href="{{ route('bo.users.index') }}" class="menu-item @if(str_contains(Route::currentRouteName(), 'bo.users')) active @endif"><i class="fas fa-users"></i> <span>{{ __('Users') }}</span></a>
|
||||
@endif
|
||||
<a href="{{ url('bo/logout') }}" class="menu-item logout"><i class="fas fa-sign-out-alt"></i> <span>Déconnexion</span></a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,104 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
|
||||
<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 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></th>
|
||||
</thead>
|
||||
@foreach ($users as $user)
|
||||
<tr>
|
||||
<td><a href="{{ route('maintenance.user.edit', $user) }}">{{ $user->name }}</a></td>
|
||||
<td>{{ $user->email }}</td>
|
||||
<td>{{ $user->roles }}</td>
|
||||
<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>
|
||||
@endif
|
||||
|
||||
</tr>
|
||||
@endforeach
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<form method="POST" id="delete-hidden">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
<div class="error-log">
|
||||
<h5><i class="fas fa-file-alt"></i> {{ __("Erreur d'appels") }} :</h5>
|
||||
<canvas id="myChart" height="300" width="200"></canvas>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script src="{{ mix('js/Chart.js', 'build') }}" charset="utf-8"></script>
|
||||
<script>
|
||||
var truc = {!! json_encode($logs, JSON_UNESCAPED_SLASHES) !!};
|
||||
var labels = [];
|
||||
var errorCount = [];
|
||||
$.each(truc, function(index, value) {
|
||||
labels.push(value[0]);
|
||||
errorCount.push(value[1]);
|
||||
})
|
||||
labels = labels.reverse();
|
||||
errorCount = errorCount.reverse();
|
||||
|
||||
//---- GRAPH ERRORS
|
||||
var ctx = document.getElementById("myChart").getContext('2d');
|
||||
ctx.height = 300;
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: '{{ __("Erreurs") }}',,
|
||||
data: errorCount,
|
||||
backgroundColor: 'rgba(255, 0, 0, 0.2)',
|
||||
borderColor: 'rgba(255,0,0,1)',
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
maintainAspectRatio: false,
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
beginAtZero: true,
|
||||
stepSize: 1,
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -1,323 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<div class="title-stat">
|
||||
<h2><i class="fas fa-chart-line"></i>Statistiques de la campagne</h2>
|
||||
<div class="selector-stat">
|
||||
<h4>Période :</h4>
|
||||
<input id="startdate" name="startdate" type="date" value="{{ $startdate }}">
|
||||
<input id="enddate" name="enddate" type="date" value="{{ $enddate }}">
|
||||
<input id="csrf" name="csrf" type="hidden" value="<?php echo csrf_token(); ?>">
|
||||
<a class="add-button reload-stats" id="reloader" data-campid="{{ $campagne->camp_id }}" href="#"><i
|
||||
class="fas fa-chart-line"></i> Charger</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="statistiquesGlobales">
|
||||
<table class="campstat">
|
||||
<thead>
|
||||
<th colspan="2">{{ $campagne->camp_name }}</th>
|
||||
</thead>
|
||||
<tr>
|
||||
<td>Référence</td>
|
||||
<td>{{ $campagne->camp_id }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Référence Site</td>
|
||||
<td>{{ $campagne->camp_siteId }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Type</td>
|
||||
<td>{{ $campagne->camp_type->label }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Impression limité</td>
|
||||
<td>
|
||||
@if ($campagne->camp_limitedPrinting === 1)
|
||||
Oui
|
||||
@else
|
||||
Non
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Date de création</td>
|
||||
<td>
|
||||
{{ date('d/m/Y', strtotime($campagne->camp_createdate)) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Publiée ?
|
||||
</td>
|
||||
<td>
|
||||
@if ($campagne->camp_published === 1)
|
||||
<i class="fas fa-check-circle green"></i>
|
||||
@else
|
||||
<i class="fas fa-times-circle red"></i>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="graphStatsGlobales">
|
||||
<h3>Consommation Globale</h3>
|
||||
<canvas id="myChartGlobal" height="150" width="300"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div class="statistiquesContent">
|
||||
<div class="couponStats">
|
||||
<div class="title">
|
||||
<h3>Les Coupons</h3>
|
||||
<div class="btns">
|
||||
<a class="add-button open-all-stats" href="#"><i class="fas fa-plus-square"></i> Tout Ouvrir</a>
|
||||
<a class="add-button close-all-stats" href="#"><i class="fas fa-minus-square"></i> Tout Fermer</a>
|
||||
</div>
|
||||
</div>
|
||||
@foreach ($campagne->coupons as $coupon)
|
||||
<div class="couponStatsDetail">
|
||||
<h4><span class="expand">{{ $coupon->coupon_name }}</span> <span class="couponLegend"
|
||||
data-label="{{ $coupon->coupon_name }}" style="background-color:{{ $coupon->color }}"></span></h4>
|
||||
<div class="content">
|
||||
<figure>
|
||||
<a data-fancybox="images" data-caption="{{ $coupon->coupon_name }}" href="{{ asset($coupon->coupon_image) }}"><img
|
||||
src="{{ asset($coupon->coupon_image) }}" alt=""></a>
|
||||
</figure>
|
||||
<p><span>Code de traitement :</span> <span>{{ $coupon->coupon_code }}</span></p>
|
||||
<p><span>Valeur :</span> <span>{{ str_replace('.', ',', number_format($coupon->coupon_value, 2)) }} €</span></p>
|
||||
<p><span>Quantité Totale :</span> <span>{{ $coupon->quantity }}</span></p>
|
||||
<p><span>Quantité Restante :</span> <span>{{ $coupon->remain }}</span></p>
|
||||
<p><span>Quantité Diffusé :</span> <span>{{ $coupon->diffused }}</span></p>
|
||||
<p><span>Quantité Imprimé :</span> <span>{{ $coupon->quantity - $coupon->remain }}</span></p>
|
||||
@if ($coupon->coupon_mindatediffusion != null)
|
||||
<p><span>Date de début de diffusion :</span>
|
||||
<span>{{ date('d/m/Y', strtotime($coupon->coupon_mindatediffusion)) }}</span></p>
|
||||
@else
|
||||
<p><span>Date de début de diffusion :</span> <span>n/c</span></p>
|
||||
@endif
|
||||
@if ($coupon->coupon_maxdatediffusion != null)
|
||||
<p><span>Date de fin de diffusion :</span>
|
||||
<span>{{ date('d/m/Y', strtotime($coupon->coupon_maxdatediffusion)) }}</span></p>
|
||||
@else
|
||||
<p><span>Date de fin de diffusion :</span> <span>n/c</span></p>
|
||||
@endif
|
||||
@if ($coupon->coupon_published == 1)
|
||||
<p><span>Publié ?</span><span><i class="fas fa-check-circle green"></i></span></p>
|
||||
@else
|
||||
<p><span>Publié ?</span><span><i class="fas fa-times-circle red"></i></span></p>
|
||||
@endif
|
||||
@if ($coupon->isPrintable == 1)
|
||||
<p><span>Imprimable ?</span><span><i class="fas fa-check-circle green"></i></span></p>
|
||||
@else
|
||||
@if ($coupon->isPaused == 1)
|
||||
<p><span>Imprimable ?</span><span><i class="fas fa-pause-circle orange"></i></span></p>
|
||||
@else
|
||||
<p><span>Imprimable ?</span><span><i class="fas fa-times-circle red"></i></span></p>
|
||||
@endif
|
||||
@endif
|
||||
<input class="couponStatData" id="{{ $coupon->coupon_code }}" data-color="{{ $coupon->color }}"
|
||||
data-name="{{ $coupon->coupon_name }}" type="hidden">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="graphStats">
|
||||
<h3>Consommation par coupons <i class="fas fa-eye"></i><i class="fas fa-eye-slash"></i></h3>
|
||||
<canvas id="myChart" height="150" width="300"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
<script src="{{ mix('js/Chart.js', 'build') }}" charset="utf-8"></script>
|
||||
<script>
|
||||
var myLine;
|
||||
var myLineGlobal;
|
||||
|
||||
function load_graphs(campid, startdate, enddate) {
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('#csrf').val()
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url: '/loadStat',
|
||||
type: 'POST',
|
||||
data: {
|
||||
campid: campid,
|
||||
startdate: startdate,
|
||||
enddate: enddate,
|
||||
},
|
||||
dataType: 'JSON',
|
||||
success: function(response) {
|
||||
//console.log("label", response.labels.reverse());
|
||||
//Mise en place du graphique globa
|
||||
var configGlobal = {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: response.labels,
|
||||
datasets: [{
|
||||
label: "Coupons",
|
||||
data: response.dataGlobal,
|
||||
fill: false,
|
||||
borderColor: '#de9700',
|
||||
backgroundColor: '#de9700',
|
||||
borderWidth: 1,
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
maintainAspectRatio: true,
|
||||
responsive: true,
|
||||
legend: {
|
||||
display: false,
|
||||
},
|
||||
title: {
|
||||
display: false,
|
||||
},
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
fontColor: '#adb5bd'
|
||||
},
|
||||
}],
|
||||
xAxes: [{
|
||||
ticks: {
|
||||
fontColor: '#adb5bd'
|
||||
},
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
var ctxGlobal = document.getElementById("myChartGlobal").getContext('2d');
|
||||
myLineGlobal = new Chart(ctxGlobal, configGlobal);
|
||||
|
||||
//Mise en place du graphique spec
|
||||
var dataSpecCp = [];
|
||||
$.each(response.dataSpec, function(coupon_code, data) {
|
||||
var dataset = {
|
||||
label: $('#' + coupon_code).attr('data-name'),
|
||||
borderColor: $('#' + coupon_code).attr('data-color'),
|
||||
borderWidth: 1,
|
||||
backgroundColor: $('#' + coupon_code).attr('data-color'),
|
||||
fill: false,
|
||||
data: data,
|
||||
}
|
||||
dataSpecCp.push(dataset);
|
||||
})
|
||||
var config = {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: response.labels,
|
||||
datasets: dataSpecCp,
|
||||
},
|
||||
options: {
|
||||
maintainAspectRatio: true,
|
||||
responsive: true,
|
||||
legend: {
|
||||
display: false,
|
||||
position: 'bottom',
|
||||
},
|
||||
title: {
|
||||
display: false,
|
||||
text: 'Consommation de BR par jour'
|
||||
},
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
fontColor: '#adb5bd'
|
||||
},
|
||||
}],
|
||||
xAxes: [{
|
||||
ticks: {
|
||||
fontColor: '#adb5bd'
|
||||
},
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
var ctx = document.getElementById("myChart").getContext('2d');
|
||||
myLine = new Chart(ctx, config);
|
||||
},
|
||||
error: function(e) {
|
||||
console.log(e.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
load_graphs($('#reloader').attr('data-campid'), $('#startdate').val(), $('#enddate').val());
|
||||
|
||||
// ---- SHOW ALL
|
||||
$('.fa-eye').on('click', function() {
|
||||
$('.couponLegend').each(function() {
|
||||
$(this).find('.line').remove();
|
||||
})
|
||||
myLine.data.datasets.forEach(function(ds) {
|
||||
ds.hidden = false;
|
||||
});
|
||||
myLine.update();
|
||||
})
|
||||
// ---- HIDE ALL
|
||||
$('.fa-eye-slash').on('click', function() {
|
||||
$('.couponLegend').each(function() {
|
||||
$(this).append('<div class="line"></div>');
|
||||
})
|
||||
myLine.data.datasets.forEach(function(ds) {
|
||||
ds.hidden = true;
|
||||
});
|
||||
myLine.update();
|
||||
})
|
||||
|
||||
$('.couponStats').on('click', '.couponLegend', function(e) {
|
||||
if ($(this).find('.line').length) {
|
||||
$(this).find('.line').remove();
|
||||
} else {
|
||||
$(this).append('<div class="line"></div>');
|
||||
}
|
||||
var label = $(this).attr('data-label');
|
||||
myLine.data.datasets.forEach(function(ds) {
|
||||
if (ds.label == label) {
|
||||
ds.hidden = !ds.hidden;
|
||||
}
|
||||
});
|
||||
myLine.update();
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
$('.reload-stats').on('click', function(event) {
|
||||
var campid = $(this).attr('data-campid');
|
||||
var startdate = $('#startdate').val();
|
||||
var enddate = $('#enddate').val();
|
||||
event.preventDefault();
|
||||
|
||||
//console.log(enddate);
|
||||
if (startdate != "" && enddate != "") {
|
||||
teststartdate = new Date(startdate);
|
||||
testenddate = new Date(enddate);
|
||||
if (teststartdate < testenddate) {
|
||||
myLine.destroy();
|
||||
myLineGlobal.destroy();
|
||||
load_graphs(campid, startdate, enddate);
|
||||
} else {
|
||||
$.fancyConfirm({
|
||||
title: "<i class='fas fa-times-circle red'></i> Erreur",
|
||||
message: "La date de fin doit être supérieure à la date de début.",
|
||||
okButton: 'Valider',
|
||||
noButton: "",
|
||||
callback: function(value) {}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
$.fancyConfirm({
|
||||
title: "<i class='fas fa-times-circle red'></i> Erreur",
|
||||
message: "Veuillez remplir les deux dates pour voir les données associées.",
|
||||
okButton: 'Valider',
|
||||
noButton: "",
|
||||
callback: function(value) {}
|
||||
});
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
@extends('layouts.main')
|
||||
|
||||
@section('content')
|
||||
<h2><i class="fas fa-tachometer-alt"></i>Tableau de bord</h2>
|
||||
<h2 class="expand-action">
|
||||
<a href="#" class="add-button open-all"><i class="fas fa-plus-square"></i> Tout Ouvrir</a>
|
||||
<a href="#" class="add-button close-all"><i class="fas fa-minus-square"></i> Tout Fermer</a>
|
||||
</h2>
|
||||
<div class="chart-wrapper" id="chart-line1"></div>
|
||||
@foreach ($sites as $site)
|
||||
<h4>{{ $site->site_nom }} ({{ $site->site_id }})</h4>
|
||||
<div class="siteContent">
|
||||
@if (isset($site->campagnes) && $site->campagnes->count()>0)
|
||||
@foreach ($site->campagnes as $campagne)
|
||||
<div class="campContent">
|
||||
<div class="campDetail">
|
||||
<p>
|
||||
@if ( $campagne->camp_published === 1)
|
||||
<i class="fas fa-check-circle green"></i>
|
||||
@else
|
||||
<i class="fas fa-times-circle red"></i>
|
||||
@endif
|
||||
</p>
|
||||
<p><a href="{{ route('camp.stats', $campagne) }}">{{ $campagne->camp_name }} ({{ $campagne->camp_id }})</a></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>
|
||||
</div>
|
||||
@if (isset($campagne->coupons) && $campagne->coupons->count()>0)
|
||||
<div class="coupons">
|
||||
<table>
|
||||
<thead>
|
||||
<th>Code</th>
|
||||
<th>Libellé</th>
|
||||
<th>Valeur</th>
|
||||
<th>Qté Totale</th>
|
||||
<th>Qté Restante</th>
|
||||
<th>Qté Diffusé</th>
|
||||
<th>Qté Imp</th>
|
||||
<th>Fin de diffusion</th>
|
||||
<th>Statut</th>
|
||||
</thead>
|
||||
@foreach ($campagne->coupons as $coupon)
|
||||
<tr class="couponDetail" @if($coupon->isPrintable) data-printable="1" @else data-printable="0" @endif>
|
||||
<td>{{$coupon->coupon_code}}</td>
|
||||
<td>{{ $coupon->coupon_name}}</td>
|
||||
<td>{{ str_replace('.', ',', number_format($coupon->coupon_value, 2))}} €</td>
|
||||
<td>{{$coupon->quantity}}</td>
|
||||
<td>{{$coupon->remain}}</td>
|
||||
<td>{{$coupon->diffused}}</td>
|
||||
<td>{{$coupon->quantity - $coupon->remain}}</td>
|
||||
@if($coupon->coupon_maxdatediffusion != null)
|
||||
<td>{{ date('d/m/Y', strtotime($coupon->coupon_maxdatediffusion)) }}</td>
|
||||
@else
|
||||
<td>n/c</td>
|
||||
@endif
|
||||
<td>
|
||||
@if ( $coupon->isPrintable == 1)
|
||||
<i class="fas fa-check-circle green"></i>
|
||||
@else
|
||||
@if ($coupon->isPaused == 1)
|
||||
<i class="fas fa-pause-circle orange"></i>
|
||||
@else
|
||||
<i class="fas fa-times-circle red"></i>
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
{{-- <p>{{$coupon->remain}}/{{$coupon->quantity}}</p> --}}
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</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>
|
||||
@endsection
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
@section('widget')
|
||||
<div class="widget">
|
||||
<div class="link-copied">
|
||||
<i class="fas fa-copy"></i> Lien copié !
|
||||
</div>
|
||||
<p>Valeur Disponible : {{ $montantDispo }}€ / {{ $montantTotal }}€</p>
|
||||
<p>URL publique : <span class="copy-url">{{ $campagne->url }}</span></p>
|
||||
<div class="widgetContent">
|
||||
@if ($reset)
|
||||
<input type="submit" class="update-wall" value="Réinitialiser les contrôles">
|
||||
@else
|
||||
<p>Pas de contrôle à réinitialiser</p>
|
||||
@endif
|
||||
</div>
|
||||
@if (isset($logs) && !empty($logs))
|
||||
<div>
|
||||
<h4><i class="fas fa-file-alt"></i> Logs :</h4>
|
||||
<div class="logs-wrapper">
|
||||
<table class="logs">
|
||||
<thead>
|
||||
<th>Date</th>
|
||||
<th>Action</th>
|
||||
<th>Message</th>
|
||||
<th>Source</th>
|
||||
</thead>
|
||||
@foreach ($logs as $log)
|
||||
<tr>
|
||||
<td>{{ date('d/m/Y H:i:s' , strtotime($log->created_at)) }}</td>
|
||||
<td>
|
||||
@switch($log->log_action)
|
||||
@case(1)
|
||||
Mise à jour de panier
|
||||
@break
|
||||
@case(2)
|
||||
Remise à zéro du mur
|
||||
@break
|
||||
@case(3)
|
||||
Impressions
|
||||
@break
|
||||
@endswitch
|
||||
</td>
|
||||
<td>
|
||||
@if ($log->log_action == 3 || $log->log_action == 1)
|
||||
{{ $log->log_message['Message'] }}
|
||||
<ul>
|
||||
@foreach ($log->log_message['Coupons'] as $coupons)
|
||||
<li>{{ $coupons['qty'] }} bon(s), code {{ $coupons['cp_code'] }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@else
|
||||
{{ $log->log_message }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ $log->log_source }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
@section('widget')
|
||||
<div class="widget">
|
||||
<div class="link-copied">
|
||||
<i class="fas fa-copy"></i> Lien copié !
|
||||
</div>
|
||||
<p>URL publique : <span class="copy-url">{{ $campagne->url }}</span></p>
|
||||
<div class="widgetContent">
|
||||
@foreach ($coupons as $coupon)
|
||||
<div class="coupon">
|
||||
<p><i class="fas fa-chevron-right"></i>{{$coupon->coupon_code}} - {{$coupon->coupon_name}} :</p> <p>{{$coupon->qty}} coupon(s) actuellement</p><p>Ajouter <input type="text" data-couponcode="{{ $coupon->coupon_code }}" value="0"> Coupon(s)</p>
|
||||
</div>
|
||||
@endforeach
|
||||
<input type="submit" class="update-basket" data-panier="{{ $panier }}" value="Valider">
|
||||
</div>
|
||||
@if (isset($logs) && !empty($logs))
|
||||
<div>
|
||||
<h4><i class="fas fa-file-alt"></i> Logs :</h4>
|
||||
<div class="logs-wrapper">
|
||||
<table class="logs">
|
||||
<thead>
|
||||
<th>Date</th>
|
||||
<th>Action</th>
|
||||
<th>Message</th>
|
||||
<th>Source</th>
|
||||
</thead>
|
||||
@foreach ($logs as $log)
|
||||
<tr>
|
||||
<td>{{ date('d/m/Y H:i:s' , strtotime($log->created_at)) }}</td>
|
||||
<td>
|
||||
@switch($log->log_action)
|
||||
@case(1)
|
||||
Mise à jour de panier
|
||||
@break
|
||||
@case(2)
|
||||
Remise à zéro du mur
|
||||
@break
|
||||
@case(3)
|
||||
Impressions
|
||||
@break
|
||||
@endswitch
|
||||
</td>
|
||||
<td>
|
||||
@if ($log->log_action == 3 || $log->log_action == 1)
|
||||
{{ $log->log_message['Message'] }}
|
||||
<ul>
|
||||
@foreach ($log->log_message['Coupons'] as $coupons)
|
||||
<li>{{ $coupons['qty'] }} bon(s), code {{ $coupons['cp_code'] }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@else
|
||||
{{ $log->log_message }}
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{{ $log->log_source }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
|
@ -1,19 +1,23 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\Bo\MaintenanceController;
|
||||
use App\Http\Controllers\Fo\BasketController;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Auth::routes(['verify' => false, 'register' => false, 'reset' => false]);
|
||||
|
||||
Route::any('/', "RedirectController");
|
||||
|
||||
Route::group(['prefix' => 'bo', 'middleware' => ['auth', 'saveroute']], function () {
|
||||
Route::get('/', function () {
|
||||
return redirect(route('home'));
|
||||
return redirect(route('campagne.index'));
|
||||
});
|
||||
Route::get('/home', 'StatistiqueController@index')->name('home');
|
||||
Route::get('/statistiques/{campagne}', 'StatistiqueController@statdetail')->name('camp.stats');
|
||||
// ---- Routes pour les ressources en CRUD
|
||||
Route::resource('coupon', 'CouponController')->except(['show'])->middleware('admin');
|
||||
|
||||
Route::resource('site', 'SiteController')->except(['destroy', 'show']);
|
||||
Route::resource('campagne', 'CampagneController')->except(['show']);
|
||||
Route::resource('coupon', 'CouponController')->except(['show']);
|
||||
|
||||
// Routes campagne
|
||||
Route::post('/campagne/{campaign}/add-coupons', 'CampagneController@addCoupons');
|
||||
Route::post('/campagne/{campaign}/remove-coupon/{coupon}', 'CampagneController@removeCoupon');
|
||||
|
|
@ -21,68 +25,33 @@ Route::group(['prefix' => 'bo', 'middleware' => ['auth', 'saveroute']], function
|
|||
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');
|
||||
// ----- Routes de la partie maintenance
|
||||
Route::group(['middleware' => ['superadmin']], function () {
|
||||
Route::get('maintenance', 'MaintenanceController@show')->middleware('superadmin')->name('maintenance.show');
|
||||
Route::get('maintenance/utilisateur/create', 'MaintenanceController@usercreate')
|
||||
->name('maintenance.user.create');
|
||||
Route::post('maintenance/utilisateur/create', 'MaintenanceController@userstore')
|
||||
->name('maintenance.user.create-submit');
|
||||
Route::get('maintenance/utilisateur/{user}/edit', 'MaintenanceController@useredit')
|
||||
->name('maintenance.user.edit');
|
||||
Route::put('maintenance/utilisateur/{user}/edit', 'MaintenanceController@userupdate')
|
||||
->name('maintenance.user.edit-submit');
|
||||
Route::delete('maintenance/utilisateur/{user}', 'MaintenanceController@userdestroy')
|
||||
->name('maintenance.user.destroy');
|
||||
});
|
||||
// ---- Logout
|
||||
Route::get('logout', '\App\Http\Controllers\Auth\LoginController@logout');
|
||||
// ---- Route de changement de site
|
||||
Route::post('/brand-change', 'BrandChangeController')->name('brand-change');
|
||||
// ---- Route Export PDF
|
||||
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@unpublishCouponsAjax');
|
||||
Route::post('/publish-coupons-ajax', 'AjaxController@publishCouponsAjax');
|
||||
// ---- Impressions de coupons
|
||||
Route::post('/ajx_impression', 'AjaxController@impressionAjax');
|
||||
// ---- Statistiques
|
||||
Route::post('/loadStat', 'StatistiqueController@loadStats');
|
||||
|
||||
|
||||
|
||||
// ----- Routes API ------ //
|
||||
/**
|
||||
* Keep Legacy
|
||||
*/
|
||||
// API
|
||||
Route::any('/updatecontact', 'ContactController@updateContact');
|
||||
Route::any('/delctrlcontact', 'MurController@deleteControlContact');
|
||||
Route::any('/mntdispocampagne', 'MurController@montantDispoCampagne');
|
||||
Route::any('/mntdispocontact', 'MurController@montantDispoContact');
|
||||
Route::any('/updatebasket', 'PanierController@updateBasket');
|
||||
/// Panier
|
||||
Route::any('/showbasket', 'PanierController@showBasket');
|
||||
Route::any('/updatebasket', 'PanierController@updateBasket');
|
||||
Route::any('/imprime', 'PanierController@printPanierSelect');
|
||||
Route::any('/merci-panier', 'PanierController@getThanks');
|
||||
Route::any('/getdetailcampaign', 'CampagneController@getDetail');
|
||||
Route::any('/getdiffctccampaign', 'CampagneController@getDiffCamp');
|
||||
Route::any('/imprimer', 'MurController@printMur');
|
||||
Route::any('/merci', 'MurController@getThanks');
|
||||
/// Print Legacy Panier
|
||||
Route::post('/ajx_impression', 'AjaxController@impressionAjax');
|
||||
Route::any('/index', 'AjaxController@backToIndex');
|
||||
Route::any('/', "RedirectController");
|
||||
/// Campagne
|
||||
Route::post('/add-coupons-ajax', 'AjaxController@add_coupons_ajax');
|
||||
Route::post('/remove-coupons-ajax', 'AjaxController@remove_coupons_ajax');
|
||||
Route::any('/getdetailcampaign', 'CampagneController@getDetail');
|
||||
/// Coupon
|
||||
Route::post('/unpublish-coupons-ajax', 'AjaxController@unpublishCouponsAjax');
|
||||
Route::post('/publish-coupons-ajax', 'AjaxController@publishCouponsAjax');
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -94,3 +63,11 @@ Route::name('fo.')->group(function() {
|
|||
Route::get('/{basket:uuid}/print', [BasketController::class, 'print'])->name('print');
|
||||
});
|
||||
});
|
||||
|
||||
Route::prefix('bo')->name('bo.')->middleware(['auth', 'saveroute'])->group(function() {
|
||||
Route::name('maintenance.')->prefix('maintenance')->group(function () {
|
||||
Route::get('/', [MaintenanceController::class, 'index'])->name('index');
|
||||
});
|
||||
|
||||
Route::resource('users', '\App\Http\Controllers\Bo\UserController');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue