/// <summary> /// Hàm tìm kiếm dạng QueryAble, sau khi lấy kết quả có thể /// lọc lần 2 bằng Where rồi gọi .ToList(); sẽ ra được kết quả sau cùng /// </summary> /// <param name="tenTaiSan">(null||blank)=>ignore</param> /// <param name="loaiTaiSan">null=>ignore</param> /// <param name="timTheoDonViQL">false=>ignore</param> /// <param name="donViQuanLy"></param> /// <param name="timTheoDonViSD">false=>ignore</param> /// <param name="donViSuDung"></param> /// <returns></returns> public static IQueryable <CTTaiSan> search( String tenTaiSan = "", LoaiTaiSan loaiTaiSan = null, Boolean timTheoDonViQL = false, DonVi donViQuanLy = null, Boolean timTheoDonViSD = false, DonVi donViSuDung = null, Boolean timTheoViTri = false, ViTri vitri = null, Boolean timTheoPhong = false, Phong phong = null, List <Guid> tinhtrangs = null, String equation = null, long?dongia = null, String equation_ngay = null, DateTime?ngay_sd = null ) { var query = CTTaiSan.getQuery(); query = query.Where(c => c.soluong > 0); if (tenTaiSan != null && !tenTaiSan.Equals("")) { query = query.Where(c => c.taisan.ten.ToLower().Contains(tenTaiSan.ToLower())); } if (loaiTaiSan != null) { //tim kiem de quy cho loai tai san List <LoaiTaiSan> list = loaiTaiSan.getAllChildsRecursive(true); List <Guid> list_id = list.Select(c => c.id).ToList(); query = query.Where(c => list_id.Contains(c.taisan.loaitaisan.id)); } if (timTheoDonViQL) { if (donViQuanLy == null) { query = query.Where(c => c.donviquanly == null); } else { //tim kiem de quy cho dvquanly List <DonVi> list = donViQuanLy.getAllChildsRecursive(); List <Guid> list_id = list.Select(c => c.id).ToList(); query = query.Where(c => (c.donviquanly != null) && (list_id.Contains(c.donviquanly.id))); } } if (timTheoDonViSD) { if (donViSuDung == null) { query = query.Where(c => c.donvisudung == null); } else { //tim kiem de quy cho dvquanly List <DonVi> list = donViSuDung.getAllChildsRecursive(); List <Guid> list_id = list.Select(c => c.id).ToList(); query = query.Where(c => (c.donvisudung != null) && (list_id.Contains(c.donvisudung.id))); } } if (timTheoViTri) { if (vitri == null) { query = query.Where(c => c.vitri == null); } else { query = query.Where(c => //Tìm chính xác theo vị trí (c.vitri != null && c.vitri.id == vitri.id) || //Tìm luôn record có phòng thuộc vitri (c.phong != null && c.phong.vitri != null && c.phong.vitri.id == vitri.id) ); } } if (timTheoPhong) { if (phong == null) { query = query.Where(c => c.phong == null); } else { query = query.Where(c => (c.phong != null && c.phong.id == phong.id) ); } } if (tinhtrangs != null && tinhtrangs.Count > 0) { query = query.Where(c => c.tinhtrang == null || tinhtrangs.Contains(c.tinhtrang.id)); } //DONGIA if ((equation != null && (equation.Equals("=") || equation.Equals(">=") || equation.Equals(">") || equation.Equals("<=") || equation.Equals("<"))) && dongia != null && dongia >= 0) { if (equation.Equals("=")) { query = query.Where(x => x.taisan.dongia == dongia); } else if (equation.Equals(">=")) { query = query.Where(x => x.taisan.dongia >= dongia); } else if (equation.Equals(">")) { query = query.Where(x => x.taisan.dongia > dongia); } else if (equation.Equals("<=")) { query = query.Where(x => x.taisan.dongia <= dongia); } else if (equation.Equals("<")) { query = query.Where(x => x.taisan.dongia < dongia); } } //NGAYSUDUNG if ((equation_ngay != null && (equation_ngay.Equals("=") || equation_ngay.Equals(">=") || equation_ngay.Equals(">") || equation_ngay.Equals("<=") || equation_ngay.Equals("<"))) && ngay_sd != null) { if (equation_ngay.Equals("=")) { query = query.Where(x => x.ngay == null || x.ngay == ngay_sd); } else if (equation_ngay.Equals(">=")) { query = query.Where(x => x.ngay == null || x.ngay >= ngay_sd); } else if (equation_ngay.Equals(">")) { query = query.Where(x => x.ngay == null || x.ngay > ngay_sd); } else if (equation_ngay.Equals("<=")) { query = query.Where(x => x.ngay == null || x.ngay <= ngay_sd); } else if (equation_ngay.Equals("<")) { query = query.Where(x => x.ngay == null || x.ngay < ngay_sd); } } return(query); }