public async Task <IActionResult> AddUserTimeSlot() { var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return(Challenge()); } var timeSlots = await _timeSlotService.GetAllTimeSlotsAsync(); var currentUserTimeSlots = await _userTimeSlotService.GetUserTimeSlotsForUserAsync(currentUser); var currentTimeSlots = currentUserTimeSlots.Select(x => x.TimeSlotModel).ToList(); var availableTimeSlots = timeSlots .Where(x => !currentTimeSlots.Contains(x)) .Select(x => new SelectListItem { Text = $"{x.StartTime:G} - {x.EndTime:G} - {x.SessionModel.SpeakerModel.FirstName} {x.SessionModel.SpeakerModel.LastName} - {x.RoomModel.Name}", Value = $"{x.StartTime:G} - {x.EndTime:G}" }) .ToList(); var userTimeSlotBindingModel = new UserTimeSlotBindingModel { TimeSlots = availableTimeSlots }; return(View(userTimeSlotBindingModel)); }
public async Task <IActionResult> AddUserTimeSlot(UserTimeSlotBindingModel userTimeSlotBindingModel) { var currentUser = await _userManager.GetUserAsync(User); if (currentUser == null) { return(Challenge()); } if (!ModelState.IsValid) { return(RedirectToAction("Index")); } var parsedDate = userTimeSlotBindingModel.TimeSlotDescription.Split('-'); var trimedDates = parsedDate.Select(x => x.Trim()).ToList(); var startTime = DateTime.Parse(trimedDates[0]); var endTime = DateTime.Parse(trimedDates[1]); var timeSlot = await _timeSlotService.GetTimeSlotByTimeAsync(startTime, endTime); var userTimeSlotModel = new UserTimeSlotModel { IdentityUser = currentUser, TimeSlotModel = timeSlot }; var successful = await _userTimeSlotService.AddUserTimeSlotAsync(userTimeSlotModel); if (!successful) { return(BadRequest("Could not add the user time slot")); } return(RedirectToAction("Index")); }