private DoanhThuModel CalDoanhThuNgay(string date)
        {
            DoanhThuModel doanhThu = new DoanhThuModel();

            // Tính doanh thu của từng phòng
            // Khởi tạo doanh thu = 0 cho từng phòng
            var phongs = db.PHONGs.ToList();
            List <DoanhThuPhongModel> doanhThuPhongs = new List <DoanhThuPhongModel>();

            phongs.ForEach(phong =>
            {
                DoanhThuPhongModel doanhThuPhong = new DoanhThuPhongModel();
                doanhThuPhong.maPhong            = phong.MA_PHONG;
                doanhThuPhong.doanhThu           = 0;
                doanhThuPhongs.Add(doanhThuPhong);
            });

            // chuyển ngày cần tính daonh thu sang DateTime
            DateTime dateNeed = DateTime.ParseExact(date, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);

            // Lọc các phiếu thêu phòng thỏa ngày cần tính doanh thu
            // -> cộng doanh thu cho phòng tương ứng khi được thuê (có trong bảng CT thuê phòng)
            var phieuThuePhongs = db.PHIEU_THUEPHONG.ToList();

            phieuThuePhongs
            .Where(phieu => {
                return(DateTime.Compare(phieu.NGAYDEN, dateNeed) <= 0 && DateTime.Compare(phieu.NGAYDI, dateNeed) >= 0);
            })
            .ToList()
            .ForEach(phieu => {
                var ctPhieu = phieu.CHITIET_THUEPHONG.ToList();
                ctPhieu.ForEach(ct =>
                {
                    doanhThuPhongs.Find(dt => dt.maPhong == ct.MAPHONG).doanhThu += (decimal)ct.GIAPHONG;
                });
            });
            doanhThu.doanhThuPhongs = doanhThuPhongs;

            // Tính doanh thu thuê dịch vụ
            decimal doanhThuDichVu = 0;

            phieuThuePhongs
            .Where(phieu => DateTime.Compare(phieu.NGAYDI, dateNeed) == 0)
            .ToList()
            .ForEach(phieu => {
                var ctPhieu = phieu.CHITIET_THUEDICHVU.ToList();
                ctPhieu.ForEach(ct =>
                {
                    doanhThuDichVu += (decimal)ct.GIA_DICHVU * ct.SOLUONG;
                });
            });
            doanhThu.doanhThuDichVu = doanhThuDichVu;

            return(doanhThu);
        }
        private DoanhThuModel CalDoanhThuNam(string year)
        {
            DoanhThuModel doanhThu = new DoanhThuModel();
            int           yearNeed = Int32.Parse(year);

            DateTime dateMin = new DateTime(yearNeed, 1, 1);
            DateTime dateMax = new DateTime(yearNeed, 12, 31);

            // Tính doanh thu của từng phòng
            // Khởi tạo doanh thu = 0 cho từng phòng
            var phongs = db.PHONGs.ToList();
            List <DoanhThuPhongModel> doanhThuPhongs = new List <DoanhThuPhongModel>();

            phongs.ForEach(phong =>
            {
                DoanhThuPhongModel doanhThuPhong = new DoanhThuPhongModel();
                doanhThuPhong.maPhong            = phong.MA_PHONG;
                doanhThuPhong.doanhThu           = 0;
                doanhThuPhongs.Add(doanhThuPhong);
            });

            // Lọc các phiếu thêu phòng thỏa ngày cần tính doanh thu

            var phieuThuePhongs = db.PHIEU_THUEPHONG.ToList();


            // cộng doanh thu cho phòng tương ứng khi được thuê (có trong bảng CT thuê phòng)
            phieuThuePhongs
            .Where(phieu => {
                return(DateTime.Compare(phieu.NGAYDEN, dateMax) <= 0 && DateTime.Compare(phieu.NGAYDI, dateMin) >= 0);
            })
            .ToList()
            .ForEach(phieu => {
                var ctPhieu = phieu.CHITIET_THUEPHONG.ToList();

                if (DateTime.Compare(phieu.NGAYDEN, dateMin) >= 0)
                {
                    if (DateTime.Compare(phieu.NGAYDI, dateMax) <= 0)
                    {
                        ctPhieu.ForEach((ct) => {
                            doanhThuPhongs
                            .Find(dt => dt.maPhong == ct.MAPHONG)
                            .doanhThu += (decimal)ct.GIAPHONG * (decimal)((phieu.NGAYDI - phieu.NGAYDEN).Ticks / 864e9);
                        });
                    }
                    else
                    {
                        ctPhieu.ForEach((ct) => {
                            doanhThuPhongs
                            .Find(dt => dt.maPhong == ct.MAPHONG)
                            .doanhThu += (decimal)ct.GIAPHONG * (decimal)((dateMax - phieu.NGAYDEN).Ticks / 864e9);
                        });
                    }
                }
                else
                {
                    if (DateTime.Compare(phieu.NGAYDI, dateMax) <= 0)
                    {
                        ctPhieu.ForEach((ct) => {
                            doanhThuPhongs
                            .Find(dt => dt.maPhong == ct.MAPHONG)
                            .doanhThu += (decimal)ct.GIAPHONG * (decimal)((phieu.NGAYDI - dateMin).Ticks / 864e9);
                        });
                    }
                    else
                    {
                        ctPhieu.ForEach((ct) => {
                            doanhThuPhongs
                            .Find(dt => dt.maPhong == ct.MAPHONG)
                            .doanhThu += (decimal)ct.GIAPHONG * (decimal)((dateMax - dateMin).Ticks / 864e9);
                        });
                    }
                }
            });

            doanhThu.doanhThuPhongs = doanhThuPhongs;

            // Tính doanh thu thuê dịch vụ
            decimal doanhThuDichVu = 0;

            phieuThuePhongs
            .Where(phieu => phieu.NGAYDI.Year == yearNeed)
            .ToList()
            .ForEach(phieu =>
            {
                var ctPhieu = phieu.CHITIET_THUEDICHVU.ToList();
                ctPhieu.ForEach(ct =>
                {
                    doanhThuDichVu += (decimal)ct.GIA_DICHVU * ct.SOLUONG;
                });
            });
            doanhThu.doanhThuDichVu = doanhThuDichVu;
            return(doanhThu);
        }