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 } }