Added code search

This commit is contained in:
Jérémy Munsch 2022-01-10 16:58:25 +01:00
parent 1a5eb157cb
commit 7d619e02e1
No known key found for this signature in database
GPG key ID: 55196BEE445F6049
6 changed files with 92 additions and 0 deletions

View file

@ -3,12 +3,14 @@
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use App\Http\Requests\CodeSearchRequest;
use App\Http\Requests\ExportCodesRequest;
use App\Http\Requests\GenerateCodesRequest;
use App\Jobs\ProcessExportCodesUniques;
use App\Jobs\ProcessUniqueCode;
use App\Models\Codes;
use App\Models\Settings;
use Kwaadpepper\Serial\Exceptions\SerialCasterException;
class CodesController extends Controller
{
@ -73,4 +75,30 @@ class CodesController extends Controller
config('mail.MAIL_ADMIN') . " lorsque le traitement sera terminé."
);
}
/**
* Search for a specific code.
*
* @param CodeSearchRequest $request
* @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory
*/
public function search(CodeSearchRequest $request)
{
$code = null;
try {
$code = Codes::whereId(Codes::serialToInt($request->code))->first();
} catch (\Throwable $e) {
if (\get_class($e) === SerialCasterException::class) {
$code = false;
}
} finally {
if ($code === false) {
\session()->flash('warning', trans('Code non valide.'));
}
if ($code === null) {
\session()->flash('warning', trans('Code introuvable.'));
}
}
return view('bo.codes.search', compact('code'));
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CodeSearchRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return boolean
*/
public function authorize()
{
// ? Is auth and super admin ?
return auth()->check() and
auth()->user()->role === 1;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'code' => 'required|string|min:1|max:25'
];
}
}

View file

@ -8,6 +8,7 @@
<button type="button" class="btn btn-sm btn-success float-right" data-toggle="modal" data-target="#exportModal">
<i class="fas fa-file-export"></i>&nbsp;{{ __('Export') }}
</button>
@include('bo.codes.search-form')
<!-- Modal -->
<div class="modal fade" id="exportModal" tabindex="-1" aria-labelledby="exportModalLabel" aria-hidden="true">

View file

@ -0,0 +1,8 @@
<div class="float-right mr-4">
<form class="input-group" action="{{route('bo.codes.search')}}" method="GET">
<input class="form-control" type="text" name="code" placeholder="{{ __('Chercher un code ici.') }}">
<div class="input-group-append">
<button class="btn btn-primary">{{ __('Rechercher') }}</button>
</div>
</form>
</div>

View file

@ -0,0 +1,22 @@
@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
<a href="{{ route('bo.codes') }}">{{ __('Gestion des codes uniques') }}</a>&nbsp;-&nbsp;{{ __('Recherche de code unique') }}
@include('bo.codes.search-form')
</div>
<div class="card-body">
@if(!$code)
<span class="h4">{{ __('Veuillez entrer un code ci-dessus pour en obtenir les informations.') }}</span>
@else
<p><span class="h4">{{ __('Voici l\'état du code trouvé') }}</span></p>
<p>{{ __('Code : :code', ['code' => request()->code]) }}</p>
<p><span class="font-weight-bold">{{ __('ID : :id', ['id' => $code->id]) }}</span></p>
<p>{{ __('Utilisé ? : :used', ['used' => $code->code_used ? 'OUI' : 'NON']) }}</p>
<p>{{ __('Exporté ? : :exported', ['exported' => $code->code_exported ? 'OUI' : 'NON']) }}</p>
<p>{{ __('Créé le : :date_creation', ['date_creation' => $code->date_creation]) }}</p>
@endif
</div>
</div>
@endsection

View file

@ -63,6 +63,7 @@ Route::prefix('bo')
// Codes uniques.
Route::get('/codes', [CodesController::class, 'index'])->name('codes');
Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes');
Route::get('/codes/search', [CodesController::class, 'search'])->name('codes.search');
Route::post('/codes/export', [CodesController::class, 'export'])->name('export-codes');
// Liste des gagnants.
Route::get('/winners-list', [WinnersListController::class, 'index'])->name('winners-list');