114 lines
3.6 KiB
PHP
114 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\OCBBreeder;
|
|
use App\Models\XmlBreeder;
|
|
use App\Models\Traceability;
|
|
use App\Models\XmlTraceability;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class TraceabilityController extends Controller
|
|
{
|
|
/**
|
|
* Traceability search ajax request
|
|
*
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function search(Request $request): JsonResponse
|
|
{
|
|
if (!$request->ajax()) {
|
|
abort(404);
|
|
}
|
|
try {
|
|
/** @var string tracability code */
|
|
$searchCode = filter_var($request->code, FILTER_SANITIZE_NUMBER_INT);
|
|
/** @var \App\Models\Traceability|null */
|
|
$tracaDatas = XmlTraceability::where('lot_code', $searchCode)->first();
|
|
$log = new Traceability();
|
|
$log->code = $searchCode;
|
|
|
|
if (!$tracaDatas) {
|
|
// * Produit non trouvé
|
|
$log->response_type = 2;
|
|
$log->saveOrFail();
|
|
return response()->json([
|
|
'status' => 'KO',
|
|
'code' => 100
|
|
]);
|
|
}
|
|
|
|
if ($tracaDatas->code_traca_prod_elab) {
|
|
// * Produit élaboré
|
|
$log->response_type = 3;
|
|
$log->saveOrFail();
|
|
return response()->json([
|
|
'status' => 'KO',
|
|
'code' => 101
|
|
]);
|
|
}
|
|
|
|
// * Si éleveur trouvé, alors c'est un éleveur OCB publié
|
|
/** @var \App\Models\OCBBreeder|null */
|
|
$breeder = OCBBreeder::where('status', true)
|
|
->where('inuavs', 'LIKE', "%$tracaDatas->inuav_code%")
|
|
->first();
|
|
|
|
if ($breeder) {
|
|
// * OCB donc redirection
|
|
$log->response = sprintf('%s %s', $breeder->first_name, $breeder->last_name);
|
|
// * Produit trouvé
|
|
$log->response_type = 1;
|
|
$log->saveOrFail();
|
|
return response()->json([
|
|
'status' => 'OK',
|
|
'code' => 200,
|
|
'breeder' => $breeder,
|
|
'ocb' => true
|
|
]);
|
|
}
|
|
|
|
// * Sinon, c'est un éleveur non OCB
|
|
/** @var \App\Models\XmlBreeder|null */
|
|
$breeder = XmlBreeder::where('inuav_code', $tracaDatas->inuav_code)->first();
|
|
if (!$breeder) {
|
|
// * Eleveur non trouvé
|
|
$log->response_type = 4;
|
|
$log->saveOrFail();
|
|
return response()->json([
|
|
'status' => 'KO',
|
|
'code' => 102
|
|
]);
|
|
}
|
|
|
|
// * Dans le BO : CP Eleveur Manquant, du coup je check le CP de l'éleveur
|
|
if (!$breeder->postal_code) {
|
|
// * CP Eleveur Manquant
|
|
$log->response_type = 5;
|
|
$log->saveOrFail();
|
|
return response()->json([
|
|
'status' => 'KO',
|
|
'code' => 103
|
|
]);
|
|
}
|
|
|
|
// * Produit trouvé
|
|
$log->response_type = 1;
|
|
$log->saveOrFail();
|
|
|
|
return \response()->json([
|
|
'status' => 'OK',
|
|
'code' => 200,
|
|
'breeder' => $breeder
|
|
]);
|
|
} catch (\Throwable $e) {
|
|
report($e);
|
|
return response()->json([
|
|
'status' => 'KO',
|
|
'code' => 500
|
|
]);
|
|
}//end try
|
|
}
|
|
}
|