ldc-legaulois/app/Http/Controllers/TraceabilityController.php

115 lines
3.6 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
2021-04-08 20:06:14 +02:00
use App\Models\OCBBreeder;
2021-04-08 09:25:28 +02:00
use App\Models\XmlBreeder;
use App\Models\Traceability;
2021-04-08 09:25:28 +02:00
use App\Models\XmlTraceability;
2022-05-03 10:41:05 +02:00
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class TraceabilityController extends Controller
{
2022-05-03 10:41:05 +02:00
/**
* Traceability search ajax request
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function search(Request $request): JsonResponse
2021-03-20 14:38:15 +01:00
{
2021-04-15 10:59:37 +02:00
if (!$request->ajax()) {
abort(404);
}
2022-05-03 10:41:05 +02:00
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
]);
}
2021-04-08 09:25:28 +02:00
if ($tracaDatas->code_traca_prod_elab) {
2022-05-03 10:41:05 +02:00
// * Produit élaboré
$log->response_type = 3;
2022-05-03 10:41:05 +02:00
$log->saveOrFail();
return response()->json([
'status' => 'KO',
'code' => 101
]);
}
2022-05-03 10:41:05 +02:00
// * Si éleveur trouvé, alors c'est un éleveur OCB publié
/** @var \App\Models\OCBBreeder|null */
2021-04-12 16:12:41 +02:00
$breeder = OCBBreeder::where('status', true)
->where('inuavs', 'LIKE', "%$tracaDatas->inuav_code%")
->first();
2022-05-03 10:41:05 +02:00
if ($breeder) {
// * OCB donc redirection
2021-04-12 16:12:41 +02:00
$log->response = sprintf('%s %s', $breeder->first_name, $breeder->last_name);
2022-05-03 10:41:05 +02:00
// * Produit trouvé
$log->response_type = 1;
2022-05-03 10:41:05 +02:00
$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
]);
}
2022-05-03 10:41:05 +02:00
// * Dans le BO : CP Eleveur Manquant, du coup je check le CP de l'éleveur
2021-04-12 16:12:41 +02:00
if (!$breeder->postal_code) {
2022-05-03 10:41:05 +02:00
// * CP Eleveur Manquant
$log->response_type = 5;
2022-05-03 10:41:05 +02:00
$log->saveOrFail();
return response()->json([
'status' => 'KO',
'code' => 103
]);
}
2022-05-03 10:41:05 +02:00
// * Produit trouvé
$log->response_type = 1;
2022-05-03 10:41:05 +02:00
$log->saveOrFail();
2022-05-03 10:41:05 +02:00
return \response()->json([
'status' => 'OK',
'code' => 200,
'breeder' => $breeder
]);
} catch (\Throwable $e) {
report($e);
return response()->json([
'status' => 'KO',
'code' => 500
]);
}//end try
}
}