fix leave duration bug fix

This commit is contained in:
MahanCh
2025-04-20 19:54:58 +03:30
parent 3896b3cec1
commit f7db92c4a7
5 changed files with 48 additions and 13 deletions

View File

@@ -33,7 +33,8 @@ public interface ILeaveApplication
#region Pooya
OperationResult ValidateNewLeaveWithExistingRollCalls(long workshopId, long employeeId, string paidLeaveType, DateTime start, DateTime end);
TimeSpan GetEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string startFa, string endFa);
TimeSpan GetEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string startFa, string endFa,
string type);
#endregion
}

View File

@@ -540,18 +540,49 @@ public class LeaveApplication : ILeaveApplication
return op.Succcedded();
}
public TimeSpan GetEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string startFa, string endFa)
public TimeSpan GetEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string startFa, string endFa,string type)
{
if (startFa.TryToGeorgianDateTime(out var start) == false || endFa.TryToGeorgianDateTime(out var end) == false)
return TimeSpan.Zero;
if (startFa.TryToGeorgianDateTime(out var start) == false || endFa.TryToGeorgianDateTime(out var end) == false)
return TimeSpan.Zero;
var leaves = _leaveRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, start, end);
var leaveTotalTimeSpan = TimeSpan.Zero;
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType != "روزانه").Sum(x => (x.EndLeaveGr - x.StartLeaveGr).Ticks));
var dailyLeaveCount = leaves.Count(x => x.PaidLeaveType == "روزانه") * new TimeSpan(1, 0, 0, 0);
return timeSpanHourlyLeave + dailyLeaveCount;
}
var leaves = _leaveRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, start, end);
//var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType != "روزانه").Sum(x => (x.EndLeaveGr - x.StartLeaveGr).Ticks));
//var dailyLeaveCount = leaves.Count(x => x.PaidLeaveType == "روزانه") * new TimeSpan(1, 0, 0, 0);
if (type == "paidLeave")
{
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType == "ساعتی" && x.LeaveType == "استحقاقی")
.Sum(x => TimeOnly.Parse(x.LeaveHourses).Ticks));
var dailyLeaveTime = leaves.Where(x => x.PaidLeaveType == "روزانه" && x.LeaveType == "استحقاقی")
.Sum(x => Convert.ToInt32(x.LeaveHourses)) * TimeSpan.FromDays(1);
leaveTotalTimeSpan = timeSpanHourlyLeave + dailyLeaveTime;
}
else if (type == "sickLeave")
{
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType == "ساعتی" && x.LeaveType == "استعلاجی")
.Sum(x => TimeOnly.Parse(x.LeaveHourses).Ticks));
var dailyLeaveTime = leaves.Where(x => x.PaidLeaveType == "روزانه" && x.LeaveType == "استعلاجی")
.Sum(x => Convert.ToInt32(x.LeaveHourses)) * TimeSpan.FromDays(1);
leaveTotalTimeSpan = timeSpanHourlyLeave + dailyLeaveTime;
}
else
{
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType == "ساعتی").Sum(x => TimeOnly.Parse(x.LeaveHourses).Ticks));
var dailyLeaveTime = leaves.Where(x => x.PaidLeaveType == "روزانه").Sum(x => Convert.ToInt32(x.LeaveHourses)) * TimeSpan.FromDays(1);
leaveTotalTimeSpan = timeSpanHourlyLeave + dailyLeaveTime;
}
return leaveTotalTimeSpan;
}
private TimeSpan CalculateTotalLeaveTimeSpan(List<LeavePrintViewModel> leaves)
{

View File

@@ -384,7 +384,8 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
PaidLeaveType = x.PaidLeaveType,
LeaveType = x.LeaveType,
StartLeaveGr = x.StartLeave,
EndLeaveGr = x.EndLeave
EndLeaveGr = x.EndLeave,
LeaveHourses = x.LeaveHourses
}).ToList();
}

View File

@@ -2709,7 +2709,8 @@
startFa: startDate,
endFa: endDate,
month: Number(month),
year: Number(year)
year: Number(year),
type: $('#sendSorting').val()
},
headers: { "RequestVerificationToken": $('@Html.AntiForgeryToken()').val() },
success: function (response) {

View File

@@ -393,7 +393,8 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
#region Calculate total leave in dates
public IActionResult OnGetEmployeeTotalLeave(long employeeId, string startFa, string endFa, int month, int year)
public IActionResult OnGetEmployeeTotalLeave(long employeeId, string startFa, string endFa, int month, int year,
string type)
{
//اگر بازه تاریخ خالی بود از سال و ماه استفاده می شود
if (string.IsNullOrWhiteSpace(startFa) && string.IsNullOrWhiteSpace(endFa))
@@ -401,7 +402,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
startFa = $"{year}/{month:00}/01";
endFa = startFa.FindeEndOfMonth();
}
TimeSpan timeSpan = _leaveApplication.GetEmployeeLeaveTimeSpanInDates(_workshopId, employeeId, startFa, endFa);
TimeSpan timeSpan = _leaveApplication.GetEmployeeLeaveTimeSpanInDates(_workshopId, employeeId, startFa, endFa, type);
string message = timeSpan.ToFarsiDaysAndHoursAndMinutes();
return new JsonResult(new
{