internal EventsIndexVM[] GetAllEventFromDB() { Events[] events = eventsRepository.GetAllEvents(); EventsIndexVM[] ie = new EventsIndexVM[events.Length]; for (int i = 0; i < ie.Length; i++) { ie[i] = new EventsIndexVM { Date = events[i].Date, EventType = ConvertEventTypeToString(events[i].EventType), Id = events[i].Id, }; if (events[i].Customer != null) { ie[i].CustomerFirstName = events[i].Customer.FirstName; ie[i].CustomerLastName = events[i].Customer.LastName; ie[i].CustomerId = events[i].CustomerId; } ; if (events[i].Car != null) { ie[i].CarRegNr = events[i].Car.Registrationnumber; ie[i].CarId = events[i].CarId; } } return(ie); }
// GET: Events // Loaded as main screen for best user experience // Creates three lists of events, those requiring more staff, those requiring a first aider //and those with enough staff public async Task <IActionResult> Index(string message) { var menus = await getMenus(); List <EventVM> eventsOk = new List <EventVM>(); List <EventVM> eventsNeedStaff = new List <EventVM>(); List <EventVM> eventsNeedFirstAid = new List <EventVM>(); var events = await _context.Events.Where(e => e.IsActive == true).OrderBy(e => e.Title).ToListAsync(); foreach (Event e in events) { var bookings = await _context.Guests.Include(g => g.Event).Where(g => g.EventId == e.Id).ToListAsync(); var staffing = await _context.Staffing.Include(g => g.Event).Where(g => g.EventId == e.Id).ToListAsync(); var firstAidStaff = await _context.Staff.Where(s => s.IsActive == true).Where(t => staffing.Any(b => b.StaffId.Equals(t.Id))).Where(s => s.FirstAider == true).ToListAsync(); EventVM eventVM = new EventVM(e); eventVM.NumGuests = bookings.Count(); eventVM.NumStaff = staffing.Count(); if (eventVM.MenuId != 0) { MenuDto menu = menus.Where(m => m.MenuId == eventVM.MenuId).FirstOrDefault(); eventVM.MenuName = menu.Name; } // view model getter methods used to easily determine if staff and/or first aiders are needed if (!eventVM.NeedStaff && firstAidStaff != null && firstAidStaff.Count > 0) { eventsOk.Add(eventVM); } if (eventVM.NeedStaff) { eventsNeedStaff.Add(eventVM); } if (firstAidStaff == null || firstAidStaff.Count == 0) { eventsNeedFirstAid.Add(eventVM); } } // custom view models used where appropritate display information as required in brief EventsIndexVM eventLists = new EventsIndexVM(eventsOk, eventsNeedStaff, eventsNeedFirstAid); return(View(eventLists)); }