public ActionResult ReserveRoom(int?id, RoomReserveViewModel reservation) { if (ModelState.IsValid) { var begin = reservation.ArrivalTime; var end = reservation.DepartureTime; if (begin < DateTime.Today) { TempData["message"] = "Вы не можете отправиться в прошлое"; } else { if (end < begin) { TempData["message"] = "Дата выселения не может быть раньше даты заселения"; } else { var check = context.Orders.Where(x => x.Room.Id == id && (x.ArrivalTime >= begin && x.ArrivalTime <= end || x.DepartureTime >= begin && x.DepartureTime <= end)).ToList(); if (check.Count > 0) { TempData["message"] = "Комната уже забронирована (возможно частично) на это время"; } else { var config = new MapperConfiguration(x => x.CreateMap <RoomReserveViewModel, Order>()).CreateMapper(); var order = config.Map <RoomReserveViewModel, Order>(reservation); order.Room = context.Rooms.Find(id); order.User = UserManager.FindById(User.Identity.GetUserId()); context.Orders.Add(order); context.SaveChanges(); TempData["color"] = "green"; TempData["message"] = string.Format(" Вы забронировали комнату на период с {0} до {1}", order.ArrivalTime.Date, order.DepartureTime.Date); } } } } var room = context.Rooms.Find(id); if (room != null) { reservation.Room = room; var orders = context.Orders.Where(x => x.Room.Id == id && x.DepartureTime >= DateTime.Today).ToList(); orders.OrderBy(x => x.ArrivalTime); reservation.Orders = orders; } return(View(reservation)); }
public ActionResult ReserveRoom(int?id) { var model = new RoomReserveViewModel(); var room = context.Rooms.Find(id); if (room != null) { model.Room = room; var orders = context.Orders.Where(x => x.Room.Id == id).ToList(); orders.OrderBy(x => x.ArrivalTime); model.Orders = orders; } return(View(model)); }