// GET: Admin/DatPhongs
        public IActionResult Index(DatPhongIndexVM reservation, string sortOrder)
        {
            ViewData["NameSortParm"]     = sortOrder == "name_desc" ? "name" : "name_desc";
            ViewData["DateNhanSortParm"] = sortOrder == "DateNhan" ? "datenhan_desc" : "DateNhan";
            ViewData["DateTraSortParm"]  = sortOrder == "DateTra" ? "datetra_desc" : "DateTra";
            ViewData["TongTienSortParm"] = sortOrder == "TongTien" ? "TongTien_desc" : "TongTien";

            if (reservation.CMND == null && reservation.ThoiGianNhan == default)
            {
                listdatphong = sortOrder switch
                {
                    "name_desc" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'TenNguoiDat', N'D';"),
                    "DateNhan" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'ThoiGianNhanPhongDuKien', N'I';"),
                    "datenhan_desc" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'ThoiGianNhanPhongDuKien', N'D';"),
                    "DateTra" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'ThoiGianTraPhongDuKien', N'I';"),
                    "datetra_desc" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'ThoiGianTraPhongDuKien', N'D';"),
                    "TongTien_desc" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'TongTien', N'D';"),
                    "TongTien" => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'TongTien', N'I';"),
                    _ => _context.DatPhongs.FromSqlRaw(
                        $"EXECUTE dbo.GetSortedDatPhongsBySomthing N'TenNguoiDat', N'I';")
                };
            }

            var cmndSqlParameter = new SqlParameter {
                ParameterName = "@Cmnd", SqlDbType = SqlDbType.NVarChar, SqlValue = reservation.CMND
            };
            var thoiSqlParameter = new SqlParameter {
                ParameterName = "@ThoiGianNhanPhongDuKien", SqlDbType = SqlDbType.VarChar, SqlValue = reservation.ThoiGianNhan.Date.ToShortDateString()
            };

            if (reservation.CMND != null && reservation.ThoiGianNhan == default)
            {
                listdatphong = _context.DatPhongs.FromSqlRaw($"EXECUTE dbo.SearchDatPhongsBySomthing @Cmnd ", cmndSqlParameter);
            }
            else if (reservation.CMND == null && reservation.ThoiGianNhan != default)
            {
                listdatphong = _context.DatPhongs.FromSqlRaw($"EXECUTE dbo.SearchDatPhongsBySomthing @ThoiGianNhanPhongDuKien = '{reservation.ThoiGianNhan.Date}' ");
            }
            else if (reservation.CMND != null && reservation.ThoiGianNhan != default)
            {
                listdatphong = _context.DatPhongs.FromSqlRaw($"EXECUTE dbo.SearchDatPhongsBySomthing @Cmnd, @ThoiGianNhanPhongDuKien = '{reservation.ThoiGianNhan.Date}' ", cmndSqlParameter);
            }



            var GetDataforReservation2 = new DatPhongIndexVM
            {
                LisDatPhongs = listdatphong.ToList()
            };

            return(View(GetDataforReservation2));
        }
        // GET: Admin/DatPhongs
        public IActionResult Index(DatPhongIndexVM reservation, string sortOrder)
        {
            ViewData["NameSortParm"]     = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewData["DateNhanSortParm"] = sortOrder == "DateNhan" ? "datenhan_desc" : "DateNhan";
            ViewData["DateTraSortParm"]  = sortOrder == "DateTra" ? "datetra_desc" : "DateTra";
            ViewData["TongTienSortParm"] = sortOrder == "TongTien" ? "TongTien_desc" : "TongTien";
            // index chua search
            //  var listdatphong = _datphongsv.GetAll();
            var listdatphong = from m in _context.DatPhongs select m;

            switch (sortOrder)
            {
            case "name_desc":
                listdatphong = listdatphong.OrderByDescending(s => s.TenNguoiDat);
                break;

            case "DateNhan":
                listdatphong = listdatphong.OrderBy(s => s.ThoiGianNhanPhongDuKien);
                break;

            case "datenhan_desc":
                listdatphong = listdatphong.OrderByDescending(s => s.ThoiGianNhanPhongDuKien);
                break;

            case "DateTra":
                listdatphong = listdatphong.OrderBy(s => s.ThoiGianTraPhongDuKien);
                break;

            case "datetra_desc":
                listdatphong = listdatphong.OrderByDescending(s => s.ThoiGianTraPhongDuKien);
                break;

            case "TongTien_desc":
                listdatphong = listdatphong.OrderByDescending(s => s.TongTien);
                break;

            case "TongTien":
                listdatphong = listdatphong.OrderBy(s => s.TongTien);
                break;

            default:
                listdatphong = listdatphong.OrderBy(s => s.TenNguoiDat);
                break;
            }

            // tìm kiếm theo cmnd
            if (!string.IsNullOrEmpty(reservation.CMND))
            {
                listdatphong = listdatphong.Where(s => s.Cmnd.Contains(reservation.CMND));
            }
            // tìm kiếm theo thời gian nhận
            if (reservation.ThoiGianNhan != default)
            {
                listdatphong = from m in listdatphong
                               where
                               (m.ThoiGianNhanPhongDuKien.Date <= reservation.ThoiGianNhan.Date) &&
                               (reservation.ThoiGianNhan.Date <= m.ThoiGianTraPhongDuKien.Date)
                               select m;
            }


            // tìm kiếm theo ???

            // tạo đối tượng trả về cho view.
            var GetDataforReservation2 = new DatPhongIndexVM
            {
                LisDatPhongs = listdatphong.ToList()
            };

            return(View(GetDataforReservation2));
        }