|
|
|
|
@@ -14,7 +14,7 @@ using CompanyManagment.App.Contracts.RollCall;
|
|
|
|
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
namespace CompanyManagment.EFCore.Repository;
|
|
|
|
|
|
|
|
|
|
public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRollCallMandatoryRepository
|
|
|
|
|
@@ -45,10 +45,13 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
string shift1Minuts = "0";
|
|
|
|
|
string overMandatoryHours = "0";
|
|
|
|
|
string overMandatoryMinuts = "0";
|
|
|
|
|
string shiftOver22Hours = "0";
|
|
|
|
|
string shiftOver22Minuts = "0";
|
|
|
|
|
double ShiftPayResult = 0;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var rollCallResult = _context.RollCalls.Where(x =>
|
|
|
|
|
|
|
|
|
|
List<RollCallViewModel> rollCallResult = _context.RollCalls.Where(x =>
|
|
|
|
|
x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date &&
|
|
|
|
|
x.StartDate.Value.Date <= contractEnd.Date && x.EndDate != null).Select(x => new RollCallViewModel()
|
|
|
|
|
{
|
|
|
|
|
@@ -57,13 +60,14 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
ShiftSpan = (x.EndDate.Value - x.StartDate.Value),
|
|
|
|
|
CreationDate = x.CreationDate,
|
|
|
|
|
}).ToList();
|
|
|
|
|
var groupedRollCall = rollCallResult.GroupBy(x=>x.CreationDate).Select(x => new GroupedRollCalls()
|
|
|
|
|
List<GroupedRollCalls> groupedRollCall = rollCallResult.GroupBy(x=>x.StartDate!.Value.Date).Select(x => new GroupedRollCalls()
|
|
|
|
|
{
|
|
|
|
|
CreationDate = x.Key,
|
|
|
|
|
ShiftList = x.Select(s=> new ShiftList() { Start = s.StartDate!.Value, End = s.EndDate!.Value}).ToList(),
|
|
|
|
|
SumOneDaySpan = new TimeSpan(x.Sum(shift => shift.ShiftSpan.Ticks)),
|
|
|
|
|
}).ToList();
|
|
|
|
|
//*****کسر ساعاعت استراحت پرسنل از ساعت کار
|
|
|
|
|
var rollCallSubtractSpan = groupedRollCall.Select(x => new GroupedRollCalls()
|
|
|
|
|
List<GroupedRollCalls> rollCallSubtractSpan = groupedRollCall.Select(x => new GroupedRollCalls()
|
|
|
|
|
{
|
|
|
|
|
CreationDate = x.CreationDate,
|
|
|
|
|
AfterSubtractRestSpan = AfterSubtract(command,x.SumOneDaySpan,x.CreationDate),
|
|
|
|
|
@@ -129,7 +133,7 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
#endregion
|
|
|
|
|
//***********************************//
|
|
|
|
|
//ToTalHourse Employe eWorked
|
|
|
|
|
var totalHourses = (sumSpans.TotalMinutes) / 60;
|
|
|
|
|
double totalHourses = (sumSpans.TotalMinutes) / 60;
|
|
|
|
|
int totalHolidaysAndNotH = (int)sumSpans.TotalHours;
|
|
|
|
|
int totalHolidaysAndNotM = (int)(sumSpans.TotalMinutes % 60);
|
|
|
|
|
//***********************************//
|
|
|
|
|
@@ -336,8 +340,65 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//******نوبت کاری****
|
|
|
|
|
#region RotatingShiftCheck
|
|
|
|
|
|
|
|
|
|
List<RotatingShiftViewModel> rotatingResultList = RotatingShiftCheck(groupedRollCall);
|
|
|
|
|
var moriningCount = rotatingResultList.Count(x => x.IsMorningShift);
|
|
|
|
|
var eveningCount = rotatingResultList.Count(x => x.IsEveningShift);
|
|
|
|
|
var nightCount = rotatingResultList.Count(x => x.IsNightShift);
|
|
|
|
|
|
|
|
|
|
var RotatingfaName = new List<string>();
|
|
|
|
|
if (moriningCount > 0)
|
|
|
|
|
RotatingfaName.Add("صبح");
|
|
|
|
|
if (eveningCount > 0)
|
|
|
|
|
RotatingfaName.Add("عصر");
|
|
|
|
|
if (nightCount > 0)
|
|
|
|
|
RotatingfaName.Add("شب");
|
|
|
|
|
var rotatingFaResult = "";
|
|
|
|
|
if (RotatingfaName.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
shiftOver22Hours = "0";
|
|
|
|
|
shiftOver22Minuts = "0";
|
|
|
|
|
for (var rotateNumber = 0; rotateNumber < RotatingfaName.Count; rotateNumber++)
|
|
|
|
|
{
|
|
|
|
|
if (rotateNumber == 0)
|
|
|
|
|
rotatingFaResult = $"{RotatingfaName[rotateNumber]}";
|
|
|
|
|
if (rotateNumber == 1)
|
|
|
|
|
rotatingFaResult += $" و {RotatingfaName[rotateNumber]}";
|
|
|
|
|
if (rotateNumber == 2)
|
|
|
|
|
rotatingFaResult += $" و {RotatingfaName[rotateNumber]}";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (RotatingfaName.Count <= 1)
|
|
|
|
|
{
|
|
|
|
|
rotatingFaResult = "نوبت کاری ندارد";
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
#region ShiftPayPercent
|
|
|
|
|
|
|
|
|
|
if (rotatingFaResult != "نوبت کاری ندارد" || rotatingFaResult != "")
|
|
|
|
|
{
|
|
|
|
|
var TotalDays = (command.ContractEndGr - command.ContractStartGr).TotalDays + 1;
|
|
|
|
|
var DailyFeeNumberType = dayliFee.MoneyToDouble();
|
|
|
|
|
if (rotatingFaResult == "صبح و عصر")
|
|
|
|
|
{
|
|
|
|
|
var shiftPyaPercent = DailyFeeNumberType * 10 / 100;
|
|
|
|
|
ShiftPayResult = shiftPyaPercent * TotalDays;
|
|
|
|
|
}
|
|
|
|
|
else if (rotatingFaResult == "صبح و عصر و شب")
|
|
|
|
|
{
|
|
|
|
|
var shiftPyaPercent = DailyFeeNumberType * 15 / 100;
|
|
|
|
|
ShiftPayResult = shiftPyaPercent * TotalDays;
|
|
|
|
|
}
|
|
|
|
|
else if (rotatingFaResult == "صبح و شب" || rotatingFaResult == "عصر و شب")
|
|
|
|
|
{
|
|
|
|
|
var shiftPyaPercent = DailyFeeNumberType * 22.5 / 100;
|
|
|
|
|
ShiftPayResult = shiftPyaPercent * TotalDays;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
#region Result
|
|
|
|
|
|
|
|
|
|
var res = new ComputingViewModel()
|
|
|
|
|
@@ -349,8 +410,8 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
TotalHoursesM = totalHolidaysAndNotM.ToString(),
|
|
|
|
|
OverTimeWorkH = overMandatoryHours,
|
|
|
|
|
OverTimeWorkM = overMandatoryMinuts,
|
|
|
|
|
//OverNightWorkH = shiftOver22Hours,
|
|
|
|
|
//OverNightWorkM = shiftOver22Minuts,
|
|
|
|
|
OverNightWorkH = shiftOver22Hours,
|
|
|
|
|
OverNightWorkM = shiftOver22Minuts,
|
|
|
|
|
ComplexNumberOfWorkingDays = "0",
|
|
|
|
|
SalaryCompute = dayliFee,
|
|
|
|
|
SumTime44 = SumWorkeTime,
|
|
|
|
|
@@ -359,9 +420,9 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
FamilyAllowance = familyAllowance,
|
|
|
|
|
OfficialHoliday = holiday,
|
|
|
|
|
weeklyTime = weeklyTime,
|
|
|
|
|
//RotatingResultList = rotatingResultList,
|
|
|
|
|
//RotatingStatus = rotatingFaResult,
|
|
|
|
|
//ShiftPay = ShiftPayResult,
|
|
|
|
|
RotatingResultList = rotatingResultList,
|
|
|
|
|
RotatingStatus = rotatingFaResult,
|
|
|
|
|
ShiftPay = ShiftPayResult,
|
|
|
|
|
Basic = basic,
|
|
|
|
|
FridayStartToEnd = fridays,
|
|
|
|
|
TotalHolidayAndNotH = totalHolidaysAndNotH.ToString(),
|
|
|
|
|
@@ -491,4 +552,248 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public List<RotatingShiftViewModel> RotatingShiftCheck(List<GroupedRollCalls> rollCallList)
|
|
|
|
|
{
|
|
|
|
|
List<RotatingShiftViewModel> finalResult = new List<RotatingShiftViewModel>();
|
|
|
|
|
var nullDateTme = new DateTime(0001, 01, 01);
|
|
|
|
|
foreach (var item in rollCallList)
|
|
|
|
|
{
|
|
|
|
|
#region Entityes
|
|
|
|
|
|
|
|
|
|
var midNight24 = new DateTime(item.CreationDate.Year, item.CreationDate.Month, item.CreationDate.Day, 0, 0, 0).AddDays(1);
|
|
|
|
|
var morningWorkingTime = new TimeSpan();
|
|
|
|
|
var eveningWorkingTime = new TimeSpan();
|
|
|
|
|
var nightWorkingTime = new TimeSpan();
|
|
|
|
|
|
|
|
|
|
DateTime morningStart = new DateTime(item.CreationDate.Year,item.CreationDate.Month,item.CreationDate.Day,6,0,0);
|
|
|
|
|
DateTime morningEnd = new DateTime(item.CreationDate.Year, item.CreationDate.Month, item.CreationDate.Day, 14, 0, 0);
|
|
|
|
|
DateTime eveningStart = morningEnd;
|
|
|
|
|
DateTime eveningEnd = new DateTime(item.CreationDate.Year, item.CreationDate.Month, item.CreationDate.Day, 22, 0, 0);
|
|
|
|
|
DateTime nightStart = eveningEnd;
|
|
|
|
|
DateTime nightEnd = morningStart;
|
|
|
|
|
DateTime nightEndNextday = nightEnd.AddDays(1);
|
|
|
|
|
DateTime morningEndNextday = morningEnd.AddDays(1);
|
|
|
|
|
DateTime eveningEndNextday = eveningEnd.AddDays(1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
foreach (var shift in item.ShiftList)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
#region fix 24 Hourse
|
|
|
|
|
|
|
|
|
|
if (shift.End.Date >= shift.Start.Date && shift.End.TimeOfDay >= shift.Start.TimeOfDay)
|
|
|
|
|
{
|
|
|
|
|
nightWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
morningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
eveningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region morning enter 14 <- 6
|
|
|
|
|
else if (shift.Start >= morningStart // 14<---<6
|
|
|
|
|
&& shift.End <= morningEnd)
|
|
|
|
|
{
|
|
|
|
|
morningWorkingTime = (shift.End - shift.Start);
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= morningStart && shift.Start < morningEnd // 22<---14---6
|
|
|
|
|
&& shift.End > eveningStart && shift.End <= eveningEnd)
|
|
|
|
|
{
|
|
|
|
|
morningWorkingTime = (morningEnd - shift.Start);
|
|
|
|
|
eveningWorkingTime = (shift.End - eveningStart);
|
|
|
|
|
|
|
|
|
|
}else if (shift.Start >= morningStart && shift.Start < morningEnd// // 6<---22---14---6
|
|
|
|
|
&& shift.End > eveningEnd && shift.End <= nightEndNextday)
|
|
|
|
|
{
|
|
|
|
|
morningWorkingTime = (morningEnd - shift.Start);
|
|
|
|
|
eveningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
nightWorkingTime = (shift.End - eveningEnd);
|
|
|
|
|
}else if (shift.Start >= morningStart // 14<---6<---22---14---6
|
|
|
|
|
&& shift.Start < morningEnd
|
|
|
|
|
&& shift.End > nightEndNextday && shift.End <= morningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
morningWorkingTime = (morningEnd - shift.Start);
|
|
|
|
|
eveningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
nightWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
TimeSpan nextDayMorningSpan = (shift.End - nightEndNextday);
|
|
|
|
|
morningWorkingTime = morningWorkingTime.Add(nextDayMorningSpan);
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= morningStart // 14<---6<---22---14---6
|
|
|
|
|
&& shift.Start < morningEnd
|
|
|
|
|
&& shift.End > nightEndNextday && shift.End > morningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
morningWorkingTime = (morningEnd - shift.Start);
|
|
|
|
|
eveningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
nightWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
TimeSpan nextDayEveningSpan = (shift.End - nightEndNextday);
|
|
|
|
|
morningWorkingTime = morningWorkingTime.Add(new TimeSpan(8, 0, 0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region evening enter 22 <- 14
|
|
|
|
|
|
|
|
|
|
if (shift.Start >= eveningStart // 22<---<14
|
|
|
|
|
&& shift.End <= eveningEnd)
|
|
|
|
|
{
|
|
|
|
|
eveningWorkingTime = (eveningEnd - eveningStart);
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= eveningStart && shift.Start < eveningEnd // 6<---22---14
|
|
|
|
|
&& shift.End > nightStart && shift.End <= nightEndNextday)
|
|
|
|
|
{
|
|
|
|
|
eveningWorkingTime = (eveningEnd - shift.Start);
|
|
|
|
|
nightWorkingTime = (shift.End - eveningEnd);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= eveningStart && shift.Start < eveningEnd// // 14<---6---22---14
|
|
|
|
|
&& shift.End > nightEndNextday && shift.End <= morningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
eveningWorkingTime = (eveningEnd - shift.Start);
|
|
|
|
|
nightWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
morningWorkingTime = (shift.End - morningEndNextday);
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= eveningStart // 22<---14<---6---22---14
|
|
|
|
|
&& shift.Start < eveningEnd
|
|
|
|
|
&& shift.End > morningEndNextday && shift.End <= eveningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
eveningWorkingTime = (morningEnd - shift.Start);
|
|
|
|
|
nightWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
morningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
TimeSpan nextDayEveningSpan = (shift.End - morningEndNextday);
|
|
|
|
|
eveningWorkingTime = eveningWorkingTime.Add(nextDayEveningSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region night enter 6 <- 22
|
|
|
|
|
if (shift.Start >= nightStart // 6<---<22
|
|
|
|
|
&& shift.End <= nightEndNextday)
|
|
|
|
|
{
|
|
|
|
|
nightWorkingTime = (shift.End - shift.Start);
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= nightStart && shift.Start < nightEndNextday // 14<---6---22
|
|
|
|
|
&& shift.End > nightEndNextday && shift.End <= morningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
nightWorkingTime = (nightEndNextday - shift.Start);
|
|
|
|
|
morningWorkingTime = (shift.End - nightEndNextday);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= nightStart && shift.Start < nightEndNextday// // 22<---14---6---22
|
|
|
|
|
&& shift.End > morningEndNextday && shift.End <= eveningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
nightWorkingTime = (nightEndNextday - shift.Start); ;
|
|
|
|
|
morningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
eveningWorkingTime = (shift.End - morningEndNextday);
|
|
|
|
|
}
|
|
|
|
|
else if (shift.Start >= nightStart // 6<---22<---14---6---22
|
|
|
|
|
&& shift.Start < nightEndNextday
|
|
|
|
|
&& shift.End > eveningEndNextday)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
nightWorkingTime = (nightEndNextday - shift.Start);
|
|
|
|
|
morningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
eveningWorkingTime = new TimeSpan(8, 0, 0);
|
|
|
|
|
TimeSpan nextDayNightSpan = (shift.End - eveningEndNextday);
|
|
|
|
|
nightWorkingTime = nightWorkingTime.Add(nextDayNightSpan);
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Result
|
|
|
|
|
|
|
|
|
|
var result = new RotatingShiftViewModel();
|
|
|
|
|
result.MorningWorkSpan = morningWorkingTime;
|
|
|
|
|
result.EveningWorkSpan = eveningWorkingTime;
|
|
|
|
|
result.NightWorkSpan = nightWorkingTime;
|
|
|
|
|
var nullWorkspan = new TimeSpan(0, 0, 0);
|
|
|
|
|
|
|
|
|
|
var totalTime = result.TotalWorkingTime.Add(result.MorningWorkSpan);
|
|
|
|
|
totalTime = totalTime.Add(result.EveningWorkSpan);
|
|
|
|
|
totalTime = totalTime.Add(result.NightWorkSpan);
|
|
|
|
|
|
|
|
|
|
result.TotalWorkingTime = totalTime;
|
|
|
|
|
|
|
|
|
|
var morningH = (int)result.MorningWorkSpan.TotalHours;
|
|
|
|
|
var morningM = result.MorningWorkSpan.Minutes % 60;
|
|
|
|
|
var morningMS = "00";
|
|
|
|
|
if (morningM < 10 && morningM > 0)
|
|
|
|
|
morningMS = $"0{morningM}";
|
|
|
|
|
if (morningM > 10)
|
|
|
|
|
morningMS = $"{morningM}";
|
|
|
|
|
result.MorningString = $"0{morningH}:{morningMS}";
|
|
|
|
|
|
|
|
|
|
var eveningH = (int)result.EveningWorkSpan.TotalHours;
|
|
|
|
|
var eveningM = result.EveningWorkSpan.Minutes % 60;
|
|
|
|
|
var eveningMS = "00";
|
|
|
|
|
if (eveningM < 10 && eveningM > 0)
|
|
|
|
|
eveningMS = $"0{eveningM}";
|
|
|
|
|
if (eveningM > 10)
|
|
|
|
|
eveningMS = $"{eveningM}";
|
|
|
|
|
result.EveningString = $"0{eveningH}:{eveningMS}";
|
|
|
|
|
|
|
|
|
|
var nightH = (int)result.NightWorkSpan.TotalHours;
|
|
|
|
|
var nightM = result.NightWorkSpan.Minutes % 60;
|
|
|
|
|
var nightMS = "00";
|
|
|
|
|
if (nightM < 10 && nightM > 0)
|
|
|
|
|
nightMS = $"0{nightM}";
|
|
|
|
|
if (nightM > 10)
|
|
|
|
|
nightMS = $"{nightM}";
|
|
|
|
|
result.NightString = $"0{nightH}:{nightMS}";
|
|
|
|
|
|
|
|
|
|
if (result.MorningWorkSpan > result.EveningWorkSpan
|
|
|
|
|
|| result.MorningWorkSpan == result.EveningWorkSpan) // if morning bigerThan evening or equal
|
|
|
|
|
{
|
|
|
|
|
if (result.MorningWorkSpan != nullWorkspan)
|
|
|
|
|
{
|
|
|
|
|
result.IsMorningShift = true;
|
|
|
|
|
result.IsNightShift = false;
|
|
|
|
|
result.IsEveningShift = false;
|
|
|
|
|
result.RotatingShiftStatus = "صبح";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.MorningWorkSpan < result.NightWorkSpan
|
|
|
|
|
|| result.MorningWorkSpan == result.NightWorkSpan) // if night bigerThan morning or equal
|
|
|
|
|
if (result.NightWorkSpan != nullWorkspan)
|
|
|
|
|
{
|
|
|
|
|
result.IsMorningShift = false;
|
|
|
|
|
result.IsNightShift = true;
|
|
|
|
|
result.IsEveningShift = false;
|
|
|
|
|
result.RotatingShiftStatus = "شب";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (result.MorningWorkSpan < result.EveningWorkSpan) // if evening bigerThan morning
|
|
|
|
|
{
|
|
|
|
|
if (result.EveningWorkSpan != nullWorkspan)
|
|
|
|
|
{
|
|
|
|
|
result.IsEveningShift = true;
|
|
|
|
|
result.IsMorningShift = false;
|
|
|
|
|
result.IsNightShift = false;
|
|
|
|
|
result.RotatingShiftStatus = "عصر";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (result.EveningWorkSpan < result.NightWorkSpan
|
|
|
|
|
|| result.EveningWorkSpan == result.NightWorkSpan) // if night bigerThan evening or equal
|
|
|
|
|
if (result.NightWorkSpan != nullWorkspan)
|
|
|
|
|
{
|
|
|
|
|
result.IsMorningShift = false;
|
|
|
|
|
result.IsEveningShift = false;
|
|
|
|
|
result.IsNightShift = true;
|
|
|
|
|
result.RotatingShiftStatus = "شب";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
finalResult.Add(result);
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return finalResult;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|