Beispiel #1
0
        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());
        }