- add Civilité enum to Eleveur - add type enum to eleveur - add search bar on eleveurs - Rewrite eleveur CRUD - Add flashMessages module
218 lines
6.5 KiB
PHP
218 lines
6.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\EleveurType;
|
|
use App\Models\Eleveur;
|
|
use App\Http\Requests\StoreEleveurRequest;
|
|
use App\Http\Requests\UpdateEleveurRequest;
|
|
use App\Lib\ToolboxHelper;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\File;
|
|
use Illuminate\Support\Facades\Response;
|
|
use Illuminate\Support\Facades\Session;
|
|
|
|
class EleveurController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
/** @var \Illuminate\Database\Eloquent\Builder $eleveurs */
|
|
$eleveurs = Eleveur::query();
|
|
|
|
if ($request->search) {
|
|
$this->searchQuery(
|
|
$eleveurs,
|
|
$request->search,
|
|
'code_ede',
|
|
'nom',
|
|
'prenom',
|
|
'ville',
|
|
'code_inuav'
|
|
);
|
|
}
|
|
|
|
if ($request->type) {
|
|
try {
|
|
$eleveurs = $eleveurs->whereType(EleveurType::make(intval($request->type)));
|
|
//phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch
|
|
} catch (\BadMethodCallException $e) {
|
|
dd($e);
|
|
// Continue.
|
|
}
|
|
}
|
|
|
|
$searchFields = trans('Code EDE, Nom, Prénom, Ville, Code INUAV');
|
|
|
|
$eleveurs->orderBy('id', 'DESC');
|
|
|
|
return view('eleveurs.index', [
|
|
'eleveurs' => $eleveurs->paginate(),
|
|
'searchFields' => $searchFields
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
return view('eleveurs.create');
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param StoreEleveurRequest $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(StoreEleveurRequest $request)
|
|
{
|
|
$eleveur = new Eleveur($request->validated());
|
|
if ($request->photo1) {
|
|
$eleveur->path_photo1 = ToolboxHelper::storeImage(
|
|
$eleveur->getTable(),
|
|
$request->photo1
|
|
);
|
|
}
|
|
if ($request->photo2) {
|
|
$eleveur->path_photo2 = ToolboxHelper::storeImage(
|
|
$eleveur->getTable(),
|
|
$request->photo2
|
|
);
|
|
}
|
|
|
|
if ($eleveur->saveOrFail()) {
|
|
return redirect()
|
|
->route('bo.eleveur.edit', ['eleveur' => $eleveur])
|
|
->with('success', trans('La fiche éleveur à été créé.'));
|
|
}
|
|
|
|
return back();
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*
|
|
* @param \App\Eleveur $eleveur
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function edit(Eleveur $eleveur)
|
|
{
|
|
return view('eleveurs.edit', ['eleveur' => $eleveur]);
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param UpdateEleveurRequest $request
|
|
* @param \App\Eleveur $eleveur
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(UpdateEleveurRequest $request, Eleveur $eleveur)
|
|
{
|
|
$eleveur->fill($request->validated());
|
|
|
|
if ($request->photo1) {
|
|
if (!File::delete($eleveur->path_photo1)) {
|
|
Session::flash('error', trans('Erreur lors de la supression de l\'ancienne photo.'));
|
|
}
|
|
$eleveur->path_photo1 = ToolboxHelper::storeImage(
|
|
$eleveur->getTable(),
|
|
$request->photo1
|
|
);
|
|
}
|
|
|
|
if ($request->photo2) {
|
|
if (!File::delete($eleveur->path_photo2)) {
|
|
Session::flash('error', trans('Erreur lors de la supression de l\'ancienne photo.'));
|
|
}
|
|
$eleveur->path_photo2 = ToolboxHelper::storeImage(
|
|
$eleveur->getTable(),
|
|
$request->photo2
|
|
);
|
|
}
|
|
|
|
if ($eleveur->saveOrFail()) {
|
|
return redirect()
|
|
->route('bo.eleveur.edit', ['eleveur' => $eleveur])
|
|
->with('success', trans('La fiche éleveur à été modifiée.'));
|
|
}
|
|
|
|
return back();
|
|
}
|
|
|
|
/**
|
|
* Export eleveurs to CSV
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\StreamedResponse
|
|
*/
|
|
public function export()
|
|
{
|
|
$headers = array(
|
|
"Content-Encoding" => "UTF-8",
|
|
"Content-type" => "Content-type: text/csv; charset=UTF-8",
|
|
"Content-Disposition" => "attachment; filename=file.csv",
|
|
"Pragma" => "no-cache",
|
|
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
|
|
"Expires" => "0"
|
|
);
|
|
|
|
$eleveurs = Eleveur::all();
|
|
$columns = array(
|
|
'Code Cafel', 'Type', 'Code EDE', 'Nom', 'Prénom',
|
|
'Naissance', 'CP', 'Ville', 'Date Début Elevage',
|
|
'Code INUAV', 'Infos Exploitation', 'A propos de l\'éleveur',
|
|
'Toujours été éleveur', 'Ce que l\'éleveur aimes', 'Loué ?',
|
|
'Photo 1', 'Photo 2'
|
|
);
|
|
|
|
$callback = function () use ($eleveurs, $columns) {
|
|
$file = fopen('php://output', 'w');
|
|
fputs($file, "\xEF\xBB\xBF");
|
|
// * use BOM for Office
|
|
fputcsv($file, $columns, ";");
|
|
|
|
foreach ($eleveurs as $eleveur) {
|
|
if ($eleveur->path_photo1 != "") {
|
|
$photo1 = "OUI";
|
|
} else {
|
|
$photo1 = "NON";
|
|
}
|
|
if ($eleveur->path_photo2 != "") {
|
|
$photo2 = "OUI";
|
|
} else {
|
|
$photo2 = "NON";
|
|
}
|
|
fputcsv($file, array(
|
|
$eleveur->code_cafel,
|
|
$eleveur->type->label,
|
|
$eleveur->code_ede,
|
|
$eleveur->nom,
|
|
$eleveur->prenom,
|
|
$eleveur->naissance,
|
|
$eleveur->cp,
|
|
$eleveur->ville,
|
|
$eleveur->elv_date_debut,
|
|
$eleveur->code_inuav,
|
|
$eleveur->exploitation,
|
|
$eleveur->aboutyou,
|
|
$eleveur->vocation,
|
|
$eleveur->likeinjob,
|
|
$eleveur->loue_means,
|
|
$photo1,
|
|
$photo2
|
|
), ";");
|
|
}//end foreach
|
|
fclose($file);
|
|
};
|
|
return Response::stream($callback, 200, $headers);
|
|
}
|
|
}
|