ldc-legaulois/app/Http/Controllers/TraceabilityController.php
2022-02-10 16:14:58 +01:00

73 lines
2.5 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\Request;
class TraceabilityController extends Controller
{
public function search(Request $request)
{
if (!$request->ajax()) {
abort(404);
}
$searchCode = filter_var($request->code, FILTER_SANITIZE_NUMBER_INT);
$tracaDatas = XmlTraceability::where('lot_code', $searchCode)->first();
$log = new Traceability();
$log->code = $searchCode;
if (!$tracaDatas) {
// Produit non trouvé
$log->response_type = 2;
$log->save();
return json_encode(['status' => 'KO', 'code' => 100]);
} else {
if ($tracaDatas->code_traca_prod_elab) {
// Produit élaboré
$log->response_type = 3;
$log->save();
return json_encode(['status' => 'KO', 'code' => 101]);
}
// Si éleveur trouvé, alors c'est un éleveur OCB publié
$breeder = OCBBreeder::where('status', true)
->where('inuavs', 'LIKE', "%$tracaDatas->inuav_code%")
->first();
if (!$breeder) {
// Sinon, c'est un éleveur non OCB
$breeder = XmlBreeder::where('inuav_code', $tracaDatas->inuav_code)->first();
if (!$breeder) {
// Eleveur non trouvé
$log->response_type = 4;
$log->save();
return json_encode(['status' => 'KO', 'code' => 102]);
}
} else {
// OCB donc redirection
$log->response = sprintf('%s %s', $breeder->first_name, $breeder->last_name);
// Produit trouvé
$log->response_type = 1;
$log->save();
return json_encode(['status' => 'OK', 'code' => 200, 'redirect' => $breeder->slug]);
}
// 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->save();
return json_encode(['status' => 'KO', 'code' => 103]);
}
// Produit trouvé
$log->response_type = 1;
$log->save();
}//end if
return json_encode(['status' => 'OK', 'code' => 200, 'breeder' => $breeder]);
}
}