public function track($tracking_code) { if (!empty($tracking_code)) { $delivery = Delivery::where("tracking_code", $tracking_code)->first(); if (!$delivery) { abort(404); } $latlng = null; if ($delivery->state == 0) { $latlng = explode(',', $delivery->sender_position); } else { if ($delivery->state == 1 && $delivery->agent) { $latlng = explode(',', $delivery->agent->last_position); } else { if ($delivery->state == 2) { $latlng = explode(',', $delivery->recipient_position); } } } $lat = $latlng[0]; $lng = $latlng[1]; $state_text = array("Waiting for pickup", "Being delivered", "Delivered"); $current_dt = new DateTime(); $data = array('tracking_code' => $tracking_code, 'delivery' => $delivery, 'title' => 'Delivery Tracking', 'lat' => $lat, 'lng' => $lng, 'state' => $state_text[$delivery->state], 'estimated_pickup' => (new DateTime($delivery->estimated_pickup))->format('H:i'), 'estimated_delivery' => (new DateTime($delivery->estimated_delivery))->format('H:i'), 'current_dt' => $current_dt->format('D, d M Y, H:i')); return view('track', $data); } else { abort(404); } }