'Retrieved Order Tracking', 'message' => 'You have successfully retrieved order tracking info' ]; } /** @var ListsOrderTracking */ private $listsOrderTracking; /** @var CanListTrackings */ private $canListTrackings; /** * ListOrderTrackingLogic constructor. * @param CanListTrackings $canListTrackings * @param ListsOrderTracking $listsOrderTracking */ public function __construct(CanListTrackings $canListTrackings, ListsOrderTracking $listsOrderTracking) { $this->canListTrackings = $canListTrackings; $this->listsOrderTracking = $listsOrderTracking; } public function logic(Request $request) : JsonResponse { $query = null; $filters = json_decode($request->input('filters'), true); $trackingNo = $filters['tracking_no']; try { $trackingNo = Crypt::decryptString($trackingNo); $trackingNo = str_replace('_01', '', $trackingNo); } catch (DecryptException $e) { Log::info('Decryption failed, string might already be decrypted or invalid.'); $this->canListTrackings->passes(); // if(!in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN])){ // abort(404); // } } if (preg_match('/^\d{9}$/', $trackingNo)) { $order = Order::where('reference', $trackingNo)->first(); if($order){ $packingList = $order->packingLists()->first(); $trackingNo = $packingList->reference; Artisan::call('process-yd-by-traking-no-data-command', [ 'trackingNo' => $trackingNo ]); $query = $this->listsOrderTracking->execute(array_merge($this->listsOrderTracking->deserializeFilters($request->input('filters')), ['tracking_no' => $trackingNo])); } } else{ Artisan::call('process-yd-by-traking-no-data-command', [ 'trackingNo' => $trackingNo ]); $query = $this->listsOrderTracking->execute(array_merge($this->listsOrderTracking->deserializeFilters($request->input('filters')), ['tracking_no' => $trackingNo])); } return $this->collectionResponse(OrderTrackingResource::collection($query)); } }