public List <Cat_ShiftItemEntity> GetCatShiftItem(string userLogin) { using (var context = new VnrHrmDataContext()) { IUnitOfWork unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); Cat_ShiftItemRepository repo = new Cat_ShiftItemRepository(unitOfWork); BaseService service = new BaseService(); string status = string.Empty; return(service.GetData <Cat_ShiftItemEntity>(ConstantSql.hrm_cat_sp_get_ShiftItem, string.Empty, userLogin, ref status)); } }
public List<Cat_ShiftItemEntity> GetCatShiftItem( string userLogin) { using (var context = new VnrHrmDataContext()) { IUnitOfWork unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); Cat_ShiftItemRepository repo = new Cat_ShiftItemRepository(unitOfWork); BaseService service = new BaseService(); string status = string.Empty; return service.GetData<Cat_ShiftItemEntity>(ConstantSql.hrm_cat_sp_get_ShiftItem, string.Empty, userLogin, ref status); } }
public DataTable LoadDataAnalyzeOvertime_DataLimit(string strOrgStructure, DateTime DateStart, DateTime DateEnd, List<Hre_ProfileEntity> lstProfile, List<string> lstTypeData, Att_OvertimeInfoFillterAnalyze _OvertimeInfoFillterAnalyzeEntity, string userLogin) { DataTable table = GetSchemaExportExcel(); string status = string.Empty; DateStart = DateStart.Date; DateEnd = DateEnd.Date.AddDays(1).AddMilliseconds(-1); using (var context = new VnrHrmDataContext()) { var unitOfWork = (IUnitOfWork)(new UnitOfWork(context)); var repoAtt_WorkDay = new Att_WorkDayRepository(unitOfWork); var repoCat_Shift = new Cat_ShiftRepository(unitOfWork); var repoCat_ShiftItem = new Cat_ShiftItemRepository(unitOfWork); var repoCat_DayOff = new Cat_DayOffRepository(unitOfWork); var repoCat_OvertimeType = new Cat_OvertimeTypeRepository(unitOfWork); var repoCat_OrgStructure = new CustomBaseRepository<Cat_OrgStructure>(unitOfWork); var repoCat_OrgStructureType = new CustomBaseRepository<Cat_OrgStructureType>(unitOfWork); var orgTypes = repoCat_OrgStructureType.FindBy(s => s.IsDelete == null).ToList(); var orgs = repoCat_OrgStructure.FindBy(s => s.IsDelete == null && s.Code != null).ToList(); List<WorkdayCustom> lstWorkday = new List<WorkdayCustom>(); List<Guid> lstProfileId = lstProfile.Select(s => s.ID).ToList(); List<object> lst3ParamSE = new List<object>(); lst3ParamSE.Add(strOrgStructure); lst3ParamSE.Add(DateStart); lst3ParamSE.Add(DateEnd); if (lstProfile.Count > 0 && strOrgStructure == null) { var lstWD = repoAtt_WorkDay.FindBy(s => s.IsDelete == null && s.WorkDate >= DateStart && s.WorkDate <= DateEnd && lstProfileId.Contains(s.ProfileID)).ToList(); if (lstWD.Count > 0) { lstWorkday = lstWD.Translate<WorkdayCustom>(); } } else { lstWorkday = GetData<WorkdayCustom>(lst3ParamSE, ConstantSql.hrm_att_getdata_Workday, userLogin, ref status).ToList(); } //var lstWorkdayQuery = repoAtt_WorkDay.FindBy(m => m.IsDelete == null && m.WorkDate >= DateStart && m.WorkDate <= DateEnd); //if (lstProfileId.Count > 0) //{ // lstWorkdayQuery = lstWorkdayQuery.Where(m => lstProfileId.Contains(m.ProfileID)); //} //lstWorkday = lstWorkdayQuery.ToList().Translate<Att_WorkdayEntity>(); List<Cat_ShiftEntity> lstShift = repoCat_Shift .FindBy(s => s.IsDelete == null) .ToList() .Translate<Cat_ShiftEntity>(); List<Cat_ShiftItemEntity> lstShiftItem = repoCat_ShiftItem .FindBy(s => s.IsDelete == null) .ToList() .Translate<Cat_ShiftItemEntity>(); List<Cat_DayOffEntity> LstDayOff = repoCat_DayOff .FindBy(m => m.IsDelete == null && m.DateOff >= DateStart && m.DateOff < DateEnd) .ToList() .Translate<Cat_DayOffEntity>(); List<Cat_OvertimeTypeEntity> lstOvertimeType = repoCat_OvertimeType .FindBy(s => s.IsDelete == null).ToList() .Translate<Cat_OvertimeTypeEntity>(); string E_CANCEL = OverTimeStatus.E_CANCEL.ToString(); string E_REJECTED = OverTimeStatus.E_REJECTED.ToString(); DateTime beforeDateStart = DateStart.Date.AddDays(-1); DateTime afterDateEnd = DateEnd.Date.AddDays(2).AddMinutes(-1); // string E_HOLIDAY_HLD = HolidayType.E_HOLIDAY_HLD.ToString(); List<DateTime> lstHoliday = repoCat_DayOff .FindBy(s => s.IsDelete == null) .Select(m => m.DateOff).ToList<DateTime>(); //lstWorkday = filterData_NonAllowOT_inGrade(lstWorkday); List<Att_OvertimeEntity> lstOvertimeCal = AnalyzeOvertime(lstWorkday, lstShift, lstShiftItem, LstDayOff, lstOvertimeType, _OvertimeInfoFillterAnalyzeEntity, userLogin); if (lstOvertimeCal.Count == 0) { lstOvertimeCache = lstOvertimeCal; return table; } OvertimePermitEntity overtimePermit = getOvertimePermit(userLogin); FilterNonOvertimeByGradeConfig(lstOvertimeCal); SetNonOT(lstOvertimeCal); SetStatusOvertimeOnWorkday(lstOvertimeCal); FilterOvertimeByMaxHourPerDay(lstOvertimeCal, overtimePermit, _OvertimeInfoFillterAnalyzeEntity.MaximumOvertimeHour); RoundOT(lstOvertimeCal, userLogin); FillterAllowOvertime(context, lstOvertimeCal, overtimePermit, lstWorkday); RoundOT(lstOvertimeCal, userLogin); lstOvertimeCal = lstOvertimeCal.Where(m => m.RegisterHours != null && m.RegisterHours > 0).ToList(); SetStatusLeaveOnWorkday(lstOvertimeCal);//Set loại ngày nghỉ cho OT if (lstTypeData.Count > 0) { Expression<Func<Att_OvertimeEntity, bool>> predicate = VnResource.Helper.Linq.PredicateBuilder.False<Att_OvertimeEntity>(); if (lstTypeData.Any(m => m == ComputeLeavedayType.E_DATA_LEAVE.ToString())) { Expression<Func<Att_OvertimeEntity, bool>> predicate1 = m => m.udLeaveTypeCode != null || m.udLeaveTypeCode2 != null; predicate = predicate.Or(predicate1); //lstOvertimeCal = lstOvertimeCal.Where(m => (m.udLeaveTypeCode == null || m.udLeaveTypeCode == string.Empty) && (m.udLeaveTypeCode2 == null || m.udLeaveTypeCode2 == string.Empty)).ToList(); } if (lstTypeData.Any(m => m == ComputeLeavedayType.E_DATA_NON_LEAVE.ToString())) { Expression<Func<Att_OvertimeEntity, bool>> predicate2 = m => (m.udLeaveTypeCode == null || m.udLeaveTypeCode == string.Empty) && (m.udLeaveTypeCode2 == null || m.udLeaveTypeCode2 == string.Empty); predicate = predicate.Or(predicate2); //lstOvertimeCal = lstOvertimeCal.Where(m => m.udLeaveTypeCode != null || m.udLeaveTypeCode2 != null).ToList(); } if (lstTypeData.Any(m => m == ComputeOvertimeType.E_DATA_OT.ToString())) { Expression<Func<Att_OvertimeEntity, bool>> predicate2 = m => m.udOvertimeStatus != null; predicate = predicate.Or(predicate2); } if (lstTypeData.Any(m => m == ComputeOvertimeType.E_DATA_NON_OT.ToString())) { Expression<Func<Att_OvertimeEntity, bool>> predicate2 = m => m.udOvertimeStatus == null; predicate = predicate.Or(predicate2); } lstOvertimeCal = lstOvertimeCal.AsQueryable().Where(predicate).ToList(); } //lstOvertimeCal = lstOvertimeCal.OrderBy(m => m.WorkDate.Date).ThenBy(m => m.ProfileID).ToList(); //lstOvertimeCache = lstOvertimeCal; //BindToGrid(lstOvertimeCache); lstOvertimeCal = lstOvertimeCal .Where(m => m.udIsLimitHour == true || m.udIsLimitHourLv1 == true || m.udIsLimitHourLv2 == true) .OrderBy(m => m.WorkDate.Date) .ThenBy(m => m.ProfileID) .ToList(); //lstOvertimeCal.ForEach(s => s.IsValid = false); #region process return table foreach (var item in lstOvertimeCal) { DataRow row = table.NewRow(); Guid? orgId = lstProfile.Where(s => s.ID == item.ProfileID).FirstOrDefault().OrgStructureID; var org = orgs.FirstOrDefault(s => s.ID == orgId); var orgBranch = LibraryService.GetNearestParent(orgId, OrgUnit.E_BRANCH, orgs, orgTypes); var orgOrg = LibraryService.GetNearestParent(orgId, OrgUnit.E_DEPARTMENT, orgs, orgTypes); var orgTeam = LibraryService.GetNearestParent(orgId, OrgUnit.E_TEAM, orgs, orgTypes); var orgSection = LibraryService.GetNearestParent(orgId, OrgUnit.E_SECTION, orgs, orgTypes); row[Att_OvertimeEntity.FieldNames.BranchCode] = orgBranch != null ? orgBranch.Code : string.Empty; row[Att_OvertimeEntity.FieldNames.OrgStructureCode] = orgOrg != null ? orgOrg.Code : string.Empty; row[Att_OvertimeEntity.FieldNames.TeamCode] = orgTeam != null ? orgTeam.Code : string.Empty; row[Att_OvertimeEntity.FieldNames.SectionCode] = orgSection != null ? orgSection.Code : string.Empty; row[Att_OvertimeEntity.FieldNames.BranchName] = orgBranch != null ? orgBranch.OrgStructureName : string.Empty; row[Att_OvertimeEntity.FieldNames.OrgName] = orgOrg != null ? orgOrg.OrgStructureName : string.Empty; row[Att_OvertimeEntity.FieldNames.TeamName] = orgTeam != null ? orgTeam.OrgStructureName : string.Empty; row[Att_OvertimeEntity.FieldNames.SectionName] = orgSection != null ? orgSection.OrgStructureName : string.Empty; row[Att_OvertimeEntity.FieldNames.WorkDate] = item.WorkDate; row[Att_OvertimeEntity.FieldNames.InTime] = item.InTime; row[Att_OvertimeEntity.FieldNames.OutTime] = item.OutTime; if (item.udIsLimitHour == null || item.udIsLimitHour == false) { row[Att_OvertimeEntity.FieldNames.Valid] = "Level1"; } else if (item.udIsLimitHourLv1 == null || item.udIsLimitHourLv1 == false) { row[Att_OvertimeEntity.FieldNames.Valid] = "Level2"; } else if (item.udIsLimitHourLv2 == null || item.udIsLimitHourLv2 == false) { row[Att_OvertimeEntity.FieldNames.Valid] = "Level3"; } else { row[Att_OvertimeEntity.FieldNames.Valid] = string.Empty; } if (item.OvertimeTypeID != Guid.Empty) { var OTType = lstOvertimeType.Where(s => s.ID == item.OvertimeTypeID).FirstOrDefault(); row[Att_OvertimeEntity.FieldNames.OvertimeTypeID] = item.OvertimeTypeID; row[Att_OvertimeEntity.FieldNames.OvertimeTypeName] = OTType.OvertimeTypeName; row[OTType.Code] = item.RegisterHours; row[OTType.Code + "Confirm"] = item.ApproveHours ?? 0.0; } if (item.ShiftID != Guid.Empty) { var _shift = lstShift.Where(s => s.ID == item.ShiftID).FirstOrDefault(); row[Att_OvertimeEntity.FieldNames.ShiftID] = item.ShiftID; row[Att_OvertimeEntity.FieldNames.ShiftName] = _shift.ShiftName; } if (item.ProfileID != Guid.Empty) { var temp = lstProfile.Where(s => s.ID == item.ProfileID).FirstOrDefault(); row[Att_OvertimeEntity.FieldNames.ProfileID] = item.ProfileID; row[Att_OvertimeEntity.FieldNames.ProfileName] = temp.ProfileName; row[Att_OvertimeEntity.FieldNames.CodeEmp] = temp.CodeEmp; //row[Att_ReportDetailOvertimeEntity.FieldNames.OrgStructureName] = temp.OrgStructureName; } row[Att_OvertimeEntity.FieldNames.TotalRow] = lstOvertimeCal.Count; row[Att_OvertimeEntity.FieldNames.DateExport] = DateTime.Now; row[Att_OvertimeEntity.FieldNames.AnalyseHour] = item.AnalyseHour; row[Att_OvertimeEntity.FieldNames.udHourByDate] = item.udHourByDate; row[Att_OvertimeEntity.FieldNames.udHourByWeek] = item.udHourByWeek; row[Att_OvertimeEntity.FieldNames.udHourByMonth] = item.udHourByMonth; row[Att_OvertimeEntity.FieldNames.udHourByYear] = item.udHourByYear; row[Att_OvertimeEntity.FieldNames.udLeaveTypeCode] = item.udLeaveTypeCode; row[Att_OvertimeEntity.FieldNames.udOvertimeStatus] = item.udOvertimeStatus; row[Att_OvertimeEntity.FieldNames.RegisterHours] = item.RegisterHours; row[Att_OvertimeEntity.FieldNames.ApproveHours] = item.RegisterHours; table.Rows.Add(row); } #endregion return table; } }