ldc-bogt/app/Http/Controllers/EleveurController.php

219 lines
6.5 KiB
PHP
Raw Normal View History

2019-12-04 17:30:46 +01:00
<?php
namespace App\Http\Controllers;
use App\Enums\EleveurType;
2022-03-08 11:40:52 +01:00
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;
2022-03-09 10:54:00 +01:00
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
2019-12-04 17:30:46 +01:00
class EleveurController extends Controller
{
/**
* Display a listing of the resource.
*
* @param \Illuminate\Http\Request $request
2019-12-04 17:30:46 +01:00
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
2019-12-04 17:30:46 +01:00
{
/** @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.
}
}
2019-12-04 17:30:46 +01:00
$searchFields = trans('Code EDE, Nom, Prénom, Ville, Code INUAV');
$eleveurs->orderBy('id', 'DESC');
return view('eleveurs.index', [
'eleveurs' => $eleveurs->paginate(),
'searchFields' => $searchFields
]);
2019-12-04 17:30:46 +01:00
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
2020-01-08 15:13:11 +01:00
return view('eleveurs.create');
2019-12-04 17:30:46 +01:00
}
/**
* Store a newly created resource in storage.
*
* @param StoreEleveurRequest $request
2019-12-04 17:30:46 +01:00
* @return \Illuminate\Http\Response
*/
public function store(StoreEleveurRequest $request)
2019-12-04 17:30:46 +01:00
{
$eleveur = new Eleveur($request->validated());
2022-03-08 09:42:26 +01:00
if ($request->photo1) {
$eleveur->path_photo1 = ToolboxHelper::storeImage(
$eleveur->getTable(),
$request->photo1
);
2020-02-10 14:24:31 +01:00
}
2022-03-08 09:42:26 +01:00
if ($request->photo2) {
$eleveur->path_photo2 = ToolboxHelper::storeImage(
$eleveur->getTable(),
$request->photo2
);
2020-02-10 14:24:31 +01:00
}
2020-01-08 15:13:11 +01:00
if ($eleveur->saveOrFail()) {
return redirect()
->route('bo.eleveur.edit', ['eleveur' => $eleveur])
->with('success', trans('La fiche éleveur à été créé.'));
}
2019-12-04 17:30:46 +01:00
return back();
2019-12-04 17:30:46 +01:00
}
/**
* Show the form for editing the specified resource.
*
2022-03-08 09:42:26 +01:00
* @param \App\Eleveur $eleveur
2019-12-04 17:30:46 +01:00
* @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
2019-12-04 17:30:46 +01:00
* @return \Illuminate\Http\Response
*/
public function update(UpdateEleveurRequest $request, Eleveur $eleveur)
2019-12-04 17:30:46 +01:00
{
$eleveur->fill($request->validated());
2019-12-04 17:30:46 +01:00
2022-03-08 09:42:26 +01:00
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
);
2019-12-04 17:30:46 +01:00
}
2022-03-08 09:42:26 +01:00
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
);
2019-12-04 17:30:46 +01:00
}
if ($eleveur->saveOrFail()) {
return redirect()
->route('bo.eleveur.edit', ['eleveur' => $eleveur])
->with('success', trans('La fiche éleveur à été modifiée.'));
}
2019-12-04 17:30:46 +01:00
return back();
2019-12-04 17:30:46 +01:00
}
/**
* Export eleveurs to CSV
2019-12-04 17:30:46 +01:00
*
* @return \Symfony\Component\HttpFoundation\StreamedResponse
2019-12-04 17:30:46 +01:00
*/
2022-03-08 09:42:26 +01:00
public function export()
{
2020-01-08 15:13:11 +01:00
$headers = array(
2020-03-09 10:07:01 +01:00
"Content-Encoding" => "UTF-8",
2020-03-09 09:25:43 +01:00
"Content-type" => "Content-type: text/csv; charset=UTF-8",
2020-01-08 15:13:11 +01:00
"Content-Disposition" => "attachment; filename=file.csv",
"Pragma" => "no-cache",
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
"Expires" => "0"
);
2020-03-09 09:25:43 +01:00
2020-01-08 15:13:11 +01:00
$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'
);
2020-03-09 09:25:43 +01:00
2022-03-08 09:42:26 +01:00
$callback = function () use ($eleveurs, $columns) {
2020-01-08 15:13:11 +01:00
$file = fopen('php://output', 'w');
2022-03-08 09:42:26 +01:00
fputs($file, "\xEF\xBB\xBF");
2022-03-09 10:54:00 +01:00
// * use BOM for Office
2020-01-08 15:13:11 +01:00
fputcsv($file, $columns, ";");
2020-03-09 09:25:43 +01:00
2022-03-08 09:42:26 +01:00
foreach ($eleveurs as $eleveur) {
if ($eleveur->path_photo1 != "") {
2020-01-08 15:13:11 +01:00
$photo1 = "OUI";
2022-03-08 09:42:26 +01:00
} else {
2020-01-08 15:13:11 +01:00
$photo1 = "NON";
}
2022-03-08 09:42:26 +01:00
if ($eleveur->path_photo2 != "") {
2020-01-08 15:13:11 +01:00
$photo2 = "OUI";
2022-03-08 09:42:26 +01:00
} else {
2020-01-08 15:13:11 +01:00
$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
2020-01-08 15:13:11 +01:00
fclose($file);
};
return Response::stream($callback, 200, $headers);
}
2019-12-04 17:30:46 +01:00
}