コード例 #1
0
        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());
        }
コード例 #2
0
        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);
        }