ldc-mesbr-app/app/Http/Controllers/SiteController.php

127 lines
3.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Site;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SiteController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$sites = Site::all();
return view('site.index')->with('sites', $sites);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('site.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'site_id' => 'required|unique:site',
'site_nom' => 'required',
'site_contact' => 'required',
'site_logo' => 'required|image|mimes:png',
'site_rcs' => 'required',
'site_libelle' => 'required'
]);
$site = new Site();
$datas = $this->saveImg($request);
$site->site_id = $datas['site_id'];
$site->site_nom = $datas['site_nom'];
$site->site_contact = $datas['site_contact'];
$site->site_logo = $datas['site_logo'];
$site->site_rcs = $datas['site_rcs'];
$site->site_libelle = $datas['site_libelle'];
$site->save();
// --- ADD all new sites to all SuperAdmin
$admins = User::where(['roles' => 'superadmin'])->get();
foreach ($admins as $admin) {
$admin->sites()->save($site);
}
// --- MAJ Selecteur marques
$marques = Auth::user()->sites;
$submarques = $marques->map(function ($marque) {
return $marque->only(['id', 'site_nom', 'site_id', 'site_logo']);
});
session()->put('marques', $submarques);
return view('site.edit', ['site' => $site]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Site $site
* @return \Illuminate\Http\Response
*/
public function edit(Site $site)
{
return view('site.edit')->with('site', $site);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Site $site
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Site $site)
{
if ($site->update($this->saveImg($request))) {
session()->flash('update_ok', 'Le site a bien été modifié');
} else {
session()->flash('update_nok', 'Erreur lors de l\'enregistrement');
}
return redirect()->route('site.edit', ['site' => $site]);
}
/**
* @param \Illuminate\Http\Request $request
*
* @return array
*/
private function saveImg(Request $request)
{
$datas = collect($request->all());
// Enregistrer le fichiersi il a changé
if ($request->site_logo) {
$path = $request->site_logo->store('images/logos');
$path = str_replace('public/', '', $path);
$datas->put('site_logo', $path);
} else {
$datas->put('site_logo', $request->input('site_logo_hidden'));
}
return $datas->toArray();
}
}