fix leave duration bug fix
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user