diff --git a/CompanyManagment.App.Contracts/RollCallEmployee/AdjustRollCallEmployeesWithEmployeeLeftWork.cs b/CompanyManagment.App.Contracts/RollCallEmployee/AdjustRollCallEmployeesWithEmployeeLeftWork.cs index efd1439e..f85d2aa9 100644 --- a/CompanyManagment.App.Contracts/RollCallEmployee/AdjustRollCallEmployeesWithEmployeeLeftWork.cs +++ b/CompanyManagment.App.Contracts/RollCallEmployee/AdjustRollCallEmployeesWithEmployeeLeftWork.cs @@ -4,7 +4,6 @@ namespace CompanyManagment.App.Contracts.RollCallEmployee { public class AdjustRollCallEmployeesWithEmployeeLeftWork { - public DateTime LeaveDate { get; set; } public long RollCallStatusId { get; set; } } diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs index 8d1a4aca..627eb243 100644 --- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs +++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs @@ -693,6 +693,8 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo var op = new OperationResult(); var mainGroup = _customizeWorkshopGroupSettingsRepository.GetWorkshopMainGroup(workshopId); + if(mainGroup == null) + return op.Succcedded(); mainGroup.AddEmployeeSettingToGroupWithGroupData(employeeId, workshopId); diff --git a/CompanyManagment.EFCore/Repository/ContractRepository.cs b/CompanyManagment.EFCore/Repository/ContractRepository.cs index 1d1f18d4..d00e4889 100644 --- a/CompanyManagment.EFCore/Repository/ContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/ContractRepository.cs @@ -690,11 +690,14 @@ public class ContractRepository : RepositoryBase, IContractRepos }; var leftworkList = _leftWorkRepository.search(searchModel); - var lastLeftWork = leftworkList.FirstOrDefault(); - if (lastLeftWork.StartWorkDateGr > contractStart) - lastLeftWork = leftworkList.FirstOrDefault(x => - x.StartWorkDateGr >= contractStart && x.LeftWorkDateGr > contractStart); - if (lastLeftWork.LeftWorkDate != "1500/01/01" && lastLeftWork.LeftWorkDateGr < ContractEnd && lastLeftWork.LeftWorkDateGr >= contractStart) + var lastLeftWork = leftworkList.FirstOrDefault(x=>contractStart <= x.LeftWorkDateGr && ContractEnd >= x.StartWorkDateGr); + //if (lastLeftWork.StartWorkDateGr > contractStart) + // lastLeftWork = leftworkList.FirstOrDefault(x => + // x.StartWorkDateGr <= contractStart && x.LeftWorkDateGr > contractStart); + //if(lastLeftWork == null) + // lastLeftWork = leftworkList.FirstOrDefault(x => + // x.StartWorkDateGr >= contractStart && x.LeftWorkDateGr > contractStart); + if (lastLeftWork.LeftWorkDate != "1500/01/01" && lastLeftWork.LeftWorkDateGr < ContractEnd && lastLeftWork.LeftWorkDateGr >= contractStart) { ContractEnd = lastLeftWork.LeftWorkDateGr.AddDays(-1); hasLeft = true; diff --git a/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs b/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs index 0b7a60c1..c832f850 100644 --- a/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs +++ b/CompanyManagment.EFCore/Repository/CustomizeWorkshopEmployeeSettingsRepository.cs @@ -136,8 +136,7 @@ public class CustomizeWorkshopEmployeeSettingsRepository(CompanyContext companyC var names = _companyContext.Employees.Where(x => list.Any(y => y.EmployeeId == x.id)) .Select(x => new { Id = x.id, Name = x.FName + " " + x.LName }); - return list.Join(names, x => x.EmployeeId, y - => y.Id, (x, y) => new CustomizeWorkshopEmployeeSettingsViewModel + return list.Join(names, x => x.EmployeeId, y => y.Id, (x, y) => new CustomizeWorkshopEmployeeSettingsViewModel { Id = x.Id, EmployeeId = x.EmployeeId, @@ -153,8 +152,8 @@ public class CustomizeWorkshopEmployeeSettingsRepository(CompanyContext companyC public List GetEmployeeSettingNotInMainGroup(long workshopId) { - return _companyContext.CustomizeWorkshopEmployeeSettings.Where(x => x.WorkshopId == workshopId) - .Include(x => x.CustomizeWorkshopGroupSettings).Where(x=>!x.CustomizeWorkshopGroupSettings.MainGroup).Select(x => new CustomizeWorkshopEmployeeSettingsViewModel() + return _companyContext.CustomizeWorkshopEmployeeSettings.Where(x => x.WorkshopId == workshopId) + .Include(x => x.CustomizeWorkshopGroupSettings).Where(x => !x.CustomizeWorkshopGroupSettings.MainGroup).Select(x => new CustomizeWorkshopEmployeeSettingsViewModel() { Id = x.id, EmployeeId = x.EmployeeId diff --git a/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs b/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs index f32d8f71..12becbdf 100644 --- a/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs @@ -256,15 +256,15 @@ public class RollCallEmployeeRepository : RepositoryBase public List GetActivePersonnelByWorkshopId(long workshopId) { - var rollCallEmployees = _context.RollCallEmployees.Where(x => x.WorkshopId == workshopId - && x.IsActiveString == "true" && - x.HasUploadedImage == "true"); + var dateNow = DateTime.Now.Date; + var rollCallEmployeesQuery = _context.RollCallEmployees.Include(x => x.EmployeesStatus).Where(x => x.WorkshopId == workshopId + && x.EmployeesStatus.Any(y => y.StartDate.Date <= dateNow && y.EndDate.Date > dateNow) && x.HasUploadedImage == "true"); var personnel = - _context.PersonnelCodeSet.Where(x => - rollCallEmployees.Any(y => y.EmployeeId == x.EmployeeId && y.WorkshopId == x.WorkshopId)) + _context.PersonnelCodeSet.Where(x => x.WorkshopId == workshopId && rollCallEmployeesQuery.Any(y => y.EmployeeId == x.EmployeeId && y.WorkshopId == x.WorkshopId)) .Select(x => new { x.EmployeeId, x.PersonnelCode }).ToList(); - var rollCallEmployeesList = rollCallEmployees.ToList(); + + var rollCallEmployeesList = rollCallEmployeesQuery.ToList(); return personnel.Select(x => { var name = rollCallEmployeesList.FirstOrDefault(y => x.EmployeeId == y.EmployeeId); diff --git a/CompanyManagment.EFCore/Repository/RollCallEmployeeStatusRepository.cs b/CompanyManagment.EFCore/Repository/RollCallEmployeeStatusRepository.cs index c005adcb..74f6b5f6 100644 --- a/CompanyManagment.EFCore/Repository/RollCallEmployeeStatusRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallEmployeeStatusRepository.cs @@ -34,7 +34,7 @@ namespace CompanyManagment.EFCore.Repository /// /// برای تغییر بازه فعالبت هنگام ترک کار /// - public void AdjustRollCallStatusEndDates(List command) + public void AdjustRollCallStatusEndDates(List command) { //status ids var statusIds = command.Select(x => x.RollCallStatusId); diff --git a/CompanyManagment.EFCore/Repository/RollCallRepository.cs b/CompanyManagment.EFCore/Repository/RollCallRepository.cs index 1cf325b5..a35e2583 100644 --- a/CompanyManagment.EFCore/Repository/RollCallRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallRepository.cs @@ -250,12 +250,12 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos var leavesQuery = _context.LeaveList.Where(x => (x.LeaveType == "استعلاجی" || (x.LeaveType == "استحقاقی" && x.PaidLeaveType == "روزانه")) && x.IsAccepted && - x.EndLeave >= selectedMonthFirstDay && x.StartLeave < nextMonthFirstDay && x.WorkshopId == workshopId); + x.EndLeave >= selectedMonthFirstDay && x.StartLeave < nextMonthFirstDay && x.WorkshopId == workshopId && x.EmployeeId == employeeId); var rollCalls = _context.RollCalls.Where(x => - !leavesQuery.Any(y => + x.EmployeeId == employeeId && !leavesQuery.Any(y => y.StartLeave.Date <= x.StartDate.Value.Date && y.EndLeave.Date >= x.StartDate.Value.Date) && - x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate != null && + x.WorkshopId == workshopId && x.StartDate != null && x.StartDate >= selectedMonthFirstDay && x.StartDate < nextMonthFirstDay && x.RollCallModifyType != RollCallModifyType.Undefined); var personnelCode = diff --git a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs index 99d62ec9..dad62a73 100644 --- a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs +++ b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs @@ -159,8 +159,16 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { montlyResult = daylyWage * TotalDays;// مزد ماهانه با پایه سنوات bacicMontlyResult = BasicDayliFee * TotalDays;// مزد ماهانه بدون پایه سنوات - montlySalaryResult = bacicMontlyResult; - basicYearResult = montlyResult - bacicMontlyResult; + if (montlyResult > bacicMontlyResult) + { + + montlySalaryResult = bacicMontlyResult; + basicYearResult = montlyResult - bacicMontlyResult; + } + else + { + montlySalaryResult = montlyResult; + } } @@ -1044,7 +1052,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl public EditYearlySalary GetDetailsBySearchModel(YearlySalarySearchModel searchModel) { - var query = _context.YearlySalaries.Where(x => x.StartDate <= searchModel.StartDateGr && x.EndDate >= searchModel.EndDateGr && x.Year == searchModel.year).FirstOrDefault(); + var query = _context.YearlySalaries.FirstOrDefault(x => x.StartDate <= searchModel.StartDateGr && x.EndDate >= searchModel.EndDateGr && x.Year == searchModel.year); if (query != null) { var yearlySalariesObj = new EditYearlySalary() @@ -1882,9 +1890,9 @@ public class YearlySalaryRepository : RepositoryBase, IYearl // {مقدار ساعت مجاز مرخصی در برای یک روز{کامل var leaveHoursesPerDay = 190.58 / 365; var contactCanToleaveList = new List(); - var allContractsBetween = _context.Contracts.Include(x => x.WorkingHoursList) + var allContractsBetween = _context.Contracts.AsSplitQuery().Include(x => x.WorkingHoursList) .Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && - x.ContarctStart >= startDate && x.ContarctStart < endDate).ToList(); + x.ContractEnd >= startDate && x.ContarctStart <= endDate).ToList(); int mandatoryDays = 0; double allCanToLeave = 0; double canToLeave = 0; @@ -2025,7 +2033,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl #endregion - var leaveList = _context.LeaveList + var leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2111,7 +2119,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { canToLeave = thisContractCanToLeavPerDay; } - leaveList = _context.LeaveList + leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2158,7 +2166,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { var startSerach = checkAbsenceDeduction.ContractEnd.AddDays(1); - leaveList = _context.LeaveList + leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2359,9 +2367,9 @@ public class YearlySalaryRepository : RepositoryBase, IYearl // {مقدار ساعت مجاز مرخصی در برای یک روز{کامل var leaveHoursesPerDay = 190.58 / 365; var contactCanToleaveList = new List(); - var allContractsBetween = _context.Contracts.Include(x => x.WorkingHoursList) + var allContractsBetween = _context.Contracts.AsSplitQuery().Include(x => x.WorkingHoursList) .Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && - x.ContarctStart >= separationStartDate && x.ContarctStart < endDate).OrderBy(x=>x.ContarctStart).ToList(); + x.ContractEnd >= startDate && x.ContarctStart <= endDate).OrderBy(x=>x.ContarctStart).ToList(); double canToLeave = 0; int contractCounter = 0; foreach (var contract in allContractsBetween) @@ -2424,8 +2432,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var sdate = contract.ContarctStart.ToFarsi(); var edate = contract.ContractEnd.ToFarsi(); // اگر فیش در قرارداد جاری حلقه بود تا تاریخ پایان فیش برو - //if (separationStartDate >= contract.ContarctStart && separationStartDate < contract.ContractEnd) - if (startDate >= contract.ContarctStart && startDate < contract.ContractEnd) + if (separationStartDate >= contract.ContarctStart && separationStartDate < contract.ContractEnd) edate = endDate.ToFarsi(); var syear = Convert.ToInt32(sdate.Substring(0, 4)); var smonth = Convert.ToInt32(sdate.Substring(5, 2)); @@ -2506,7 +2513,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl #endregion - var leaveList = _context.LeaveList + var leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2582,7 +2589,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { var startAfter365 = check365.ContractEnd.AddDays(1); canToLeave = check365.CanToLeave; - leaveList = _context.LeaveList + leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2647,7 +2654,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl canToLeave = personelCanToLeave; } - leaveList = _context.LeaveList + leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2694,7 +2701,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { var startSerach = checkAbsenceDeduction.ContractEnd.AddDays(1); - leaveList = _context.LeaveList + leaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => @@ -2763,41 +2770,8 @@ public class YearlySalaryRepository : RepositoryBase, IYearl bool lastChekout = endMonthGr == contract.ContractEnd; bool endOfyear = lastChekout && isEndOfYear; - //if (canToLeave >= usedLeaves) //اگر طلب مرخصی داشت - //{ - // creditLeaves = canToLeave - usedLeaves; - // var has365 = contactCanToleaveList.Any(x => x.Is365); - // //اگر از 365 روز تجاوز کرد و باقی مانده مرخصی بیشتر از 9 روز بود فقط 9 روز بماند - // if (is365 && !has365 && creditLeaves > canToLeavAfter365 && !left && !endOfyear) - // { - // creditLeaves = canToLeavAfter365; + - // } - - // if(is365 && has365 && !left && !endOfyear) - // { - // var last365 = contactCanToleaveList - // .Where(x => x.Is365) - // .MaxBy(x => x.ContractStart); - // canToLeavAfter365 += last365.CanToLeave; - // if (creditLeaves > canToLeavAfter365) - // { - // creditLeaves = canToLeavAfter365; - // } - - // } - - // periodOfAbsence = 0; - - //} - //else - //{ - - - // periodOfAbsence = usedLeaves - canToLeave; - - // creditLeaves = 0; - //} #region NewcChanges @@ -2868,7 +2842,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl checkoutCanToLeave = starndardHoursesPerTotalDays; } //بدست آوردن مرخصی این ماه - var checkoutLeaveList = _context.LeaveList + var checkoutLeaveList = _context.LeaveList.AsSplitQuery() .Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId) .Where(x => x.LeaveType == "استحقاقی" && x.IsAccepted) .Where(x => diff --git a/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml index e04a3448..849389b4 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Contracts/ContractPrintAll.cshtml @@ -1,6 +1,8 @@ @page @model ServiceHost.Areas.Admin.Pages.Company.Contracts.ContractPrintAll + @{ +