- Fix vider la barre de recherche quand on clique sur "Réinitialiser" - Fix script index ElasticMedia + ajout condition sur l'existence d'un index - Ajout de la requete Elasticsearch dans MediaController
186 lines
4.1 KiB
PHP
186 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Models\Panier;
|
|
use App\Models\Media;
|
|
use App\Models\Format;
|
|
|
|
class PanierController extends Controller
|
|
{
|
|
/**
|
|
* Page principale des paniers
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$paniers = Auth::user()->paniersOwner;
|
|
return view('panier.index')->with([
|
|
'paniers'=> $paniers,
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Page publique d'un panier
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function showBasket(Request $request)
|
|
{
|
|
$panier_uid = $request->basket_uid;
|
|
$formats = Format::withoutGlobalScope('App\Scopes\SystemScope')->where('system', 1)->get();
|
|
$panier = Panier::where('uid', $panier_uid)->first();
|
|
if($panier && $panier->statut == 1){
|
|
return view('panier.show')->with([
|
|
'panier'=> $panier,
|
|
'formats' => $formats,
|
|
]);
|
|
}else{
|
|
abort(404, 'Page introuvable');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Ajout de média à un panier
|
|
*/
|
|
public function addMediasBasket(Request $request)
|
|
{
|
|
$response = false;
|
|
|
|
$mediasToAdd = $request->input('medias');
|
|
$panierId = $request->input('panier_id');
|
|
|
|
$panier = Panier::where('id', $panierId)->with('medias')->first();
|
|
if($panier){
|
|
$result = $panier->medias()->syncWithoutDetaching($mediasToAdd);
|
|
$medias = Media::whereIn('id', $result['attached'])->get();
|
|
$response = $medias;
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Suppression de média à un panier
|
|
*/
|
|
public function removeMediasBasket(Request $request)
|
|
{
|
|
$response = false;
|
|
|
|
$mediaToRemove = $request->input('media_id');
|
|
$panierId = $request->input('panier_id');
|
|
|
|
$panier = Panier::where('id', $panierId)->with('medias')->first();
|
|
if($panier && $mediaToRemove != ""){
|
|
$panier->medias()->detach($mediaToRemove);
|
|
$response = true;
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
|
|
/**
|
|
* Ajoute un panier
|
|
*/
|
|
public function addBasket(Request $request)
|
|
{
|
|
$response = false;
|
|
$uid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
|
|
$title = $request->input('title');
|
|
|
|
if($title == ""){
|
|
$title = "Panier du ".date("d/m/Y");
|
|
}
|
|
|
|
$panier = new Panier();
|
|
$panier->owner = Auth::user()->id;
|
|
$panier->libelle = $title;
|
|
$panier->uid = $uid;
|
|
if($panier->save()){
|
|
$response = $panier;
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Supprimer un panier
|
|
*
|
|
*/
|
|
public function removeBasket(Request $request)
|
|
{
|
|
$response = false;
|
|
$basket_id = $request->input('basket_id');
|
|
|
|
|
|
$panier = Panier::where('id', $basket_id);
|
|
if($panier){
|
|
$panier->delete();
|
|
$response = true;
|
|
}
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Obtenir un panier
|
|
*
|
|
*/
|
|
public function getBasket(Request $request)
|
|
{
|
|
$response = false;
|
|
$basket_id = $request->input('basket_id');
|
|
$host = $request->getSchemeAndHttpHost();
|
|
|
|
$panier = Panier::where('id', $basket_id)->first();
|
|
if($panier){
|
|
$response['basket'] = $panier;
|
|
$response['link'] = $host."/basket/".$panier->uid;
|
|
}
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* Charge un panier
|
|
*/
|
|
public function loadBasket(Request $request)
|
|
{
|
|
$response = false;
|
|
$panierId = $request->input('panier_id');
|
|
|
|
$panier = Panier::where('id', $panierId)->with('medias')->first();
|
|
if($panier){
|
|
$response = $panier;
|
|
}
|
|
|
|
return json_encode($response);
|
|
}
|
|
|
|
/**
|
|
* enregistre les propriétés d'un panier
|
|
*
|
|
*/
|
|
public function saveBasketProperty(Request $request)
|
|
{
|
|
$response = false;
|
|
$basket_id = $request->input('basket_id');
|
|
$libelle = $request->input('libelle');
|
|
$description = $request->input('description');
|
|
$statut = $request->input('statut');
|
|
|
|
$panier = Panier::where('id', $basket_id)->first();
|
|
if($panier){
|
|
$panier->libelle = $libelle;
|
|
$panier->description = $description;
|
|
$panier->statut = $statut;
|
|
$panier->save();
|
|
$response = $panier;
|
|
}
|
|
return json_encode($response);
|
|
}
|
|
}
|