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); }