public async Task <IActionResult> GetDetails(int eventId) { IDatabaseContext context = _getDatabaseContext(); Event @event = await context.Events .Include(e => e.Organizer) .Include(e => e.EventParticipations) .ThenInclude(p => p.Participant) .FirstOrDefaultAsync(e => e.Id == eventId); if (@event == null) { return(NotFound()); } int currentUserId = HttpContext.GetUserId(); ViewEventInformation viewEventInformation = ViewEventInformation.FromEvent(@event, currentUserId); if (!viewEventInformation.CurrentUserDoesParticipate && @event.IsPrivate && (@event.OrganizerId != currentUserId)) { return(BadRequest(RequestStringMessages.InvitationRequired)); } List <User> allParticipants = @event.EventParticipations.Select(e => e.Participant).ToList(); List <Appointment> appointments = await context.Appointments .Include(a => a.AppointmentParticipations) .ThenInclude(ap => ap.Participant) .Where(a => a.StartTime >= DateTime.UtcNow) .OrderBy(a => a.StartTime) .Take(_maxShownAppointmentsPerEvent) .ToListAsync(); List <AppointmentDetails> upcomingAppointments = appointments .Select(a => AppointmentDetails.FromAppointment(a, currentUserId, allParticipants)) .ToList(); EventParticipation currentEventParticipation = @event.EventParticipations.FirstOrDefault(e => e.ParticipantId == currentUserId); NotificationConfigurationResponse notificationConfigurationResponse = null; if (currentEventParticipation != null) { notificationConfigurationResponse = NotificationConfigurationResponse.FromParticipation(currentEventParticipation); } return(Ok(new EventDetails(viewEventInformation, upcomingAppointments, notificationConfigurationResponse))); }
public async Task <IActionResult> GetEditDetails(int eventId) { IDatabaseContext context = _getDatabaseContext(); Event @event = await context.Events .Include(e => e.EventParticipations) .ThenInclude(ep => ep.Participant) .Include(e => e.Appointments) .ThenInclude(ap => ap.AppointmentParticipations) .Include(e => e.Organizer) .FirstOrDefaultAsync(e => e.Id == eventId); if (@event == null) { return(NotFound()); } int currentUserId = HttpContext.GetUserId(); if (@event.OrganizerId != currentUserId) { _logger.LogInformation("{0}(): Tried to edit event {1}, which he's not organizing", nameof(GetEditDetails), @event.Id); return(BadRequest(RequestStringMessages.OrganizerRequired)); } List <User> allParticipants = @event.EventParticipations.Select(e => e.Participant).ToList(); List <AppointmentDetails> upcomingAppointments = @event.Appointments .Where(a => a.StartTime >= DateTime.UtcNow) .OrderBy(a => a.StartTime) .Select(a => AppointmentDetails.FromAppointment(a, currentUserId, allParticipants)) .ToList(); List <EventParticipantInformation> currentEventParticipation = @event.EventParticipations.Select(EventParticipantInformation.FromParticipation).ToList(); ViewEventInformation viewEventInformation = ViewEventInformation.FromEvent(@event, currentUserId); return(Ok(new EditEventDetails(viewEventInformation, upcomingAppointments, currentEventParticipation))); }
public EventOverviewInformation(int eventId, ViewEventInformation viewEventInformation, AppointmentDetails latestAppointmentDetails) { EventId = eventId; ViewEventInformation = viewEventInformation; LatestAppointmentDetails = latestAppointmentDetails; }