public int Count(EmpTransferFilterModelDTO filter) { // gan null cho date filter.FromDate = filter.FromDate.HasValue && filter.FromDate.Value.Year < 2019 ? null : filter.FromDate; filter.ToDate = filter.ToDate.HasValue && filter.ToDate.Value.Year < 2019 ? null : filter.ToDate; // danh sach user theo ten var filterdUsers = _userRepo.SelectWhere(x => (!string.IsNullOrEmpty(filter.EmpName) && x.UserFullName.Contains(filter.EmpName)) || string.IsNullOrEmpty(filter.EmpName)); var transfers = _repo.SelectWhere(x => ((filter.FromDate != null && x.TransferDate >= filter.FromDate) || filter.FromDate == null) && ((filter.ToDate != null && x.TransferDate <= filter.ToDate) || filter.ToDate == null)); return(transfers.Join(filterdUsers, r => r.UserId, u => u.Id, (r, u) => new { trans = r, EmpFullName = u.UserFullName }).Count()); }
public IEnumerable <EmpTransferDTO> GetPaging(EmpTransferFilterModelDTO filter) { var jobTitles = _jobTitleRepo.SelectAll(); var users = _userRepo.SelectAll(); var orgs = _orgRepo.SelectAll(); // gan null cho date filter.FromDate = filter.FromDate.HasValue && filter.FromDate.Value.Year < 2019 ? null : filter.FromDate; filter.ToDate = filter.ToDate.HasValue && filter.ToDate.Value.Year < 2019 ? null : filter.ToDate; // danh sach user theo ten var filterdUsers = _userRepo.SelectWhere(x => (!string.IsNullOrEmpty(filter.EmpName) && x.UserFullName.Contains(filter.EmpName)) || string.IsNullOrEmpty(filter.EmpName)); // danh sach dieu chuyen var transfers = _repo.SelectWhere(x => ((filter.FromDate != null && x.TransferDate >= filter.FromDate) || filter.FromDate == null) && ((filter.ToDate != null && x.TransferDate <= filter.ToDate) || filter.ToDate == null)); var query = from a in transfers join b in filterdUsers on a.UserId equals b.Id join c in jobTitles on a.OldJobTitleId equals c.Id into gc from rc in gc.DefaultIfEmpty() join d in jobTitles on a.NewJobTitleId equals d.Id into gd from rd in gd.DefaultIfEmpty() join e in users on a.OldLevel1MngId equals e.Id into ge from re in ge.DefaultIfEmpty() join f in users on a.NewLevel1MngId equals f.Id into gf from rf in gf.DefaultIfEmpty() join g in users on a.OldLevel2MngId equals g.Id into gg from rg in gg.DefaultIfEmpty() join h in users on a.NewLevel2MngId equals h.Id into gh from rh in gh.DefaultIfEmpty() join i in orgs on a.OldOrgId equals i.Id into gi from ri in gi.DefaultIfEmpty() join j in orgs on a.NewOrgId equals j.Id into gj from rj in gj.DefaultIfEmpty() select new { trans = a, EmpFullName = b.UserFullName, OldJobTitleName = rc.Title, NewJobTitleName = rd.Title, OldLv1MngName = re.UserFullName, NewLv1MngName = rf.UserFullName, OldLv2MngName = rg.UserFullName, NewLv2MngName = rh.UserFullName, OldOrgName = ri.Name, NewOrgName = rj.Name }; var res = query.OrderBy(x => x.trans.Id).Skip(filter.Start - 1).Take(filter.Length) .Select(x => new EmpTransferDTO { Id = x.trans.Id, Code = x.trans.Code, TransferDate = x.trans.TransferDate, UserId = x.trans.UserId, OldJobTitleId = x.trans.OldJobTitleId, NewJobTitleId = x.trans.NewJobTitleId, OldOrgId = x.trans.OldOrgId, NewOrgId = x.trans.NewOrgId, CreatedBy = x.trans.CreatedBy, CreatedDate = x.trans.CreatedDate, UpdatedBy = x.trans.UpdatedBy, UpdatedDate = x.trans.UpdatedDate, OldLevel1MngId = x.trans.OldLevel1MngId, NewLevel1MngId = x.trans.NewLevel1MngId, OldLevel2MngId = x.trans.OldLevel2MngId, NewLevel2MngId = x.trans.NewLevel2MngId, Note = x.trans.Note, EmpFullName = x.EmpFullName, OldJobTitleName = x.OldJobTitleName, NewJobTitleName = x.NewJobTitleName, OldOrgName = x.OldOrgName, NewOrgName = x.NewOrgName, OldLv1MngName = x.OldLv1MngName, NewLv1MngName = x.NewLv1MngName, OldLv2MngName = x.OldLv2MngName, NewLv2MngName = x.NewLv2MngName }).ToList(); return(res); }