Files
Backend-Api/ServiceHost/Areas/Admin/Pages/Company/Checkouts/Index.cshtml.cs
2025-09-02 04:33:30 +03:30

7712 lines
402 KiB
C#

using System.Diagnostics;
using _0_Framework.Application;
using Company.Domain.ContractAgg;
using Company.Domain.HolidayItemAgg;
using Company.Domain.YearlySalaryAgg;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.Employee;
using CompanyManagment.App.Contracts.EmployeeComputeOptions;
using CompanyManagment.App.Contracts.Employer;
using CompanyManagment.App.Contracts.Job;
using CompanyManagment.App.Contracts.Leave;
using CompanyManagment.App.Contracts.LeftWork;
using CompanyManagment.App.Contracts.MandantoryHours;
using CompanyManagment.App.Contracts.PersonalContractingParty;
using CompanyManagment.App.Contracts.RollCall;
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
using CompanyManagment.App.Contracts.WorkingHours;
using CompanyManagment.App.Contracts.WorkingHoursItems;
using CompanyManagment.App.Contracts.WorkingHoursTemp;
using CompanyManagment.App.Contracts.Workshop;
using CompanyManagment.App.Contracts.YearlySalary;
using CompanyManagment.Application;
using Humanizer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.SignalR;
using PersianTools.Core;
using ServiceHost.Hubs;
using System.Diagnostics.Contracts;
using WorkFlow.Application.Contracts.WorkFlow;
namespace ServiceHost.Areas.Admin.Pages.Company.Checkouts;
[Authorize]
public class IndexModel : PageModel
{
private readonly IAuthHelper _authHelper;
private readonly ICheckoutApplication _checkoutApplication;
private readonly IContractApplication _contractApplication;
private readonly IContractRepository _contractRepository;
private readonly IEmployeeApplication _employeeApplication;
private readonly IEmployeeComputeOptionsApplication _employeeComputeOptionsApplication;
private readonly IEmployerApplication _employerApplication;
private readonly IHolidayItemRepository _holidayItemRepository;
private readonly IHubContext<CheckoutHub> _hubContext;
private readonly ILeaveApplication _leaveApplication;
private readonly ILeftWorkApplication _leftWorkApplication;
private readonly IPersonalContractingPartyApp _personalContractingPartyApp;
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApp;
private readonly IRollCallMandatoryApplication _rollCallMandatoryApplication;
private readonly IWorkingHoursApplication _workingHoursApplication;
private readonly IWorkingHoursItemsApplication _workingHoursItemsApplication;
private readonly IWorkingHoursTempApplication _workingHoursTempApplication;
private readonly IWorkshopApplication _workshopApplication;
private readonly IYearlySalaryApplication _yearlySalaryApplication;
private readonly IYearlySalaryRepository _yearlySalaryRepository;
private readonly IWorkFlowApplication _workFlowApplication;
public List<CheckoutViewModel> chekoutlist;
public List<ComputingViewModel> ComputingView;
public List<ContractViweModel> Contracts2;
public string employeeFullName;
public List<EmployeeViewModel> EmployeeList;
public SelectList Employees;
public SelectList Employers;
public List<EmployerViewModel> EmployersList;
private string InterferenceMessage = string.Empty;
public List<JobViewModel> JobList;
public List<EmployeeSelectListViewModel> PersonnelList;
public CheckoutSearchModel SearchModel;
public List<WorkshopEmployerViewModel> WorkshopEmployer;
public List<WorkshopViewModel> WorkshopList;
public SelectList Workshops;
public SelectList WorkshopsCode;
public string WorkshopSearch = "false";
public List<string> YearlyList;
public IndexModel(IContractApplication contractApplication, IWorkshopApplication workshopApplication,
IEmployeeApplication employeeApplication,
IEmployerApplication employerApplication,
IYearlySalaryApplication yearlySalaryApplication,
IContractRepository contractRepository,
IWorkingHoursApplication workingHoursApplication,
IWorkingHoursItemsApplication workingHoursItemsApplication,
IAuthHelper authHelper, ICheckoutApplication checkoutApplication,
IYearlySalaryRepository yearlySalaryRepository,
IWorkingHoursTempApplication workingHoursTempApplication,
IHolidayItemRepository holidayItemRepository, ILeftWorkApplication leftWorkApplication,
IPersonalContractingPartyApp personalContractingPartyApp,
ILeaveApplication leaveApplication, IHubContext<CheckoutHub> hubContext,
IEmployeeComputeOptionsApplication employeeComputeOptionsApplication,
IRollCallMandatoryApplication rollCallMandatoryApplication,
IRollCallEmployeeStatusApplication rollCallEmployeeStatusApp, IWorkFlowApplication workFlowApplication)
{
_contractApplication = contractApplication;
_workshopApplication = workshopApplication;
_employeeApplication = employeeApplication;
_employerApplication = employerApplication;
_yearlySalaryApplication = yearlySalaryApplication;
_contractRepository = contractRepository;
_workingHoursApplication = workingHoursApplication;
_workingHoursItemsApplication = workingHoursItemsApplication;
_authHelper = authHelper;
_checkoutApplication = checkoutApplication;
_yearlySalaryRepository = yearlySalaryRepository;
_workingHoursTempApplication = workingHoursTempApplication;
_holidayItemRepository = holidayItemRepository;
_leftWorkApplication = leftWorkApplication;
_personalContractingPartyApp = personalContractingPartyApp;
_leaveApplication = leaveApplication;
_hubContext = hubContext;
_employeeComputeOptionsApplication = employeeComputeOptionsApplication;
_rollCallMandatoryApplication = rollCallMandatoryApplication;
_rollCallEmployeeStatusApp = rollCallEmployeeStatusApp;
_workFlowApplication = workFlowApplication;
}
public string Message { get; set; }
public bool falseCheck { get; set; }
/// <summary>
/// در زمان لود صفحه اصلی فیش حقوقی
/// </summary>
/// <param name="searchModel"></param>
/// <returns></returns>
#region OnGet
public async Task OnGet(CheckoutSearchModel searchModel)
{
if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0) WorkshopSearch = "true";
//EmployerList = _employerApplication.GetEmployers();
//EmployeeList = _employeeApplication.GetEmployee();
//WorkshopList = _workshopApplication.GetWorkshop();
//Employees =
// new SelectList(await _employeeApplication.GetEmployeeToList(), "Id", "EmployeeFullName");
//Employers =
// new SelectList(_employerApplication.GetEmployers(), "Id", "FullName");
YearlyList =
_yearlySalaryApplication.GetYears();
//chekoutlist = await _checkoutApplication.Search(searchModel);
}
public async Task<IActionResult> OnGetSearch(CheckoutSearchModel searchModel)
{
var accountId = _authHelper.CurrentAccountId();
//var oldSearch = await _checkoutApplication.Search(searchModel);
var searchResult = await _checkoutApplication.SearchCheckoutOptimized(searchModel);
var result = new MainViewModel();
result.IsSysManager = accountId is 2 or 3;
result.MainList = searchResult;
if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0)
result.WorkshopSearch = "true";
else
result.WorkshopSearch = "false";
if (searchModel.EmployeeId > 0)
employeeFullName = searchResult.Select(x => x.EmployeeFullName).FirstOrDefault();
else
employeeFullName = searchModel.EmployeeName;
return Partial("./MainSearch", result);
}
#endregion
/// <summary>
/// گزارش نوبت کاری
/// </summary>
/// <param name="searchModel"></param>
/// <returns></returns>
#region RotatngShiftReport
public async Task<IActionResult> OnGetRotatngShiftReportDesktop(long id)
{
var result = new ComputingViewModel();
var checkout = _checkoutApplication.GetDetails(id);
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(checkout.ContractId);
if (checkout.HasRollCall)
{
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, true, workingHours, false);
result.HasRollCall = true;
}
else
{
var ConvertYear = checkout.ContractStart.Substring(0, 4);
var ConvertMonth = checkout.ContractStart.Substring(5, 2);
var contract = _contractApplication.GetDetails(checkout.ContractId);
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
var separation = _contractApplication.contractSeparation(ConvertYear, ConvertMonth,
contract.ContractStartGr, contract.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
workingHours.ContractStartGr = separation.ContractStartGr;
workingHours.ContractEndGr = separation.ContractEndGr;
workingHours.ContarctStart = separation.ContarctStart;
workingHours.ContractEnd = separation.ContractEnd;
workingHours.GetWorkDate = contract.GetWorkDate;
workingHours.GetWorkDateHide = contract.GetWorkDate;
workingHours.WorkshopId = contract.WorkshopIds;
workingHours.EmployeeId = contract.EmployeeId;
//result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0);
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, false, workingHours, workshop.WorkshopHolidayWorking);
}
result.EmployeeFullName = checkout.EmployeeFullName;
result.YearAndMonth = $"{checkout.Month} {checkout.Year}";
result.HasRotatingShift = result.RotatingStatus == "نوبت کاری ندارد" ? false : true;
Console.WriteLine("ok");
return Partial("./RotatingShiftReportDesktop", result);
}
public async Task<IActionResult> OnGetRotatngShiftReportMobile(long id)
{
var result = new ComputingViewModel();
var checkout = _checkoutApplication.GetDetails(id);
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(checkout.ContractId);
if (checkout.HasRollCall)
{
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, true, workingHours, false);
result.HasRollCall = true;
}
else
{
var ConvertYear = checkout.ContractStart.Substring(0, 4);
var ConvertMonth = checkout.ContractStart.Substring(5, 2);
var contract = _contractApplication.GetDetails(checkout.ContractId);
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
var separation = _contractApplication.contractSeparation(ConvertYear, ConvertMonth,
contract.ContractStartGr, contract.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
workingHours.ContractStartGr = separation.ContractStartGr;
workingHours.ContractEndGr = separation.ContractEndGr;
workingHours.ContarctStart = separation.ContarctStart;
workingHours.ContractEnd = separation.ContractEnd;
workingHours.GetWorkDate = contract.GetWorkDate;
workingHours.GetWorkDateHide = contract.GetWorkDate;
workingHours.WorkshopId = contract.WorkshopIds;
workingHours.EmployeeId = contract.EmployeeId;
//result = MandatoryHours(workingHours, workshop.WorkshopHolidayWorking, 0);
result = await _rollCallMandatoryApplication.RotatingShiftReport(checkout.WorkshopId, checkout.EmployeeId, checkout.ContractStartGr, checkout.ContractEndGr, workingHours.ShiftWork, false, workingHours, workshop.WorkshopHolidayWorking);
}
result.EmployeeFullName = checkout.EmployeeFullName;
result.YearAndMonth = $"{checkout.Month} {checkout.Year}";
Console.WriteLine("ok");
return Partial("./RotatingShiftReportMobile", result);
}
#endregion
/// <summary>
/// سلکت تو - کارگاه صفحه اصلی
/// index
/// </summary>
/// <returns></returns>
public IActionResult OnGetWorkshopMainList()
{
var workshop = _workshopApplication.GetWorkshopAccount();
//Workshops =
// new SelectList(workshop, "Id", "WorkshopFullName");
//WorkshopsCode =
// new SelectList(workshop, "Id", "ArchiveCode");
return new JsonResult(new
{
IsSuccedded = true,
mylist = workshop
});
}
/// <summary>
/// سلکت تو - پرسنل صفحه اصلی
/// index
/// </summary>
/// <param name="searchEmployee"></param>
/// <returns></returns>
public async Task<IActionResult> OnGetPersonelMainList(string searchEmployee)
{
PersonnelList = await _employeeApplication.GetEmployeeToList();
var person = PersonnelList.Where(x => x.EmployeeFullName.Contains(searchEmployee)).Take(200).ToList();
person = person.OrderBy(x => x.EmployeeFullName.Length).ToList();
return new JsonResult(new
{
IsSuccedded = true,
mylist = person
});
}
/// <summary>
/// سلکت تو - کارفرما صفحه اصلی
/// index
/// </summary>
/// <param name="searchEmployee"></param>
/// <returns></returns>
public IActionResult OnGetEmployerMainList()
{
var employers = _employerApplication.GetEmployers();
return new JsonResult(new
{
IsSuccedded = true,
mylist = employers
});
}
/// <summary>
///مودال ایجاد
/// -
/// لود پرسنل بعد از انتخاب کارگاه
/// Create
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public IActionResult OnPostLoadWorkshops(long id)
{
var result = _workshopApplication.GetWorkshopInfo(id);
return new JsonResult(new
{
IsSuccedded = true,
InsurancCode = result.InsuranceCode,
archiveCode = result.ArchiveCode,
state = result.State,
city = result.City,
address = result.Address,
adres = result.State + "-" + result.City + "-" + result.Address,
empList = result.EmpList,
employeeList = result.EmployeeList
});
}
/// <summary>
/// لود مودال ایجاد تصفیه
/// </summary>
/// <returns></returns>
public IActionResult OnGetCreate()
{
var command = new CreateCheckout
{
UserId = _authHelper.CurrentAccountId(),
Yearlist = _yearlySalaryApplication.GetYears(),
WorkshopNameSelectList =
new SelectList(_workshopApplication.GetWorkshopAccount(), "Id", "WorkshopFullName"),
WorkshopCodeSelectList = new SelectList(_workshopApplication.GetWorkshopAccount(), "Id", "ArchiveCode")
};
return Partial("./Create", command);
}
/// <summary>
/// متد اصلاحی
/// </summary>
/// <returns></returns>
public async Task<IActionResult> OnGetCorrectCheckout()
{
var result = await _workingHoursTempApplication.Correct();
var ContractsId = result.Select(x => x.Id).ToList();
var i = 1;
var c = 1;
foreach (var item in ContractsId)
{
var contract = _contractApplication.GetDetails(item);
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(contract.Id);
if (workingHours.ShiftWorkTemp == "1")
{
var serchModel = new CheckoutSearchModel
{
ContractNo = contract.ContractNo,
ContractId = item
};
var getChekouts = _checkoutApplication.SimpleSearch(serchModel);
if (getChekouts != null)
{
foreach (var checkout in getChekouts)
{
var separation = checkout;
var removeCheckout = _checkoutApplication.DeleteCheckout(checkout.Id);
workingHours.ContractStartGr = separation.ContractStartGr;
workingHours.ContractEndGr = separation.ContractEndGr;
workingHours.ContarctStart = separation.ContractStart;
workingHours.ContractEnd = separation.ContractEnd;
workingHours.GetWorkDate = contract.GetWorkDate;
workingHours.GetWorkDateHide = contract.GetWorkDate;
workingHours.WorkshopId = contract.WorkshopIds;
workingHours.EmployeeId = contract.EmployeeId;
Thread.Sleep(100);
var mandatoryCompute = MandatoryHours(workingHours, false, 0);
if (contract.EmployeeId == 9659)
mandatoryCompute.SumTime44 = "48 - 24";
var employee = _employeeApplication.GetDetails(contract.EmployeeId);
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
var officialHoliday = mandatoryCompute.OfficialHoliday;
var Friday = int.Parse(mandatoryCompute.NumberOfFriday);
var fridayStartToEnd = mandatoryCompute.FridayStartToEnd;
var totalHoursH = mandatoryCompute.TotalHoursesH;
var totalHoursM = mandatoryCompute.TotalHoursesM;
var dayliWage = mandatoryCompute.SalaryCompute.MoneyToDouble();
var consumableItemDouble = mandatoryCompute.ConsumableItems.MoneyToDouble();
var housingAllowanceDouble = mandatoryCompute.HousingAllowance.MoneyToDouble();
var familyAllowanceDouble = mandatoryCompute.FamilyAllowance.MoneyToDouble();
var overTimeWorking = _yearlySalaryRepository.GetOverTimeWorking(dayliWage,
mandatoryCompute.OverTimeWorkH, mandatoryCompute.OverTimeWorkM);
var overNightWorking = _yearlySalaryRepository.GetOverNightWorking(dayliWage,
mandatoryCompute.OverNightWorkH, mandatoryCompute.OverNightWorkM,
mandatoryCompute.SumTime44, officialHoliday, Friday, separation.ContractStartGr,
separation.ContractEndGr, totalHoursH, totalHoursM);
var leavePay = _yearlySalaryRepository.GetLeavePay(separation.ContractStartGr,
separation.ContractEndGr,
dayliWage, consumableItemDouble, housingAllowanceDouble, familyAllowanceDouble,
mandatoryCompute.SumTime44, officialHoliday, Friday, totalHoursH, totalHoursM);
var command = new CreateCheckout
{
EmployeeFullName = employee.EmployeeFullName,
FathersName = employee.FatherName,
NationalCode = employee.NationalCode,
DateOfBirth = employee.DateOfBirth,
EmployeeId = employee.Id,
WorkshopName = workshop.WorkshopFullName,
WorkshopId = workshop.Id,
ArchiveCode = workshop.ArchiveCode,
ContractNo = contract.ContractNo,
ContractStartGr = separation.ContractStartGr,
ContractEndGr = separation.ContractEndGr,
ContractStart = separation.ContractStart,
ContractEnd = separation.ContractEnd,
Month = separation.Month,
Year = separation.Year,
ContractId = contract.Id,
PersonnelCode = contract.PersonnelCode.ToString(),
WorkingHoursId = workingHours.WorknigHoursId,
OvertimePay = overTimeWorking,
NightworkPay = overNightWorking,
ConsumableItems = mandatoryCompute.ConsumableItems,
HousingAllowance = mandatoryCompute.HousingAllowance,
FamilyAllowance = mandatoryCompute.FamilyAllowance,
DayliWage = mandatoryCompute.SalaryCompute,
LeavePay = leavePay,
WorkingWeeklyTime = mandatoryCompute.SumTime44,
officialholiday = officialHoliday,
friday = Friday,
totalHoursH = totalHoursH,
totalHorsM = totalHoursM,
WeeklyTime = mandatoryCompute.weeklyTime,
ShiftPay = mandatoryCompute.ShiftPay,
Basic = mandatoryCompute.Basic,
FridayStarttoEnd = fridayStartToEnd,
TotalHolidaysAndNotH = mandatoryCompute.TotalHolidayAndNotH,
TotalHolidaysAndNotM = mandatoryCompute.TotalHolidayAndNotM,
DailFeeComplete = mandatoryCompute.DayliFeeComplete,
Signature = checkout.Signature,
};
_checkoutApplication.Create(command);
//if (checkout.Signature == "1")
//{
// var search = new CheckoutSearchModel()
// {
// EmployeeId = checkout.EmployeeId,
// WorkshopId = checkout.WorkshopId,
// ContractStart = checkout.ContractStart,
// ContractEnd = checkout.ContractEnd,
// };
// var checkoutId = _checkoutApplication.SimpleSearch(search).FirstOrDefault();
// _checkoutApplication.Sign(checkoutId.Id);
//}
if (checkout.Signature == "1")
Console.WriteLine(c + "-" + i + "- finish checkout : " + contract.ContractNo + "Signature" +
" . wID " + checkout.WorkshopId + " eID " + checkout.EmployeeId);
else
Console.WriteLine(c + "-" + i + "- finish checkout : " + contract.ContractNo);
Thread.Sleep(30);
i++;
}
_contractApplication.EditAgreement(item);
c++;
}
}
}
Console.WriteLine("complete");
return RedirectToPage("./Index");
}
/// <summary>
/// لیست قرداد هایی که قابلیت صدور تصفیه حساب دارند
/// </summary>
/// <param name="WorkshopId"></param>
/// <param name="Year"></param>
/// <param name="Month"></param>
/// <param name="ContractStart"></param>
/// <param name="ContractEnd"></param>
/// <param name="EmployeeId"></param>
/// <returns></returns>
public async Task<IActionResult> OnGetLoadContracts(long WorkshopId, string Year, string Month,
string ContractStart, string ContractEnd, long EmployeeId)
{
var result = await _checkoutApplication.GetContractResultToCreateCheckout(WorkshopId, EmployeeId, Year, Month, ContractStart,
ContractEnd);
var workshop = _workshopApplication.GetDetails(WorkshopId);
#region Old
//var today = DateTime.Now;
// var GrogorianEnd = new DateTime();
// var GrogorianStart = new DateTime();
// //var GrogorianThisMonthStart2 = new DateTime();
// //var GrogorianPreviusMonthStart2 = new DateTime();
// //var ConvertContractStartGr = new DateTime();
// //var ConvertContractEndGr = new DateTime();
// //var ConvertStartFarsi = string.Empty;
// //var nextmonthEndfarsi = string.Empty;
// var faToday = string.Empty;
// var faToday2 = string.Empty;
// var syear = 0;
// var smonth = 0;
// var eyear = 0;
// var emonth = 0;
// var ConvertStart = new DateTime();
// var ConvertEnd = new DateTime();
// if (string.IsNullOrWhiteSpace(ContractStart) && string.IsNullOrWhiteSpace(ContractEnd))
// {
// if (Month == "0" && Year == "0")
// faToday = today.ToFarsi();
// else
// faToday = $"{Year}/{Month}/01";
// syear = Convert.ToInt32(faToday.Substring(0, 4));
// smonth = Convert.ToInt32(faToday.Substring(5, 2));
// var PersianStart = new PersianDateTime(syear, smonth, 01);
// GrogorianStart = PersianStart.ToGregorianDateTime();
// var PersianEndFinde = new PersianDateTime(syear, smonth, 01);
// PersianEndFinde = PersianEndFinde.AddMonths(1);
// PersianEndFinde = PersianEndFinde.AddDays(-1);
// GrogorianEnd = PersianEndFinde.ToGregorianDateTime();
// ContractStart = GrogorianStart.ToFarsi();
// ContractEnd = GrogorianEnd.ToFarsi();
// //nextMonthStartFarsi = GrogorianThisMonthStart.ToFarsi();
// //nextmonthEndfarsi = nextMonthStartFarsi.FindeEndOfMonth();
// }
// var a = new ContractSearchModel
// {
// WorkshopIds = WorkshopId,
// ContarctStart = ContractStart,
// ContractEnd = ContractEnd,
// EmployeeId = EmployeeId
// };
// var ContractSearch = _contractApplication.SearchForCheckout(a);
// var ContractListNew = new List<ContractViweModel>();
// foreach (var item in ContractSearch)
// {
// var separation = _contractApplication.contractSeparation(Year, Month,
// item.ContractStartGr, item.ContractEndGr, item.EmployeeId, item.WorkshopIds);
// //if (EmployeeId == 41256) //نوشین عینی فرد
// //{
// // separation.ContarctStart = item.ContarctStart;
// // separation.ContractEnd = item.ContractEnd;
// //}
// var search = new CheckoutSearchModel
// {
// ContractNo = item.ContractNo,
// ContractId = item.Id,
// ContractStart = separation.ContarctStart,
// ContractEnd = separation.ContractEnd
// };
// var checkedCHeckout = await _checkoutApplication.Search(search);
// if (checkedCHeckout.Count > 0)
// {
// item.RedColor = true;
// item.Extension = false;
// //x.ContractStartGr <= start && x.ContractEndGr >= endd || start <= x.ContractStartGr && endd > x.ContractStartGr || endd >= x.ContractEndGr && start < x.ContractEndGr
// if (item.ContractStartGr < GrogorianStart || item.ContractEndGr > GrogorianEnd)
// item.LaterThanEnd = true;
// item.MoreThanOneMonth = true;
// }
// else
// {
// if (item.ContractStartGr < GrogorianStart || item.ContractEndGr > GrogorianEnd)
// {
// item.LaterThanEnd = true;
// item.Extension = true;
// item.RedColor = false;
// }
// else
// {
// item.RedColor = false;
// item.Extension = true;
// }
// }
// if (!separation.checker)
// {
// item.RedColor = true;
// item.Extension = false;
// }
// ContractListNew.Add(item);
// }
#endregion
bool hasWorkFlow = false;
var skipRollCallByWorkshopId = WorkshopId is 368 or 367 or 610;
if (result.CreateCheckoutList.Count > 0 && workshop.HasRollCallFreeVip == "true" && !skipRollCallByWorkshopId)
{
DateTime startSreach;
DateTime endSearch;
if (Month == "0" && Year == "0")
{
DateTime now = DateTime.Now;
string startStr = $"{now.ToFarsi().Substring(0, 8)}01";
startSreach = startStr.ToGeorgianDateTime();
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
}
else if (Month == "0" && Year != "0")
{
DateTime now = DateTime.Now;
string startStr = $"{Year}/{now.ToFarsi().Substring(5, 2)}/01";
startSreach = startStr.ToGeorgianDateTime();
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
}
else if (Month != "0" && Year == "0")
{
DateTime now = DateTime.Now;
string startStr = $"{now.ToFarsi().Substring(0, 4)}/{Month}/01";
startSreach = startStr.ToGeorgianDateTime();
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
}
else
{
string startStr = $"{Year}/{Month}/01";
startSreach = startStr.ToGeorgianDateTime();
endSearch = (startStr.FindeEndOfMonth()).ToGeorgianDateTime();
}
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
if (lastMonthEnd == endSearch)
{
var countWorkFlowCut = await _workFlowApplication.CountCutByBgServiceLastMonth(WorkshopId);
var countWorkFlowAbsent = await _workFlowApplication.CountAbsentRollCallLastMonth(WorkshopId);
var countWorkFlowLunchBreak = await _workFlowApplication.CountEmployeesWithoutLunchBreakLastMonth(WorkshopId);
var countUndefinedRollCalls = await _workFlowApplication.CountUndefinedLastMonth(WorkshopId);
hasWorkFlow = countWorkFlowCut > 0 || countWorkFlowAbsent > 0 || countWorkFlowLunchBreak > 0 ||
countUndefinedRollCalls > 0;
}
}
var command = new CreateCheckoutListViewModel
{
HasWorkFlow = hasWorkFlow,
CreateCheckoutList = result.CreateCheckoutList
};
return Partial("./CreateLoadList", command);
}
/// <summary>
/// ایجاد تصفیه
/// </summary>
/// <param name="ContractsId"></param>
/// <param name="ConvertYear"></param>
/// <param name="ConvertMonth"></param>
/// <returns></returns>
public IActionResult OnPostCreate(List<long> ContractsId, string ConvertYear, string ConvertMonth)
{
var currntAcc = _authHelper.CurrentAccountId();
if (ConvertYear == "0" && ConvertMonth == "0")
{
var today = DateTime.Now;
var FaToday = today.ToFarsi();
var year = FaToday.Substring(0, 4);
var month = FaToday.Substring(5, 2);
ConvertYear = year;
ConvertMonth = month;
}
else if (ConvertYear == "0" || ConvertMonth == "0")
{
var opration2 = new OperationResult
{
IsSuccedded = false,
Message = "لطفا ماه و سال را انتخاب کنید"
};
return new JsonResult(opration2);
}
ContractsId = ContractsId.Where(x => x != 0).ToList();
var n = 1;
var maxNumber = Convert.ToDouble(ContractsId.Count());
if (ContractsId.Count > 0)
{
//int i = 0;
foreach (var item in ContractsId)
{
var contract = _contractApplication.GetDetails(item);
//var workingHours = _workingHoursApplication.GetByContractId(contract.Id);
var workingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(contract.Id);
var separation = _contractApplication.contractSeparation(ConvertYear, ConvertMonth,
contract.ContractStartGr, contract.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
if (separation.checker)
{
workingHours.ContractStartGr = separation.ContractStartGr;
workingHours.ContractEndGr = separation.ContractEndGr;
workingHours.ContarctStart = separation.ContarctStart;
workingHours.ContractEnd = separation.ContractEnd;
workingHours.GetWorkDate = contract.GetWorkDate;
workingHours.GetWorkDateHide = contract.GetWorkDate;
workingHours.WorkshopId = contract.WorkshopIds;
workingHours.EmployeeId = contract.EmployeeId;
//workshopInfo
var workshop = _workshopApplication.GetDetails(contract.WorkshopIds);
var mandatoryCompute = new ComputingViewModel();
#region DailyWageCompute
var dailyWageUnAffected = _yearlySalaryRepository.GetCheckoutDailyWage(contract,
separation.ContractStartGr, separation.ContractEndGr).GetAwaiter().GetResult();
#endregion
var hasRollCall = _rollCallEmployeeStatusApp.HasRollCallRecord(contract.EmployeeId,
contract.WorkshopIds,
separation.ContractStartGr, separation.ContractEndGr);
if (workshop.IsStaticCheckout)
hasRollCall = false;
if (hasRollCall)
{
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
contract.WorkshopIds,
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute, dailyWageUnAffected);
}
else
{
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
contract.WorkshopIds,
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute, dailyWageUnAffected);
//var hasLeave = _leaveApplication.LeavOnChekout(separation.ContractStartGr,
// separation.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
//if (hasLeave != null)
//{
// //var LeaveCompute = MandatoryHours(workingHours, hasLeave.Id);
//}
}
var employee = _employeeApplication.GetDetails(contract.EmployeeId);
if (contract.EmployeeId == 9659)
mandatoryCompute.SumTime44 = "48 - 24";
var officialHoliday = mandatoryCompute.OfficialHoliday;
var Friday = int.Parse(mandatoryCompute.NumberOfFriday);
var fridayStartToEnd = mandatoryCompute.FridayStartToEnd;
var totalHoursH = mandatoryCompute.TotalHoursesH;
var totalHoursM = mandatoryCompute.TotalHoursesM;
var dayliWage = mandatoryCompute.SalaryCompute.MoneyToDouble();
var consumableItemDouble = mandatoryCompute.ConsumableItems.MoneyToDouble();
var housingAllowanceDouble = mandatoryCompute.HousingAllowance.MoneyToDouble();
var familyAllowanceDouble = mandatoryCompute.FamilyAllowance.MoneyToDouble();
var marriedAllowanceDouble = mandatoryCompute.MarriedAllowance.MoneyToDouble();
var overTimeWorking = _yearlySalaryRepository.GetOverTimeWorking(dayliWage,
mandatoryCompute.OverTimeWorkH, mandatoryCompute.OverTimeWorkM);
var overNightWorking = _yearlySalaryRepository.GetOverNightWorking(dayliWage,
mandatoryCompute.OverNightWorkH, mandatoryCompute.OverNightWorkM, mandatoryCompute.SumTime44,
officialHoliday, Friday, separation.ContractStartGr, separation.ContractEndGr, totalHoursH,
totalHoursM);
//مزد مرخصی
//var leavePay = _yearlySalaryRepository.GetLeavePay(separation.ContractStartGr, separation.ContractEndGr,
// dayliWage, consumableItemDouble, housingAllowanceDouble, familyAllowanceDouble, mandatoryCompute.SumTime44, officialHoliday, Friday, totalHoursH, totalHoursM);
//manual
//if ((contract.EmployeeId == 7003 && contract.WorkshopIds == 216) ||
// (contract.EmployeeId == 7106 && contract.WorkshopIds == 216))
//{
// workshop.YearsOptions = "OnEndOfContract";
// workshop.BonusesOptions = "OnEndOfContract";
// workshop.ComputeOptions = "OnEndOfContract";
//}
var employeeOptions =
_employeeComputeOptionsApplication.GetAllByWorkshopId(contract.WorkshopIds);
var getYearsOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
var yearsOption = getYearsOption == null ? workshop.YearsOptions : getYearsOption.YearsOptions;
var getBonusesOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
var bonusesOption = getBonusesOption == null
? workshop.BonusesOptions
: getBonusesOption.BonusesOptions;
var getComputeOption = employeeOptions.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
var computeOption = getComputeOption == null
? workshop.ComputeOptions
: getComputeOption.ComputeOptions;
//سنوات
var yearsPay = _yearlySalaryRepository.Years(separation.ContractStartGr, separation.LeftWorkDate,
separation.ContractEndGr,
dayliWage, yearsOption, separation.HasLeft, separation.StartWorkDate, contract.ContractStartGr,
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract);
//عیدی
#region BonusesPay
var bunosesPay = _yearlySalaryRepository.Bunoses(separation.ContarctStart, separation.LeftWorkDate,
separation.ContractStartGr, separation.ContractEndGr,
dayliWage, bonusesOption, separation.HasLeft, separation.StartWorkDate,
contract.ContractStartGr,
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, workshop.IsOldContract);
//اگر تصفیه حساب پاک شده برای عیدی یا سنوات وجود داشت
if (bunosesPay.NotCompleted || yearsPay.NotCompleted)
{
List<BunosesAndYearsPayStatus> lostCheckoutsDates = new List<BunosesAndYearsPayStatus>();
if ((bunosesPay.NotCompleted && yearsPay.NotCompleted) || (bunosesPay.NotCompleted && !yearsPay.NotCompleted))
lostCheckoutsDates = bunosesPay.BunosesStatusList;
if (!bunosesPay.NotCompleted && yearsPay.NotCompleted)
lostCheckoutsDates = yearsPay.BunosesStatusList;
foreach (var found in lostCheckoutsDates)
{
ComputingViewModel foundMandatoryCompute = new ComputingViewModel();
var foundContract = _contractRepository.GetContractByStartEnd(found.ContractStart,
found.ContractEnd, contract.WorkshopIds, contract.EmployeeId);
if (foundContract.Id > 0)
{
var foundWorkingHours = _workingHoursTempApplication.GetByContractIdConvertToShiftwork4(foundContract.Id);
foundWorkingHours.ContractStartGr = found.ContractStart;
foundWorkingHours.ContractEndGr = found.ContractEnd;
foundWorkingHours.ContarctStart = found.ContractStart.ToFarsi();
foundWorkingHours.ContractEnd = found.ContractEnd.ToFarsi();
foundWorkingHours.GetWorkDate = foundContract.GetWorkDate;
foundWorkingHours.GetWorkDateHide = foundContract.GetWorkDate;
foundWorkingHours.WorkshopId = contract.WorkshopIds;
foundWorkingHours.EmployeeId = contract.EmployeeId;
bool foundHasRollCall = _rollCallEmployeeStatusApp.HasRollCallRecord(contract.EmployeeId,
contract.WorkshopIds,
found.ContractStart, found.ContractEnd);
if (workshop.IsStaticCheckout)
foundHasRollCall = false;
if (foundHasRollCall)
{
foundMandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
contract.WorkshopIds,
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute, dailyWageUnAffected);
}
else
{
foundMandatoryCompute = MandatoryHours(foundWorkingHours, workshop.WorkshopHolidayWorking, 0);
}
var MontlyYearsBunos =
_yearlySalaryRepository.GetMontlyBunosYears(foundMandatoryCompute.weeklyTime, found.ContractStart, found.ContractEnd,
foundMandatoryCompute.SalaryCompute.MoneyToDouble(), foundMandatoryCompute.SumTime44, foundMandatoryCompute.OfficialHoliday,
int.Parse(foundMandatoryCompute.NumberOfFriday), foundMandatoryCompute.TotalHolidayAndNotH, foundMandatoryCompute.TotalHolidayAndNotM,
foundMandatoryCompute.Basic, foundMandatoryCompute.FridayStartToEnd, foundMandatoryCompute.DayliFeeComplete, hasRollCall, workshop.WorkshopHolidayWorking, workingHours.ShiftWork);
double foundMontlySalary = MontlyYearsBunos.MontlyWage + MontlyYearsBunos.BasicYears;
int foundTotaldays = Convert.ToInt32(MontlyYearsBunos.SumOfWorkingDay);
double foundDayliWage = foundMontlySalary / foundTotaldays;
if (bunosesPay.NotCompleted)
{
double foundBonuses = ((foundDayliWage * 60) / 365) * foundTotaldays;
bunosesPay.Bunoses += foundBonuses;
bunosesPay.TotalDayCompute += foundTotaldays;
}
if (yearsPay.NotCompleted)
{
double foundBonuses = ((foundDayliWage * 30) / 365) * foundTotaldays;
yearsPay.YearsPay += foundBonuses;
yearsPay.TotalDayCompute += foundTotaldays;
}
}
}
}
#endregion
//مزد مرخصی جدید
var leavePayNew = _yearlySalaryRepository.LeavePay(separation.ContarctStart,
separation.LeftWorkDate, separation.ContractStartGr, separation.ContractEndGr,
dayliWage, computeOption, separation.HasLeft, separation.StartWorkDate,
contract.ContractStartGr,
contract.ContractEndGr, contract.WorkshopIds, contract.EmployeeId, fridayStartToEnd,
officialHoliday, totalHoursH, totalHoursM, consumableItemDouble, housingAllowanceDouble,
familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract);
var command = new CreateCheckout
{
EmployeeFullName = employee.EmployeeFullName,
FathersName = employee.FatherName,
NationalCode = employee.NationalCode,
DateOfBirth = employee.DateOfBirth,
EmployeeId = employee.Id,
WorkshopName = workshop.WorkshopFullName,
WorkshopId = workshop.Id,
ArchiveCode = workshop.ArchiveCode,
ContractNo = contract.ContractNo,
ContractStartGr = separation.ContractStartGr,
ContractEndGr = separation.ContractEndGr,
ContractStart = separation.ContarctStart,
ContractEnd = separation.ContractEnd,
Month = ConvertMonth,
Year = ConvertYear,
ContractId = contract.Id,
PersonnelCode = contract.PersonnelCode.ToString(),
WorkingHoursId = workingHours.WorknigHoursId,
//فوق العاده اضافه کاری
OvertimePay = overTimeWorking,
//فوق العاده شب کاری
NightworkPay = overNightWorking,
//کمک هزینه اقلام
ConsumableItems = mandatoryCompute.ConsumableItems,
//کمک هزینه مسکن
HousingAllowance = mandatoryCompute.HousingAllowance,
// کمک هزینه عائله مندی
FamilyAllowance = mandatoryCompute.FamilyAllowance,
//دستمزد روزانه
DayliWage = mandatoryCompute.SalaryCompute,
//مزد مرخصی
LeavePay = leavePayNew.LeavPay,
//مدت طلب مرخصی
CreditLeaves = leavePayNew.CreditLeaves,
//حق تاهل
MarriedAllowance = mandatoryCompute.MarriedAllowance,
//سنوات
YearsPay = yearsPay.YearsPay,
//عیدی و پادادش
BonusesPay = bunosesPay.Bunoses,
//مدت غیبت
AbsencePeriod = leavePayNew.AbsencePeriod,
//کسری غیبت
AbsenceDeduction = 0,
//وضعیت تصفیه مزد مرخصی
LeaveCheckout = leavePayNew.LeaveCheckout,
//میانگین ساعت کار در روز
AverageHoursPerDay = leavePayNew.AverageHoursPerDay,
WorkingWeeklyTime = mandatoryCompute.SumTime44,
officialholiday = officialHoliday,
friday = Friday,
totalHoursH = totalHoursH,
totalHorsM = totalHoursM,
WeeklyTime = mandatoryCompute.weeklyTime,
// فوق العاده نوبت کاری
//552 آدی کارگاه
ShiftPay = contract.WorkshopIds == 552 && hasRollCall ? 0 : mandatoryCompute.ShiftPay,
//سنوات-->
Basic = mandatoryCompute.Basic,
FridayStarttoEnd = fridayStartToEnd,
TotalHolidaysAndNotH = mandatoryCompute.TotalHolidayAndNotH,
TotalHolidaysAndNotM = mandatoryCompute.TotalHolidayAndNotM,
DailFeeComplete = mandatoryCompute.DayliFeeComplete,
HasRollCall = hasRollCall,
OverTimeWorkValue = $"{Convert.ToInt32(mandatoryCompute.OverTimeWorkH):00}:{Convert.ToInt32(mandatoryCompute.OverTimeWorkM):00}",
OverNightWorkValue = $"{Convert.ToInt32(mandatoryCompute.OverNightWorkH):00}:{Convert.ToInt32(mandatoryCompute.OverNightWorkM):00}",
FridayWorkValue = $"{Friday}",
RotatingShiftValue = mandatoryCompute.RotatingShiftValue,
AbsenceValue = "0",
TotalDayOfLeaveCompute = leavePayNew.TotalDayOfLeaveCompute,
TotalDayOfYearsCompute = yearsPay.YearsPay > 0 ? $"{yearsPay.TotalDayCompute}" : "0",
TotalDayOfBunosesCompute = bunosesPay.Bunoses > 0 ? $"{bunosesPay.TotalDayCompute}" : "0",
HolidayWorking = workshop.WorkshopHolidayWorking,
ShiftWork = workingHours.ShiftWork,
//کارکرد واقعی - محاسبات شامل مرخصی افزوده شده
TotalWorkingTimeSpan = mandatoryCompute.TotalWorkingTimeSpan,
//ساعت استراحت
TotalBreakTimeSpan = mandatoryCompute.TotalBreakTimeSpan,
// ساعت حضور - بدون مرخصی افزده شده
TotalPresentTimeSpan = mandatoryCompute.TotalPresentTimeSpan,
//مدت مرخصی استحقاقی
TotalPaidLeave = mandatoryCompute.TotalPaidLeave,
//مدت مرخصی استعلاجی
TotalSickLeave = mandatoryCompute.TotalSickLeave,
//لیست حضورغیاب جهت ذخیره سازی
GroupedRollCalls = mandatoryCompute.GroupedRollCalls,
// ساعت موظفی پرسنل برای این ماه
EmployeeMandatoryHours = mandatoryCompute.EmployeeMandatoryHours,
HasInsuranceChekoutOverTime = workshop.InsuranceCheckoutOvertime,
BaseYearAffected = mandatoryCompute.BaseYearAffected,
DailySalaryAffected = mandatoryCompute.DailySalaryAffected,
};
_checkoutApplication.Create(command);
//var workshopId = $"{contract.WorkshopIds}";
//var userId = $"{currntAcc}";
//var sumId = userId + workshopId;
//var groupId = Convert.ToInt64(sumId);
var percent = n / maxNumber * 100;
_hubContext.Clients.Group(CheckoutHub.GetGroupName(currntAcc))
.SendAsync("showStatus", (int)percent);
n += 1;
//progress.Report((i + 1) * 100 / ContractsId.Count);
//i += 1;
}
}
}
else
{
var noSelect = new OperationResult
{
IsSuccedded = false,
Message = "هیچ قراردادی برای تصفیه انتخاب نشده است"
};
return new JsonResult(noSelect);
}
var opration = new OperationResult
{
IsSuccedded = true,
Message = "عملیات با موفقیت انجام شد"
};
//Console.WriteLine(watch.Elapsed);
return new JsonResult(opration);
}
public IActionResult OnGetDetails(long id)
{
var res = _contractApplication.GetDetails(id);
//res.WorkshopEmployerList = _contractRepository.GetWorkshopEmployer();
//res.Employers = _employerApplication.GetEmployers();
//res.Employees = _employeeApplication.GetEmployee();
//res.Workshops = _workshopApplication.GetWorkshop();
return Partial("Details", res);
}
public IActionResult OnGetPrintOne(long id)
{
var res = _checkoutApplication.PrintAll([id]).FirstOrDefault();
//var res = _contractApplication.PrintAll(ids);
if (res.HasRollCall) return Partial("PrintDetailsRollCall", res);
return Partial("Details", res);
}
public IActionResult OnGetPrintLeave(long id)
{
var res = _checkoutApplication.LeavePrint(id);
return Partial("PrintLeave", res);
}
public IActionResult OnGetDeActive(long id)
{
var result = _checkoutApplication.DeActive(id);
if (result.IsSuccedded)
return RedirectToPage("./Index");
Message = result.Message;
return RedirectToPage("./Index");
}
public IActionResult OnGetIsActive(long id)
{
var result = _checkoutApplication.Active(id);
if (result.IsSuccedded)
return RedirectToPage("./Index");
Message = result.Message;
return RedirectToPage("./Index");
}
public IActionResult OnGetSign(string Id)
{
var id = Convert.ToInt64(Id);
var result = _checkoutApplication.Sign(id);
if (result.IsSuccedded)
return new JsonResult(new
{
IsSuccedded = true,
id
});
return new JsonResult(new
{
IsSuccedded = false,
id
});
}
public IActionResult OnGetUnSign(string Id)
{
var id = Convert.ToInt64(Id);
var permissions = _authHelper.GetPermissions();
var checkHasPermission = permissions.Any(n => n.Equals(20222));
if (checkHasPermission)
{
var result = _checkoutApplication.UnSign(id);
if (result.IsSuccedded)
return new JsonResult(new
{
IsSuccedded = true,
id
});
return new JsonResult(new
{
IsSuccedded = false,
id
});
}
return new JsonResult(new
{
IsSuccedded = false,
id
});
}
public IActionResult OnGetGroupDeActive(List<long> ids)
{
foreach (var item in ids)
{
var result = _checkoutApplication.DeActive(item);
}
return RedirectToPage("./Index");
}
public IActionResult OnGetGroupReActive(List<long> ids)
{
foreach (var item in ids)
{
var result = _checkoutApplication.Active(item);
}
//if (result.IsSuccedded)
// return RedirectToPage("./Index");
return RedirectToPage("./Index");
}
public IActionResult OnGetGroupSign(List<long> ids)
{
foreach (var item in ids)
{
var result = _checkoutApplication.Sign(item);
}
return RedirectToPage("./Index");
}
public IActionResult OnGetGroupUnSign(List<long> ids)
{
foreach (var item in ids)
{
var result = _checkoutApplication.UnSign(item);
}
return RedirectToPage("./Index");
}
public IActionResult OnGetRemoveOneCheckout(long id)
{
var result = _checkoutApplication.RemoveCheckout(id);
return RedirectToPage("./Index");
//if (result.IsSuccedded)
//{
// return new JsonResult(new
// {
// IsSuccedded = true,
// message = $"تصفیه حساب انتخاب شده حذف شد",
// });
//}
//else
//{
// return new JsonResult(new
// {
// IsSuccedded = false,
// message = $"خطایی رخ داده است",
// });
//}
}
public IActionResult OnGetMultiRemoveCheckout(List<long> ids)
{
foreach (var item in ids)
{
var result = _checkoutApplication.RemoveCheckout(item);
}
return RedirectToPage("./Index");
}
public IActionResult OnGetCustomSet(long id)
{
var checkout = _checkoutApplication.GetDetails(id);
var salaryAidDeduction = checkout.SalaryAidDeduction.ToMoney();
var rewardPay = checkout.RewardPay.ToMoneyNullable();
var command = new CheckoutViewModel
{
Id = id,
RewardPay = rewardPay,
SalaryAidDeduction = salaryAidDeduction,
Year = checkout.Year,
Month = checkout.Month,
EmployeeFullName = checkout.EmployeeFullName
};
return Partial("CustomSet", command);
}
public IActionResult OnPostCustomSet(CheckoutViewModel command)
{
var rewardPay = command.RewardPay.MoneyToDouble();
var salaryAidDeduction = command.SalaryAidDeduction.MoneyToDouble();
var checkout = _checkoutApplication.CustomSet(command.Id, rewardPay, salaryAidDeduction);
return new JsonResult(checkout);
}
///////////////Mandatory Compute//////////////////////
#region MandatoryCompute
public ComputingViewModel MandatoryHours(CreateWorkingHoursTemp command, bool workshopHolidyWorking, long leavId)
{
var serachModel = new LeaveSearchModel
{
EmployeeId = command.EmployeeId,
WorkshopId = command.WorkshopId,
PaidLeaveType = "روزانه",
StartLeave = command.ContarctStart,
EndLeave = command.ContractEnd,
IsAccepted = true
};
var leavList = _leaveApplication.search(serachModel);
var serachModel2 = new LeaveSearchModel
{
EmployeeId = command.EmployeeId,
WorkshopId = command.WorkshopId,
LeaveType = "استعلاجی",
StartLeave = command.ContarctStart,
EndLeave = command.ContractEnd,
IsAccepted = true
};
var sickLeavList = _leaveApplication.search(serachModel2);
var sickLeaveCount = 0;
if (sickLeavList.Count > 0)
foreach (var leave in sickLeavList)
if (leave.StartLeaveGr < command.ContractStartGr && leave.EndLeaveGr <= command.ContractEndGr)
{
var res = (int)((leave.EndLeaveGr - command.ContractStartGr).TotalDays + 1);
sickLeaveCount += res;
}
else if (leave.StartLeaveGr >= command.ContractStartGr && leave.EndLeaveGr > command.ContractEndGr)
{
var res = (int)((command.ContractEndGr - leave.StartLeaveGr).TotalDays + 1);
sickLeaveCount += res;
}
else
{
var res = (int)((leave.EndLeaveGr - leave.StartLeaveGr).TotalDays + 1);
sickLeaveCount += res;
}
#region entityes
var Notholiday = string.Empty;
var Holidays = string.Empty;
double dayliFeeComplete = 0;
var SingleShiftResult = string.Empty;
var shift1Hourse = "0";
var shift1Minuts = "0";
var shift1HolidayHours = "0";
var shift1HolidayMinuts = "0";
var overMandatoryHours = "0";
var overMandatoryMinuts = "0";
var shiftOver22Hours = "0";
var shiftOver22Minuts = "0";
double ShiftPayResult = 0;
var SumWorkeTime = string.Empty;
var weeklyTime = new TimeSpan();
var FridayStartToEnd = 0;
var overNight = false;
var overNightTow = false;
var singleOver24 = new TimeSpan();
var towOver24 = new TimeSpan();
var panjshanbehOver24 = new TimeSpan();
var panjshanbehOver24Tow = new TimeSpan();
var rest = new TimeSpan();
var Over22 = new TimeSpan();
var starTimeSingel1 = new DateTime();
var endTimeSingel2 = new DateTime();
var singleShiftOver24 = new DateTime();
var startTimeTowSh1 = new DateTime();
var endTimeTowSh2 = new DateTime();
var nightWork22 = new DateTime();
var nightWork6 = new DateTime();
var rotatingResultList = new List<RotatingShiftViewModel>();
singleShiftOver24 = Convert.ToDateTime("00:00");
nightWork22 = Convert.ToDateTime("22:00");
nightWork6 = Convert.ToDateTime("06:00");
var rest0 = new TimeSpan();
var rest1 = new TimeSpan();
var rest2 = new TimeSpan();
var rest3 = new TimeSpan();
var rest4 = new TimeSpan();
var rest5 = new TimeSpan();
var rest6 = new TimeSpan();
var rest0w1 = new TimeSpan();
var rest1w1 = new TimeSpan();
var rest2w1 = new TimeSpan();
var rest3w1 = new TimeSpan();
var rest4w1 = new TimeSpan();
var rest5w1 = new TimeSpan();
var rest6w1 = new TimeSpan();
var rest0w2 = new TimeSpan();
var rest1w2 = new TimeSpan();
var rest2w2 = new TimeSpan();
var rest3w2 = new TimeSpan();
var rest4w2 = new TimeSpan();
var rest5w2 = new TimeSpan();
var rest6w2 = new TimeSpan();
var rest0w3 = new TimeSpan();
var rest1w3 = new TimeSpan();
var rest2w3 = new TimeSpan();
var rest3w3 = new TimeSpan();
var rest4w3 = new TimeSpan();
var rest5w3 = new TimeSpan();
var rest6w3 = new TimeSpan();
var rest0w4 = new TimeSpan();
var rest1w4 = new TimeSpan();
var rest2w4 = new TimeSpan();
var rest3w4 = new TimeSpan();
var rest4w4 = new TimeSpan();
var rest5w4 = new TimeSpan();
var rest6w4 = new TimeSpan();
var SumSingle = new TimeSpan();
var SumTow = new TimeSpan();
var SumSingleHourses = 0;
var SumTowHourses = 0;
var sumRest = new TimeSpan();
var SumComplexDays = 0;
var OfficialHoliday = 0;
var conStartGr = command.ContarctStart.ToGeorgianDateTime();
var conEndGr = command.ContractEnd.ToGeorgianDateTime();
var fridays = 0;
#endregion
#region SumRestTimesOneShift
switch (command.ShiftWork)
{
case "1":
case "2":
command.RestTime = command.RestTime == "0" ? "00" : command.RestTime;
command.RestTimeYekshanbeh = command.RestTimeYekshanbeh == "0" ? "00" : command.RestTimeYekshanbeh;
command.RestTimeDoshanbeh = command.RestTimeDoshanbeh == "0" ? "00" : command.RestTimeDoshanbeh;
command.RestTimeSeshanbeh = command.RestTimeSeshanbeh == "0" ? "00" : command.RestTimeSeshanbeh;
command.RestTimeCheharshanbeh =
command.RestTimeCheharshanbeh == "0" ? "00" : command.RestTimeCheharshanbeh;
command.RestTimePanjshanbeh = command.RestTimePanjshanbeh == "0" ? "00" : command.RestTimePanjshanbeh;
command.RestTimeJomeh = command.RestTimeJomeh == "0" ? "00" : command.RestTimeJomeh;
command.RestTimeMin = command.RestTimeMin == "0" ? "00" : command.RestTimeMin;
command.RestTimeYekshanbehMin =
command.RestTimeYekshanbehMin == "0" ? "00" : command.RestTimeYekshanbehMin;
command.RestTimeDoshanbehMin =
command.RestTimeDoshanbehMin == "0" ? "00" : command.RestTimeDoshanbehMin;
command.RestTimeSeshanbehMin =
command.RestTimeSeshanbehMin == "0" ? "00" : command.RestTimeSeshanbehMin;
command.RestTimeCheharshanbehMin =
command.RestTimeCheharshanbehMin == "0" ? "00" : command.RestTimeCheharshanbehMin;
command.RestTimePanjshanbehMin =
command.RestTimePanjshanbehMin == "0" ? "00" : command.RestTimePanjshanbehMin;
command.RestTimeJomehMin = command.RestTimeJomehMin == "0" ? "00" : command.RestTimeJomehMin;
rest0 = TimeSpan.Parse($"{command.RestTime}:{command.RestTimeMin}");
sumRest = sumRest.Add(rest0);
rest1 = TimeSpan.Parse($"{command.RestTimeYekshanbeh}:{command.RestTimeYekshanbehMin}");
sumRest = sumRest.Add(rest1);
rest2 = TimeSpan.Parse($"{command.RestTimeDoshanbeh}:{command.RestTimeDoshanbehMin}");
sumRest = sumRest.Add(rest2);
rest3 = TimeSpan.Parse($"{command.RestTimeSeshanbeh}:{command.RestTimeSeshanbehMin}");
sumRest = sumRest.Add(rest3);
rest4 = TimeSpan.Parse($"{command.RestTimeCheharshanbeh}:{command.RestTimeCheharshanbehMin}");
sumRest = sumRest.Add(rest4);
rest5 = TimeSpan.Parse($"{command.RestTimePanjshanbeh}:{command.RestTimePanjshanbehMin}");
sumRest = sumRest.Add(rest5);
rest6 = TimeSpan.Parse($"{command.RestTimeJomeh}:{command.RestTimeJomehMin}");
sumRest = sumRest.Add(rest6);
break;
case "4":
//week1
command.RestTimeShanbe1 = command.RestTimeShanbe1 == "0" ? "00" : command.RestTimeShanbe1;
command.RestTimeShanbe1Min = command.RestTimeShanbe1Min == "0" ? "00" : command.RestTimeShanbe1Min;
command.RestTimeYekShanbe1 = command.RestTimeYekShanbe1 == "0" ? "00" : command.RestTimeYekShanbe1;
command.RestTimeYekShanbe1Min =
command.RestTimeYekShanbe1Min == "0" ? "00" : command.RestTimeYekShanbe1Min;
command.RestTimeDoShanbe1 = command.RestTimeDoShanbe1 == "0" ? "00" : command.RestTimeDoShanbe1;
command.RestTimeDoShanbe1Min =
command.RestTimeDoShanbe1Min == "0" ? "00" : command.RestTimeDoShanbe1Min;
command.RestTimeSeShanbe1 = command.RestTimeSeShanbe1 == "0" ? "00" : command.RestTimeSeShanbe1;
command.RestTimeSeShanbe1Min =
command.RestTimeSeShanbe1Min == "0" ? "00" : command.RestTimeSeShanbe1Min;
command.RestTimeCheharShanbe1 =
command.RestTimeCheharShanbe1 == "0" ? "00" : command.RestTimeCheharShanbe1;
command.RestTimeCheharShanbe1Min =
command.RestTimeCheharShanbe1Min == "0" ? "00" : command.RestTimeCheharShanbe1Min;
command.RestTimePanjShanbe1 = command.RestTimePanjShanbe1 == "0" ? "00" : command.RestTimePanjShanbe1;
command.RestTimePanjShanbe1Min =
command.RestTimePanjShanbe1Min == "0" ? "00" : command.RestTimePanjShanbe1Min;
command.RestTimeJome1 = command.RestTimeJome1 == "0" ? "00" : command.RestTimeJome1;
command.RestTimeJome1Min = command.RestTimeJome1Min == "0" ? "00" : command.RestTimeJome1Min;
//week2
command.RestTimeShanbe2 = command.RestTimeShanbe2 == "0" ? "00" : command.RestTimeShanbe2;
command.RestTimeShanbe2Min = command.RestTimeShanbe2Min == "0" ? "00" : command.RestTimeShanbe2Min;
command.RestTimeYekShanbe2 = command.RestTimeYekShanbe2 == "0" ? "00" : command.RestTimeYekShanbe2;
command.RestTimeYekShanbe2Min =
command.RestTimeYekShanbe2Min == "0" ? "00" : command.RestTimeYekShanbe2Min;
command.RestTimeDoShanbe2 = command.RestTimeDoShanbe2 == "0" ? "00" : command.RestTimeDoShanbe2;
command.RestTimeDoShanbe2Min =
command.RestTimeDoShanbe2Min == "0" ? "00" : command.RestTimeDoShanbe2Min;
command.RestTimeSeShanbe2 = command.RestTimeSeShanbe2 == "0" ? "00" : command.RestTimeSeShanbe2;
command.RestTimeSeShanbe2Min =
command.RestTimeSeShanbe2Min == "0" ? "00" : command.RestTimeSeShanbe2Min;
command.RestTimeCheharShanbe2 =
command.RestTimeCheharShanbe2 == "0" ? "00" : command.RestTimeCheharShanbe2;
command.RestTimeCheharShanbe2Min =
command.RestTimeCheharShanbe2Min == "0" ? "00" : command.RestTimeCheharShanbe2Min;
command.RestTimePanjShanbe2 = command.RestTimePanjShanbe2 == "0" ? "00" : command.RestTimePanjShanbe2;
command.RestTimePanjShanbe2Min =
command.RestTimePanjShanbe2Min == "0" ? "00" : command.RestTimePanjShanbe2Min;
command.RestTimeJome2 = command.RestTimeJome2 == "0" ? "00" : command.RestTimeJome2;
command.RestTimeJome2Min = command.RestTimeJome2Min == "0" ? "00" : command.RestTimeJome2Min;
//week3
command.RestTimeShanbe3 = command.RestTimeShanbe3 == "0" ? "00" : command.RestTimeShanbe3;
command.RestTimeShanbe3Min = command.RestTimeShanbe3Min == "0" ? "00" : command.RestTimeShanbe3Min;
command.RestTimeYekShanbe3 = command.RestTimeYekShanbe3 == "0" ? "00" : command.RestTimeYekShanbe3;
command.RestTimeYekShanbe3Min =
command.RestTimeYekShanbe3Min == "0" ? "00" : command.RestTimeYekShanbe3Min;
command.RestTimeDoShanbe3 = command.RestTimeDoShanbe3 == "0" ? "00" : command.RestTimeDoShanbe3;
command.RestTimeDoShanbe3Min =
command.RestTimeDoShanbe3Min == "0" ? "00" : command.RestTimeDoShanbe3Min;
command.RestTimeSeShanbe3 = command.RestTimeSeShanbe3 == "0" ? "00" : command.RestTimeSeShanbe3;
command.RestTimeSeShanbe3Min =
command.RestTimeSeShanbe3Min == "0" ? "00" : command.RestTimeSeShanbe3Min;
command.RestTimeCheharShanbe3 =
command.RestTimeCheharShanbe3 == "0" ? "00" : command.RestTimeCheharShanbe3;
command.RestTimeCheharShanbe3Min =
command.RestTimeCheharShanbe3Min == "0" ? "00" : command.RestTimeCheharShanbe3Min;
command.RestTimePanjShanbe3 = command.RestTimePanjShanbe3 == "0" ? "00" : command.RestTimePanjShanbe3;
command.RestTimePanjShanbe3Min =
command.RestTimePanjShanbe3Min == "0" ? "00" : command.RestTimePanjShanbe3Min;
command.RestTimeJome3 = command.RestTimeJome3 == "0" ? "00" : command.RestTimeJome3;
command.RestTimeJome3Min = command.RestTimeJome3Min == "0" ? "00" : command.RestTimeJome3Min;
//week4
command.RestTimeShanbe4 = command.RestTimeShanbe4 == "0" ? "00" : command.RestTimeShanbe4;
command.RestTimeShanbe4Min = command.RestTimeShanbe4Min == "0" ? "00" : command.RestTimeShanbe4Min;
command.RestTimeYekShanbe4 = command.RestTimeYekShanbe4 == "0" ? "00" : command.RestTimeYekShanbe4;
command.RestTimeYekShanbe4Min =
command.RestTimeYekShanbe4Min == "0" ? "00" : command.RestTimeYekShanbe4Min;
command.RestTimeDoShanbe4 = command.RestTimeDoShanbe4 == "0" ? "00" : command.RestTimeDoShanbe4;
command.RestTimeDoShanbe4Min =
command.RestTimeDoShanbe4Min == "0" ? "00" : command.RestTimeDoShanbe4Min;
command.RestTimeSeShanbe4 = command.RestTimeSeShanbe4 == "0" ? "00" : command.RestTimeSeShanbe4;
command.RestTimeSeShanbe4Min =
command.RestTimeSeShanbe4Min == "0" ? "00" : command.RestTimeSeShanbe4Min;
command.RestTimeCheharShanbe4 =
command.RestTimeCheharShanbe4 == "0" ? "00" : command.RestTimeCheharShanbe4;
command.RestTimeCheharShanbe4Min =
command.RestTimeCheharShanbe4Min == "0" ? "00" : command.RestTimeCheharShanbe4Min;
command.RestTimePanjShanbe4 = command.RestTimePanjShanbe4 == "0" ? "00" : command.RestTimePanjShanbe4;
command.RestTimePanjShanbe4Min =
command.RestTimePanjShanbe4Min == "0" ? "00" : command.RestTimePanjShanbe4Min;
command.RestTimeJome4 = command.RestTimeJome4 == "0" ? "00" : command.RestTimeJome4;
command.RestTimeJome4Min = command.RestTimeJome4Min == "0" ? "00" : command.RestTimeJome4Min;
// sumrest week1
rest0w1 = TimeSpan.Parse($"{command.RestTimeShanbe1}:{command.RestTimeShanbe1Min}");
rest1w1 = TimeSpan.Parse($"{command.RestTimeYekShanbe1}:{command.RestTimeYekShanbe1Min}");
rest2w1 = TimeSpan.Parse($"{command.RestTimeDoShanbe1}:{command.RestTimeDoShanbe1Min}");
rest3w1 = TimeSpan.Parse($"{command.RestTimeSeShanbe1}:{command.RestTimeSeShanbe1Min}");
rest4w1 = TimeSpan.Parse($"{command.RestTimeCheharShanbe1}:{command.RestTimeCheharShanbe1Min}");
rest5w1 = TimeSpan.Parse($"{command.RestTimePanjShanbe1}:{command.RestTimePanjShanbe1Min}");
rest6w1 = TimeSpan.Parse($"{command.RestTimeJome1}:{command.RestTimeJome1Min}");
// sumrest week2
rest0w2 = TimeSpan.Parse($"{command.RestTimeShanbe2}:{command.RestTimeShanbe2Min}");
rest1w2 = TimeSpan.Parse($"{command.RestTimeYekShanbe2}:{command.RestTimeYekShanbe2Min}");
rest2w2 = TimeSpan.Parse($"{command.RestTimeDoShanbe2}:{command.RestTimeDoShanbe2Min}");
rest3w2 = TimeSpan.Parse($"{command.RestTimeSeShanbe2}:{command.RestTimeSeShanbe2Min}");
rest4w2 = TimeSpan.Parse($"{command.RestTimeCheharShanbe2}:{command.RestTimeCheharShanbe2Min}");
rest5w2 = TimeSpan.Parse($"{command.RestTimePanjShanbe2}:{command.RestTimePanjShanbe2Min}");
rest6w2 = TimeSpan.Parse($"{command.RestTimeJome2}:{command.RestTimeJome2Min}");
// sumrest week3
rest0w3 = TimeSpan.Parse($"{command.RestTimeShanbe3}:{command.RestTimeShanbe3Min}");
rest1w3 = TimeSpan.Parse($"{command.RestTimeYekShanbe3}:{command.RestTimeYekShanbe3Min}");
rest2w3 = TimeSpan.Parse($"{command.RestTimeDoShanbe3}:{command.RestTimeDoShanbe3Min}");
rest3w3 = TimeSpan.Parse($"{command.RestTimeSeShanbe3}:{command.RestTimeSeShanbe3Min}");
rest4w3 = TimeSpan.Parse($"{command.RestTimeCheharShanbe3}:{command.RestTimeCheharShanbe3Min}");
rest5w3 = TimeSpan.Parse($"{command.RestTimePanjShanbe3}:{command.RestTimePanjShanbe3Min}");
rest6w3 = TimeSpan.Parse($"{command.RestTimeJome3}:{command.RestTimeJome3Min}");
// sumrest week4
rest0w4 = TimeSpan.Parse($"{command.RestTimeShanbe4}:{command.RestTimeShanbe4Min}");
rest1w4 = TimeSpan.Parse($"{command.RestTimeYekShanbe4}:{command.RestTimeYekShanbe4Min}");
rest2w4 = TimeSpan.Parse($"{command.RestTimeDoShanbe4}:{command.RestTimeDoShanbe4Min}");
rest3w4 = TimeSpan.Parse($"{command.RestTimeSeShanbe4}:{command.RestTimeSeShanbe4Min}");
rest4w4 = TimeSpan.Parse($"{command.RestTimeCheharShanbe4}:{command.RestTimeCheharShanbe4Min}");
rest5w4 = TimeSpan.Parse($"{command.RestTimePanjShanbe4}:{command.RestTimePanjShanbe4Min}");
rest6w4 = TimeSpan.Parse($"{command.RestTimeJome4}:{command.RestTimeJome4Min}");
break;
}
#endregion
#region SumSingleAndTowShifts
var StartShanbehSingle = Convert.ToDateTime(command.SingleShift1);
var EndShanbehSingle = Convert.ToDateTime(command.SingleShift2);
if (StartShanbehSingle > EndShanbehSingle)
EndShanbehSingle = EndShanbehSingle.AddDays(1);
var ShanbehSingle = EndShanbehSingle - StartShanbehSingle;
SumSingle = SumSingle.Add(ShanbehSingle);
var StartYekShanbehSingle = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
var EndYekShanbehSingle = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
if (StartYekShanbehSingle > EndYekShanbehSingle)
EndYekShanbehSingle = EndYekShanbehSingle.AddDays(1);
var YekShanbehSingle = EndYekShanbehSingle - StartYekShanbehSingle;
SumSingle = SumSingle.Add(YekShanbehSingle);
var StartDoShanbehSingle = Convert.ToDateTime(command.SingleShift1Doshanbeh);
var EndDoShanbehSingle = Convert.ToDateTime(command.SingleShift2Doshanbeh);
if (StartDoShanbehSingle > EndDoShanbehSingle)
EndDoShanbehSingle = EndDoShanbehSingle.AddDays(1);
var DoShanbehSingle = EndDoShanbehSingle - StartDoShanbehSingle;
SumSingle = SumSingle.Add(DoShanbehSingle);
var StartSehShanbehSingle = Convert.ToDateTime(command.SingleShift1Seshanbeh);
var EndSehShanbehSingle = Convert.ToDateTime(command.SingleShift2Seshanbeh);
if (StartSehShanbehSingle > EndSehShanbehSingle)
EndSehShanbehSingle = EndSehShanbehSingle.AddDays(1);
var SeShanbehSingle = EndSehShanbehSingle - StartSehShanbehSingle;
SumSingle = SumSingle.Add(SeShanbehSingle);
var StartCheharShanbehSingle = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
var EndCheharShanbehSingle = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
if (StartCheharShanbehSingle > EndCheharShanbehSingle)
EndCheharShanbehSingle = EndCheharShanbehSingle.AddDays(1);
var CheharShanbehSingle = EndCheharShanbehSingle - StartCheharShanbehSingle;
SumSingle = SumSingle.Add(CheharShanbehSingle);
var StartPanjShanbehSingle = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
var EndPanjShanbehSingle = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
if (StartPanjShanbehSingle > EndPanjShanbehSingle)
EndPanjShanbehSingle = EndPanjShanbehSingle.AddDays(1);
var PanjShanbehSingle = EndPanjShanbehSingle - StartPanjShanbehSingle;
SumSingle = SumSingle.Add(PanjShanbehSingle);
var StartJomehSingle = Convert.ToDateTime(command.SingleShift1Jomeh);
var EndjomehSingle = Convert.ToDateTime(command.SingleShift2Jomeh);
if (StartJomehSingle > EndjomehSingle)
EndjomehSingle = EndjomehSingle.AddDays(1);
var JomehSingle = EndjomehSingle - StartJomehSingle;
SumSingle = SumSingle.Add(JomehSingle);
if (command.ShiftWork == "1") SumSingle = SumSingle.Subtract(sumRest);
//SumSingleHourses = (int)SumSingle.TotalHours;
var StartShanbehTow = Convert.ToDateTime(command.TowShifts1);
var EndShanbehTow = Convert.ToDateTime(command.TowShifts2);
if (StartShanbehTow > EndShanbehTow)
EndShanbehTow = EndShanbehTow.AddDays(1);
var ShanbehTow = EndShanbehTow - StartShanbehTow;
SumTow = SumTow.Add(ShanbehTow);
var StartYekShanbehTow = Convert.ToDateTime(command.TowShifts1Yekshanbeh);
var EndYekShanbehTow = Convert.ToDateTime(command.TowShifts2Yekshanbeh);
if (StartYekShanbehTow > EndYekShanbehTow)
EndYekShanbehTow = EndYekShanbehTow.AddDays(1);
var YekShanbehTow = EndYekShanbehTow - StartYekShanbehTow;
SumTow = SumTow.Add(YekShanbehTow);
var StartDoShanbehTow = Convert.ToDateTime(command.TowShifts1Doshanbeh);
var EndDoShanbehTow = Convert.ToDateTime(command.TowShifts2Doshanbeh);
if (StartDoShanbehTow > EndDoShanbehTow)
EndDoShanbehTow = EndDoShanbehTow.AddDays(1);
var DoShanbehTow = EndDoShanbehTow - StartDoShanbehTow;
SumTow = SumTow.Add(DoShanbehTow);
var StartSehShanbehTow = Convert.ToDateTime(command.TowShifts1Seshanbeh);
var EndSehShanbehTow = Convert.ToDateTime(command.TowShifts2Seshanbeh);
if (StartSehShanbehTow > EndSehShanbehTow)
EndSehShanbehTow = EndSehShanbehTow.AddDays(1);
var SeShanbehTow = EndSehShanbehTow - StartSehShanbehTow;
SumTow = SumTow.Add(SeShanbehTow);
var StartCheharShanbehTow = Convert.ToDateTime(command.TowShifts1Cheharshanbeh);
var EndCheharShanbehTow = Convert.ToDateTime(command.TowShifts2Cheharshanbeh);
if (StartCheharShanbehTow > EndCheharShanbehTow)
EndCheharShanbehTow = EndCheharShanbehTow.AddDays(1);
var CheharShanbehTow = EndCheharShanbehTow - StartCheharShanbehTow;
SumTow = SumTow.Add(CheharShanbehTow);
var StartPanjShanbehTow = Convert.ToDateTime(command.TowShifts1Panjshanbeh);
var EndPanjShanbehTow = Convert.ToDateTime(command.TowShifts2Panjshanbeh);
if (StartPanjShanbehTow > EndPanjShanbehTow)
EndPanjShanbehTow = EndPanjShanbehTow.AddDays(1);
var PanjShanbehTow = EndPanjShanbehTow - StartPanjShanbehTow;
SumTow = SumTow.Add(PanjShanbehTow);
var StartJomehTow = Convert.ToDateTime(command.TowShifts1Jomeh);
var EndjomehTow = Convert.ToDateTime(command.TowShifts2Jomeh);
if (StartJomehTow > EndjomehTow)
EndjomehTow = EndjomehTow.AddDays(1);
var jomehTow = EndjomehTow - StartJomehTow;
SumTow = SumTow.Add(jomehTow);
//SumTowHourses = (int)SumTow.TotalHours;
#endregion
#region ComplexSumWorkTime
if (command.ShiftWork == "5")
SumWorkeTime = "24 - 12";
else if (command.ShiftWork == "6")
SumWorkeTime = "24 - 24";
else if (command.ShiftWork == "7")
SumWorkeTime = "36 - 12";
else if (command.ShiftWork == "8") SumWorkeTime = "48 - 24";
#endregion
#region OneAndTowShiftsCompute
var dailyFix = TimeSpan.Parse("07:20");
var notHolidays = new TimeSpan();
var HolidaysAndNot = new TimeSpan();
var jomeh = new TimeSpan();
var sdate = command.ContarctStart.ToEnglishNumber();
var edate = command.ContractEnd.ToEnglishNumber();
var syear = Convert.ToInt32(sdate.Substring(0, 4));
var smonth = Convert.ToInt32(sdate.Substring(5, 2));
var sday = Convert.ToInt32(sdate.Substring(8, 2));
var eyear = Convert.ToInt32(edate.Substring(0, 4));
var emonth = Convert.ToInt32(edate.Substring(5, 2));
var eday = Convert.ToInt32(edate.Substring(8, 2));
var d1 = new PersianDateTime(syear, smonth, sday);
var d2 = new PersianDateTime(eyear, emonth, eday);
int i = 0, i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
var holidayList = _holidayItemRepository.GetHolidayItem(sdate.Substring(0, 4));
var leavInfo = leavId > 0 ? _leaveApplication.GetDetails(leavId) : null;
#region shiftWork 1&2
if (command.ShiftWork == "1" || command.ShiftWork == "2")
{
for (var da = d1; da <= d2; da.AddDays(1))
{
var currentDay = da.ToGregorianDateTime();
if (da.DayOfWeek == "شنبه" && command.shanbeh && leavId == 0)
{
var checkHoliday = _holidayItemRepository.GetHoliday(currentDay);
if (checkHoliday == false)
{
i += 1;
if (command.ShiftWork == "1")
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest0);
notHolidays = notHolidays.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
//Over22Compute = Over22Compute.Subtract(rest);
Over22 = Over22.Add(Over22Compute);
}
else if (command.ShiftWork == "2")
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
}
}
}
else if (da.DayOfWeek == "شنبه" && command.shanbeh && leavId > 0)
{
if (currentDay >= leavInfo.StartLeaveGr && currentDay <= leavInfo.EndLeaveGr)
if (leavInfo.LeaveType == "استحقاقی" && leavInfo.PaidLeaveType == "ساعتی")
{
var leaavHoursesInt = Convert.ToInt32(leavInfo.LeaveHourses);
var leavHourses = new TimeSpan(0, leaavHoursesInt, 0, 0);
i += 1;
if (command.ShiftWork == "1")
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest0);
//کم کردن مرخصی ساعتی از ساعت کارکرد آن روز
singleSpan1 = singleSpan1.Subtract(leavHourses);
notHolidays = notHolidays.Add(singleSpan1);
//کم کردن ساعت مرخصی از پایان ساعات کاری
endTimeSingel2 = endTimeSingel2.AddHours(-leaavHoursesInt);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22Compute);
}
else if (command.ShiftWork == "2")
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
}
}
}
if (da.DayOfWeek == "یکشنبه" && command.yekshanbeh && leavId == 0)
{
var test = da.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (checkHoliday == false)
{
i1 += 1;
if (command.ShiftWork == "1")
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest1);
notHolidays = notHolidays.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
//Over22Compute = Over22Compute.Subtract(rest);
Over22 = Over22.Add(Over22Compute);
}
else if (command.ShiftWork == "2")
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Yekshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Yekshanbeh);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Yekshanbeh);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Yekshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
}
}
}
else if (da.DayOfWeek == "یکشنبه" && command.yekshanbeh && leavId > 0)
{
}
if (da.DayOfWeek == "دوشنبه" && command.doshanbeh && leavId == 0)
{
var test = da.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (checkHoliday == false)
{
i2 += 1;
switch (command.ShiftWork)
{
case "1":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest2);
notHolidays = notHolidays.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22Compute);
break;
case "2":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Doshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Doshanbeh);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Doshanbeh);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Doshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
break;
}
}
}
else if (da.DayOfWeek == "دوشنبه" && command.doshanbeh && leavId > 0)
{
}
if (da.DayOfWeek == "سه شنبه" && command.seshanbeh && leavId == 0)
{
var test = da.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (checkHoliday == false)
{
i3 += 1;
switch (command.ShiftWork)
{
case "1":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest3);
notHolidays = notHolidays.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22Compute);
break;
case "2":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Seshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Seshanbeh);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Seshanbeh);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Seshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
break;
}
}
}
else if (da.DayOfWeek == "سه شنبه" && command.seshanbeh && leavId > 0)
{
}
if (da.DayOfWeek == "چهارشنبه" && command.cheharshanbeh && leavId == 0)
{
var test = da.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (checkHoliday == false)
{
i4 += 1;
switch (command.ShiftWork)
{
case "1":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest4);
notHolidays = notHolidays.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22Compute);
break;
case "2":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Cheharshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Cheharshanbeh);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Cheharshanbeh);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Cheharshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
break;
}
}
}
else if (da.DayOfWeek == "چهارشنبه" && command.cheharshanbeh && leavId > 0)
{
}
if (da.DayOfWeek == "پنج شنبه" && command.pangshanbeh && leavId == 0)
{
var test = da.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (checkHoliday == false)
{
i5 += 1;
switch (command.ShiftWork)
{
case "1":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
singleOver24 = endTimeSingel2 - singleShiftOver24;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest5);
singleSpan1 = singleSpan1.Subtract(singleOver24);
jomeh = jomeh.Add(singleOver24);
notHolidays = notHolidays.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22Compute);
break;
case "2":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Panjshanbeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Panjshanbeh);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Panjshanbeh);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Panjshanbeh);
var singleOver24Tow = new TimeSpan();
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
singleOver24 = endTimeSingel2 - singleShiftOver24;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
singleOver24Tow = endTimeTowSh2 - singleShiftOver24;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
singleSpanTow2 = singleSpanTow2.Subtract(singleOver24Tow);
jomeh = jomeh.Add(singleOver24);
jomeh = jomeh.Add(singleOver24Tow);
notHolidays = notHolidays.Add(singleSpanTow1);
notHolidays = notHolidays.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
break;
}
}
}
else if (da.DayOfWeek == "پنج شنبه" && command.pangshanbeh && leavId > 0)
{
}
if (da.DayOfWeek == "جمعه" && command.jomeh && leavId == 0)
{
i6 += 1;
switch (command.ShiftWork)
{
case "1":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jomeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jomeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
var singleSpan1 = endTimeSingel2 - starTimeSingel1;
singleSpan1 = singleSpan1.Subtract(rest6);
jomeh = jomeh.Add(singleSpan1);
var Over22Compute = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22Compute);
break;
case "2":
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jomeh);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jomeh);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jomeh);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jomeh);
if (starTimeSingel1 > endTimeSingel2)
{
overNight = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
}
if (startTimeTowSh1 > endTimeTowSh2)
{
overNight = true;
endTimeTowSh2 = endTimeTowSh2.AddDays(1);
}
var singleSpanTow1 = endTimeSingel2 - starTimeSingel1;
var singleSpanTow2 = endTimeTowSh2 - startTimeTowSh1;
jomeh = jomeh.Add(singleSpanTow1);
jomeh = jomeh.Add(singleSpanTow2);
var Over22ComputeTow1 = Over22Check(starTimeSingel1, endTimeSingel2);
Over22 = Over22.Add(Over22ComputeTow1);
var Over22ComputeTow2 = Over22Check(startTimeTowSh1, endTimeTowSh2);
Over22 = Over22.Add(Over22ComputeTow2);
break;
}
}
else if (da.DayOfWeek == "جمعه" && command.jomeh && leavId > 0)
{
}
else if (command.jomeh == false)
{
i6 = 0;
}
if (da.DayOfWeek == "جمعه") FridayStartToEnd += 1;
}
}
#endregion
#endregion
#region Rotating
else if (command.ShiftWork == "4")
{
//DateTime currentDay = ($"{da}").ToGeorgianDateTime();
var hasSickLeave = false;
for (var da = d1; da <= d2; da.AddDays(1))
{
var FirstDayOfMonth = new PersianDateTime(da.Year, da.Month, 1);
var w1 = 0;
var w2 = 0;
var w3 = 0;
var w4 = 0;
var w5 = 0;
var w6 = 0;
switch (FirstDayOfMonth.DayOfWeek)
{
case "شنبه":
w1 = 7;
w2 = 14;
w3 = 28;
w4 = 31;
break;
case "یکشنبه":
w1 = 6;
w2 = 13;
w3 = 20;
w4 = 27;
w5 = 31;
break;
case "دوشنبه":
w1 = 5;
w2 = 12;
w3 = 19;
w4 = 26;
w5 = 31;
break;
case "سه شنبه":
w1 = 4;
w2 = 11;
w3 = 18;
w4 = 25;
w5 = 31;
break;
case "چهارشنبه":
w1 = 3;
w2 = 10;
w3 = 17;
w4 = 24;
w5 = 31;
break;
case "پنج شنبه":
w1 = 2;
w2 = 9;
w3 = 16;
w4 = 23;
w5 = 30;
w6 = 31;
break;
case "جمعه":
w1 = 1;
w2 = 8;
w3 = 15;
w4 = 22;
w5 = 29;
w6 = 31;
break;
}
switch (da.DayOfWeek)
{
case "شنبه":
if (da.Day <= w1)
{
if (command.Shanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
sumRest = sumRest.Add(rest0w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
else
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
}
}
else if (command.Shanbe1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.Shanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
sumRest = sumRest.Add(rest0w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.Shanbe2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.Shanbe3 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w3);
sumRest = sumRest.Add(rest0w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.Shanbe3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.Shanbe4 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w4);
sumRest = sumRest.Add(rest0w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.Shanbe4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.Shanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
sumRest = sumRest.Add(rest0w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.Shanbe1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.Shanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
sumRest = sumRest.Add(rest0w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Shanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Shanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Shanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Shanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest0w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest0w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.Shanbe2 && leavId > 0)
{
}
}
break;
case "یکشنبه":
if (da.Day <= w1)
{
if (command.YekShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
sumRest = sumRest.Add(rest1w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.YekShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.YekShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
sumRest = sumRest.Add(rest1w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.YekShanbe2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.YekShanbe3 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w3);
sumRest = sumRest.Add(rest1w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.YekShanbe3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.YekShanbe4 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w4);
sumRest = sumRest.Add(rest1w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.YekShanbe4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.YekShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
sumRest = sumRest.Add(rest1w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.YekShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.YekShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
sumRest = sumRest.Add(rest1w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1YekShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2YekShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1YekShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2YekShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest1w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest1w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.YekShanbe2 && leavId > 0)
{
}
}
break;
case "دوشنبه":
if (da.Day <= w1)
{
if (command.DoShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
sumRest = sumRest.Add(rest2w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
else
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
}
}
else if (command.DoShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.DoShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
sumRest = sumRest.Add(rest2w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.DoShanbe2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.DoShanbe3 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w3);
sumRest = sumRest.Add(rest2w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.DoShanbe3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.DoShanbe4 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w4);
sumRest = sumRest.Add(rest2w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.DoShanbe4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.DoShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
sumRest = sumRest.Add(rest2w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.DoShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.DoShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
sumRest = sumRest.Add(rest2w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1DoShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2DoShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1DoShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2DoShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest2w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest2w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.DoShanbe2 && leavId > 0)
{
}
}
break;
case "سه شنبه":
if (da.Day <= w1)
{
if (command.SeShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
sumRest = sumRest.Add(rest3w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.SeShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.SeShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
sumRest = sumRest.Add(rest3w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.SeShanbe2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.SeShanbe3 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w3);
sumRest = sumRest.Add(rest3w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.SeShanbe3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.SeShanbe4 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w4);
sumRest = sumRest.Add(rest3w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.SeShanbe4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.SeShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
sumRest = sumRest.Add(rest3w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.SeShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.SeShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
sumRest = sumRest.Add(rest3w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1SeShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2SeShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1SeShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2SeShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest3w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest3w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.SeShanbe2 && leavId > 0)
{
}
}
break;
case "چهارشنبه":
if (da.Day <= w1)
{
if (command.CheharShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
sumRest = sumRest.Add(rest4w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
else
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
}
}
else if (command.CheharShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.CheharShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
sumRest = sumRest.Add(rest4w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.CheharShanbe2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.CheharShanbe3 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w3);
sumRest = sumRest.Add(rest4w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.CheharShanbe3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.CheharShanbe4 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w4);
sumRest = sumRest.Add(rest4w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.CheharShanbe4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.CheharShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
sumRest = sumRest.Add(rest4w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.CheharShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.CheharShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
sumRest = sumRest.Add(rest4w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1CheharShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2CheharShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1CheharShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2CheharShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest4w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest4w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.CheharShanbe2 && leavId > 0)
{
}
}
break;
case "پنج شنبه":
if (da.Day <= w1)
{
if (command.PanjShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
sumRest = sumRest.Add(rest5w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.PanjShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.PanjShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
sumRest = sumRest.Add(rest5w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.PanjShanbe2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.PanjShanbe3 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w3);
sumRest = sumRest.Add(rest5w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.PanjShanbe3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.PanjShanbe4 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w4);
sumRest = sumRest.Add(rest5w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.PanjShanbe4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.PanjShanbe1 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
sumRest = sumRest.Add(rest5w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.PanjShanbe1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.PanjShanbe2 && !hasSickLeave)
{
var test = $"{da}";
var checkHoliday = holidayList.Any(x => x == test);
if (checkHoliday == false)
{
i += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
sumRest = sumRest.Add(rest5w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
notHolidays = notHolidays.Add(dailyFix);
else
notHolidays = notHolidays.Add(rotatingCheck.TotalWorkingTime);
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else
{
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1PanjShanbe2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2PanjShanbe2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1PanjShanbe2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2PanjShanbe2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest5w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest5w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2,
startTimeTowSh1, endTimeTowSh2);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
{
HolidaysAndNot = HolidaysAndNot.Add(dailyFix);
}
else
{
HolidaysAndNot = HolidaysAndNot.Add(rotatingCheck.TotalWorkingTime);
if (workshopHolidyWorking)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
rotatingResultList.Add(rotatingCheck);
}
}
}
}
else if (command.PanjShanbe2 && leavId > 0)
{
}
}
break;
case "جمعه":
if (da.Day <= w1)
{
if (command.Jome1 && !hasSickLeave)
{
var test = $"{da}";
i6 += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest6w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest6w1);
sumRest = sumRest.Add(rest6w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
jomeh = jomeh.Add(dailyFix);
else
jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
//افزودن جمعه کاری
if (!leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr))
fridays += 1;
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else if (command.Jome1 && leavId > 0)
{
}
}
else if (da.Day > w1 && da.Day <= w2)
{
if (command.Jome2 && !hasSickLeave)
{
var test = $"{da}";
i6 += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest6w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest6w2);
sumRest = sumRest.Add(rest6w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
jomeh = jomeh.Add(dailyFix);
else
jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
//افزودن جمعه کاری
if (!leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr))
fridays += 1;
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else if (command.Jome2 && leavId > 0)
{
}
}
else if (da.Day > w2 && da.Day <= w3)
{
if (command.Jome3 && !hasSickLeave)
{
var test = $"{da}";
i6 += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome3);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome3);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome3);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome3);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest6w3)
endTimeSingel2 = endTimeSingel2.Subtract(rest6w3);
sumRest = sumRest.Add(rest6w3);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
jomeh = jomeh.Add(dailyFix);
else
jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
//افزودن جمعه کاری
if (!leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr))
fridays += 1;
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else if (command.Jome3 && leavId > 0)
{
}
}
else if (da.Day > w3 && da.Day <= w4)
{
if (command.Jome4 && !hasSickLeave)
{
var test = $"{da}";
i6 += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome4);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome4);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome4);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome4);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest6w4)
endTimeSingel2 = endTimeSingel2.Subtract(rest6w4);
sumRest = sumRest.Add(rest6w4);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
jomeh = jomeh.Add(dailyFix);
else
jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
//افزودن جمعه کاری
if (!leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr))
fridays += 1;
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else if (command.Jome4 && leavId > 0)
{
}
}
else if (da.Day > w4 && da.Day <= w5)
{
if (command.Jome1 && !hasSickLeave)
{
var test = $"{da}";
i6 += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome1);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome1);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome1);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome1);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest6w1)
endTimeSingel2 = endTimeSingel2.Subtract(rest6w1);
sumRest = sumRest.Add(rest6w1);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
jomeh = jomeh.Add(dailyFix);
else
jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
//افزودن جمعه کاری
if (!leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr))
fridays += 1;
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else if (command.Jome1 && leavId > 0)
{
}
}
else if (da.Day > w5 && da.Day <= w6)
{
if (command.Jome2 && !hasSickLeave)
{
var test = $"{da}";
i6 += 1;
SumComplexDays += 1;
starTimeSingel1 = Convert.ToDateTime(command.SingleShift1Jome2);
endTimeSingel2 = Convert.ToDateTime(command.SingleShift2Jome2);
startTimeTowSh1 = Convert.ToDateTime(command.TowShifts1Jome2);
endTimeTowSh2 = Convert.ToDateTime(command.TowShifts2Jome2);
if (endTimeSingel2.TimeOfDay == new TimeSpan(0, 0, 0))
endTimeSingel2 = endTimeSingel2.AddDays(1);
if (endTimeSingel2 - starTimeSingel1 >= rest6w2)
endTimeSingel2 = endTimeSingel2.Subtract(rest6w2);
sumRest = sumRest.Add(rest6w2);
var rotatingCheck = RotatingShiftCheck(starTimeSingel1, endTimeSingel2, startTimeTowSh1,
endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
var testGr = test.ToGeorgianDateTime();
if (leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr) &&
rotatingCheck.TotalWorkingTime > dailyFix)
jomeh = jomeh.Add(dailyFix);
else
jomeh = jomeh.Add(rotatingCheck.TotalWorkingTime);
//افزودن جمعه کاری
if (!leavList.Any(x => x.StartLeaveGr <= testGr && x.EndLeaveGr >= testGr))
fridays += 1;
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
}
else if (command.Jome2 && leavId > 0)
{
}
}
break;
}
if (da.DayOfWeek != "جمعه")
{
var testDay = $"{da}";
var IsHoliday = holidayList.Any(x => x == testDay);
if (IsHoliday) OfficialHoliday += 1;
}
else
{
FridayStartToEnd += 1;
}
}
rotatingResultList = rotatingResultList.Where(x =>
x.IsMorningShift || x.IsEveningShift || x.IsNightShift).ToList();
}
#endregion
#region ComplexCompute
else if (command.ShiftWork == "5") //12-24
{
var now = DateTime.Now;
var sdate2 = command.ContarctStart.ToEnglishNumber();
var edate2 = command.ContractEnd.ToEnglishNumber();
var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
var eday2 = Convert.ToInt32(edate.Substring(8, 2));
var d1b = new PersianDateTime(syear2, smonth2, sday2);
var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
var start = Convert.ToDateTime(command.StartComplex);
var end = Convert.ToDateTime(command.EndComplex);
var sh = start.Hour;
var sm = start.Minute;
var eh = end.Hour;
var em = end.Minute;
var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
end = endDateTime.ToGregorianDateTime();
for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(36))
{
var test = $"{da2}";
if (da2.DayOfWeek == "جمعه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpanTow1 = new TimeSpan();
i6 += 1;
if (start.Date < end.Date)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
singleSpanTow1 = end - start;
singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleOver24);
jomeh = jomeh.Add(singleSpanTow1);
i += 1;
}
else
{
singleSpanTow1 = end - start;
jomeh = jomeh.Add(singleSpanTow1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
fridays += 1;
}
var endCal = end - start;
var NextStart = start.AddHours(36);
end = NextStart.Add(endCal);
}
else if (da2.DayOfWeek == "پنج شنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = new TimeSpan();
i5 += 1;
if (start.Date < end.Date && start.Day != end.Day)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
jomeh = jomeh.Add(singleOver24);
i6 += 1;
singleSpan1 = end - start;
singleSpan1 = singleSpan1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleSpan1);
}
else
{
singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
var endCal = end - start;
var NextStart = start.AddHours(36);
end = NextStart.Add(endCal);
}
else if (da2.DayOfWeek == "شنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i += 1;
var NextStart = start.AddHours(36);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "یکشنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i1 += 1;
var NextStart = start.AddHours(36);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "دوشنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i2 += 1;
var NextStart = start.AddHours(36);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "سه شنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i3 += 1;
var NextStart = start.AddHours(36);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "چهارشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i4 += 1;
var NextStart = start.AddHours(36);
end = NextStart.Add(singleSpan1);
}
}
for (var daa = d1b; daa <= d2b; daa.AddDays(1))
{
var test = daa.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (daa.DayOfWeek != "جمعه")
{
if (checkHoliday == false)
SumComplexDays += 1;
else
OfficialHoliday += 1;
}
else
{
FridayStartToEnd += 1;
}
}
}
else if (command.ShiftWork == "6") //24-24
{
var now = DateTime.Now;
var sdate2 = command.ContarctStart.ToEnglishNumber();
var edate2 = command.ContractEnd.ToEnglishNumber();
var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
var eday2 = Convert.ToInt32(edate.Substring(8, 2));
var d1b = new PersianDateTime(syear2, smonth2, sday2);
var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
var start = Convert.ToDateTime(command.StartComplex);
var end = Convert.ToDateTime(command.EndComplex);
var sh = start.Hour;
var sm = start.Minute;
var eh = end.Hour;
var em = end.Minute;
var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
//if (start > end)
//{
// endDateTime.AddDays(1);
//}
endDateTime.AddDays(1);
end = endDateTime.ToGregorianDateTime();
for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48))
{
var test = $"{da2}";
if (da2.DayOfWeek == "جمعه")
{
start = da2.ToGregorianDateTime();
var singleSpanTow1 = new TimeSpan();
var WorkHours = end - start;
i6 += 1;
if (start.Date < end.Date)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
singleSpanTow1 = end - start;
singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleOver24);
jomeh = jomeh.Add(singleSpanTow1);
i += 1;
}
else
{
singleSpanTow1 = end - start;
jomeh = jomeh.Add(singleSpanTow1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
fridays += 1;
}
var NextStart = start.AddHours(48);
end = NextStart.Add(WorkHours);
}
else if (da2.DayOfWeek == "پنج شنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = new TimeSpan();
var WorkHours = end - start;
i5 += 1;
if (start.Date < end.Date && start.Day != end.Day)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
jomeh = jomeh.Add(singleOver24);
i6 += 1;
singleSpan1 = end - start;
singleSpan1 = singleSpan1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleSpan1);
}
else
{
singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
var NextStart = start.AddHours(48);
end = NextStart.Add(WorkHours);
}
else if (da2.DayOfWeek == "شنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "یکشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i1 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "دوشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i2 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "سه شنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i3 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "چهارشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i4 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
}
for (var daa = d1b; daa <= d2b; daa.AddDays(1))
{
var test = daa.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (daa.DayOfWeek != "جمعه")
{
if (checkHoliday == false)
SumComplexDays += 1;
else
OfficialHoliday += 1;
}
else
{
FridayStartToEnd += 1;
}
}
}
else if (command.ShiftWork == "7") //12-36
{
var now = DateTime.Now;
var sdate2 = command.ContarctStart.ToEnglishNumber();
var edate2 = command.ContractEnd.ToEnglishNumber();
var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
var eday2 = Convert.ToInt32(edate.Substring(8, 2));
var d1b = new PersianDateTime(syear2, smonth2, sday2);
var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
var start = Convert.ToDateTime(command.StartComplex);
var end = Convert.ToDateTime(command.EndComplex);
var sh = start.Hour;
var sm = start.Minute;
var eh = end.Hour;
var em = end.Minute;
var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
//if (start > end)
//{
// endDateTime.AddDays(1);
//}
//endDateTime.AddDays(1);
end = endDateTime.ToGregorianDateTime();
for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(48))
{
var test = $"{da2}";
if (da2.DayOfWeek == "جمعه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpanTow1 = new TimeSpan();
i6 += 1;
if (start.Date < end.Date)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
singleSpanTow1 = end - start;
singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleOver24);
jomeh = jomeh.Add(singleSpanTow1);
i += 1;
}
else
{
singleSpanTow1 = end - start;
jomeh = jomeh.Add(singleSpanTow1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
fridays += 1;
}
var WorkHours = end - start;
var NextStart = start.AddHours(48);
end = NextStart.Add(WorkHours);
}
else if (da2.DayOfWeek == "پنج شنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = new TimeSpan();
i5 += 1;
if (start.Date < end.Date && start.Day != end.Day)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
jomeh = jomeh.Add(singleOver24);
i6 += 1;
singleSpan1 = end - start;
singleSpan1 = singleSpan1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleSpan1);
}
else
{
singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
var WorkHours = end - start;
var NextStart = start.AddHours(48);
end = NextStart.Add(WorkHours);
}
else if (da2.DayOfWeek == "شنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "یکشنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i1 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "دوشنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i2 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "سه شنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= endComplex && x.EndLeaveGr >= endComplex) ||
(x.StartLeaveGr >= startComplex &&
x.StartLeaveGr <= endComplex) ||
(x.EndLeaveGr >= startComplex && x.EndLeaveGr <= endComplex));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i3 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "چهارشنبه")
{
start = da2.ToGregorianDateTime();
if (start.Date == end.Date && start.TimeOfDay > end.TimeOfDay)
end = end.AddDays(1);
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i4 += 1;
var NextStart = start.AddHours(48);
end = NextStart.Add(singleSpan1);
}
}
for (var daa = d1b; daa <= d2b; daa.AddDays(1))
{
var test = daa.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (daa.DayOfWeek != "جمعه")
{
if (checkHoliday == false)
SumComplexDays += 1;
else
OfficialHoliday += 1;
}
else
{
FridayStartToEnd += 1;
}
}
}
else if (command.ShiftWork == "8") //24-48
{
var now = DateTime.Now;
var sdate2 = command.ContarctStart.ToEnglishNumber();
var edate2 = command.ContractEnd.ToEnglishNumber();
var syear2 = Convert.ToInt32(sdate.Substring(0, 4));
var smonth2 = Convert.ToInt32(sdate.Substring(5, 2));
var sday2 = Convert.ToInt32(sdate.Substring(8, 2));
var eyear2 = Convert.ToInt32(edate.Substring(0, 4));
var emonth2 = Convert.ToInt32(edate.Substring(5, 2));
var eday2 = Convert.ToInt32(edate.Substring(8, 2));
var d1b = new PersianDateTime(syear2, smonth2, sday2);
var d2b = new PersianDateTime(eyear2, emonth2, eday2, 23, 59);
var start = Convert.ToDateTime(command.StartComplex);
var end = Convert.ToDateTime(command.EndComplex);
var sh = start.Hour;
var sm = start.Minute;
var eh = end.Hour;
var em = end.Minute;
var startDateAndTime = new PersianDateTime(syear2, smonth2, sday2, sh, sm);
var endDateTime = new PersianDateTime(syear2, smonth2, sday2, eh, em);
//if (start > end)
//{
// endDateTime.AddDays(1);
//}
end = endDateTime.ToGregorianDateTime();
end = end.AddDays(1);
for (var da2 = startDateAndTime; da2 <= d2b; da2.AddHours(72))
{
var test = $"{da2}";
if (da2.DayOfWeek == "جمعه")
{
start = da2.ToGregorianDateTime();
var singleSpanTow1 = new TimeSpan();
i6 += 1;
if (start.Date < end.Date)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
singleSpanTow1 = end - start;
singleSpanTow1 = singleSpanTow1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleOver24);
jomeh = jomeh.Add(singleSpanTow1);
i += 1;
}
else
{
singleSpanTow1 = end - start;
jomeh = jomeh.Add(singleSpanTow1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave)
{
Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
fridays += 1;
}
var WorkHours = end - start;
var NextStart = start.AddHours(72);
end = NextStart.Add(WorkHours);
}
else if (da2.DayOfWeek == "پنج شنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = new TimeSpan();
i5 += 1;
if (start.Date < end.Date && start.Day != end.Day)
{
overNight = true;
var over24 = new DateTime(end.Year, end.Month, end.Day, 0, 0, 0);
singleOver24 = end - over24;
jomeh = jomeh.Add(singleOver24);
i6 += 1;
singleSpan1 = end - start;
singleSpan1 = singleSpan1.Subtract(singleOver24);
notHolidays = notHolidays.Add(singleSpan1);
}
else
{
singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
}
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
var WorkHours = end - start;
var NextStart = start.AddHours(72);
end = NextStart.Add(WorkHours);
}
else if (da2.DayOfWeek == "شنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i += 1;
var NextStart = start.AddHours(72);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "یکشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i1 += 1;
var NextStart = start.AddHours(72);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "دوشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i2 += 1;
var NextStart = start.AddHours(72);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "سه شنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i3 += 1;
var NextStart = start.AddHours(72);
end = NextStart.Add(singleSpan1);
}
else if (da2.DayOfWeek == "چهارشنبه")
{
start = da2.ToGregorianDateTime();
var singleSpan1 = end - start;
notHolidays = notHolidays.Add(singleSpan1);
var startComplex = new DateTime(now.Year, now.Month, now.Day, start.Hour, start.Minute,
start.Second);
var endComplex = new DateTime(now.Year, now.Month, now.Day, end.Hour, end.Minute,
end.Second);
var rotatingCheck = RotatingShiftCheck(startComplex, endComplex, startTimeTowSh1, endTimeTowSh2);
rotatingCheck.RotatingDate = test;
rotatingResultList.Add(rotatingCheck);
//var Over22Computing = Over22Complex2424(start, end);
var hasLeave = leavList.Any(x => (x.StartLeaveGr <= start && x.EndLeaveGr >= start) ||
(x.StartLeaveGr <= end && x.EndLeaveGr >= end) ||
(x.StartLeaveGr >= start && x.StartLeaveGr <= end) ||
(x.EndLeaveGr >= start && x.EndLeaveGr <= end));
if (!hasLeave) Over22 = Over22.Add(rotatingCheck.NightWorkSpan);
i4 += 1;
var NextStart = start.AddHours(72);
end = NextStart.Add(singleSpan1);
}
}
for (var daa = d1b; daa <= d2b; daa.AddDays(1))
{
var test = daa.ToGregorianDateTime();
var checkHoliday = _holidayItemRepository.GetHoliday(test);
if (daa.DayOfWeek != "جمعه")
{
if (checkHoliday == false)
SumComplexDays += 1;
else
OfficialHoliday += 1;
}
else
{
FridayStartToEnd += 1;
}
}
}
#endregion
#region DayCounterAndDailyFix
var sumDays = i + i1 + i2 + i3 + i4 + i5 + i6;
var holidaysCount = i6;
var notHolidaysCount = i + i1 + i2 + i3 + i4 + i5;
// ساعات موظفی
var ComplexFix = dailyFix.Multiply(SumComplexDays);
dailyFix = dailyFix.Multiply(sumDays);
Notholiday = notHolidaysCount.ToString();
Holidays = holidaysCount.ToString();
var searchModel = new LeftWorkSearchModel
{
EmployeeId = command.EmployeeId,
WorkshopId = command.WorkshopId
};
var leftworkList = _leftWorkApplication.search(searchModel);
var lastLeftWork = leftworkList.FirstOrDefault();
var conStart = conStartGr;
var EndOfM = Convert.ToInt32(command.ContractEnd.Substring(8, 2));
var conEnd = conEndGr;
if (lastLeftWork.LeftWorkDate != "1500/01/01" && lastLeftWork.LeftWorkDateGr < conEnd)
{
conEnd = lastLeftWork.LeftWorkDateGr.AddDays(-1);
}
else
{
if (EndOfM == 31) conEnd = conEnd.AddDays(-1);
}
var AllDaysCount = (conEnd - conStart).TotalDays + 1;
var endContract = command.ContractEnd.ToGeorgianDateTime();
var AllmandatoryDays = 0;
int fridayCount = 0;
int officialHolidayCount = 0;
for (var gDate = conStart; gDate <= endContract; gDate = gDate.AddDays(1))
{
if (gDate.DayOfWeek != DayOfWeek.Friday)
AllmandatoryDays += 1;
if (gDate.DayOfWeek == DayOfWeek.Friday)
fridayCount += 1;
bool officialHoliday = _holidayItemRepository.GetHoliday(gDate);
if (officialHoliday)
officialHolidayCount += 1;
}
var mandatoryFixComplex = new TimeSpan(7, 20, 0).Multiply(AllmandatoryDays);
var allDays = (int)(endContract - conStart).TotalDays + 1;
int mondatoryDaysInMonth = allDays - (fridayCount + officialHolidayCount);
var mandatoryFixShifts = new TimeSpan(7, 20, 0).Multiply(mondatoryDaysInMonth);
var jomeh2 = new TimeSpan();
var notHolidays2 = new TimeSpan();
var Mandatory = new TimeSpan();
notHolidays = notHolidays.Add(jomeh);
var workingDaysH = (int)notHolidays.TotalHours;
var workingDaysM = notHolidays.TotalMinutes % 60;
//ساعات کاری پرسنل با احتساب تعطیلات رسمی
HolidaysAndNot = HolidaysAndNot.Add(notHolidays);
var totalHolidaysAndNotH = (int)HolidaysAndNot.TotalHours;
var totalHolidaysAndNotM = HolidaysAndNot.TotalMinutes % 60;
notHolidays2 = notHolidays2.Add(jomeh2);
var SumNotHolidays = notHolidays.Add(notHolidays2);
var SumNotHolidaysHours = (int)SumNotHolidays.TotalHours;
var SumNotHolidaysMinuts = SumNotHolidays.Minutes % 60;
var SumHolidays = jomeh.Add(jomeh2);
var SumHolidaysHours = (int)SumHolidays.TotalHours;
var SumHolidaysMinuts = SumHolidays.Minutes % 60;
var totalHoursShift1 = notHolidays;
var totalHoursShift1And2 = SumNotHolidays;
#endregion
#region DailyFeeCompute
var basic = "0";
var GetWorkStartDate = command.GetWorkDateHide.ToEnglishNumber();
var GetWorkEndDate = command.ContractEnd.ToEnglishNumber();
var styear = Convert.ToInt32(GetWorkStartDate.Substring(0, 4));
var stmonth = Convert.ToInt32(GetWorkStartDate.Substring(5, 2));
var stday = Convert.ToInt32(GetWorkStartDate.Substring(8, 2));
var edyear = Convert.ToInt32(GetWorkEndDate.Substring(0, 4));
var edmonth = Convert.ToInt32(GetWorkEndDate.Substring(5, 2));
var edday = Convert.ToInt32(GetWorkEndDate.Substring(8, 2));
var startDate = command.GetWorkDateHide.ToGeorgianDateTime();
var endDate = command.ContractEnd.ToGeorgianDateTime();
var dayliFee = "خطای تاریخ";
if (styear >= 1370)
{
if (leftworkList == null)
leftworkList = new List<LeftWorkViewModel>();
var ContractStart = command.ContarctStart.ToGeorgianDateTime();
var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, ContractStart, endDate,
command.EmployeeId, command.WorkshopId, leftworkList);
dayliFee = dayliFeeResult.DayliFee;
dayliFeeComplete = dayliFeeResult.DayliFee.MoneyToDouble();
basic = dayliFeeResult.Basic;
}
#endregion
#region ConsumableItemsAndHousingAndFamily
var ConsumableItems = _yearlySalaryRepository.ConsumableItems(endDate);
var HousingAllowance = _yearlySalaryRepository.HousingAllowance(endDate);
var familyAllowance = _yearlySalaryRepository.FamilyAllowance(command.EmployeeId, conStartGr, endDate);
var MarriedAllowance = _yearlySalaryRepository.MarriedAllowance(endDate, command.EmployeeId);
#endregion
#region Fix44Compute
var dailyFixx = TimeSpan.Parse("07:20");
var fix44 = dailyFixx.Multiply(6);
var divideNum = TimeSpan.Parse("06:00");
// حق تاهل
var MarriedAllowanceStr = MarriedAllowance > 0 ? MarriedAllowance.ToMoney() : "0";
var AllDaysCountWithOutSickLive = AllDaysCount - sickLeaveCount;
if (command.ShiftWork == "1")
{
if (SumSingle < fix44)
{
// مجموع ساعت کار هفته تقسیم بر 6 ساعت
var dividTo6Days = SumSingle.Divide(divideNum);
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var DailyFeeNumberType = dayliFee.MoneyToDouble();
//مزد روزانه تقسیم بر 7/33
var dailyStep1 = DailyFeeNumberType / 7.33;
//نتیجه ضربدر جواب مجموع ساعت تقسیم بر 6 روز هفته
var dailyStep2 = dailyStep1 * dividTo6Days;
dayliFee = dailyStep2.ToMoney();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep2 = HousingStep1 / 7.33;
var HousingStep3 = HousingStep2 * dividTo6Days;
var HousingStep4 = HousingStep3 * AllDaysCount;
HousingAllowance = HousingStep4.ToMoney();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep2 = consumableItemsStep1 / 7.33;
var consumableItemsStep3 = consumableItemsStep2 * dividTo6Days;
var consumableItemsStep4 = consumableItemsStep3 * AllDaysCount;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep2 = MarriedStep1 / 7.33;
var MarriedStep3 = MarriedStep2 * dividTo6Days;
var MarriedStep4 = MarriedStep3 * AllDaysCount;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep2 = familyAllowanceStep1 / 7.33;
var familyAllowanceStep3 = familyAllowanceStep2 * dividTo6Days;
var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
var sumSingleRound = Math.Round(SumSingle.TotalHours, 2);
weeklyTime = SumSingle;
SumWorkeTime = $"{sumSingleRound}";
}
else
{
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep4 = HousingStep1 * AllDaysCount;
HousingAllowance = HousingStep4.ToMoney();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep4 = MarriedStep1 * AllDaysCount;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
SumWorkeTime = $"{44}";
}
}
else if (command.ShiftWork == "2")
{
var totalShift = SumSingle + SumTow;
if (totalShift < fix44)
{
var dividTo6Days = totalShift.Divide(divideNum);
var DailyFeeNumberType = dayliFee.MoneyToDouble();
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var step1 = DailyFeeNumberType / 7.33;
var step2 = step1 * dividTo6Days;
dayliFee = step2.ToMoney();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep2 = HousingStep1 / 7.33;
var HousingStep3 = HousingStep2 * dividTo6Days;
var HousingStep4 = HousingStep3 * AllDaysCount;
HousingAllowance = HousingStep4.ToMoney();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep2 = consumableItemsStep1 / 7.33;
var consumableItemsStep3 = consumableItemsStep2 * dividTo6Days;
var consumableItemsStep4 = consumableItemsStep3 * AllDaysCount;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep2 = MarriedStep1 / 7.33;
var MarriedStep3 = MarriedStep2 * dividTo6Days;
var MarriedStep4 = MarriedStep3 * AllDaysCount;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep2 = familyAllowanceStep1 / 7.33;
var familyAllowanceStep3 = familyAllowanceStep2 * dividTo6Days;
var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
var totalShiftRound = Math.Round(totalShift.TotalHours, 2);
SumWorkeTime = $"{totalShiftRound}";
weeklyTime = totalShift;
}
else
{
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep4 = consumableItemsStep1 * AllDaysCount;
ConsumableItems = consumableItemsStep4.ToMoney();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep4 = HousingStep1 * AllDaysCount;
HousingAllowance = HousingStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep4 = MarriedStep1 * AllDaysCount;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
SumWorkeTime = $"{44}";
}
}
else if (command.ShiftWork == "4")
{
var TotalContractDays = (conEndGr - conStartGr).TotalDays + 1;
var totalWeek = (int)(TotalContractDays / 6);
var TotalDaysNoFriday = TotalContractDays - FridayStartToEnd;
var FixHourses = TotalDaysNoFriday * 7.33;
var totalHourses = HolidaysAndNot.TotalMinutes / 60;
//var dividedForOneDay = totalHourses / notHolidaysCount;
if (totalHourses < FixHourses)
{
var DailyFeeNumberType = dayliFee.MoneyToDouble();
var dailyStep1 = DailyFeeNumberType / 7.33;
var hoursesPerDay = totalHourses / TotalDaysNoFriday;
var result = hoursesPerDay * dailyStep1;
dayliFee = result.ToMoney();
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep2 = HousingStep1 / 7.33;
var HousingStep3 = HousingStep2 * hoursesPerDay;
var HousingStep4 = HousingStep3 * AllDaysCountWithOutSickLive;
HousingAllowance = HousingStep4.ToMoney();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep2 = consumableItemsStep1 / 7.33;
var consumableItemsStep3 = consumableItemsStep2 * hoursesPerDay;
var consumableItemsStep4 = consumableItemsStep3 * AllDaysCountWithOutSickLive;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep2 = MarriedStep1 / 7.33;
var MarriedStep3 = MarriedStep2 * hoursesPerDay;
var MarriedStep4 = MarriedStep3 * AllDaysCountWithOutSickLive;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep2 = familyAllowanceStep1 / 7.33;
var familyAllowanceStep3 = familyAllowanceStep2 * hoursesPerDay;
var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
if (totalWeek > 1)
{
double weekAvrage = 0;
if (totalHourses < 44.00)
weekAvrage = totalHourses * 6 / TotalContractDays;
else
weekAvrage = totalHourses * 6 / TotalDaysNoFriday;
//var oneday = weekAvrage * 6;
var totalShiftRound = Math.Round(weekAvrage, 2);
SumWorkeTime = $"{totalShiftRound}";
}
else if (totalWeek <= 1 && TotalDaysNoFriday <= 6)
{
var totalShiftRound = Math.Round(totalHourses, 2);
SumWorkeTime = $"{totalShiftRound}";
}
else if (totalWeek <= 1 && TotalDaysNoFriday > 6)
{
var perDyeWorked = totalHourses / TotalDaysNoFriday;
var weekAvrage = perDyeWorked * 6;
var totalShiftRound = Math.Round(weekAvrage, 2);
SumWorkeTime = $"{totalShiftRound}";
}
weeklyTime = totalHoursShift1;
}
else
{
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep4 = HousingStep1 * AllDaysCountWithOutSickLive;
HousingAllowance = HousingStep4.ToMoney();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep4 = consumableItemsStep1 * AllDaysCountWithOutSickLive;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep4 = MarriedStep1 * AllDaysCountWithOutSickLive;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
SumWorkeTime = $"{44}";
}
}
else
{
var TotalContractDays = (conEndGr - conStartGr).TotalDays + 1;
var TotalDaysNoFriday = TotalContractDays - FridayStartToEnd;
var FixHourses = TotalDaysNoFriday * 7.33;
var totalHourses = totalHoursShift1.TotalMinutes / 60;
if (totalHourses < FixHourses)
{
var dailyFeeNumberType = dayliFee.MoneyToDouble();
var dailyStep1 = dailyFeeNumberType / 7.33;
var hoursesPerDay = totalHourses / TotalDaysNoFriday;
var result = hoursesPerDay * dailyStep1;
dayliFee = result.ToMoney();
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep2 = HousingStep1 / 7.33;
var HousingStep3 = HousingStep2 * hoursesPerDay;
var HousingStep4 = HousingStep3 * AllDaysCountWithOutSickLive;
HousingAllowance = HousingStep4.ToMoney();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep2 = consumableItemsStep1 / 7.33;
var consumableItemsStep3 = consumableItemsStep2 * hoursesPerDay;
var consumableItemsStep4 = consumableItemsStep3 * AllDaysCountWithOutSickLive;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep2 = MarriedStep1 / 7.33;
var MarriedStep3 = MarriedStep2 * hoursesPerDay;
var MarriedStep4 = MarriedStep3 * AllDaysCountWithOutSickLive;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep2 = familyAllowanceStep1 / 7.33;
var familyAllowanceStep3 = familyAllowanceStep2 * hoursesPerDay;
var familyAllowanceStep4 = familyAllowanceStep3 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
}
else
{
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var ConsumableItemsNumberType = ConsumableItems.MoneyToDouble();
var familyAllowanceNumberType = familyAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30;
var HousingStep4 = HousingStep1 * AllDaysCountWithOutSickLive;
HousingAllowance = HousingStep4.ToMoney();
var consumableItemsStep1 = ConsumableItemsNumberType / 30;
var consumableItemsStep4 = consumableItemsStep1 * AllDaysCountWithOutSickLive;
ConsumableItems = consumableItemsStep4.ToMoney();
//حق تاهل
if (MarriedAllowance > 0)
{
var MarriedStep1 = MarriedAllowance / 30;
var MarriedStep4 = MarriedStep1 * AllDaysCountWithOutSickLive;
MarriedAllowanceStr = MarriedStep4.ToMoney();
}
if (familyAllowance != "0")
{
var familyAllowanceStep1 = familyAllowanceNumberType / 30;
var familyAllowanceStep4 = familyAllowanceStep1 * AllDaysCount;
familyAllowance = familyAllowanceStep4.ToMoney();
}
}
}
#endregion
#region MandatoryTimeCompute
//حالت عادی
if (command.ShiftWork == "2" || command.ShiftWork == "1" || command.ShiftWork == "4")
{
switch (workshopHolidyWorking)
{
case true:
if (HolidaysAndNot > mandatoryFixShifts)
{
Mandatory = HolidaysAndNot.Subtract(mandatoryFixShifts);
var mandatoryHours = (int)Mandatory.TotalHours;
var mandatoryminuts = Mandatory.Minutes % 60;
overMandatoryHours = mandatoryHours.ToString();
overMandatoryMinuts = mandatoryminuts.ToString();
}
break;
case false:
if (totalHoursShift1And2 > mandatoryFixShifts)
{
Mandatory = totalHoursShift1And2.Subtract(mandatoryFixShifts);
var mandatoryHours = (int)Mandatory.TotalHours;
var mandatoryminuts = Mandatory.Minutes % 60;
overMandatoryHours = mandatoryHours.ToString();
overMandatoryMinuts = mandatoryminuts.ToString();
}
break;
}
}
//حالت چرخشی
if ((command.ShiftWork == "5" && totalHoursShift1 > mandatoryFixComplex)
|| (command.ShiftWork == "6" && totalHoursShift1 > mandatoryFixComplex)
|| (command.ShiftWork == "7" && totalHoursShift1 > mandatoryFixComplex)
|| (command.ShiftWork == "8" && totalHoursShift1 > mandatoryFixComplex))
{
Mandatory = totalHoursShift1.Subtract(mandatoryFixComplex);
var mandatoryHours = (int)Mandatory.TotalHours;
var mandatoryminuts = Mandatory.Minutes % 60;
var leavs = leavList.Where(x => x.StartLeaveGr >= conStartGr && x.EndLeaveGr <= conEndGr)
.Sum(x => x.LeaveHourses.ConvertToInt());
//کسر اضافه کار مرخصی
if (leavs > 0)
{
var avrageOfTotalShift = totalHoursShift1 / sumDays;
var avrageOfComplexFix = ComplexFix / sumDays;
var mandatoryPerOneDay = avrageOfTotalShift - avrageOfComplexFix;
var minuseMondatory = mandatoryPerOneDay * leavs;
if (minuseMondatory < Mandatory)
{
var newManadatory = Mandatory.Subtract(minuseMondatory);
mandatoryHours = (int)newManadatory.TotalHours;
mandatoryminuts = newManadatory.Minutes % 60;
}
else
{
mandatoryHours = 0;
mandatoryminuts = 0;
}
}
overMandatoryHours = mandatoryHours.ToString();
overMandatoryMinuts = mandatoryminuts.ToString();
}
//Over22 = Over22.Multiply(sumDays);
var Over22hours = (int)Over22.TotalHours;
var Over22Minuts = Over22.TotalMinutes % 60;
if (command.ShiftWork == "1" || command.ShiftWork == "4")
{
shift1Hourse = workingDaysH.ToString();
shift1Minuts = workingDaysM.ToString();
shiftOver22Hours = Over22hours.ToString();
shiftOver22Minuts = Over22Minuts.ToString();
}
if (command.ShiftWork == "2")
{
shift1Hourse = SumNotHolidaysHours.ToString();
shift1Minuts = SumNotHolidaysMinuts.ToString();
shiftOver22Hours = Over22hours.ToString();
shiftOver22Minuts = Over22Minuts.ToString();
}
var ComplexNotHolidays = string.Empty;
if (command.ShiftWork == "5" || command.ShiftWork == "6" || command.ShiftWork == "7" ||
command.ShiftWork == "8")
{
shift1Hourse = workingDaysH.ToString();
shift1Minuts = workingDaysM.ToString();
shiftOver22Hours = Over22hours.ToString();
shiftOver22Minuts = Over22Minuts.ToString();
ComplexNotHolidays = Notholiday;
Notholiday = "0";
}
//کسر جمعه های مرخصی
#region LeavesFriday
//foreach (var item in leavList)
//{
// for (var daa = item.StartLeaveGr; daa <= item.EndLeaveGr; daa = daa.AddDays(1))
// {
// if (daa.DayOfWeek == DayOfWeek.Friday)
// {
// fridayLeav += 1;
// }
// }
//}
//if (fridayLeav > 0)
//{
// if (fridayLeav <= holidaysCount)
// {
// Holidays = (holidaysCount - fridayLeav).ToString();
// }
// else
// {
// Holidays = "0";
// }
//}
#endregion
#endregion
#region RtatingStatus
string shiftpayValue = "0";
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>();
var totalDays = Convert.ToInt32(AllDaysCount);
int validCount = 0;
if (totalDays <= 7) // زیر 7 روز باید حد اقل 2 تغییر شیفت داشته باشد
{
validCount = 2;
}
else if (totalDays >= 28) // بالای 28 روز حد اقل 8 تغییر شیفت
{
validCount = 6;
}
else
{
// تناسب گیری - اگر برای 28 روز 8 تغییر پس برای ایکس روز چند تغییر لازم است
validCount = (int)((totalDays * 6) / 28);
}
Console.WriteLine(validCount);
if (moriningCount >= validCount)
RotatingfaName.Add("صبح");
if (eveningCount >= validCount)
RotatingfaName.Add("عصر");
if (nightCount >= validCount)
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;
shiftpayValue = "10";
}
else if (rotatingFaResult == "صبح و عصر و شب")
{
var shiftPyaPercent = DailyFeeNumberType * 15 / 100;
ShiftPayResult = shiftPyaPercent * TotalDays;
shiftpayValue = "15";
}
else if (rotatingFaResult == "صبح و شب" || rotatingFaResult == "عصر و شب")
{
var shiftPyaPercent = DailyFeeNumberType * 22.5 / 100;
ShiftPayResult = shiftPyaPercent * TotalDays;
shiftpayValue = "22.5";
}
}
#endregion
#region sendResult
rotatingResultList = rotatingResultList.Take(28).ToList();
var ress = new ComputingViewModel
{
NumberOfWorkingDays = Notholiday == "0" ? ComplexNotHolidays : Notholiday,
NumberOfFriday = fridays.ToString(),
TotalHoursesH = shift1Hourse,
TotalHoursesM = shift1Minuts,
E = shift1HolidayHours,
F = shift1HolidayMinuts,
Interference = InterferenceMessage,
OverTimeWorkH = overMandatoryHours,
OverTimeWorkM = overMandatoryMinuts,
OverNightWorkH = shiftOver22Hours,
OverNightWorkM = shiftOver22Minuts,
ComplexNumberOfWorkingDays = ComplexNotHolidays,
SalaryCompute = dayliFee,
SumTime44 = SumWorkeTime,
ConsumableItems = ConsumableItems,
HousingAllowance = HousingAllowance,
FamilyAllowance = familyAllowance,
OfficialHoliday = OfficialHoliday,
weeklyTime = weeklyTime,
RotatingResultList = rotatingResultList,
RotatingStatus = rotatingFaResult,
ShiftPay = ShiftPayResult,
Basic = basic,
FridayStartToEnd = FridayStartToEnd,
TotalHolidayAndNotH = totalHolidaysAndNotH.ToString(),
TotalHolidayAndNotM = totalHolidaysAndNotM.ToString(),
DayliFeeComplete = dayliFeeComplete,
MarriedAllowance = MarriedAllowanceStr,
RotatingShiftValue = shiftpayValue
};
return ress;
#endregion
}
#endregion
#region MandatoryDependingMetods
public RotatingShiftViewModel RotatingShiftCheck(DateTime? singleShift1, DateTime? singleShift2,
DateTime? towShift1, DateTime? towShift2)
{
#region Entityes
var nullDateTme = new DateTime(0001, 01, 01);
var midNight24 = Convert.ToDateTime("00:00");
var morningWorkingTime1 = new TimeSpan();
var eveningWorkingTime1 = new TimeSpan();
var nightWorkingTime1 = new TimeSpan();
var morningWorkingTime2 = new TimeSpan();
var eveningWorkingTime2 = new TimeSpan();
var nightWorkingTime2 = new TimeSpan();
var morningStart = Convert.ToDateTime("06:00");
var morningEnd = Convert.ToDateTime("14:00");
var eveningStart = Convert.ToDateTime("14:00");
var eveningEnd = Convert.ToDateTime("22:00");
var nightStart = Convert.ToDateTime("22:00");
var nightEnd = Convert.ToDateTime("6:00");
var nightEndNextday = nightEnd.AddDays(1);
var morningEndNextday = morningEnd.AddDays(1);
#endregion
#region shift1
if (singleShift1 != nullDateTme && singleShift2 != nullDateTme)
{
if (singleShift2 < singleShift1) singleShift2 = singleShift2?.AddDays(1);
if (singleShift1 == singleShift2) // example 22<---22
{
nightWorkingTime1 = new TimeSpan(8, 0, 0);
morningWorkingTime1 = new TimeSpan(8, 0, 0);
eveningWorkingTime1 = new TimeSpan(8, 0, 0);
}
else
{
#region morning enter 14 <- 6
if (singleShift1 >= morningStart // 14<---<6
&& singleShift1 < morningEnd
&& singleShift2 > morningStart
&& singleShift2 <= morningEnd)
{
morningWorkingTime1 = (TimeSpan)(singleShift2 - singleShift1);
}
else if (singleShift1 >= morningStart // <---14---6
&& singleShift1 < morningEnd
&& singleShift2 > morningStart
&& singleShift2 <= nightEndNextday)
{
if (singleShift2 <= eveningEnd) // 22<---14---6
{
morningWorkingTime1 = (TimeSpan)(morningEnd - singleShift1);
eveningWorkingTime1 = (TimeSpan)(singleShift2 - eveningStart);
}
else if (singleShift2 > eveningEnd) // 6<---22---14---6
{
morningWorkingTime1 = (TimeSpan)(morningEnd - singleShift1);
eveningWorkingTime1 = new TimeSpan(8, 0, 0);
nightWorkingTime1 = (TimeSpan)(singleShift2 - eveningEnd);
}
}
else if (singleShift1 >= morningStart // 14<---<6
&& singleShift1 < morningEnd
&& singleShift2 > morningStart
&& singleShift2 > nightEndNextday)
{
eveningWorkingTime1 = new TimeSpan(8, 0, 0);
nightWorkingTime1 = new TimeSpan(8, 0, 0);
morningWorkingTime1 = (TimeSpan)(morningEnd - singleShift1);
morningWorkingTime1 += (TimeSpan)(singleShift2 - nightEndNextday);
}
#endregion
#region evening enter 22 <- 14
if (singleShift1 >= eveningStart // 22<---<14
&& singleShift1 < eveningEnd
&& singleShift2 > eveningStart
&& singleShift2 <= eveningEnd)
{
eveningWorkingTime1 = (TimeSpan)(singleShift2 - singleShift1);
}
else if (singleShift1 >= eveningStart // <14---6---22---14
&& singleShift1 < eveningEnd
&& singleShift2 > eveningStart
&& singleShift2 <= morningEndNextday)
{
if (singleShift2 <= nightEndNextday) // 6<---22---14
{
eveningWorkingTime1 = (TimeSpan)(eveningEnd - singleShift1);
nightWorkingTime1 = (TimeSpan)(singleShift2 - eveningEnd);
}
else if (singleShift2 > nightEndNextday) // 14<---6---22---14
{
eveningWorkingTime1 = (TimeSpan)(eveningEnd - singleShift1);
nightWorkingTime1 = new TimeSpan(8, 0, 0);
morningWorkingTime1 = (TimeSpan)(singleShift2 - nightEndNextday);
}
}
else if (singleShift1 >= eveningStart // <22---14---6---22---14
&& singleShift1 < eveningEnd
&& singleShift2 > eveningStart
&& singleShift2 > morningEndNextday)
{
nightWorkingTime1 = new TimeSpan(8, 0, 0);
morningWorkingTime1 = new TimeSpan(8, 0, 0);
eveningWorkingTime1 = (TimeSpan)(eveningEnd - singleShift1);
eveningWorkingTime1 += (TimeSpan)(singleShift2 - morningEndNextday);
}
#endregion
#region night enter 6 <- 22
if ((singleShift1 >= nightStart // 6<---<22
&& singleShift1 < nightEndNextday
&& singleShift2 > nightStart
&& singleShift2 <= nightEndNextday)
|| (singleShift1 >= midNight24
&& singleShift1 < nightEnd
&& singleShift2 > midNight24
&& singleShift2 <= nightEnd))
{
nightWorkingTime1 = (TimeSpan)(singleShift2 - singleShift1);
}
else if (singleShift1 >= nightStart // <---6---22
&& singleShift1 < nightEndNextday
&& singleShift2 > nightStart
&& singleShift2 > nightEndNextday)
{
if (singleShift2 <= morningEndNextday) // 14<---6---22
{
nightWorkingTime1 = (TimeSpan)(nightEndNextday - singleShift1);
morningWorkingTime1 = (TimeSpan)(singleShift2 - nightEndNextday);
}
else if (singleShift2 > morningEndNextday) // 22<---14---6---22
{
nightWorkingTime1 = (TimeSpan)(nightEndNextday - singleShift1);
morningWorkingTime1 = new TimeSpan(8, 0, 0);
eveningWorkingTime1 = (TimeSpan)(singleShift2 - morningEndNextday);
}
}
else if (singleShift1 >= midNight24 // <---6---00
&& singleShift1 < nightEnd
&& singleShift2 > midNight24
&& singleShift2 > nightEnd)
{
if (singleShift2 <= morningEnd) // 14<---6---00
{
nightWorkingTime1 = (TimeSpan)(nightEnd - singleShift1);
morningWorkingTime1 = (TimeSpan)(singleShift2 - nightEnd);
}
else if (singleShift2 > morningEnd && singleShift1 >= midNight24) // 22<---14---6--00
{
nightWorkingTime1 = (TimeSpan)(nightEnd - singleShift1);
morningWorkingTime1 = new TimeSpan(8, 0, 0);
eveningWorkingTime1 = (TimeSpan)(singleShift2 - morningEnd);
}
}
#endregion
}
}
#endregion
#region shift2
if (towShift1 != nullDateTme && towShift2 != nullDateTme)
{
if (towShift2 < towShift1) towShift2 = towShift2?.AddDays(1);
if (towShift1 == towShift2) // example 22<---22
{
nightWorkingTime2 = new TimeSpan(8, 0, 0);
morningWorkingTime2 = new TimeSpan(8, 0, 0);
eveningWorkingTime2 = new TimeSpan(8, 0, 0);
}
else
{
#region morning enter 14 <- 6
if (towShift1 >= morningStart // 14<---<6
&& towShift1 < morningEnd
&& towShift2 > morningStart
&& towShift2 <= morningEnd)
{
morningWorkingTime2 = (TimeSpan)(towShift2 - towShift1);
}
else if (towShift1 >= morningStart // <---14---6
&& towShift1 < morningEnd
&& towShift2 > morningStart
&& towShift2 <= nightEndNextday)
{
if (towShift2 <= eveningEnd) // 22<---14---6
{
morningWorkingTime2 = (TimeSpan)(morningEnd - towShift1);
eveningWorkingTime2 = (TimeSpan)(towShift2 - eveningStart);
}
else if (towShift2 > eveningEnd) // 6<---22---14---6
{
morningWorkingTime2 = (TimeSpan)(morningEnd - towShift1);
eveningWorkingTime2 = new TimeSpan(8, 0, 0);
nightWorkingTime2 = (TimeSpan)(towShift2 - eveningEnd);
}
}
else if (towShift1 >= morningStart // 14<---<6
&& towShift1 < morningEnd
&& towShift2 > morningStart
&& towShift2 > nightEndNextday)
{
eveningWorkingTime2 = new TimeSpan(8, 0, 0);
nightWorkingTime2 = new TimeSpan(8, 0, 0);
morningWorkingTime2 = (TimeSpan)(morningEnd - towShift1);
morningWorkingTime2 += (TimeSpan)(towShift2 - nightEndNextday);
}
#endregion
#region evening enter 22 <- 14
if (towShift1 >= eveningStart // 22<---<14
&& towShift1 < eveningEnd
&& towShift2 > eveningStart
&& towShift2 <= eveningEnd)
{
eveningWorkingTime2 = (TimeSpan)(towShift2 - towShift1);
}
else if (towShift1 >= eveningStart // <14---6---22---14
&& towShift1 < eveningEnd
&& towShift2 > eveningStart
&& towShift2 <= morningEndNextday)
{
if (towShift2 <= nightEndNextday) // 6<---22---14
{
eveningWorkingTime2 = (TimeSpan)(eveningEnd - towShift1);
nightWorkingTime2 = (TimeSpan)(towShift2 - eveningEnd);
}
else if (towShift2 > nightEndNextday) // 14<---6---22---14
{
eveningWorkingTime2 = (TimeSpan)(eveningEnd - towShift1);
nightWorkingTime2 = new TimeSpan(8, 0, 0);
morningWorkingTime2 = (TimeSpan)(towShift2 - nightEndNextday);
}
}
else if (towShift1 >= eveningStart // <22---14---6---22---14
&& towShift1 < eveningEnd
&& towShift2 > eveningStart
&& towShift2 > morningEndNextday)
{
nightWorkingTime2 = new TimeSpan(8, 0, 0);
morningWorkingTime2 = new TimeSpan(8, 0, 0);
eveningWorkingTime2 = (TimeSpan)(eveningEnd - towShift1);
eveningWorkingTime2 += (TimeSpan)(towShift2 - morningEndNextday);
}
#endregion
#region night enter 6 <- 22
if ((towShift1 >= nightStart // 6<---<22
&& towShift1 < nightEndNextday
&& towShift2 > nightStart
&& towShift2 <= nightEndNextday)
|| (towShift1 >= midNight24
&& towShift1 < nightEnd
&& towShift2 > midNight24
&& towShift2 <= nightEnd))
{
nightWorkingTime2 = (TimeSpan)(towShift2 - towShift1);
}
else if (towShift1 >= nightStart // <---6---22
&& towShift1 < nightEndNextday
&& towShift2 > nightStart
&& towShift2 > nightEndNextday)
{
if (towShift2 <= morningEndNextday) // 14<---6---22
{
nightWorkingTime2 = (TimeSpan)(nightEndNextday - towShift1);
morningWorkingTime2 = (TimeSpan)(towShift2 - nightEndNextday);
}
else if (towShift2 > morningEndNextday) // 22<---14---6---22
{
nightWorkingTime2 = (TimeSpan)(nightEndNextday - towShift1);
morningWorkingTime2 = new TimeSpan(8, 0, 0);
eveningWorkingTime2 = (TimeSpan)(towShift2 - morningEndNextday);
}
}
else if (towShift1 >= midNight24 // <---6---00
&& towShift1 < nightEnd
&& towShift2 > midNight24
&& towShift2 > nightEnd)
{
if (towShift2 <= morningEnd) // 14<---6---00
{
nightWorkingTime2 = (TimeSpan)(nightEnd - towShift1);
morningWorkingTime2 = (TimeSpan)(towShift2 - nightEnd);
}
else if (towShift2 > morningEnd && towShift1 >= midNight24) // 22<---14---6--00
{
nightWorkingTime2 = (TimeSpan)(nightEnd - towShift1);
morningWorkingTime2 = new TimeSpan(8, 0, 0);
eveningWorkingTime2 = (TimeSpan)(towShift2 - morningEnd);
}
}
#endregion
}
}
#endregion
#region FinalResult
var result = new RotatingShiftViewModel();
result.MorningWorkSpan = morningWorkingTime1.Add(morningWorkingTime2);
result.EveningWorkSpan = eveningWorkingTime1.Add(eveningWorkingTime2);
result.NightWorkSpan = nightWorkingTime1.Add(nightWorkingTime2);
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 = "شب";
}
}
#endregion
return result;
}
public TimeSpan Over22Check(DateTime date1, DateTime date2)
{
var Over22 = new TimeSpan();
var singleShiftOver24 = Convert.ToDateTime("00:00");
var nightWork22 = Convert.ToDateTime("22:00");
var nightWork6 = Convert.ToDateTime("06:00");
var starTimeSingel1 = date1;
var endTimeSingel2 = date2;
var check = false;
if ((endTimeSingel2 > nightWork22 || endTimeSingel2 == singleShiftOver24) && starTimeSingel1 < nightWork22 &&
starTimeSingel1 > nightWork6)
{
var nightWork6NextDay = new DateTime();
if (endTimeSingel2.Date > starTimeSingel1.Date)
// 15:00 - 00:00
nightWork6NextDay = nightWork6.AddDays(1);
check = true;
if (endTimeSingel2 <= nightWork6NextDay)
{
check = true;
Over22 = endTimeSingel2 - nightWork22;
}
else
{
check = true;
Over22 = nightWork6NextDay - nightWork22;
}
}
if (date2 > singleShiftOver24 && endTimeSingel2 <= nightWork6 && starTimeSingel1 < nightWork22 &&
starTimeSingel1 > nightWork6)
{
check = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
Over22 = endTimeSingel2 - nightWork22;
}
if (endTimeSingel2 > singleShiftOver24 && endTimeSingel2 <= nightWork6 && starTimeSingel1 >= nightWork22)
{
check = true;
endTimeSingel2 = endTimeSingel2.AddDays(1);
Over22 = endTimeSingel2 - starTimeSingel1;
}
if (endTimeSingel2 > singleShiftOver24 && endTimeSingel2 <= nightWork6 &&
starTimeSingel1 >= singleShiftOver24 && starTimeSingel1 <= nightWork6)
{
check = true;
Over22 = endTimeSingel2 - starTimeSingel1;
}
if (starTimeSingel1 >= nightWork22 && endTimeSingel2 > nightWork22)
{
check = true;
var nightWork6NextDay = new DateTime();
if (endTimeSingel2.Date > starTimeSingel1.Date)
{
nightWork6NextDay = nightWork6.AddDays(1);
if (endTimeSingel2 <= nightWork6NextDay)
{
check = true;
Over22 = endTimeSingel2 - starTimeSingel1;
}
else
{
check = true;
Over22 = nightWork6NextDay - starTimeSingel1;
}
}
}
if (endTimeSingel2.Date == starTimeSingel1.Date)
{
if (endTimeSingel2 <= nightWork6 && starTimeSingel1 >= singleShiftOver24)
{
check = true;
Over22 = endTimeSingel2 - starTimeSingel1;
}
else if (endTimeSingel2 >= nightWork6 && starTimeSingel1 >= singleShiftOver24 &&
endTimeSingel2 <= nightWork22)
{
if (starTimeSingel1 >= nightWork6 && endTimeSingel2 <= nightWork22)
Over22 = TimeSpan.Zero;
else
Over22 = nightWork6 - starTimeSingel1;
}
else if (starTimeSingel1 >= singleShiftOver24 && endTimeSingel2 > nightWork22)
{
if (starTimeSingel1 >= nightWork22)
{
Over22 = endTimeSingel2 - starTimeSingel1;
}
else if (starTimeSingel1 < nightWork22 && endTimeSingel2 > nightWork22)
{
if (starTimeSingel1 < nightWork6)
{
var step1 = nightWork6 - starTimeSingel1;
var step2 = endTimeSingel2 - nightWork22;
var step3 = step1 + step2;
Over22 = step3;
}
else
{
Over22 = endTimeSingel2 - nightWork22;
}
}
}
else if (starTimeSingel1 > nightWork22 && endTimeSingel2 > nightWork22)
{
Over22 = endTimeSingel2 - starTimeSingel1;
}
}
return Over22;
}
public TimeSpan Over22Complex(DateTime date1, DateTime date2)
{
var Over22Result = new TimeSpan();
var Over24 = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0);
var nightWork22 = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0);
var nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0);
var nightWork6 = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0);
var nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0);
var starTime = date1;
var endTime = date2;
if (endTime > nightWork22 && starTime < nightWork22)
{
if (starTime.Date == endTime.Date) nightWork6 = nightWork6.AddDays(1);
if (endTime <= nightWork6)
Over22Result = endTime - nightWork22;
else if (endTime > nightWork6) Over22Result = nightWork6 - nightWork22;
}
if (endTime > nightWork22 && starTime >= nightWork22)
{
if (endTime <= nightWork6)
Over22Result = endTime - starTime;
else if (endTime > nightWork6) Over22Result = nightWork6 - starTime;
}
if (starTime.Hour >= 0 && starTime.Minute >= 0 && starTime < nightWork6 && starTime.Date == nightWork6.Date)
{
if (endTime > nightWork6)
Over22Result = nightWork6 - starTime;
else if (endTime <= nightWork6) Over22Result = endTime - starTime;
//nightWork22 = nightWork22.Subtract(new TimeSpan(1, 0, 0, 0));
}
return Over22Result;
}
public TimeSpan Over22Complex2424(DateTime date1, DateTime date2)
{
var Over22Result = new TimeSpan();
var Over24a = new DateTime(date1.Year, date1.Month, date1.Day, 0, 0, 0);
var Over24b = new DateTime(date2.Year, date2.Month, date2.Day, 0, 0, 0);
var nightWork22a = new DateTime(date1.Year, date1.Month, date1.Day, 22, 0, 0);
var nightWork22b = new DateTime(date2.Year, date2.Month, date2.Day, 22, 0, 0);
var nightWork6a = new DateTime(date1.Year, date1.Month, date1.Day, 6, 0, 0);
var nightWork6b = new DateTime(date2.Year, date2.Month, date2.Day, 6, 0, 0);
var starTime = date1;
var endTime = date2;
if (starTime >= Over24a && starTime <= nightWork6a)
{
if (endTime > nightWork22a && endTime <= nightWork6b)
{
var night1 = nightWork6a - starTime;
var night2 = endTime - nightWork22a;
Over22Result = night1.Add(night2);
}
if (endTime > nightWork6a && endTime < nightWork22a) Over22Result = nightWork6a - starTime;
}
if (starTime >= nightWork6a && starTime < nightWork22a)
{
if (endTime > nightWork22a && endTime <= nightWork6b) Over22Result = endTime - nightWork22a;
if (endTime > nightWork6b) Over22Result = nightWork6b - nightWork22a;
}
if (starTime >= nightWork22a && starTime < Over24b)
{
if (endTime <= nightWork22b) Over22Result = nightWork6b - starTime;
if (endTime > nightWork22b)
{
var night1 = nightWork6b - starTime;
var night2 = endTime - nightWork22b;
Over22Result = night1.Add(night2);
}
}
return Over22Result;
}
#endregion
#region NewChangeByHeydari
public IActionResult OnPostDeleteAllCheckouts(List<long> ids, long workshopId)
{
var op = new OperationResult();
var workshop = _workshopApplication.GetDetails(workshopId);
var empId = workshop.EmployerIdList.FirstOrDefault();
var isBlock = _personalContractingPartyApp.IsBlockByEmployerId(empId);
if (isBlock == "true")
return new JsonResult(new
{
successDelete = false
});
var hasSignatureIds = _checkoutApplication.CheckHasSignature(ids);
if (hasSignatureIds == null || (hasSignatureIds != null && hasSignatureIds.Count == 0)) //امضا نداشته باشد
op = _checkoutApplication.DeleteAllCheckouts(ids);
return new JsonResult(new
{
hasSignature = hasSignatureIds != null && hasSignatureIds.Count() > 0 ? true : false,
signatureList = hasSignatureIds,
successDelete = op.IsSuccedded
});
}
public IActionResult OnPostDeleteCheckout(long id)
{
var ids = new List<long>();
ids.Add(id);
var op = new OperationResult();
var hasSignatureIds = _checkoutApplication.CheckHasSignature(ids);
if (hasSignatureIds == null ||
(hasSignatureIds != null && hasSignatureIds.Count == 0)) //امضا نداشته باشد
op = _checkoutApplication.DeleteCheckout(id);
return new JsonResult(new
{
hasSignature = hasSignatureIds != null && hasSignatureIds.Count() > 0 ? true : false,
signatureList = hasSignatureIds,
successDelete = op.IsSuccedded
});
}
public IActionResult OnPostSignatureAll(List<long> ids, long workshopId)
{
var result = new OperationResult();
var workshop = _workshopApplication.GetDetails(workshopId);
var empId = workshop.EmployerIdList.FirstOrDefault();
var isBlock = _personalContractingPartyApp.IsBlockByEmployerId(empId);
if (isBlock == "true")
return new JsonResult(new
{
isSuccedded = false
});
foreach (var item in ids)
{
result = _checkoutApplication.Sign(item);
if (!result.IsSuccedded)
break;
}
return new JsonResult(result);
}
public IActionResult OnPostDeleteAllSignature(List<long> ids, long workshopId)
{
var permissions = _authHelper.GetPermissions();
var checkHasPermission = permissions.Any(n => n.Equals(20222));
var result = new OperationResult();
var workshop = _workshopApplication.GetDetails(workshopId);
var empId = workshop.EmployerIdList.FirstOrDefault();
var isBlock = _personalContractingPartyApp.IsBlockByEmployerId(empId);
if (isBlock == "true" || !checkHasPermission)
return new JsonResult(new
{
isSuccedded = false
});
foreach (var item in ids)
{
result = _checkoutApplication.UnSign(item);
if (!result.IsSuccedded)
break;
}
return new JsonResult(result);
}
#endregion
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}