コード例 #1
0
        public EventModel RespondToEvent(RespondToEventRequest respondToEventRequest)
        {
            var userEvent =
                _repository.GetEntities<UserEvent>()
                    .FirstOrDefault(
                        p => p.EventId == respondToEventRequest.EventId && p.UserId.Equals(respondToEventRequest.UserId));

            if (userEvent != null)
            {
                userEvent.Response = respondToEventRequest.EventResponse;

                _repository.Update(userEvent);
            }
            else
            {
                var newUserEvent = new UserEvent()
                {
                    UserId = respondToEventRequest.UserId,
                    EventId = respondToEventRequest.EventId,
                    Response = respondToEventRequest.EventResponse
                };

                _repository.Add(newUserEvent);
            }

            _repository.SaveChanges();

            userEvent =
              _repository.GetEntities<UserEvent>()
                  .FirstOrDefault(
                      p => p.EventId == respondToEventRequest.EventId && p.UserId.Equals(respondToEventRequest.UserId));

            var goingUsers = GetGoingStatus(userEvent, EventResponse.Going);
            var tentativeUsers = GetGoingStatus(userEvent, EventResponse.Tentative);
            var notNowUsers = GetGoingStatus(userEvent, EventResponse.NotNow);

            return new EventModel()
            {
                Going = userEvent != null && userEvent.Response.Equals(EventResponse.Going.ToString()),
                Tentative = userEvent != null && userEvent.Response.Equals(EventResponse.Tentative.ToString()),
                NotNow = userEvent != null && userEvent.Response.Equals(EventResponse.NotNow.ToString()),
                GoingUsers = goingUsers,
                TentativeUsers = tentativeUsers,
                NotNowUsers = notNowUsers
            };

        }
コード例 #2
0
        private List<UserModel> GetGoingStatus(UserEvent userEvent, EventResponse eventResponse)
        {
            var response = eventResponse.ToString();

            return _repository.GetEntities<Event>()
                .Where(e => e.Id == userEvent.EventId)
                .SelectMany(e => e.UserEvents)
                .Include(e => e.AspNetUser.UserInfo)
                .Where(ue => ue.Response.Equals(response))
                .Select(u => new UserModel { FullName = u.AspNetUser.UserInfo.FullName })
                .ToList();
        }