public async Task <Trip> SaveDepartureDate(int locationId, [FromBody] long departureDate) { ILocationManager m = ObjectContainer.GetLocationManager(); Location l = m.Get(locationId); l.DepartureDate = departureDate; if (l.ArrivalDate.HasValue && l.DepartureDate.HasValue && l.ArrivalDate.Value != -1 && l.DepartureDate != -1) { if (l.Food == null) { l.Food = CreateLocationFood((int)(l.DepartureDate / 24 / 60 / 60000 - l.ArrivalDate / 24 / 60 / 60000)); } else { l.Food = CreateLocationFood((int)(l.DepartureDate / 24 / 60 / 60000 - l.ArrivalDate / 24 / 60 / 60000), l.Food); } } else { l.Food = null; } m.Save(l); IMapsManager map = ObjectContainer.GetMapsManager(); ITripManager t = ObjectContainer.GetTripManager(); Trip trip = t.Get(l.TripId); using (Trip tripX = ObjectContainer.Clone(trip)) { trip = await map.FillBorderPoints(GetUser(), tripX, l); } if (trip.Locations[0].ID == l.ID) { trip = t.SetExchangeRates(departureDate, trip); } trip.ArrangePoints(); t.Save(GetUser().ID, trip); return(trip); }