public IActionResult UploadMobileEvent(MobileEventModel eventModel) { if (eventModel.UserId != User.Identity.GetUserId().ToString()) { return(Unauthorized()); } ObjectId eventId; var timeStart = new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var userLocations = new UserEventData { Duration = TimeSpan.FromSeconds(eventModel.Duration), Meters = eventModel.Meters, UserId = User.Identity.GetUserId(), Locations = eventModel.Locations.Select(e => new Location { Latitude = e.Latitude, Longitude = e.Longitude, Time = DateTime.SpecifyKind(timeStart.AddMilliseconds(e.TimeMillis), DateTimeKind.Utc) }).ToList() }; if (eventModel.EventId == null || !ObjectId.TryParse(eventModel.EventId, out eventId)) { var e = new Event { Finished = true, OwnerId = User.Identity.GetUserId(), Name = eventModel.Name, EndTime = timeStart.AddMilliseconds(eventModel.EndTimeMillis), Private = true, StartTime = timeStart.AddMilliseconds(eventModel.StarTimeMillis), UserEventData = new List <UserEventData>() { userLocations } }; eventRepository.AddEvent(e); return(Ok()); } eventRepository.AddLocationsForEvent(eventId, userLocations); return(Ok()); }