public static function resolveNewSegmentFromActivity($token, $travel_data, $new_activity) { $iterinary = self::getUserCurrentIterinary($token); // return $iterinary; if (!$iterinary || isset($iterinary['err'])) { $response = ['err code' => '403', 'message' => 'no current iterinaries found for user']; return $response; } // dd($new_activity); $route = $iterinary->route; $last_activity = self::getLastActivity($token); // return $last_activity; $segment = new Segment(); // return $last_activity; $segment->destination_name = $last_activity->place_name; $segment->origin_pos = $last_activity->lat . ',' . $last_activity->lng; $segment->details = $travel_data['transpo_details']; $segment->mode = $travel_data['mode']; $segment->day = self::getDiffInDays($token, $iterinary->id); $segment->origin_name = $new_activity['place_name']; $segment->destination_pos = $new_activity['lat'] . ',' . $new_activity['lng']; // return $iterinary; $segment->price = $travel_data['expense']; $segment->sequence = $route->segments()->count() + 1; $points = array_merge([$last_activity->lat, $last_activity->lng], [$new_activity['lat'], $new_activity['lng']]); $segment->path = GeolocationHelper::encode($points); $segment->distance = GeolocationHelper::calculateDistance($segment); $segment->duration = GeolocationHelper::durationFromLastActivity($last_activity); $activity = new Activity(); $activity->iterinary_id = $iterinary->id; $activity->day = self::getDiffInDays($token, $iterinary->id); $activity->end_time = Carbon::now()->toTimeString(); $activity->start_time = $last_activity->created_at->toTimeString(); // end activity // from end segment function // $segment->destination_name = $destination_name; // $segment->destination_pos = $lat . ',' . $lng; // $segment->price = $price; // $segment->distance = GeolocationHelper::calculateDistance($segment); // $segment->duration = GeolocationHelper::calculateDuration($segment); // $points = array_merge(GeolocationHelper::parseLongLat($segment->origin_pos), [$lng, $lat]); // // $segment->path = GeolocationHelper::encode($points); //end from end segemtn function // dd($segment); $route->segments()->save($segment); $segment->activity()->save($activity); }