ldc-mesbr-app/app/Http/Controllers/CampagneController.php
Thibault Richy 8a1054333a init
2019-01-15 14:17:15 +01:00

162 lines
4.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Campagne;
use App\Site;
use App\Coupon;
use App\Notification;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class CampagneController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get();
return view('campagne.index')->with('campagnes', $campagnes);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('campagne.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$campagne = new Campagne();
$campagne->camp_name = $request->input('camp_name');
$campagne->camp_type = $request->input('camp_type');
$campagne->camp_published = $request->input('camp_published');
if (null !== $request->input('camp_limitedPrinting')) {
$campagne->camp_limitedPrinting = $request->input('camp_limitedPrinting');
}
$site = Site::findOrFail(session()->get('site')->id)->first();
if ($site->campagnes()->save($campagne)) {
$campId = str_pad(strval($campagne->camp_id), 5, '00000', STR_PAD_LEFT);
Storage::makeDirectory('/landings/' . $campId);
}
return redirect(route('campagne.edit', ['campagne' => $campagne]));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Campagne $campagne
* @return \Illuminate\Http\Response
*/
public function edit(Campagne $campagne)
{
$site = Site::findOrFail(session()->get('site')->id)->first();
$couponsLinked = $campagne->coupons()->get();
$campid = $campagne->camp_id;
$couponsNotLinked = Coupon::whereDoesntHave('campagnes', function($q) use ($campid){
$q->where('campagne_id', $campid);
})->where('coupon_siteId', session()->get('site')->id)->get();
return view('campagne.edit', ['campagne' => $campagne, 'coupons' => $couponsNotLinked, 'couponsLinked' => $couponsLinked]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Campagne $campagne
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Campagne $campagne)
{
if ($campagne->update($request->all())) {
session()->flash('update_ok', 'La campagne a bien été modifiée');
} else {
session()->flash('update_nok', 'Erreur lors de l\'enregistrement');
}
return view('campagne.edit')->with('campagne', $campagne);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Campagne $campagne
* @return \Illuminate\Http\Response
*/
public function destroy(Campagne $campagne)
{
if ($campagne->delete()) {
return redirect(route('campagne.index'));
} else {
session()->flash('delete_nok', 'Erreur lors de la suppression');
return view('campagne.edit')->with('campagne', $campagne);
}
}
/**
* @param \Illuminate\Http\Request $request
*
* @return array
*/
public function saveNotification(Request $request)
{
$notification = new Notification();
$notification->notif_email = $request->input('notif_email');
$notification->notif_campId = $request->input('notif_campId');
$notification->save();
return redirect()->back();
}
/**
* @param \App\Notification $notification
*
* @return array
*/
public function deleteNotification($id)
{
$notification = Notification::find($id);
if ($notification->delete()) {
return redirect()->back();
} else {
session()->flash('delete_nok', 'Erreur lors de la suppression');
return redirect()->back();
}
}
/**
* @param \App\Coupon $coupon
*
* @return array
*/
public function deleteCoupon($id)
{
$coupon = Coupon::find($id);
if ($notification->delete()) {
return redirect()->back();
} else {
session()->flash('delete_nok', 'Erreur lors de la suppression');
return redirect()->back();
}
}
}