rollCall shiftDate Change
This commit is contained in:
@@ -81,7 +81,8 @@ public class CustomizeCheckoutExcelGenerator
|
||||
}
|
||||
|
||||
var dataRow = 2;
|
||||
foreach (var item in data)
|
||||
int totalPaymentColumnIndex = -1;
|
||||
foreach (var item in data)
|
||||
{
|
||||
var column = 2;
|
||||
foreach (var header in filteredHeaders)
|
||||
@@ -101,7 +102,11 @@ public class CustomizeCheckoutExcelGenerator
|
||||
|
||||
ApplyGeneralDataStyle(worksheet.Cells[dataRow, column]);
|
||||
ApplySpecificStyle(worksheet.Cells[dataRow, column], column); // Apply specific styles
|
||||
column++;
|
||||
if (header.Key == "TotalPayment")
|
||||
{
|
||||
totalPaymentColumnIndex = column;
|
||||
}
|
||||
column++;
|
||||
}
|
||||
var rowCounter = worksheet.Cells[dataRow, 1];
|
||||
rowCounter.Value = dataRow - 1;
|
||||
@@ -120,7 +125,12 @@ public class CustomizeCheckoutExcelGenerator
|
||||
worksheet.PrinterSettings.Scale = 85;
|
||||
worksheet.View.RightToLeft = true;
|
||||
|
||||
return package.GetAsByteArray();
|
||||
if (totalPaymentColumnIndex != -1)
|
||||
{
|
||||
ApplyConditionalFormatting(worksheet, dataRow, totalPaymentColumnIndex);
|
||||
}
|
||||
|
||||
return package.GetAsByteArray();
|
||||
}
|
||||
|
||||
// Method to check if a property requires MoneyToDouble()
|
||||
@@ -197,5 +207,25 @@ public class CustomizeCheckoutExcelGenerator
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ApplyConditionalFormatting(ExcelWorksheet worksheet, int dataRow, int totalPaymentColumnIndex)
|
||||
{
|
||||
for (int rowIndex = 2; rowIndex < dataRow; rowIndex++)
|
||||
{
|
||||
var totalPaymentValue = worksheet.Cells[rowIndex, totalPaymentColumnIndex].Value;
|
||||
if (totalPaymentValue != null && double.TryParse(totalPaymentValue.ToString(), out double payment))
|
||||
{
|
||||
if (payment < 0)
|
||||
{
|
||||
var rowRange = worksheet.Cells[rowIndex, 1, rowIndex, worksheet.Dimension.End.Column];
|
||||
rowRange.Style.Fill.PatternType = ExcelFillStyle.Solid; rowRange.Style.Fill.BackgroundColor.SetColor(Color.Red);
|
||||
foreach (var cell in rowRange)
|
||||
{
|
||||
cell.Style.Font.Color.SetColor(Color.White);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -78,13 +78,56 @@ public class RollCallDomainService : IRollCallDomainService
|
||||
return Tools.CalculateOffset(workshopSettings.CustomizeWorkshopSettingsShifts
|
||||
.Select(x => (CustomizeSifts)x).ToList());
|
||||
|
||||
if (employeeSettings == null )
|
||||
if (employeeSettings == null)
|
||||
return Tools.CalculateOffset(workshopSettings.CustomizeWorkshopSettingsShifts.Select(x => (CustomizeSifts)x).ToList());
|
||||
|
||||
|
||||
if (workshopSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular && employeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||
{
|
||||
return Tools.CalculateOffset(workshopSettings.CustomizeWorkshopSettingsShifts.Select(x => (CustomizeSifts)x).ToList());
|
||||
// تعریف بازههای زمانی
|
||||
var workshopStartTime = workshopSettings.CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime; // شروع کارگاه
|
||||
var workshopEndTime = workshopSettings.CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime; // پایان کارگاه
|
||||
|
||||
var employeeStartTime = employeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MinBy(x => x.Placement).StartTime; // شروع بازه پرسنل
|
||||
var employeeEndTime = employeeSettings.CustomizeWorkshopEmployeeSettingsShifts.MaxBy(x => x.Placement).EndTime; // پایان پرسنل
|
||||
|
||||
// تبدیل زمانها به TimeSpan برای مقایسه
|
||||
var workshopStartTimeSpan = workshopStartTime.ToTimeSpan();
|
||||
var workshopEndTimeSpan = workshopEndTime.ToTimeSpan();
|
||||
var employeeStartTimeSpan = employeeStartTime.ToTimeSpan();
|
||||
var employeeEndTimeSpan = employeeEndTime.ToTimeSpan();
|
||||
|
||||
// مدیریت زمانهای بعد از نیمه شب
|
||||
if (workshopEndTimeSpan < workshopStartTimeSpan)
|
||||
workshopEndTimeSpan = workshopEndTimeSpan.Add(TimeSpan.FromDays(1)); // افزودن یک روز به پایان بازه اول
|
||||
|
||||
if (employeeEndTimeSpan < employeeStartTimeSpan)
|
||||
employeeEndTimeSpan = employeeEndTimeSpan.Add(TimeSpan.FromDays(1)); // افزودن یک روز به پایان بازه دوم
|
||||
|
||||
|
||||
// محاسبه بزرگترین زمان شروع و کوچکترین زمان پایان
|
||||
var overlapStart = workshopStartTimeSpan > employeeStartTimeSpan ? workshopStartTimeSpan : employeeStartTimeSpan;
|
||||
var overlapEnd = workshopEndTimeSpan < employeeEndTimeSpan ? workshopEndTimeSpan : employeeEndTimeSpan;
|
||||
|
||||
if (overlapStart >= overlapEnd) // اگر بازه همپوشانی وجود ندارد
|
||||
return Tools.CalculateOffset(workshopSettings.CustomizeWorkshopSettingsShifts
|
||||
.Select(x => (CustomizeSifts)x).ToList());
|
||||
|
||||
|
||||
|
||||
var overlapDuration = (overlapEnd - overlapStart).TotalMinutes; // مدت زمان همپوشانی بر حسب دقیقه
|
||||
var duration2 = (employeeEndTime - employeeStartTime).TotalMinutes; // مدت زمان بازه دوم
|
||||
|
||||
var overlapPercentage = (overlapDuration / duration2) * 100; // درصد همپوشانی
|
||||
|
||||
if (overlapPercentage < 40)
|
||||
{
|
||||
return Tools.CalculateOffset(employeeSettings.CustomizeWorkshopEmployeeSettingsShifts
|
||||
.Select(x => (CustomizeSifts)x).ToList());
|
||||
}
|
||||
|
||||
return Tools.CalculateOffset(workshopSettings.CustomizeWorkshopSettingsShifts
|
||||
.Select(x => (CustomizeSifts)x).ToList());
|
||||
}
|
||||
|
||||
else if (employeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||
|
||||
@@ -62,8 +62,9 @@ namespace CompanyManagment.Application
|
||||
public bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd)
|
||||
{
|
||||
//موقت
|
||||
//یکتا تجارت گیل 108 - کهن سرویس وارنا 215 - دادمهرگستر 11
|
||||
if(workshopId == 108 || workshopId == 215 || workshopId == 11)
|
||||
// دادمهرگستر 11
|
||||
//585 کاشی گالری سرامیس (بابک ابراهیمی )
|
||||
if(workshopId == 11 || workshopId == 585)
|
||||
return false;
|
||||
var service = _rollCallServiceRepository.GetAllServiceByWorkshopId(workshopId);
|
||||
|
||||
|
||||
@@ -581,7 +581,7 @@ public class RollCallRepository : RepositoryBase<long, RollCall>, IRollCallRepos
|
||||
|
||||
//initialize
|
||||
DateTime searchDurationEnd = DateTime.Now.AddDays(-1).Date;
|
||||
DateTime searchDurationStart = searchDurationEnd.AddDays(-16);
|
||||
DateTime searchDurationStart = DateTime.MinValue;
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user