public ActionResult XemLaiThongTinDatPhong(DatPhongModel datPhongModel)
 {
     SetDefaultAttribute();
     ViewBag.tour = "DEAL KHÁCH SẠN";
     datPhongModel.productSchedule = _productScheduleService.GetProductScheduleById(datPhongModel.productSchedule.Id);
     if (datPhongModel.productSchedule.IsDeleted || !datPhongModel.productSchedule.IsAvailable)
     {
         return(View("Error"));
     }
     else
     {
         datPhongModel.numberNight = Int32.Parse(((DateTime.ParseExact(datPhongModel.checkOut, "MM/dd/yyyy", CultureInfo.InvariantCulture)).Date - (DateTime.ParseExact(datPhongModel.checkIn, "MM/dd/yyyy", CultureInfo.InvariantCulture)).Date).TotalDays.ToString());
         return(View("XemLaiThongTinDatPhong", datPhongModel));
     }
 }
        public ActionResult DatPhong(String slug, int id)
        {
            SetDefaultAttribute();
            ViewBag.tour = "DEAL KHÁCH SẠN";
            var model = new DatPhongModel();

            model.productSchedule = _productScheduleService.GetProductScheduleById(id);
            if (model.productSchedule.IsDeleted || !model.productSchedule.IsAvailable)
            {
                return(View("Error"));
            }
            else
            {
                return(View("DatPhong", model));
            }
        }
        public ActionResult Create()
        {
            if (!_nguoiDungServices.isLoggedIn())
            {
                TempData["Message"]  = "Bạn chưa đăng nhập, vui lòng đăng nhập";
                TempData["NotiType"] = "danger"; //success là class trong bootstrap
                return(RedirectToAction("Login", "NguoiDung"));
            }
            if (!_quyenServices.Authorize((int)EnumQuyen.DATPHONG_THEM))
            {
                TempData["Message"]  = "Bạn không có quyền truy cập chức năng này";
                TempData["NotiType"] = "danger"; //success là class trong bootstrap
                return(RedirectToAction("ViewDenied", "QLKS"));
            }
            var datPhongModel = new DatPhongModel();
            var maxId         = db.DATPHONGs.Select(c => c.ID).DefaultIfEmpty(0).Max();
            var newId         = (maxId + 1).ToString().PadLeft(7, '0');

            datPhongModel.MaDatPhong        = "DP" + "-" + newId;
            datPhongModel.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(0);
            return(View(datPhongModel));
        }
        public ActionResult Create(DatPhongModel model)
        {
            if (!_quyenServices.Authorize((int)EnumQuyen.DATPHONG_THEM))
            {
                TempData["Message"]  = "Bạn không có quyền truy cập chức năng này";
                TempData["NotiType"] = "error"; //success là class trong bootstrap
                return(RedirectToAction("ViewDenied", "QLKS"));
            }
            if (!ModelState.IsValid)
            {
                TempData["Message"]  = "Có lỗi xảy ra! Vui lòng kiểm tra lại thông tin.";
                TempData["NotiType"] = "danger";
                if (model.LOAIPHONG_ID == null)
                {
                    model.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(0);
                }
                else
                {
                    model.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(model.LOAIPHONG_ID);
                }
                return(View("Create", model));
            }

            var item    = AutoMapper.Mapper.Map <DATPHONG>(model);
            var results = db.Database.SqlQuery <sp_Result_ThongKePhong>("exec ThongKePhong @tungay, @denngay", new SqlParameter("@tungay", model.ngaydukienden), new SqlParameter("@denngay", model.ngaydukiendi)).ToList();

            foreach (var i in results)
            {
                if (i.ID == model.LOAIPHONG_ID && i.SoPhongTrong < model.SoPhong)
                {
                    if (model.LOAIPHONG_ID == null)
                    {
                        model.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(0);
                    }
                    else
                    {
                        model.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(model.LOAIPHONG_ID);
                    }
                    TempData["Message"]  = "Không đủ đặt " + model.SoPhong + " phòng. Chỉ còn lại " + i.SoPhongTrong + " phòng.";
                    TempData["NotiType"] = "danger";
                    return(View("Create", model));
                }
            }
            var khachhang = new KhachHangModel();

            khachhang.Ma          = _khachHangServices.GenMaKhachHang();
            khachhang.Ten         = model.tenkhachhang;
            khachhang.SoCMT       = model.socmt;
            khachhang.SoDienThoai = model.sodienthoai;
            khachhang.Email       = model.email;
            var khachHangItem = AutoMapper.Mapper.Map <KHACHHANG>(khachhang);

            db.KHACHHANGs.Add(khachHangItem);
            db.SaveChanges();
            item.KHACHHANG = khachHangItem;
            var nguoidungItem = db.NGUOIDUNGs.Find((int)Session["ID"]);

            item.NGUOIDUNG        = nguoidungItem;
            item.LOAITINHTRANG_ID = (int)EnumLoaiTinhTrang.CHUACHECKIN;
            item.ThoiGianDat      = DateTime.Now;
            db.DATPHONGs.Add(item);
            //

            db.SaveChanges();
            _lichSuServices.LuuLichSu((int)Session["ID"], (int)EnumLoaiHanhDong.THEM, item.GetType().ToString());
            TempData["Message"]  = "Thêm mới thành công";
            TempData["NotiType"] = "success";
            return(RedirectToAction("List"));
        }
        public ActionResult Edit(DatPhongModel model)
        {
            if (!_quyenServices.Authorize((int)EnumQuyen.DATPHONG_SUA))
            {
                return(RedirectToAction("ViewDenied", "QLKS"));
            }
            if (ModelState.IsValid)
            {
                var item      = db.DATPHONGs.Find(model.DATPHONG_ID);
                var khachhang = db.KHACHHANGs.Find(item.KHACHHANG.ID);
                //item = Mapper.Map<DATPHONG>(model);
                if (item == null)
                {
                    TempData["Message"]  = "Không thấy đơn đặt phòng này";
                    TempData["NotiType"] = "danger"; //success là class trong bootstrap
                    return(RedirectToAction("List"));
                }
                if (khachhang == null)
                {
                    TempData["Message"]  = "Không tìm thấy khách hàng này";
                    TempData["NotiType"] = "danger"; //success là class trong bootstrap
                    return(RedirectToAction("List"));
                }
                khachhang.Ten         = model.tenkhachhang;
                khachhang.SoDienThoai = model.sodienthoai;
                khachhang.SoCMT       = model.socmt;
                khachhang.Email       = model.email;

                if (model.LOAIPHONG_ID != item.LOAIPHONG.ID || model.ngaydukienden != item.NgayDuKienDen || model.ngaydukiendi != item.NgayDuKienDi || model.SoPhong != item.SoPhong)
                {
                    var results = db.Database.SqlQuery <sp_Result_ThongKePhong>("exec ThongKePhong @tungay, @denngay", new SqlParameter("@tungay", model.ngaydukienden), new SqlParameter("@denngay", model.ngaydukiendi)).ToList();
                    foreach (var r in results)
                    {
                        if (r.ID == model.LOAIPHONG_ID && r.SoPhongTrong < model.SoPhong)
                        {
                            if (model.LOAIPHONG_ID == null)
                            {
                                model.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(0);
                            }
                            else
                            {
                                model.DanhSachLoaiPhong = _loaiPhongServices.PrepareSelectListLoaiPhong(model.LOAIPHONG_ID);
                            }
                            TempData["Message"]  = "Không đủ đặt " + model.SoPhong + " phòng. Chỉ còn lại " + r.SoPhongTrong + " phòng.";
                            TempData["NotiType"] = "danger";

                            return(View("Edit", model));
                        }
                        if (r.ID == model.LOAIPHONG_ID && r.SoPhongTrong >= model.SoPhong)
                        {
                            item.LOAIPHONG_ID  = model.LOAIPHONG_ID;
                            item.SoPhong       = model.SoPhong;
                            item.NgayDuKienDen = model.ngaydukienden.Value;
                            item.NgayDuKienDi  = model.ngaydukiendi.Value;
                            item.SoPhong       = model.SoPhong;
                        }
                    }
                }
                db.SaveChanges();
                _lichSuServices.LuuLichSu((int)Session["ID"], (int)EnumLoaiHanhDong.SUA, item.ToString());
                TempData["Message"]  = "Cập nhật thành công";
                TempData["NotiType"] = "success"; //success là class trong bootstrap
                return(RedirectToAction("List"));
            }
            else
            {
                TempData["Message"]  = "Có lỗi xảy ra! Vui lòng kiểm tra lại thông tin.";
                TempData["NotiType"] = "danger"; //success là class trong bootstrap
                return(View("Edit", model));
            }
        }
        public ActionResult XacNhanDatPhong(DatPhongModel datPhongModel)
        {
            datPhongModel.productSchedule = _productScheduleService.GetProductScheduleById(datPhongModel.productSchedule.Id);
            if (datPhongModel.productSchedule.IsDeleted || !datPhongModel.productSchedule.IsAvailable)
            {
                return(View("Error"));
            }
            else
            {
                datPhongModel.numberNight = Int32.Parse(((DateTime.ParseExact(datPhongModel.checkOut, "MM/dd/yyyy", CultureInfo.InvariantCulture)).Date - (DateTime.ParseExact(datPhongModel.checkIn, "MM/dd/yyyy", CultureInfo.InvariantCulture)).Date).TotalDays.ToString());
                // tao order moi
                var order = new Order();
                order.CustomerAddress   = datPhongModel.customerAddress;
                order.CustomerEmail     = datPhongModel.customerEmail;
                order.CustomerName      = datPhongModel.customerName;
                order.CustomerPhone     = datPhongModel.customerPhone;
                order.ProductScheduleId = datPhongModel.productSchedule.Id;
                order.Note       = datPhongModel.note;
                order.IsDeleted  = false;
                order.Type       = "Phòng";
                order.OrderTotal = datPhongModel.productSchedule.Price;

                // luu order moi vao database
                _orderService.CreateOrder(order);

                // lay cac attribute order
                var listOrderAttribute = _orderAttributeService.GetOrderAttributes().Where(oa => oa.Type == "Phòng").ToList();

                // mapping order
                order.OrderAttributeMappings = new List <OrderAttributeMapping>();
                foreach (var item in listOrderAttribute)
                {
                    var temp = "";
                    switch (item.Name)
                    {
                    case "Số lượng":
                        temp = datPhongModel.numberPerson.ToString();
                        break;

                    case "Số phòng":
                        temp = datPhongModel.numberRoom.ToString();
                        break;

                    case "Số đêm":
                        temp = datPhongModel.numberNight.ToString();
                        break;

                    case "Ngày nhận phòng":
                        temp = datPhongModel.checkIn;
                        break;

                    case "Ngày trả phòng":
                        temp = datPhongModel.checkOut;
                        break;
                    }
                    order.OrderAttributeMappings.Add(new OrderAttributeMapping
                    {
                        OrderId          = order.Id,
                        OrderAttributeId = item.Id,
                        Value            = temp
                    });
                }
                _orderService.EditOrder(order);
                ViewBag.tour = "DEAL KHÁCH SẠN";
                SetDefaultAttribute();
                return(View("CamOn"));
            }
        }