From 2c1ea936ecfcd7eaa1fe373beab69ec5c944fffe Mon Sep 17 00:00:00 2001 From: SamSys Date: Wed, 20 Nov 2024 19:08:20 +0330 Subject: [PATCH] BaseYears changes - Bonuses changes - RollCall CaseHistory buges fixed --- .../ContractAgg/IContractRepository.cs | 3 +- .../IYearlySalaryRepository.cs | 6 +- .../YearlySalary/BunosesAndYearsPayStatus.cs | 17 + .../YearlySalary/ContractsCanToLeave.cs | 33 +- .../RollCallEmployeeStatusApplication.cs | 2 +- .../Repository/ContractRepository.cs | 12 + .../Repository/RollCallEmployeeRepository.cs | 4 +- .../Repository/RollCallRepository.cs | 4 +- .../Repository/YearlySalaryRepository.cs | 519 +++++++++++++++--- .../Pages/Company/Checkouts/Index.cshtml.cs | 95 +++- .../Pages/Company/RollCall/CaseHistory.cshtml | 2 +- .../Company/RollCall/CaseHistory.cshtml.cs | 10 +- .../pages/RollCall/js/CaseHistory.js | 2 + 13 files changed, 578 insertions(+), 131 deletions(-) create mode 100644 CompanyManagment.App.Contracts/YearlySalary/BunosesAndYearsPayStatus.cs diff --git a/Company.Domain/ContractAgg/IContractRepository.cs b/Company.Domain/ContractAgg/IContractRepository.cs index c20eef59..d652e36c 100644 --- a/Company.Domain/ContractAgg/IContractRepository.cs +++ b/Company.Domain/ContractAgg/IContractRepository.cs @@ -10,8 +10,9 @@ namespace Company.Domain.ContractAgg; public interface IContractRepository : IRepository { EditContract GetDetails(long id); + EditContract GetContractByStartEnd(DateTime start, DateTime end, long workshopId, long employeeId); - List Search(ContractSearchModel searchModel); + List Search(ContractSearchModel searchModel); List SearchForextension(ContractSearchModel searchModel); List SearchForCheckout(ContractSearchModel searchModel); diff --git a/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs b/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs index 74a2c0ab..75ba7c17 100644 --- a/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs +++ b/Company.Domain/YearlySalaryAgg/IYearlySalaryRepository.cs @@ -32,13 +32,13 @@ public interface IYearlySalaryRepository : IRepository double MarriedAllowance(DateTime endDateW, long employeeId); - #region newComputeOptions + #region newComputeOptions - double Years(DateTime separationStartDate,DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions,bool hasleft,DateTime startWorkDate,DateTime contractStart, DateTime contractEnd, long workshopId,long employeeId, bool isOldContract); + BunosesAndYearsPayStatus Years(DateTime separationStartDate,DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions,bool hasleft,DateTime startWorkDate,DateTime contractStart, DateTime contractEnd, long workshopId,long employeeId, bool isOldContract); LeaveAndAbsenceViewModel LeavePay(string startDateFa,DateTime leftWorkDate,DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string computeOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, int fridayStartToEnd,int officialHoliday, string totalHoursH, string totalHorsM, double consumableItem, double housingAllowance, double familyAllowance,double marriedAllowance, bool isOldContract); - double Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract); + BunosesAndYearsPayStatus Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract); List LeftWorkCantoleaveList(DateTime startDate, DateTime endDate,long workshopId, long employeeId, bool hasleft,DateTime leftWorkDate, int fridayStartToEnd, int officialHoliday, string totalHoursH, string totalHorsM, DateTime separationStartDate); diff --git a/CompanyManagment.App.Contracts/YearlySalary/BunosesAndYearsPayStatus.cs b/CompanyManagment.App.Contracts/YearlySalary/BunosesAndYearsPayStatus.cs new file mode 100644 index 00000000..56df18c0 --- /dev/null +++ b/CompanyManagment.App.Contracts/YearlySalary/BunosesAndYearsPayStatus.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CompanyManagment.App.Contracts.YearlySalary; + +public class BunosesAndYearsPayStatus +{ + public double Bunoses { get; set; } + public double YearsPay { get; set; } + public bool NotCompleted { get; set; } + public DateTime ContractStart { get; set; } + public DateTime ContractEnd { get; set; } + public List BunosesStatusList { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/YearlySalary/ContractsCanToLeave.cs b/CompanyManagment.App.Contracts/YearlySalary/ContractsCanToLeave.cs index 93dfb058..7818cd09 100644 --- a/CompanyManagment.App.Contracts/YearlySalary/ContractsCanToLeave.cs +++ b/CompanyManagment.App.Contracts/YearlySalary/ContractsCanToLeave.cs @@ -4,21 +4,20 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace CompanyManagment.App.Contracts.YearlySalary +namespace CompanyManagment.App.Contracts.YearlySalary; + +public class ContractsCanToLeave { - public class ContractsCanToLeave - { - public double WorkingPerDayHourses { get; set; } - public DateTime ContractStart { get; set; } - public DateTime ContractEnd { get; set; } - public double CanToLeave { get; set; } - public double PeriodOfAbsence { get; set; } - public double AbsenceDeduction { get; set; } - public bool LastChekoutOfContract { get; set; } - public bool Left { get; set; } - public bool EndOfYear { get; set; } - public int ContractCounter { get; set; } - public int CountChekoutDays { get; set; } - public bool Is365 { get; set; } - } -} + public double WorkingPerDayHourses { get; set; } + public DateTime ContractStart { get; set; } + public DateTime ContractEnd { get; set; } + public double CanToLeave { get; set; } + public double PeriodOfAbsence { get; set; } + public double AbsenceDeduction { get; set; } + public bool LastChekoutOfContract { get; set; } + public bool Left { get; set; } + public bool EndOfYear { get; set; } + public int ContractCounter { get; set; } + public int CountChekoutDays { get; set; } + public bool Is365 { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs index 7e7e5521..9176671a 100644 --- a/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs +++ b/CompanyManagment.Application/RollCallEmployeeStatusApplication.cs @@ -73,7 +73,7 @@ namespace CompanyManagment.Application return _employeeRollCallStatusRepository.Exists(x => x.RollCallEmployeeId == rollCallEmployee.Id && x.StartDate.Date <= contractStart.Date && - x.EndDate.Date > contractEnd.Date); + x.EndDate.Date >= contractEnd.Date); } public OperationResult Deactivate(long id) { diff --git a/CompanyManagment.EFCore/Repository/ContractRepository.cs b/CompanyManagment.EFCore/Repository/ContractRepository.cs index 33dd5dcc..50061898 100644 --- a/CompanyManagment.EFCore/Repository/ContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/ContractRepository.cs @@ -81,6 +81,18 @@ public class ContractRepository : RepositoryBase, IContractRepos .FirstOrDefault(x => x.Id == id); } + public EditContract GetContractByStartEnd(DateTime start, DateTime end, long workshopId, long employeeId) + { + var res = _context.Contracts.FirstOrDefault(x => + x.WorkshopIds == workshopId && x.EmployeeId == employeeId && x.ContarctStart <= start && x.ContractEnd >= end); + if (res == null) + return new EditContract(); + return new EditContract() + { + Id = res.id, + GetWorkDate = res.GetWorkDate.ToFarsi(), + }; + } public List Search(ContractSearchModel searchModel) { var AcountID = _authHelper.CurrentAccountId(); diff --git a/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs b/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs index f2c50587..b8e55862 100644 --- a/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallEmployeeRepository.cs @@ -276,8 +276,8 @@ public class RollCallEmployeeRepository : RepositoryBase public List GetEmployeeRollCalls(long workshopId) { - var dateNow = DateTime.Now; - var f = _context.RollCallEmployees.Where(x => x.WorkshopId == workshopId); + var f = _context.RollCallEmployees.Include(x=>x.EmployeesStatus) + .Where(x => x.WorkshopId == workshopId && x.EmployeesStatus.Any()); var res = f.Select(x => new RollCallEmployeeViewModel { diff --git a/CompanyManagment.EFCore/Repository/RollCallRepository.cs b/CompanyManagment.EFCore/Repository/RollCallRepository.cs index d15cf723..6eee4202 100644 --- a/CompanyManagment.EFCore/Repository/RollCallRepository.cs +++ b/CompanyManagment.EFCore/Repository/RollCallRepository.cs @@ -122,8 +122,8 @@ public class RollCallRepository : RepositoryBase, IRollCallRepos .FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId); //if none was found return empty - if (employeeRollCallStatuses == null) - return new(); + if (employeeRollCallStatuses == null || employeeRollCallStatuses.EmployeesStatus == null || !employeeRollCallStatuses.EmployeesStatus.Any()) + return null; //this list will have all the months which employee was active in var activeMonths = new List(); diff --git a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs index e1e876a2..dfdd6fdb 100644 --- a/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs +++ b/CompanyManagment.EFCore/Repository/YearlySalaryRepository.cs @@ -1097,10 +1097,11 @@ public class YearlySalaryRepository : RepositoryBase, IYearl //سنوات #region yeaers - public double Years(DateTime separationStartDate, DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions, + public BunosesAndYearsPayStatus Years(DateTime separationStartDate, DateTime leftWorkDate, DateTime separationEndDate, double daylyWage, string yearsOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract) { - var startDateFa = separationEndDate.ToFarsi(); + BunosesAndYearsPayStatus finalResult = new BunosesAndYearsPayStatus(); + var startDateFa = separationEndDate.ToFarsi(); var checkoutMonth = startDateFa.Substring(5, 2); double result = 0; var start1403 = new DateTime(2024, 3, 20); @@ -1108,7 +1109,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { case "OnCheckoutOfMonth": var totalCheckoutDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalCheckoutDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalCheckoutDays; break; //محاسبه در پایان سال به شرطی که قرارداد منتهی به پایان سال باشد case "OnEndOfYear"://درپایان سال @@ -1116,7 +1117,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl if (isOldContract && contractEnd < start1403) { var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } else if (isOldContract && contractEnd > start1403) { @@ -1129,10 +1130,69 @@ public class YearlySalaryRepository : RepositoryBase, IYearl // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; - var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; - } - } + + + + #region NewCompute + + //شروع دوره + string st = startComputeDay.ToFarsi(); + int syear = Convert.ToInt32(st.Substring(0, 4)); + int smonth = Convert.ToInt32(st.Substring(5, 2)); + PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1); + PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1); + //پایان فیش حقوقی آخر + PersianDateTime endCheckout = separationEndDate.ToPersianDateTime(); + if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month) + { + var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; + } + else + { + var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable(); + //پایان دوره + PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime(); + List nullDateList = new List(); + double sumOfOldYearsPay = 0; + for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1)) + { + var searchStart = ($"{startDate}").ToGeorgianDateTime(); + var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime(); + var foundCheckout = checkoutList.FirstOrDefault(x => + x.ContractStart >= searchStart && x.ContractEnd <= searchEnd); + if (foundCheckout == null) + { + nullDateList.Add(new BunosesAndYearsPayStatus() + { + ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart, + ContractEnd = searchEnd + }); + finalResult.NotCompleted = true; + } + else + { + double foundMonthlySalary = foundCheckout.MonthlySalary; + int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays); + double foundDayliWage = foundMonthlySalary / foundTotaldays; + double foundYearsPay = ((foundDayliWage * 30) / 365) * foundTotaldays; + sumOfOldYearsPay += foundYearsPay; + } + + } + + var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + double lastMonthYearsPay = ((daylyWage * 30) / 365) * totalDays; + + finalResult.YearsPay = lastMonthYearsPay + sumOfOldYearsPay; + finalResult.BunosesStatusList = nullDateList; + + } + + #endregion + } + } else if (!isOldContract) { @@ -1142,20 +1202,77 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; - var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; - } - } + #region NewCompute - - break; + //شروع دوره + string st = startComputeDay.ToFarsi(); + int syear = Convert.ToInt32(st.Substring(0, 4)); + int smonth = Convert.ToInt32(st.Substring(5, 2)); + PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1); + PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1); + //پایان فیش حقوقی آخر + PersianDateTime endCheckout = separationEndDate.ToPersianDateTime(); + if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month) + { + var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; + } + else + { + var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable(); + //پایان دوره + PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime(); + List nullDateList = new List(); + double sumOfOldYearsPay = 0; + for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1)) + { + var searchStart = ($"{startDate}").ToGeorgianDateTime(); + var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime(); + var foundCheckout = checkoutList.FirstOrDefault(x => + x.ContractStart >= searchStart && x.ContractEnd <= searchEnd); + if (foundCheckout == null) + { + nullDateList.Add(new BunosesAndYearsPayStatus() + { + ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart, + ContractEnd = searchEnd + }); + finalResult.NotCompleted = true; + } + else + { + double foundMonthlySalary = foundCheckout.MonthlySalary; + int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays); + double foundDayliWage = foundMonthlySalary / foundTotaldays; + double foundYearsPay = ((foundDayliWage * 30) / 365) * foundTotaldays; + sumOfOldYearsPay += foundYearsPay; + } + + } + + var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + double lastMonthYearsPay = ((daylyWage * 30) / 365) * totalDays; + + finalResult.YearsPay = lastMonthYearsPay + sumOfOldYearsPay; + finalResult.BunosesStatusList = nullDateList; + + } + + #endregion + //var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + //result = (daylyWage * 30) / 365 * totalDays; + } + } + + break; //از شروع بکار تا ترک کار case "OnLeftWork"://درپایان همکاری if (isOldContract && contractEnd < start1403) { var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } else if (isOldContract && contractEnd > start1403) { @@ -1169,7 +1286,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } } else if (!isOldContract) @@ -1178,7 +1295,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl { var totalDays = (separationEndDate - startWorkDate).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } } @@ -1189,14 +1306,14 @@ public class YearlySalaryRepository : RepositoryBase, IYearl if (isOldContract && contractEnd < start1403EndOfContract) { var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } else if (isOldContract && contractEnd > start1403) { if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd) { var totalDays = (separationEndDate - contractStart).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } }else if (!isOldContract) @@ -1204,7 +1321,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd) { var totalDays = (separationEndDate - contractStart).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } } @@ -1218,13 +1335,13 @@ public class YearlySalaryRepository : RepositoryBase, IYearl //اگر شروع بکار بعد از 1403 بود تاریخ شرو بکار را در نظر میگیرد در غیر اینصورت اولین روز 1403 را در نظر میگیرد var startComputeDay = startWorkDate >= start1403 ? startWorkDate : start1403; var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; } } else if (contractStart < start1403 && contractEnd < start1403)// قبل از 1403 { var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = (daylyWage * 30) / 365 * totalDays; + finalResult.YearsPay = (daylyWage * 30) / 365 * totalDays; //if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd)// اگر ترک کار کرده بود یا فیش آخر قراداد بود //{ // var totalDays = (separationEndDate - contractStart).TotalDays + 1; @@ -1233,11 +1350,11 @@ public class YearlySalaryRepository : RepositoryBase, IYearl } break; default: - result = 0; + finalResult.YearsPay = 0; break; } - return result; + return finalResult; } @@ -2868,11 +2985,11 @@ public class YearlySalaryRepository : RepositoryBase, IYearl //عیدی #region Bunoses - public double Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions, + public BunosesAndYearsPayStatus Bunoses(string startDateFa, DateTime leftWorkDate, DateTime separationStartDate, DateTime separationEndDate, double daylyWage, string bonusesOptions, bool hasleft, DateTime startWorkDate, DateTime contractStart, DateTime contractEnd, long workshopId, long employeeId, bool isOldContract) { - + BunosesAndYearsPayStatus finalResult = new BunosesAndYearsPayStatus(); double result = 0; // ماه فیش آخر var checkoutMonth = startDateFa.Substring(5, 2); @@ -2882,29 +2999,91 @@ public class YearlySalaryRepository : RepositoryBase, IYearl case "OnCheckoutOfMonth": var totalCheckoutDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = ((daylyWage * 60) / 365) * totalCheckoutDays; - + finalResult.Bunoses = ((daylyWage * 60) / 365) * totalCheckoutDays; + break; case "OnEndOfYear"://درپایان سال - + if (isOldContract && contractEnd < start1403) { var totaltDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = ((daylyWage * 60) / 365) * totaltDays; + finalResult.Bunoses = ((daylyWage * 60) / 365) * totaltDays; } else if (isOldContract && contractEnd > start1403) { - if ((hasleft && leftWorkDate <= separationEndDate) || checkoutMonth == "12") - { - //بدست آوردن اولین روز سال - var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; - var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); + - // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود - var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; - var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = ((daylyWage * 60) / 365) * totalDays; - } + if ((hasleft && leftWorkDate <= separationEndDate) || checkoutMonth == "12") + { + + //بدست آوردن اولین روز سال + string startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; + DateTime startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); + + // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود + DateTime startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; + + + #region NewCompute + + //شروع دوره + string st = startComputeDay.ToFarsi(); + int syear = Convert.ToInt32(st.Substring(0, 4)); + int smonth = Convert.ToInt32(st.Substring(5, 2)); + PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1); + PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1); + //پایان فیش حقوقی آخر + PersianDateTime endCheckout = separationEndDate.ToPersianDateTime(); + if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month) + { + var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays; + } + else + { + var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable(); + //پایان دوره + PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime(); + List nullDateList = new List(); + double sumOfOldBonuses = 0; + for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1)) + { + var searchStart = ($"{startDate}").ToGeorgianDateTime(); + var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime(); + var foundCheckout = checkoutList.FirstOrDefault(x => + x.ContractStart >= searchStart && x.ContractEnd <= searchEnd); + if (foundCheckout == null) + { + nullDateList.Add(new BunosesAndYearsPayStatus() + { + ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart, + ContractEnd = searchEnd + }); + finalResult.NotCompleted = true; + } + else + { + double foundMonthlySalary = foundCheckout.MonthlySalary; + int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays); + double foundDayliWage = foundMonthlySalary / foundTotaldays; + double foundYearsPay = ((foundDayliWage * 60) / 365) * foundTotaldays; + sumOfOldBonuses += foundYearsPay; + } + + } + + var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays; + + finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses; + finalResult.BunosesStatusList = nullDateList; + } + + #endregion + + + } } else if(!isOldContract) { @@ -2914,10 +3093,65 @@ public class YearlySalaryRepository : RepositoryBase, IYearl var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; - var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = ((daylyWage * 60) / 365) * totalDays; - } - } + #region NewCompute + + //شروع دوره + string st = startComputeDay.ToFarsi(); + int syear = Convert.ToInt32(st.Substring(0, 4)); + int smonth = Convert.ToInt32(st.Substring(5, 2)); + PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1); + PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1); + //پایان فیش حقوقی آخر + PersianDateTime endCheckout = separationEndDate.ToPersianDateTime(); + if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month) + { + var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays; + } + else + { + var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable(); + //پایان دوره + PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime(); + List nullDateList = new List(); + double sumOfOldBonuses = 0; + for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1)) + { + var searchStart = ($"{startDate}").ToGeorgianDateTime(); + var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime(); + var foundCheckout = checkoutList.FirstOrDefault(x => + x.ContractStart >= searchStart && x.ContractEnd <= searchEnd); + if (foundCheckout == null) + { + nullDateList.Add(new BunosesAndYearsPayStatus() + { + ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart, + ContractEnd = searchEnd + }); + finalResult.NotCompleted = true; + } + else + { + double foundMonthlySalary = foundCheckout.MonthlySalary; + int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays); + double foundDayliWage = foundMonthlySalary / foundTotaldays; + double foundYearsPay = ((foundDayliWage * 60) / 365) * foundTotaldays; + sumOfOldBonuses += foundYearsPay; + } + + } + + var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays; + + finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses; + finalResult.BunosesStatusList = nullDateList; + } + + #endregion + } + } break; @@ -2926,7 +3160,7 @@ public class YearlySalaryRepository : RepositoryBase, IYearl if (isOldContract && contractEnd < start1403) { var totaltDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = ((daylyWage * 60) / 365) * totaltDays; + finalResult.Bunoses = ((daylyWage * 60) / 365) * totaltDays; } else if (isOldContract && contractEnd > start1403) { @@ -2937,60 +3171,177 @@ public class YearlySalaryRepository : RepositoryBase, IYearl //var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; //var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); - //var startComputeDay = contractStart >= startDayOfYearGr ? contractStart : startDayOfYearGr; - var totalDays = (separationEndDate - contractStart).TotalDays + 1; - result = (daylyWage * 60) / 365 * totalDays; - } - } - else if(isOldContract) + var startComputeDay = contractStart; + //var totalDays = (separationEndDate - contractStart).TotalDays + 1; + //result = (daylyWage * 60) / 365 * totalDays; + + #region NewCompute + + //شروع دوره + string st = startComputeDay.ToFarsi(); + int syear = Convert.ToInt32(st.Substring(0, 4)); + int smonth = Convert.ToInt32(st.Substring(5, 2)); + PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1); + PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1); + //پایان فیش حقوقی آخر + PersianDateTime endCheckout = separationEndDate.ToPersianDateTime(); + if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month) + { + var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays; + } + else + { + var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable(); + //پایان دوره + PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime(); + List nullDateList = new List(); + double sumOfOldBonuses = 0; + for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1)) + { + var searchStart = ($"{startDate}").ToGeorgianDateTime(); + var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime(); + var foundCheckout = checkoutList.FirstOrDefault(x => + x.ContractStart >= searchStart && x.ContractEnd <= searchEnd); + if (foundCheckout == null) + { + nullDateList.Add(new BunosesAndYearsPayStatus() + { + ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart, + ContractEnd = searchEnd + }); + finalResult.NotCompleted = true; + } + else + { + double foundMonthlySalary = foundCheckout.MonthlySalary; + int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays); + double foundDayliWage = foundMonthlySalary / foundTotaldays; + double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays; + sumOfOldBonuses += foundBonuses; + } + + } + + var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays; + + finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses; + finalResult.BunosesStatusList = nullDateList; + } + + #endregion + } + } + else if(!isOldContract) { if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd) { - var totalDays = (separationEndDate - contractStart).TotalDays + 1; - result = (daylyWage * 60) / 365 * totalDays; - } - } + var startComputeDay = contractStart; + //var totalDays = (separationEndDate - contractStart).TotalDays + 1; + // finalResult.Bunoses = (daylyWage * 60) / 365 * totalDays; + + #region NewCompute + + //شروع دوره + string st = startComputeDay.ToFarsi(); + int syear = Convert.ToInt32(st.Substring(0, 4)); + int smonth = Convert.ToInt32(st.Substring(5, 2)); + PersianDateTime startPeriod = new PersianDateTime(syear, smonth, 1); + PersianDateTime startPeriodGr = new PersianDateTime(syear, smonth, 1); + //پایان فیش حقوقی آخر + PersianDateTime endCheckout = separationEndDate.ToPersianDateTime(); + if (startPeriod.Year == endCheckout.Year && startPeriod.Month == endCheckout.Month) + { + var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + finalResult.Bunoses = ((daylyWage * 60) / 365) * totalDays; + } + else + { + var checkoutList = _context.CheckoutSet.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && + x.ContractStart >= startComputeDay && x.ContractEnd < separationStartDate).AsEnumerable(); + //پایان دوره + PersianDateTime endPeriod = (separationStartDate.AddDays(-1)).ToPersianDateTime(); + List nullDateList = new List(); + double sumOfOldBonuses = 0; + for (var startDate = startPeriod; startDate <= endPeriod; startDate = startDate.AddMonths(1)) + { + var searchStart = ($"{startDate}").ToGeorgianDateTime(); + var searchEnd = (($"{startDate}").FindeEndOfMonth()).ToGeorgianDateTime(); + var foundCheckout = checkoutList.FirstOrDefault(x => + x.ContractStart >= searchStart && x.ContractEnd <= searchEnd); + if (foundCheckout == null) + { + nullDateList.Add(new BunosesAndYearsPayStatus() + { + ContractStart = startDate == startPeriodGr ? startComputeDay : searchStart, + ContractEnd = searchEnd + }); + finalResult.NotCompleted = true; + } + else + { + double foundMonthlySalary = foundCheckout.MonthlySalary; + int foundTotaldays = Convert.ToInt32(foundCheckout.SumOfWorkingDays); + double foundDayliWage = foundMonthlySalary / foundTotaldays; + double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays; + sumOfOldBonuses += foundBonuses; + } + + } + + var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + double lastMonthBonuses = ((daylyWage * 60) / 365) * totalDays; + + finalResult.Bunoses = lastMonthBonuses + sumOfOldBonuses; + finalResult.BunosesStatusList = nullDateList; + } + + #endregion + } + } break; - case "EndOfContract1402LeftWork1403": //پایان قرارداد قبل 403 پایان همکاری بعد 403 + //case "EndOfContract1402LeftWork1403": //پایان قرارداد قبل 403 پایان همکاری بعد 403 - if (contractStart >= start1403 && contractEnd > start1403)// بعد از 1403 - { - if (hasleft && leftWorkDate <= separationEndDate) - { - //بدست آوردن اولین روز سال - var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; - var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); + // if (contractStart >= start1403 && contractEnd > start1403)// بعد از 1403 + // { + // if (hasleft && leftWorkDate <= separationEndDate) + // { + // //بدست آوردن اولین روز سال + // var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; + // var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); - // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود - var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; - var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; - result = (daylyWage * 60) / 365 * totalDays; - } - } - else if (contractStart < start1403)// قبل از 1403 - { - var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; - result = (daylyWage * 60) / 365 * totalDays; + // // اگر تاریخ شروع بکار بزرگتر مساوی روز اول همین سال بود از تازیخ شوع بکار استفاده میشود در غیر اینصورت از روز اول سال استفاده میشود + // var startComputeDay = startWorkDate >= startDayOfYearGr ? startWorkDate : startDayOfYearGr; + // var totalDays = (separationEndDate - startComputeDay).TotalDays + 1; + // result = (daylyWage * 60) / 365 * totalDays; + // } + // } + // else if (contractStart < start1403)// قبل از 1403 + // { + // var totalDays = (separationEndDate - separationStartDate).TotalDays + 1; + // finalResult.Bunoses = (daylyWage * 60) / 365 * totalDays; - //if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd || checkoutMonth == "12") - //{ - // //بدست آوردن اولین روز سال - // var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; - // var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); + // //if ((hasleft && leftWorkDate <= separationEndDate) || separationEndDate == contractEnd || checkoutMonth == "12") + // //{ + // // //بدست آوردن اولین روز سال + // // var startDayOfYear = $"{startDateFa.Substring(0, 4)}/01/01"; + // // var startDayOfYearGr = startDayOfYear.ToGeorgianDateTime(); - // var startComputeDay = contractStart >= startDayOfYearGr ? contractStart : startDayOfYearGr; + // // var startComputeDay = contractStart >= startDayOfYearGr ? contractStart : startDayOfYearGr; - //} - } - break; + // //} + // } + // break; default: - result = 0; + finalResult.Bunoses = 0; break; } - return result; + return finalResult; } diff --git a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs index 765f778d..4d9ba35f 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs @@ -498,29 +498,88 @@ public class IndexModel : PageModel var computeOption = getComputeOption == null ? workshop.ComputeOptions : getComputeOption.ComputeOptions; + //سنوات - //var leftNull = "1500/01/01"; - //var leftNullGr = leftNull.ToGeorgianDateTime(); - //var leftWorkDateGr = new DateTime(2121,3,21); - //if (separation.LeftWorkDate < leftNullGr) - //{ - // leftWorkDateGr = separation.LeftWorkDate.AddDays(-1); - //} - //else - //{ - // leftWorkDateGr = separation.LeftWorkDate; - //} - var yearsPay = _yearlySalaryRepository.Years(separation.ContractStartGr, separation.LeftWorkDate, separation.ContractEndGr, dayliWage, yearsOption, separation.HasLeft, separation.StartWorkDate, contract.ContractStartGr, contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract); //عیدی + #region BonusesPay var bunosesPay = _yearlySalaryRepository.Bunoses(separation.ContarctStart, separation.LeftWorkDate, - separation.ContractStartGr, separation.ContractEndGr, - dayliWage, bonusesOption, separation.HasLeft, separation.StartWorkDate, - contract.ContractStartGr, - contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract); + separation.ContractStartGr, separation.ContractEndGr, + dayliWage, bonusesOption, separation.HasLeft, separation.StartWorkDate, + contract.ContractStartGr, + contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract); + if (bunosesPay.NotCompleted || yearsPay.NotCompleted) + { + List lostCheckoutsDates = new List(); + if ((bunosesPay.NotCompleted && yearsPay.NotCompleted) || (bunosesPay.NotCompleted && !yearsPay.NotCompleted)) + lostCheckoutsDates = bunosesPay.BunosesStatusList; + if(!bunosesPay.NotCompleted && yearsPay.NotCompleted) + lostCheckoutsDates = yearsPay.BunosesStatusList; + + foreach (var found in lostCheckoutsDates) + { + ComputingViewModel foundMandatoryCompute = new ComputingViewModel(); + var foundContract = _contractRepository.GetContractByStartEnd(found.ContractStart, + found.ContractEnd, contract.WorkshopIds, contract.EmployeeId); + + if (foundContract.Id > 0) + { + var foundWorkingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(foundContract.Id); + foundWorkingHours.ContractStartGr = found.ContractStart; + foundWorkingHours.ContractEndGr = found.ContractEnd; + foundWorkingHours.ContarctStart = found.ContractStart.ToFarsi(); + foundWorkingHours.ContractEnd = found.ContractEnd.ToFarsi(); + foundWorkingHours.GetWorkDate = foundContract.GetWorkDate; + foundWorkingHours.GetWorkDateHide = foundContract.GetWorkDate; + foundWorkingHours.WorkshopId = contract.WorkshopIds; + foundWorkingHours.EmployeeId = contract.EmployeeId; + + bool foundHasRollCall = _rollCallEmployeeStatusApp.HasRollCallRecord(contract.EmployeeId, + contract.WorkshopIds, + found.ContractStart, found.ContractEnd); + + if (foundHasRollCall) + { + foundMandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId, + contract.WorkshopIds, + found.ContractStart, found.ContractEnd, foundWorkingHours, 0); + + } + else + { + foundMandatoryCompute = MandatoryHours(foundWorkingHours, workshop.WorkshopHolidayWorking, 0); + + } + + var MontlyYearsBunos = + _yearlySalaryRepository.GetMontlyBunosYears(foundMandatoryCompute.weeklyTime, found.ContractStart, found.ContractEnd, + foundMandatoryCompute.SalaryCompute.MoneyToDouble(), foundMandatoryCompute.SumTime44, foundMandatoryCompute.OfficialHoliday, + int.Parse(foundMandatoryCompute.NumberOfFriday), foundMandatoryCompute.TotalHolidayAndNotH, foundMandatoryCompute.TotalHolidayAndNotM, + foundMandatoryCompute.Basic, foundMandatoryCompute.FridayStartToEnd, foundMandatoryCompute.DayliFeeComplete); + double foundMontlySalary = MontlyYearsBunos.MontlyWage; + int foundTotaldays = Convert.ToInt32(MontlyYearsBunos.SumOfWorkingDay); + double foundDayliWage = foundMontlySalary / foundTotaldays; + if (bunosesPay.NotCompleted) + { + double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays; + bunosesPay.Bunoses += foundBonuses; + } + + if (yearsPay.NotCompleted) + { + double foundBonuses = ((foundDayliWage * 30) / 365) * foundTotaldays; + yearsPay.YearsPay += foundBonuses; + } + + } + } + } + + #endregion + //مزد مرخصی جدید var leavePayNew = _yearlySalaryRepository.LeavePay(separation.ContarctStart, separation.LeftWorkDate, separation.ContractStartGr, separation.ContractEndGr, @@ -571,9 +630,9 @@ public class IndexModel : PageModel //حق تاهل MarriedAllowance = mandatoryCompute.MarriedAllowance, //سنوات - YearsPay = yearsPay, + YearsPay = yearsPay.YearsPay, //عیدی و پادادش - BonusesPay = bunosesPay, + BonusesPay = bunosesPay.Bunoses, //مدت غیبت AbsencePeriod = leavePayNew.AbsencePeriod, //کسری غیبت diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml index 29851bbf..e0c576e5 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml @@ -389,5 +389,5 @@ var deleteRollCallData = `@Url.Page("./CaseHistory", "RemoveEmployeeRollCallsInDate")`; - + } \ No newline at end of file diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs index 6945fa6e..37acded9 100644 --- a/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs +++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/CaseHistory.cshtml.cs @@ -46,7 +46,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall } - public IActionResult OnGet() + public IActionResult OnGet() { var workshopHash = User.FindFirstValue("WorkshopSlug"); var workshopId = _passwordHasher.SlugDecrypt(workshopHash); @@ -66,7 +66,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall YearlyList = _yearlySalaryApplication.GetYears(); return Page(); - } + } else { return Redirect("/Client/Company/RollCall"); @@ -87,6 +87,12 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall if (employeeId > 0) { RollCallEmployeeViewModels = _rollCallApplication.GetEmployeeRollCallsHistory(employeeId, workshopId, startDate, endDate, exactDateFa, dateEmployeeIndex); + if (RollCallEmployeeViewModels == null) + return new JsonResult(new + { + IsSuccedded = false, + message = "داده ای یافت نشد!", + }); } else { diff --git a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/CaseHistory.js b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/CaseHistory.js index 91ac6a83..e758b94d 100644 --- a/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/CaseHistory.js +++ b/ServiceHost/wwwroot/AssetsClient/pages/RollCall/js/CaseHistory.js @@ -294,6 +294,8 @@ function caseHistoryLoadAjax() { var caseHistoryData = response.data; var caseHistoryEmployeeData = response.dataEmployee; + console.log(response); + if (response.isSuccedded) { if (caseHistoryData == null) {