public List<Att_AnnualDetailEntity> AnalyzeAnnualDetail(int Year, string strOrgStructure, string strPayroll, string proName, string codeEmp,string userLogin) { using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoAtt_AnnualDetail = new CustomBaseRepository<Att_AnnualDetail>(unitOfWork); bool? isFullEmp = true; List<Att_AnnualDetailEntity> lstResult = new List<Att_AnnualDetailEntity>(); var lstProfileQuery = unitOfWork.CreateQueryable<Hre_Profile>(m => m.IsDelete == null); if (strOrgStructure != null && strOrgStructure != string.Empty) { isFullEmp = false; List<string> lstOrgIDChar = strOrgStructure.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); List<Guid> lstOrgID = new List<Guid>(); foreach (var item in lstOrgIDChar) { Guid ID = Guid.Empty; Guid.TryParse(item, out ID); if (ID != Guid.Empty) { lstOrgID.Add(ID); } } lstProfileQuery = lstProfileQuery.Where(m => m.OrgStructureID != null && lstOrgID.Contains(m.OrgStructureID.Value)); } if (proName != null && proName != string.Empty) { isFullEmp = false; List<string> lstProName = proName.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (lstProName.Count > 1) { lstProfileQuery = lstProfileQuery.Where(m => lstProName.Contains(m.ProfileName)); } else { string ProfileName = lstProName.FirstOrDefault(); lstProfileQuery = lstProfileQuery.Where(m => m.ProfileName.Contains(ProfileName)); } } if (codeEmp != null && codeEmp != string.Empty) { isFullEmp = false; List<string> lstCodeEmp = codeEmp.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(m => m.ToLower()).ToList(); if (lstCodeEmp.Count > 1) { lstProfileQuery = lstProfileQuery.Where(m => lstCodeEmp.Contains(m.CodeEmp.ToLower())); } else { string CodeEmp = lstCodeEmp.FirstOrDefault(); lstProfileQuery = lstProfileQuery.Where(m => m.CodeEmp.ToLower().Contains(CodeEmp)); } } if (strPayroll != null) { List<Guid> lstPgID = strPayroll.Split(',').Select(s => Guid.Parse(s)).ToList(); isFullEmp = false; lstProfileQuery = lstProfileQuery.Where(p => p.PayrollGroupID.HasValue && lstPgID.Contains(p.PayrollGroupID.Value)); } var lstProfile = lstProfileQuery.Select(m => new Hre_ProfileMultiField() { ID = m.ID, CodeEmp = m.CodeEmp, OrgStructureID = m.OrgStructureID, PayrollGroupID = m.PayrollGroupID, ProfileName = m.ProfileName, DateHire = m.DateHire, OrgStructureName = m.Cat_OrgStructure.OrgStructureName, PositionID = m.PositionID, DateQuit = m.DateQuit, DateEndProbation = m.DateEndProbation, JobTitleID = m.JobTitleID }).ToList(); var result = AnalyzeAnnualDetail(lstProfile, Year, isFullEmp, userLogin); Att_AnnualDetailEntity ann = new Att_AnnualDetailEntity(); foreach (var item in result) { if (item.ProfileID == null) continue; var temp = lstProfile.Where(s => s.ID == item.ProfileID).FirstOrDefault(); ann = new Att_AnnualDetailEntity(); ann = item.CopyData<Att_AnnualDetailEntity>(); ann.DateHire = temp.DateHire; ann.OrgStructureName = temp.OrgStructureName; ann.ProfileName = temp.ProfileName; ann.CodeEmp = temp.CodeEmp; lstResult.Add(ann); } return lstResult; } }
public List <Att_AnnualDetailEntity> AnalyzeAnnualDetail(int Year, string strOrgStructure, string strPayroll, string proName, string codeEmp, string userLogin) { using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoAtt_AnnualDetail = new CustomBaseRepository <Att_AnnualDetail>(unitOfWork); bool?isFullEmp = true; List <Att_AnnualDetailEntity> lstResult = new List <Att_AnnualDetailEntity>(); var lstProfileQuery = unitOfWork.CreateQueryable <Hre_Profile>(m => m.IsDelete == null); if (strOrgStructure != null && strOrgStructure != string.Empty) { isFullEmp = false; List <string> lstOrgIDChar = strOrgStructure.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); List <Guid> lstOrgID = new List <Guid>(); foreach (var item in lstOrgIDChar) { Guid ID = Guid.Empty; Guid.TryParse(item, out ID); if (ID != Guid.Empty) { lstOrgID.Add(ID); } } lstProfileQuery = lstProfileQuery.Where(m => m.OrgStructureID != null && lstOrgID.Contains(m.OrgStructureID.Value)); } if (proName != null && proName != string.Empty) { isFullEmp = false; List <string> lstProName = proName.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (lstProName.Count > 1) { lstProfileQuery = lstProfileQuery.Where(m => lstProName.Contains(m.ProfileName)); } else { string ProfileName = lstProName.FirstOrDefault(); lstProfileQuery = lstProfileQuery.Where(m => m.ProfileName.Contains(ProfileName)); } } if (codeEmp != null && codeEmp != string.Empty) { isFullEmp = false; List <string> lstCodeEmp = codeEmp.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(m => m.ToLower()).ToList(); if (lstCodeEmp.Count > 1) { lstProfileQuery = lstProfileQuery.Where(m => lstCodeEmp.Contains(m.CodeEmp.ToLower())); } else { string CodeEmp = lstCodeEmp.FirstOrDefault(); lstProfileQuery = lstProfileQuery.Where(m => m.CodeEmp.ToLower().Contains(CodeEmp)); } } if (strPayroll != null) { List <Guid> lstPgID = strPayroll.Split(',').Select(s => Guid.Parse(s)).ToList(); isFullEmp = false; lstProfileQuery = lstProfileQuery.Where(p => p.PayrollGroupID.HasValue && lstPgID.Contains(p.PayrollGroupID.Value)); } var lstProfile = lstProfileQuery.Select(m => new Hre_ProfileMultiField() { ID = m.ID, CodeEmp = m.CodeEmp, OrgStructureID = m.OrgStructureID, PayrollGroupID = m.PayrollGroupID, ProfileName = m.ProfileName, DateHire = m.DateHire, OrgStructureName = m.Cat_OrgStructure.OrgStructureName, PositionID = m.PositionID, DateQuit = m.DateQuit, DateEndProbation = m.DateEndProbation, JobTitleID = m.JobTitleID }).ToList(); var result = AnalyzeAnnualDetail(lstProfile, Year, isFullEmp, userLogin); Att_AnnualDetailEntity ann = new Att_AnnualDetailEntity(); foreach (var item in result) { if (item.ProfileID == null) { continue; } var temp = lstProfile.Where(s => s.ID == item.ProfileID).FirstOrDefault(); ann = new Att_AnnualDetailEntity(); ann = item.CopyData <Att_AnnualDetailEntity>(); ann.DateHire = temp.DateHire; ann.OrgStructureName = temp.OrgStructureName; ann.ProfileName = temp.ProfileName; ann.CodeEmp = temp.CodeEmp; lstResult.Add(ann); } return(lstResult); } }