RotatingShiftReport changes
This commit is contained in:
@@ -41,6 +41,7 @@ public class ComputingViewModel
|
||||
public string EmployeeFullName { get; set; }
|
||||
public string YearAndMonth { get; set; }
|
||||
|
||||
public bool HasRotatingShift { get; set; }
|
||||
|
||||
//public List<string> holidays;
|
||||
}
|
||||
@@ -16,5 +16,6 @@ public class RotatingShiftViewModel
|
||||
public bool IsEveningShift { get; set; }
|
||||
public bool IsNightShift { get; set; }
|
||||
public string RotatingDate { get; set; }
|
||||
public int WinRate { get; set; }
|
||||
|
||||
}
|
||||
@@ -462,48 +462,98 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
|
||||
string shiftPayValue = "0";
|
||||
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);
|
||||
|
||||
// شبکاری
|
||||
TimeSpan over22 = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks));
|
||||
var RotatingfaName = new List<string>();
|
||||
if (command.ShiftWork != "1" && command.ShiftWork != "2" && command.ShiftWork != "4")//اگر چرخشی بود و منظم نبود
|
||||
{
|
||||
if (moriningCount > 0)
|
||||
RotatingfaName.Add("صبح");
|
||||
if (eveningCount > 0)
|
||||
RotatingfaName.Add("عصر");
|
||||
if (nightCount > 0)
|
||||
RotatingfaName.Add("شب");
|
||||
}
|
||||
else// اگر منظم و شیفتی بود
|
||||
{
|
||||
var totalDays = (int)(command.ContractEndGr - command.ContractStartGr).TotalDays + 1;
|
||||
int validCount = 0;
|
||||
if (totalDays <= 7) // زیر 7 روز باید حد اقل 2 تغییر شیفت داشته باشد
|
||||
{
|
||||
validCount = 2;
|
||||
}
|
||||
else if (totalDays >= 28) // بالای 28 روز حد اقل 8 تغییر شیفت
|
||||
{
|
||||
validCount = 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
// تناسب گیری - اگر برای 28 روز 8 تغییر پس برای ایکس روز چند تغییر لازم است
|
||||
validCount = (int)((totalDays * 8) / 28);
|
||||
}
|
||||
//if (command.ShiftWork != "1" && command.ShiftWork != "2" && command.ShiftWork != "4")//اگر چرخشی بود و منظم نبود
|
||||
//{
|
||||
// if (moriningCount > 0)
|
||||
// RotatingfaName.Add("صبح");
|
||||
// if (eveningCount > 0)
|
||||
// RotatingfaName.Add("عصر");
|
||||
// if (nightCount > 0)
|
||||
// RotatingfaName.Add("شب");
|
||||
//}
|
||||
//else// اگر منظم و شیفتی بود
|
||||
//{
|
||||
// var totalDays = (int)(command.ContractEndGr - command.ContractStartGr).TotalDays + 1;
|
||||
// int validCount = 0;
|
||||
// if (totalDays <= 7) // زیر 7 روز باید حد اقل 2 تغییر شیفت داشته باشد
|
||||
// {
|
||||
// validCount = 2;
|
||||
// }
|
||||
// else if (totalDays >= 28) // بالای 28 روز حد اقل 8 تغییر شیفت
|
||||
// {
|
||||
// validCount = 8;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // تناسب گیری - اگر برای 28 روز 8 تغییر پس برای ایکس روز چند تغییر لازم است
|
||||
// validCount = (int)((totalDays * 8) / 28);
|
||||
// }
|
||||
|
||||
if (moriningCount >= validCount)
|
||||
RotatingfaName.Add("صبح");
|
||||
if (eveningCount >= validCount)
|
||||
RotatingfaName.Add("عصر");
|
||||
if (nightCount >= validCount)
|
||||
RotatingfaName.Add("شب");
|
||||
// if (moriningCount >= validCount)
|
||||
// RotatingfaName.Add("صبح");
|
||||
// if (eveningCount >= validCount)
|
||||
// RotatingfaName.Add("عصر");
|
||||
// if (nightCount >= validCount)
|
||||
// RotatingfaName.Add("شب");
|
||||
|
||||
//}
|
||||
|
||||
int moriningCount = 0;
|
||||
int eveningCount = 0;
|
||||
int nightCount = 0;
|
||||
|
||||
int moriningWinRate = rotatingResultList.Where(x => x.IsMorningShift).Sum(x => x.WinRate);
|
||||
int eveningWinRate = rotatingResultList.Where(x => x.IsEveningShift).Sum(x => x.WinRate);
|
||||
int nightWinRate = rotatingResultList.Where(x => x.IsNightShift).Sum(x => x.WinRate);
|
||||
|
||||
|
||||
if (moriningWinRate > eveningWinRate && moriningWinRate > nightWinRate)
|
||||
{
|
||||
moriningCount = rotatingResultList.Count(x => x.IsMorningShift);
|
||||
eveningCount = rotatingResultList.Count(x => x.IsEveningShift && x.WinRate > 55);
|
||||
nightCount = rotatingResultList.Count(x => x.IsNightShift && x.WinRate > 55);
|
||||
}
|
||||
|
||||
if (eveningWinRate > moriningWinRate && eveningWinRate > nightWinRate)
|
||||
{
|
||||
moriningCount = rotatingResultList.Count(x => x.IsMorningShift && x.WinRate > 55);
|
||||
eveningCount = rotatingResultList.Count(x => x.IsEveningShift);
|
||||
nightCount = rotatingResultList.Count(x => x.IsNightShift && x.WinRate > 55);
|
||||
}
|
||||
|
||||
if (nightWinRate > moriningWinRate && nightWinRate > eveningWinRate)
|
||||
{
|
||||
moriningCount = rotatingResultList.Count(x => x.IsMorningShift && x.WinRate > 55);
|
||||
eveningCount = rotatingResultList.Count(x => x.IsEveningShift && x.WinRate > 55);
|
||||
nightCount = rotatingResultList.Count(x => x.IsNightShift);
|
||||
}
|
||||
|
||||
var totalDays = (int)(command.ContractEndGr - command.ContractStartGr).TotalDays + 1;
|
||||
int validCount = 0;
|
||||
if (totalDays <= 7) // زیر 7 روز باید حد اقل 2 تغییر شیفت داشته باشد
|
||||
{
|
||||
validCount = 2;
|
||||
}
|
||||
else if (totalDays >= 28) // بالای 28 روز حد اقل 8 تغییر شیفت
|
||||
{
|
||||
validCount = 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
// تناسب گیری - اگر برای 28 روز 8 تغییر پس برای ایکس روز چند تغییر لازم است
|
||||
validCount = (int)((totalDays * 8) / 28);
|
||||
}
|
||||
|
||||
if (moriningCount >= validCount)
|
||||
RotatingfaName.Add("صبح");
|
||||
if (eveningCount >= validCount)
|
||||
RotatingfaName.Add("عصر");
|
||||
if (nightCount >= validCount)
|
||||
RotatingfaName.Add("شب");
|
||||
var rotatingFaResult = "";
|
||||
if (RotatingfaName.Count > 1)// اگر تعداد شیفت های محاسبه شده بیش از یک بود
|
||||
{
|
||||
@@ -623,9 +673,41 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
|
||||
string shiftPayValue = "0";
|
||||
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);
|
||||
int moriningCount = 0;
|
||||
int eveningCount = 0;
|
||||
int nightCount = 0;
|
||||
|
||||
int moriningWinRate = rotatingResultList.Where(x=>x.IsMorningShift).Sum(x => x.WinRate);
|
||||
int eveningWinRate = rotatingResultList.Where(x => x.IsEveningShift).Sum(x => x.WinRate);
|
||||
int nightWinRate = rotatingResultList.Where(x => x.IsNightShift).Sum(x => x.WinRate);
|
||||
|
||||
|
||||
if (moriningWinRate > eveningWinRate && moriningWinRate > nightWinRate)
|
||||
{
|
||||
moriningCount = rotatingResultList.Count(x => x.IsMorningShift);
|
||||
eveningCount = rotatingResultList.Count(x => x.IsEveningShift && x.WinRate > 55);
|
||||
nightCount = rotatingResultList.Count(x => x.IsNightShift && x.WinRate > 55);
|
||||
}
|
||||
|
||||
if (eveningWinRate > moriningWinRate && eveningWinRate > nightWinRate)
|
||||
{
|
||||
moriningCount = rotatingResultList.Count(x => x.IsMorningShift && x.WinRate > 55);
|
||||
eveningCount = rotatingResultList.Count(x => x.IsEveningShift);
|
||||
nightCount = rotatingResultList.Count(x => x.IsNightShift && x.WinRate > 55);
|
||||
}
|
||||
|
||||
if (nightWinRate > moriningWinRate && nightWinRate > eveningWinRate)
|
||||
{
|
||||
moriningCount = rotatingResultList.Count(x => x.IsMorningShift && x.WinRate > 55);
|
||||
eveningCount = rotatingResultList.Count(x => x.IsEveningShift && x.WinRate > 55);
|
||||
nightCount = rotatingResultList.Count(x => x.IsNightShift);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// شبکاری
|
||||
TimeSpan over22 = new TimeSpan(rotatingResultList.Sum(x => x.NightWorkSpan.Ticks));
|
||||
var RotatingfaName = new List<string>();
|
||||
@@ -1061,18 +1143,28 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
if (result.MorningWorkSpan > result.EveningWorkSpan
|
||||
|| result.MorningWorkSpan == result.EveningWorkSpan) // if morning bigerThan evening or equal
|
||||
{
|
||||
|
||||
if (result.MorningWorkSpan != nullWorkspan)
|
||||
{
|
||||
var sumSpan = result.MorningWorkSpan.Add(result.EveningWorkSpan);
|
||||
var sumSpanDouble = sumSpan.TotalMinutes;
|
||||
var winRate = (result.MorningWorkSpan.TotalMinutes * 100) / sumSpanDouble;
|
||||
result.WinRate = Convert.ToInt32(winRate);
|
||||
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)
|
||||
{
|
||||
var sumSpan = result.MorningWorkSpan.Add(result.NightWorkSpan);
|
||||
var sumSpanDouble = sumSpan.TotalMinutes;
|
||||
var winRate = (result.NightWorkSpan.TotalMinutes * 100) / sumSpanDouble;
|
||||
result.WinRate = Convert.ToInt32(winRate);
|
||||
result.IsMorningShift = false;
|
||||
result.IsNightShift = true;
|
||||
result.IsEveningShift = false;
|
||||
@@ -1083,6 +1175,10 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
{
|
||||
if (result.EveningWorkSpan != nullWorkspan)
|
||||
{
|
||||
var sumSpan = result.MorningWorkSpan.Add(result.EveningWorkSpan);
|
||||
var sumSpanDouble = sumSpan.TotalMinutes;
|
||||
var winRate = (result.EveningWorkSpan.TotalMinutes * 100) / sumSpanDouble;
|
||||
result.WinRate = Convert.ToInt32(winRate);
|
||||
result.IsEveningShift = true;
|
||||
result.IsMorningShift = false;
|
||||
result.IsNightShift = false;
|
||||
@@ -1093,6 +1189,10 @@ CreateWorkingHoursTemp command, bool holidayWorking)
|
||||
|| result.EveningWorkSpan == result.NightWorkSpan) // if night bigerThan evening or equal
|
||||
if (result.NightWorkSpan != nullWorkspan)
|
||||
{
|
||||
var sumSpan = result.EveningWorkSpan.Add(result.NightWorkSpan);
|
||||
var sumSpanDouble = sumSpan.TotalMinutes;
|
||||
var winRate = (result.NightWorkSpan.TotalMinutes * 100) / sumSpanDouble;
|
||||
result.WinRate = Convert.ToInt32(winRate);
|
||||
result.IsMorningShift = false;
|
||||
result.IsEveningShift = false;
|
||||
result.IsNightShift = true;
|
||||
|
||||
@@ -186,6 +186,7 @@ public class IndexModel : PageModel
|
||||
|
||||
result.EmployeeFullName = checkout.EmployeeFullName;
|
||||
result.YearAndMonth = $"{checkout.Month} {checkout.Year}";
|
||||
result.HasRotatingShift = result.RotatingStatus == "نوبت کاری ندارد" ? false : true;
|
||||
Console.WriteLine("ok");
|
||||
return Partial("./RotatingShiftReportDesktop", result);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,17 @@
|
||||
.rotateParntModal {
|
||||
height: 600px !important;
|
||||
}
|
||||
.noRotating{
|
||||
background-color: #fe8470;
|
||||
}
|
||||
.hasRotating{
|
||||
background-color: #1bff01;
|
||||
}
|
||||
|
||||
</style>
|
||||
string noRotating = "noRotating";
|
||||
string hasRotating = "hasRotating";
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +108,8 @@
|
||||
<div class="col-xs-3" style="text-align:left"> <h5>نوع ساعت کاری :</h5> </div>
|
||||
|
||||
|
||||
<div class="col-xs-3" style="text-align:right">
|
||||
<div class="col-xs-3 @(!Model.HasRotatingShift? @noRotating :@hasRotating )" style="text-align:right ">
|
||||
|
||||
<h5>@Model.RotatingStatus</h5>
|
||||
</div>
|
||||
<div class="col-xs-3" style="text-align:left">
|
||||
@@ -118,19 +129,8 @@
|
||||
<span style="padding: 0px 10px;"> نوبت شب </span>
|
||||
</div>
|
||||
<div id="rotatingList">
|
||||
@{
|
||||
if (@Model.RotatingStatus == "نوبت کاری ندارد")
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col-xs-4"></div>
|
||||
<div class="col-xs-4">
|
||||
<h3>نوبت کاری ندارد</h3>
|
||||
</div>
|
||||
<div class="col-xs-4"></div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
@foreach (var item in @Model.RotatingResultList)
|
||||
{
|
||||
|
||||
@@ -163,9 +163,9 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
Reference in New Issue
Block a user