Add logic to count absences on Fridays and Thursdays without leave
This commit is contained in:
@@ -4723,6 +4723,8 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
#endregion
|
||||
|
||||
#region KebabMahdiAbsentsCaclculation
|
||||
|
||||
|
||||
|
||||
var rollCallDays = groupedRollCall.Count > mandatoryDays ? mandatoryDays : groupedRollCall.Count;
|
||||
|
||||
@@ -5108,6 +5110,45 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region اگر که پرسنل در روز های جمعه یا پنجشنبه غیبت داشت یک روز به غیبت اضافه شود
|
||||
//این منطق زمانی برقرار هست که مرخصی در اون روز نداشته باشه
|
||||
|
||||
// ساخت لیست روزهای بین شروع و پایان قرارداد
|
||||
var contractDaysList = Enumerable.Range(0, (contractEnd - contractStart).Days + 1)
|
||||
.Select(offset => contractStart.AddDays(offset))
|
||||
.ToList();
|
||||
|
||||
// کم کردن روزهایی که حضور دارند
|
||||
var absentDaysList = contractDaysList
|
||||
.Where(date => !groupedRollCall.Any(g => g.ShiftDate.Date == date.Date))
|
||||
.ToList();
|
||||
|
||||
var absentFridaysOrThursdays = absentDaysList
|
||||
.Where(date => date.DayOfWeek is DayOfWeek.Friday or DayOfWeek.Thursday)
|
||||
.ToList();
|
||||
|
||||
var leaveList = _context.LeaveList
|
||||
.Where(x => x.EmployeeId == employeeId
|
||||
&& x.WorkshopId == workshopId
|
||||
&& x.IsAccepted == true
|
||||
&& x.StartLeave <= contractEnd
|
||||
&& x.EndLeave >= contractStart
|
||||
&& x.LeaveType == "استحقاقی"
|
||||
&& x.PaidLeaveType =="روزانه")
|
||||
.Select(x => new { x.StartLeave, x.EndLeave })
|
||||
.ToList();
|
||||
|
||||
// بررسی کدام روزهای غایب جمعه/پنجشنبه در بازه مرخصی قرار ندارند
|
||||
var absentFridaysOrThursdaysWithoutLeave = absentFridaysOrThursdays
|
||||
.Where(date => !leaveList.Any(leave => date.Date >= leave.StartLeave.Date && date.Date <= leave.EndLeave.Date))
|
||||
.ToList();
|
||||
|
||||
// تعداد روزهای غایب جمعه/پنجشنبه بدون مرخصی
|
||||
int absentFridaysOrThursdaysWithoutLeaveCount = absentFridaysOrThursdaysWithoutLeave.Count;
|
||||
|
||||
absentsDeductionAmount += absentFridaysOrThursdaysWithoutLeaveCount * dailyWage;
|
||||
#endregion
|
||||
|
||||
|
||||
return new CustomizeCheckoutMandatoryViewModel
|
||||
|
||||
Reference in New Issue
Block a user