Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }