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