ldc-dam/app/Http/Controllers/PanierController.php

187 lines
4.1 KiB
PHP
Raw Normal View History

2019-07-31 12:22:24 +02:00
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Panier;
use App\Media;
use App\Format;
2019-07-31 12:22:24 +02:00
class PanierController extends Controller
{
/**
* Page principale des paniers
2019-07-31 12:22:24 +02:00
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$paniers = Auth::user()->paniersOwner;
2019-07-31 12:22:24 +02:00
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');
}
}
2019-07-31 12:22:24 +02:00
/**
* 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));
2019-07-31 12:22:24 +02:00
$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;
2019-07-31 12:22:24 +02:00
if($panier->save()){
$response = $panier;
}
return json_encode($response);
}
/**
* Supprimer un panier
2019-07-31 12:22:24 +02:00
*
*/
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);
}
2019-07-31 12:22:24 +02:00
/**
* 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)
{
2019-08-06 14:38:07 +02:00
$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();
2019-08-06 14:38:07 +02:00
$response = $panier;
}
2019-08-06 14:38:07 +02:00
return json_encode($response);
}
2019-07-31 12:22:24 +02:00
}