public async Task <IActionResult> CreateMemberReservation(int id) { var sitting = await _db.Sittings .Include(s => s.SittingType) .FirstOrDefaultAsync(s => s.Id == id); if (sitting == null) { return(NotFound()); } var members = _db.Members.Select(me => new { Id = me.Id, Name = $"{me.LastName}, {me.FirstName}" }).ToList(); var m = new CreateMemberReservation { SittingId = sitting.Id, Sitting = $"{sitting.SittingType.Name} {sitting.Start}", StatusId = 1, //initial status is pending with id of 1 StatusOptions = new SelectList(_db.ReservationStatuses.ToList(), "Id", "Name"), SourceId = 1, //set the id of source to 1 i.e. online SourceOptions = new SelectList(_db.ReservationSources.ToList(), "Id", "Name"), MemberOptions = new SelectList(members, "Id", "Name") }; return(View(m)); }
public async Task <IActionResult> CreateMemberReservation(CreateMemberReservation m) { //get sitting from m var sitting = await _db.Sittings .Include(s => s.Reservations) .FirstOrDefaultAsync(s => s.Id == m.SittingId); if (sitting == null) { return(NotFound()); } if (m.StartTime < sitting.Start || m.StartTime > sitting.End || m.StartTime.AddMinutes(m.Duration) > sitting.End) { ModelState.AddModelError("StartTime", "Invalid Time, must fall within sitting start/end times"); } if (m.Guest > sitting.GuestAvailabilityCount || m.Guest <= 0) { ModelState.AddModelError("Guest", "Invalid Guest Number"); } //if model state is valid create new reservation and redirect to confirmation page if (ModelState.IsValid) { var member = await _db.Members.FirstOrDefaultAsync(me => me.Id == m.MemberId); var r = new Reservation { Guest = m.Guest, Duration = m.Duration, Note = m.Note, SourceId = m.SourceId, StartTime = m.StartTime, StatusId = 1, SittingId = sitting.Id }; //connect reservation and person member.Reservations.Add(r); //save cahnge _db.SaveChanges(); return(RedirectToAction(nameof(Confirmation), new { id = r.Id })); } //otherwise re instantiate select lists for members and source options m.SourceOptions = new SelectList(_db.ReservationSources.ToList(), "Id", "Name"); m.MemberOptions = new SelectList(_db.Members.Select(me => new { Id = me.Id, Name = $"{me.LastName}, {me.FirstName}" }).ToList(), "Id", "Name"); //pass model to view and send back to client return(View(m)); }
public async Task <IActionResult> CreateMemberReservation(CreateMemberReservation m) { return(View()); }