public function alternative_walkers_xml() { $id = Request::segment(4); $walk = Walk::find($id); $schedule = Schedules::find($walk->schedule_id); $dog = Dog::find($walk->dog_id); $owner = Owner::find($dog->owner_id); $current_walker = Walker::find($walk->walker_id); $latitude = $owner->latitude; $longitude = $owner->longitude; $distance = 5; // Get Latitude $schedule_meta = ScheduleMeta::where('schedule_id', '=', $schedule->id)->orderBy('started_on', 'DESC')->get(); $flag = 0; $date = "0000-00-00"; $days = array(); foreach ($schedule_meta as $meta) { if ($flag == 0) { $date = $meta->started_on; $flag++; } array_push($days, $meta->day); } $start_time = date('H:i:s', strtotime($schedule->start_time) - 60 * 60); $end_time = date('H:i:s', strtotime($schedule->end_time) + 60 * 60); $days_str = implode(',', $days); $settings = Settings::where('key', 'default_distance_unit')->first(); $unit = $settings->value; if ($unit == 0) { $multiply = 1.609344; } elseif ($unit == 1) { $multiply = 1; } $query = "SELECT walker.id,walker.bio,walker.first_name,walker.last_name,walker.phone,walker.latitude,walker.longitude from walker where id NOT IN ( SELECT distinct schedules.walker_id FROM `schedule_meta` left join schedules on schedule_meta.schedule_id = schedules.id where schedules.is_confirmed\t != 0 and schedule_meta.day IN ({$days_str}) and schedule_meta.ends_on >= '{$date}' and schedule_meta.started_on <= '{$date}' and ((schedules.start_time > '{$start_time}' and schedules.start_time < '{$end_time}') OR ( schedules.end_time > '{$start_time}' and schedules.end_time < '{$end_time}' )) ) and " . "ROUND((" . $multiply . " * 3956 * acos( cos( radians('{$latitude}') ) * " . "cos( radians(latitude) ) * " . "cos( radians(longitude) - radians('{$longitude}') ) + " . "sin( radians('{$latitude}') ) * " . "sin( radians(latitude) ) ) ) ,8) <= {$distance} "; $walkers = DB::select(DB::raw($query)); $response = ""; $response .= '<markers>'; foreach ($walkers as $walker) { $response .= '<marker '; $response .= 'name="' . $walker->first_name . " " . $walker->last_name . '" '; $response .= 'client_name="' . $walker->first_name . " " . $walker->last_name . '" '; $response .= 'contact="' . $walker->phone . '" '; $response .= 'amount="' . 0 . '" '; $response .= 'lat="' . $walker->latitude . '" '; $response .= 'lng="' . $walker->longitude . '" '; $response .= 'id="' . $walker->id . '" '; $response .= 'type="client" '; $response .= '/>'; } // Add Current walker if ($current_walker) { $response .= '<marker '; $response .= 'name="' . $current_walker->first_name . " " . $current_walker->last_name . '" '; $response .= 'client_name="' . $current_walker->first_name . " " . $current_walker->last_name . '" '; $response .= 'contact="' . $current_walker->phone . '" '; $response .= 'amount="' . 0 . '" '; $response .= 'lat="' . $current_walker->latitude . '" '; $response .= 'lng="' . $current_walker->longitude . '" '; $response .= 'id="' . $current_walker->id . '" '; $response .= 'type="driver" '; $response .= '/>'; } // Add Owner $response .= '<marker '; $response .= 'name="' . $owner->first_name . " " . $owner->last_name . '" '; $response .= 'client_name="' . $owner->first_name . " " . $owner->last_name . '" '; $response .= 'contact="' . $owner->phone . '" '; $response .= 'amount="' . 0 . '" '; $response .= 'lat="' . $owner->latitude . '" '; $response .= 'lng="' . $owner->longitude . '" '; $response .= 'id="' . $owner->id . '" '; $response .= 'type="client_pay_done" '; $response .= '/>'; // Add Busy Walkers $walkers = DB::table('request')->where('walk.is_started', 1)->where('walk.is_completed', 0)->join('walker', 'walk.walker_id', '=', 'walker.id')->select('walker.id', 'walker.phone', 'walker.first_name', 'walker.last_name', 'walker.latitude', 'walker.longitude')->distinct()->get(); foreach ($walkers as $walker) { $response .= '<marker '; $response .= 'name="' . $walker->first_name . " " . $walker->last_name . '" '; $response .= 'client_name="' . $walker->first_name . " " . $walker->last_name . '" '; $response .= 'contact="' . $walker->phone . '" '; $response .= 'amount="' . 0 . '" '; $response .= 'lat="' . $walker->latitude . '" '; $response .= 'lng="' . $walker->longitude . '" '; $response .= 'id="' . $owner->id . '" '; $response .= 'type="client_no_pay" '; $response .= '/>'; } $response .= '</markers>'; $content = View::make('walkers_xml')->with('response', $response); return Response::make($content, '200')->header('Content-Type', 'text/xml'); }