Compare commits

..

2 Commits

Author SHA1 Message Date
112369c2a5 add fridays to holiday in DashboardController 2025-09-21 11:30:46 +03:30
53eab1be67 feat: Add DashboardController for Admin 2025-09-21 11:03:06 +03:30
74 changed files with 4999 additions and 37830 deletions

View File

@@ -477,42 +477,26 @@ public static class Tools
string bb = string.Empty;
bool isNegative = false;
try
for (int x = 0; x < myMoney.Length; x++)
{
if (!string.IsNullOrWhiteSpace(myMoney))
if (char.IsDigit(myMoney[x]))
{
for (int x = 0; x < myMoney.Length; x++)
{
if (char.IsDigit(myMoney[x]))
{
bb += myMoney[x];
}
else if (myMoney[x] == '-' && bb.Length == 0)
{
// اگر علامت منفی قبل از اولین عدد آمد، در نظر بگیر
isNegative = true;
}
}
if (bb.Length > 0)
{
double res = double.Parse(bb);
return isNegative ? -res : res;
}
else
{
return 0;
}
bb += myMoney[x];
}
else
else if (myMoney[x] == '-' && bb.Length == 0)
{
return 0;
// اگر علامت منفی قبل از اولین عدد آمد، در نظر بگیر
isNegative = true;
}
}
catch (Exception)
{
if (bb.Length > 0)
{
double res = double.Parse(bb);
return isNegative ? -res : res;
}
else
{
return 0;
}
}

View File

@@ -10,7 +10,7 @@ namespace Company.Domain.ClassifiedSalaryAgg
{
public class ClassifiedSalary : EntityBase
{
//test//test
//test
public ClassifiedSalary(double group1, double group2, double group3, double group4, double group5, double group6, double group7, double group8, double group9, double group10, double group11, double group12, double group13, double group14, double group15, double group16, double group17, double group18, double group19, double group20, DateTime startDate, DateTime endDate, int year)
{
Group1 = group1;

View File

@@ -17,7 +17,7 @@ public class Contract : EntityBase
public Contract(long personnelCode, long employeeId, long employerId,
long workshopIds, long yearlySalaryId, DateTime contarctStart, DateTime contractEnd, string dayliWage,
string archiveCode, DateTime getWorkDate, DateTime setContractDate, string jobType,
string contractType, string workshopAddress1, string workshopAddress2, string consumableItems, long jobTypeId, string housingAllowance, string agreementSalary, string workingHoursWeekly, string familyAllowance, string contractPeriod, double dailySalaryAffected, double baseYearAffected, double dailySalaryUnAffected, double baseYearUnAffected, bool hasManualDailyWage, string dailyWageType)
string contractType, string workshopAddress1, string workshopAddress2, string consumableItems, long jobTypeId, string housingAllowance, string agreementSalary, string workingHoursWeekly, string familyAllowance, string contractPeriod)
{
PersonnelCode = personnelCode;
EmployeeId = employeeId;
@@ -45,19 +45,6 @@ public class Contract : EntityBase
WorkingHoursWeekly = workingHoursWeekly;
FamilyAllowance = familyAllowance;
ContractPeriod = contractPeriod;
//پراپرتی های جدید برای دستمزد دلخواه
#region NewManualDailyWage
DailySalaryAffected = dailySalaryAffected;
BaseYearAffected = baseYearAffected;
DailySalaryUnAffected = dailySalaryUnAffected;
BaseYearUnAffected = baseYearUnAffected;
HasManualDailyWage = hasManualDailyWage;
DailyWageType = dailyWageType;
#endregion
Signature = "0";
@@ -78,42 +65,7 @@ public class Contract : EntityBase
public DateTime SetContractDate { get; private set; }
public string JobType { get; private set; }
public string ContractType { get; private set; }
/// <summary>
/// مزد تجمیعی یعد از تاثیر ساعت کار
/// </summary>
public string DayliWage { get; private set; }
/// <summary>
/// دستمزد روزانه خام بعد از تاثیر ساعت کار
/// </summary>
public double DailySalaryAffected { get; set; }
/// <summary>
/// پایه سنوات بعد از تاثیر ساعت کار
/// </summary>
public double BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه قبل از تاثیر ساعت کار
/// </summary>
public double DailySalaryUnAffected { get; set; }
/// <summary>
/// پایه سنوات قبل از تاثیر ساعت کار
/// </summary>
public double BaseYearUnAffected { get; set; }
/// <summary>
/// آیا دستمزد روزانه دستی وارد شده است؟
/// </summary>
public bool HasManualDailyWage { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
public string IsActiveString { get; private set; }
public string ArchiveCode { get; private set; }
public string WorkshopAddress1 { get; private set; }
@@ -137,7 +89,6 @@ public class Contract : EntityBase
public Contract()
{
WorkingHoursList = new List<WorkingHours>();
}
public void Edit(long pesrsonnelCode, long employeeId, long employerId, long workshopId, long yearlySalaryId,

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.Contract;
@@ -10,24 +9,6 @@ namespace Company.Domain.ContractAgg;
public interface IContractRepository : IRepository<long, Contract>
{
/// <summary>
/// دریافت مزد ارتقاء یافته
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeeId"></param>
/// <param name="yearlySalaryId"></param>
/// <returns></returns>
Task<double> GetManualDailWage(long workshopId, long employeeId, long yearlySalaryId, DateTime contractStart);
/// <summary>
/// دریافت لیست مزد ارتقاء یافته
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeeId"></param>
/// <param name="contractStart"></param>
/// <returns></returns>
Task<UpgradeManualDailyWageModel> GetManualDailWageList(long workshopId, long employeeId,
DateTime contractStart);
EditContract GetDetails(long id);
EditContract GetContractByStartEnd(DateTime start, DateTime end, long workshopId, long employeeId);

View File

@@ -22,7 +22,7 @@ public interface ILeaveRepository : IRepository<long, Leave>
bool CheckContractExist(DateTime myDate,long employeeId, long workshopId);
LeavErrorViewModel CheckErrors(DateTime startLeav, DateTime endLeav, long employeeId, long workshopId,bool isInvalid);
LeavErrorViewModel CheckErrors(DateTime startLeav, DateTime endLeav, long employeeId, long workshopId);
LeaveViewModel LeavOnChekout(DateTime starContract, DateTime endContract, long employeeId, long workshopId);
List<LeaveMainViewModel> searchClient(LeaveSearchModel searchModel);
LeavePrintViewModel PrintOne(long id);

View File

@@ -8,9 +8,7 @@ public class Leave: EntityBase
{
public Leave(DateTime startLeave, DateTime endLeave,
string leaveHourses, long workshopId, long employeeId,
string paidLeaveType, string leaveType, string employeeFullName, string workshopName,
bool isAccepted, string decription, int year, int month, TimeSpan shiftDuration,
bool hasShiftDuration,bool isInvalid)
string paidLeaveType, string leaveType, string employeeFullName, string workshopName, bool isAccepted, string decription, int year, int month, TimeSpan shiftDuration, bool hasShiftDuration)
{
StartLeave = startLeave;
EndLeave = endLeave;
@@ -27,7 +25,6 @@ public class Leave: EntityBase
Month = month;
ShiftDuration = shiftDuration;
HasShiftDuration = hasShiftDuration;
IsInvalid = isInvalid;
}
public DateTime StartLeave { get; private set; }
@@ -46,10 +43,6 @@ public class Leave: EntityBase
public TimeSpan ShiftDuration { get; private set; }
public bool HasShiftDuration { get; private set; }
/// <summary>
///آیا فاقد اعتبار است. فاقد اعتبار ها فقط برای فیش های غیررسمی مورد استفاده قرار میگیرند
/// </summary>
public bool IsInvalid { get; private set; }
public void Edit(DateTime startLeave, DateTime endLeave,
string leaveHourses, long workshopId, long employeeId,

View File

@@ -15,7 +15,7 @@ namespace Company.Domain.RollCallAgg;
public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
{
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute);
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, bool totalLeaveCompute);
/// <summary>
/// محاسبه ساعات کارکرد پرسنل در صورت داشتن حضور غیاب

View File

@@ -6,7 +6,6 @@ using CompanyManagment.App.Contracts.YearlySalary;
using System.Threading.Tasks;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.Contract;
namespace Company.Domain.YearlySalaryAgg;
@@ -18,39 +17,11 @@ public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
void TestDayliFeeCompute();
List<string> GetYears();
List<YearlySalaryViewModel> GetYearlySalary();
/// <summary>
/// دریافت مزد روزانه فیش حقوقی
/// </summary>
/// <param name="contract"></param>
/// <param name="checkoutStart"></param>
/// <param name="checkoutEnd"></param>
/// <returns></returns>
Task<double> GetCheckoutDailyWage(EditContract contract, DateTime checkoutStart, DateTime checkoutEnd);
/// <summary>
/// دریافت مزد روزانه بر اساس تاریخ شروع و پایان
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
Task<(double dailyWage, long yearlySalaryId)> GetDailyWageByStartEnd(DateTime start, DateTime end);
MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart,DateTime contractEnd, double daylyWage, string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking,string shiftWork);
double GetLeavePay(DateTime contractStart, DateTime contractEnd, double daylyWage, double consumableItem, double housingAllowance, double familyAllowance , string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM);
double GetOverTimeWorking(double dayliWage, string overTimeWorkH, string overTimeWorkM);
double GetOverNightWorking(double dayliWage, string overNightWorkH, string overNightWorkM, string weeklyWorkingTime, int officialholiday, int friday, DateTime contractStart, DateTime contractEnd, string totalHoursH, string totalHorsM);
/// <summary>
/// متد ارتقاء مزد دلخواه
/// </summary>
/// <param name="newContractStart"></param>
/// <param name="lastContractStart"></param>
/// <param name="lastContractManualDailyWage"></param>
/// <returns></returns>
Task<UpgradeManualDailyWageModel> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart,
double lastContractManualDailyWage);
/// <summary>
/// متد محاسبه پایه سنوات و لیست پایه سنوات های پرسنل
/// </summary>

View File

@@ -160,37 +160,4 @@ public class CreateCheckout
public TimeSpan TotalPaidLeave { get; set; }
public TimeSpan TotalSickLeave { get; set; }
public bool HasLeft { get; set; }
/// <summary>
/// دستمزد روزانه خام بعد از تاثیر ساعت کار
/// </summary>
public double DailySalaryAffected { get; set; }
/// <summary>
/// پایه سنوات بعد از تاثیر ساعت کار
/// </summary>
public double BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه قبل از تاثیر ساعت کار
/// </summary>
public double DailySalaryUnAffected { get; set; }
/// <summary>
/// دستمزد روزانه دریافت شده از سمت فرانت
/// </summary>
public string DailySalaryUnAffectedStr { get; set; }
/// <summary>
/// مزد سالانه نرمال دریافت از سمت فرانت
/// </summary>
public string NormalDailyWage { get; set; }
/// <summary>
/// پایه سنوات قبل از تاثیر ساعت کار
/// </summary>
public double BaseYearUnAffected { get; set; }
}

View File

@@ -61,23 +61,9 @@ public class ComputingViewModel
/// </summary>
public TimeSpan EmployeeMandatoryHours { get; set; }
/// <summary>
/// پایه سنوات قبل از تاثیر ساعت کار
/// مجموع مرخصی های پرسنل در این فیش حقوقی
/// </summary>
public double BaseYearUnAffected { get; set; }
/// <summary>
/// پایه سنوات بعد از تاثیر ساعت کار
/// </summary>
public double BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه خام بعد از تاثیر ساعت کار
/// </summary>
public double DailySalaryAffected { get; set; }
//public TimeSpan TotalLeaveOnThisCheckout { get; set; }
//public List<string> holidays;
}

View File

@@ -1,70 +0,0 @@
using CompanyManagment.App.Contracts.YearlySalary;
using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.Contract;
/// <summary>
/// نمایش نحوه محاسبه پایه سنوات و دستمزد روزانه
/// </summary>
public class ContractDailyWageAndBaseYearReport
{
/// <summary>
/// لیست داده های محاسبه پایه سنوات
/// </summary>
public BaseYearDataViewModel BaseYearDataViewModel { get; set; }
/// <summary>
/// پایه سنوات متاثر از ساعت کار
/// </summary>
public string BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه متاثر از ساعت کار
/// </summary>
public string DailySalaryAffected { get; set; }
/// <summary>
/// دستمزد روزانه بدون تاثیر ساعت کار
/// </summary>
public string DailySalaryUnAffected { get; set; }
/// <summary>
/// دستمزد روزانه تجمیعی
/// </summary>
public string DailyWage { get; set; }
/// <summary>
/// تاریخ قراداد
/// </summary>
public string ContractDate { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
/// <summary>
/// لیست ارتقاء
/// </summary>
public List<UpgradeManualDailyWageList> UpgradeManualDailyWageLists { get; set; }
/// <summary>
/// نام پرسنل
/// </summary>
public string EmployeeName { get; set; }
/// <summary>
/// نام کارگاه
/// </summary>
public string WorkshopName { get; set; }
/// <summary>
/// آیا با متد جدید محاسبه شده
/// </summary>
public bool OldComputeMethod { get; set; }
/// <summary>
/// آیا محاسبات با مقادیر ذخیره شده مغایرت دارد
/// </summary>
public bool Contradiction { get; set; }
}

View File

@@ -140,36 +140,7 @@ public class CreateContract
public string ConvertMonth { get; set; }
public string FormStep { get; set; }
/// <summary>
/// دستمزد روزانه خام بعد از تاثیر ساعت کار
/// </summary>
public double DailySalaryAffected { get; set; }
/// <summary>
/// پایه سنوات بعد از تاثیر ساعت کار
/// </summary>
public double BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه قبل از تاثیر ساعت کار
/// </summary>
public double DailySalaryUnAffected { get; set; }
/// <summary>
/// پایه سنوات قبل از تاثیر ساعت کار
/// </summary>
public double BaseYearUnAffected { get; set; }
/// <summary>
/// آیا دستمزد روزانه دستی وارد شده است؟
/// </summary>
public bool HasManualDailyWage { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
public List<ContractViweModel> Contracts { get; set; }
public List<WorkshopViewModel> Workshops { get; set; }
public List<EmployerViewModel> Employers { get; set; }

View File

@@ -7,14 +7,6 @@ namespace CompanyManagment.App.Contracts.Contract;
public interface IContractApplication
{
/// <summary>
/// دریافت مزد ارتقاء یافته
/// </summary>
/// <param name="workshopId"></param>
/// <param name="employeeId"></param>
/// <param name="yearlySalaryId"></param>
/// <returns></returns>
Task<double> GetManualDailWage(long workshopId, long employeeId, long yearlySalaryId, DateTime contractStart);
OperationResult Create(CreateContract command);
OperationResult CreateNew(createContractModel command);
OperationResult Edit(EditContract command);

View File

@@ -1,36 +0,0 @@
using System.Collections.Generic;
namespace CompanyManagment.App.Contracts.Contract;
/// <summary>
/// ویو مدل رتقاء دستمزد روزانه و لیست ارتقاء
/// </summary>
public class UpgradeManualDailyWageModel
{
/// <summary>
/// دستمزد روزانه
/// </summary>
public double DailyWage{ get; set; }
/// <summary>
/// لیست ارتقاء
/// </summary>
public List<UpgradeManualDailyWageList> UpgradeManualDailyWageLists { get; set; }
}
/// <summary>
/// لیست ارتقاء
/// </summary>
public class UpgradeManualDailyWageList
{
/// <summary>
/// تاریخ شروع و پایان بازه ارتقاء
/// </summary>
public string StartEndDate { get; set; }
/// <summary>
/// دستمزد روزانه
/// </summary>
public string DailyWage { get; set; }
}

View File

@@ -37,5 +37,4 @@ public class CreateLeave
public List<CustomizeRotatingShiftsViewModel> RotatingShifts { get; set; }
public bool HasRollCall { get; set; }
public CustomizeRotatingShiftsViewModel SelectedShift { get; set; }
public bool IsInvallid { get; set; }
}

View File

@@ -14,8 +14,5 @@ namespace CompanyManagment.App.Contracts.Leave
public string LeftWorlErrMessage { get; set; }
public bool HasNotContract { get; set; }
public string ContractErrMessage { get; set; }
public bool HasHolidayError { get; set; }
public string HolidayErrorMessage { get; set; }
}
}

View File

@@ -27,5 +27,4 @@ public class LeavePrintViewModel
public string MonthGr { get; set; }
public int PrintCounter { get; set; }
public List<EmprViewModel> EmployerList { get; set; }
public bool IsInvalid { get; set; }
}

View File

@@ -20,5 +20,4 @@ public class LeaveSearchModel
public int Year { get; set; }
public int Month { get; set; }
public int PageIndex { get; set; }
public bool IsInvalid { get; set; }
}

View File

@@ -27,5 +27,4 @@ public class LeaveViewModel
public TimeSpan ShiftDuration { get; set; }
public bool HasShiftDuration { get; set; }
public bool IsInvalid { get; set; }
}

View File

@@ -8,8 +8,7 @@ namespace CompanyManagment.App.Contracts.RollCall;
public interface IRollCallMandatoryApplication
{
bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart);
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute);
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, bool totalLeaveCompute);
/// <summary>
/// گزارش نوبت کاری حضور غیاب

View File

@@ -311,9 +311,4 @@ public class CreateWorkingHoursTemp
public string WeeklyWorkingTime { get; set; }
public long ContractId { get; set; }
public long WorknigHoursId { get; set; }
/// <summary>
/// دستمزد روزانه قبل از تاثیر ساعت کار
/// </summary>
public double DailySalaryUnAffected { get; set; }
}

View File

@@ -1,6 +1,4 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace CompanyManagment.App.Contracts.Workshop.DTOs;
namespace CompanyManagment.App.Contracts.Workshop.DTOs;
public class AutoExtensionEmployeeListDto
{
@@ -34,17 +32,6 @@ public class AutoExtensionEmployeeListDto
public bool EmployeeHasCreateContract { get; set; }
/// <summary>
/// دستمزد روزانه دریافت شده از سمت فرانت
/// </summary>
public string DailySalaryUnAffectedStr => "0";
/// <summary>
/// مزد سالانه نرمال دریافت از سمت فرانت
/// </summary>
public string NormalDailyWage => "0";
public string ContarctStart { get; set; }
public string ContractEnd { get; set; }

View File

@@ -38,46 +38,6 @@ public class createContractModel
public long YearlySalaryId { get; set; }
public long EmployerId { get; set; }
/// <summary>
/// دستمزد روزانه خام بعد از تاثیر ساعت کار
/// </summary>
public double DailySalaryAffected { get; set; }
/// <summary>
/// پایه سنوات بعد از تاثیر ساعت کار
/// </summary>
public double BaseYearAffected { get; set; }
/// <summary>
/// دستمزد روزانه قبل از تاثیر ساعت کار
/// </summary>
public double DailySalaryUnAffected { get; set; }
/// <summary>
/// دستمزد روزانه دریافت شده از سمت فرانت
/// </summary>
public string DailySalaryUnAffectedStr { get; set; }
/// <summary>
/// مزد سالانه نرمال دریافت از سمت فرانت
/// </summary>
public string NormalDailyWage { get; set; }
/// <summary>
/// پایه سنوات قبل از تاثیر ساعت کار
/// </summary>
public double BaseYearUnAffected { get; set; }
/// <summary>
/// آیا دستمزد روزانه دستی وارد شده است؟
/// </summary>
public bool HasManualDailyWage { get; set; }
/// <summary>
/// نوع دستمزد انتخاب شده
/// </summary>
public string DailyWageType { get; set; }
}

View File

@@ -24,11 +24,6 @@ public class BaseYearDataViewModel
/// </summary>
public double BaseYearResult { get; set; }
/// <summary>
/// اولین روز شروع بکار
/// </summary>
public string FirstWorkDayInLeftWork { get; set; }
/// <summary>
/// لیست تمام پایه سنوات های محاسبه شده
/// </summary>
@@ -69,29 +64,4 @@ public class BaseYearDataList
/// سالی که در آن پایه سنوات تعلق گرفته
/// </summary>
public string Year { get; set; }
/// <summary>
///روزی که پایه سنوات تعلق گرفته
///یا شروع بکار. ترک کار
/// شمسی
/// </summary>
public string BaseYearPayDay { get; set; }
/// <summary>
/// روزی که پایه سنوات تعلق گرفته
///یا شروع بکار. ترک کار
/// میلادی
/// </summary>
public DateTime BaseYearPayDayGr { get; set; }
/// <summary>
/// آیا تاریخ شروع بکار دارد
/// </summary>
public bool HasStartWork { get; set; }
/// <summary>
/// آیا تاریخ پایان کار دارد
/// </summary>
public bool HasLeftWork { get; set; }
}

View File

@@ -2,9 +2,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.LeftWork;
namespace CompanyManagment.App.Contracts.YearlySalary;
@@ -16,35 +14,6 @@ public interface IYearlySalaryApplication
OperationResult Err();
EditYearlySalary GetDetails(long id);
List<YearlySalaryViewModel> GetYearlySalary();
/// <summary>
/// متد ارتقاء مزد دلخواه
/// </summary>
/// <param name="newContractStart"></param>
/// <param name="lastContractStart"></param>
/// <param name="lastContractManualDailyWage"></param>
/// <returns></returns>
Task<UpgradeManualDailyWageModel> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart,
double lastContractManualDailyWage);
/// <summary>
/// متد محاسبه پایه سنوات و لیست پایه سنوات های پرسنل
/// </summary>
/// <param name="contractStart"></param>
/// <param name="contractEnd"></param>
/// <param name="employeeId"></param>
/// <param name="workshopId"></param>
/// <param name="leftWorkList"></param>
/// <returns></returns>
Task<BaseYearDataViewModel> BaseYearComputeByContractId(long contractId);
/// <summary>
/// دریافت مزد روزانه بر اساس تاریخ شروع و پایان
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
Task<(double dailyWage, long yearlySalaryId)> GetDailyWageByStartEnd(DateTime start, DateTime end);
List<YearlySalaryViewModel> Search(YearlySalarySearchModel searchModel);
EditYearlySalary GetDetailsBySearchModel(YearlySalarySearchModel searchModel);

View File

@@ -152,38 +152,17 @@ public class CheckoutApplication : ICheckoutApplication
var housingAllowance = command.HousingAllowance.MoneyToDouble();
//حق تاهل
var marriedAllowance = command.MarriedAllowance.MoneyToDouble();
//var MontlyYearsBunos =
//_yearlySalaryRepository.GetMontlyBunosYears(command.WeeklyTime, command.ContractStartGr, command.ContractEndGr, dayliWage, command.WorkingWeeklyTime, command.officialholiday, command.friday, command.TotalHolidaysAndNotH, command.TotalHolidaysAndNotM, command.Basic, command.FridayStarttoEnd, command.DailFeeComplete, command.HasRollCall, command.HolidayWorking, command.ShiftWork);
//دستمزد ماهانه
#region Salary
var totalDays = (command.ContractEndGr - command.ContractStartGr).TotalDays + 1;
var mandatoryDays = totalDays - command.FridayStarttoEnd - command.officialholiday;
if (!command.HasRollCall && command.ShiftWork != "4")
mandatoryDays = totalDays - command.FridayStarttoEnd;
var monthlyWage = command.DailySalaryAffected * totalDays;
//پایه سنوات
var bacicYears = command.BaseYearAffected * totalDays;
#endregion
//سنوات
var years = command.YearsPay;
var MontlyYearsBunos =
_yearlySalaryRepository.GetMontlyBunosYears(command.WeeklyTime, command.ContractStartGr, command.ContractEndGr, dayliWage, command.WorkingWeeklyTime, command.officialholiday, command.friday, command.TotalHolidaysAndNotH, command.TotalHolidaysAndNotM, command.Basic, command.FridayStarttoEnd, command.DailFeeComplete, command.HasRollCall, command.HolidayWorking, command.ShiftWork);
//دستمزد ماهانه
var monthlyWage = MontlyYearsBunos.MontlyWage;
//سنوات
var years = command.YearsPay;
//عیدی و پاداش
var bunos = command.BonusesPay;
//فاطمه احمدژاد === موقت عیدی و پاداش و سنوات حساب نشه
if (command.EmployeeId == 45104 && command.WorkshopId == 315)
{
years = 0;
bunos = 0;
}
var sumOfWorkingDays = $"{totalDays}";
//پایه سنوات
var bacicYears = MontlyYearsBunos.BasicYears;
var sumOfWorkingDays = MontlyYearsBunos.SumOfWorkingDay;
if (command.friday > 0)
{
var fridayPercent = dayliWage * 40 / 100;
@@ -221,11 +200,11 @@ public class CheckoutApplication : ICheckoutApplication
.Select(x => new CheckoutSalaryAid(x.Amount, x.SalaryAidDateTimeGe, x.SalaryAidDateTimeFa, x.CalculationDateTimeGe, x.CalculationDateTimeFa, x.Id)).ToList();
command.SalaryAidDeduction = salaryAids.Sum(x => x.Amount.MoneyToDouble());
var loanInstallments = _rollCallMandatoryRepository.LoanInstallmentForCheckout(command.EmployeeId,
command.WorkshopId, command.ContractStartGr, command.HasLeft ? DateTime.MaxValue : command.ContractEndGr)
.Select(x =>
new CheckoutLoanInstallment(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList();
command.WorkshopId, command.ContractStartGr, command.ContractEndGr)
.Select(x => new CheckoutLoanInstallment(x.Amount, x.Month, x.Year, x.IsActive, x.RemainingAmount, x.LoanAmount, x.Id)).ToList();
command.InstallmentDeduction = loanInstallments.Sum(x => x.AmountForMonth.MoneyToDouble());

View File

@@ -78,11 +78,6 @@ public class ContractApplication : IContractApplication
}
public async Task<double> GetManualDailWage(long workshopId, long employeeId, long yearlySalaryId, DateTime contractStart)
{
return await _contractRepository.GetManualDailWage(workshopId, employeeId, yearlySalaryId, contractStart);
}
public OperationResult Create(CreateContract command)
{
var yearlysalaryList = _yearlySalaryRepository.GetYearlySalary();
@@ -147,9 +142,7 @@ public class ContractApplication : IContractApplication
yearlySalarId,
start, end, command.DayliWage, command.ArchiveCode, getWorkdate, setContractDate,
command.JobType, command.ContractType, command.WorkshopAddress1, command.WorkshopAddress2,
command.ConsumableItems, command.JobTypeId, command.HousingAllowance, command.AgreementSalary,
command.WorkingHoursWeekly, command.FamilyAllowance, command.ContractPeriod,command.DailySalaryAffected,
command.BaseYearAffected, command.DailySalaryUnAffected,command.BaseYearUnAffected, command.HasManualDailyWage, command.DailyWageType);
command.ConsumableItems, command.JobTypeId, command.HousingAllowance, command.AgreementSalary, command.WorkingHoursWeekly, command.FamilyAllowance, command.ContractPeriod);
_contractRepository.Create(makeContract);
_contractRepository.SaveChanges();
@@ -363,9 +356,7 @@ public class ContractApplication : IContractApplication
command.YearlySalaryId,
start, end, command.DayliWage, command.ArchiveCode, getWorkdate, setContractDate,
command.JobName, command.ContractType, command.WorkshopAddress1, command.WorkshopAddress2,
command.ConsumableItems, command.JobId, command.HousingAllowance, "0", command.WorkingHoursWeekly, command.FamilyAllowance, command.ContractPeriod,
command.DailySalaryAffected,
command.BaseYearAffected, command.DailySalaryUnAffected, command.BaseYearUnAffected, command.HasManualDailyWage, command.DailyWageType);
command.ConsumableItems, command.JobId, command.HousingAllowance, "0", command.WorkingHoursWeekly, command.FamilyAllowance, command.ContractPeriod);
_contractRepository.Create(makeContract);
_contractRepository.SaveChanges();

View File

@@ -319,10 +319,7 @@ namespace CompanyManagment.Application
if (workshopId == 170)
{
var exceptionEmployeeIds = _customizeWorkshopGroupSettingsRepository
.GetEmployeeSettingsByGroupSettingsId(117)
.Select(x => x.EmployeeId)
.Where(x=> workshopLeftWorksInMonth.Select(l=>l.EmployeeId).Contains(x)).ToList();
var exceptionEmployeeIds = _customizeWorkshopGroupSettingsRepository.GetEmployeeSettingsByGroupSettingsId(117).Select(x => x.EmployeeId).ToList();
foreach (var employeesId in exceptionEmployeeIds)
{

View File

@@ -249,10 +249,7 @@ namespace CompanyManagment.Application
if (workshopId == 170)
{
var exceptionEmployeeIds = _customizeWorkshopGroupSettingsRepository
.GetEmployeeSettingsByGroupSettingsId(117)
.Select(x => x.EmployeeId)
.Where(x=> workshopLeftWorksInMonth.Select(l=>l.EmployeeId).Contains(x)).ToList();
var exceptionEmployeeIds = _customizeWorkshopGroupSettingsRepository.GetEmployeeSettingsByGroupSettingsId(117).Select(x => x.EmployeeId).ToList();
foreach (var employeesId in exceptionEmployeeIds)
{

View File

@@ -84,7 +84,7 @@ public class LeaveApplication : ILeaveApplication
var end = command.PaidLeaveType == "ساعتی" ? start : command.EndLeave.ToGeorgianDateTime();
var checkErr = _leaveRepository.CheckErrors(start, end, command.EmployeeId, command.WorkshopId,command.IsInvallid);
var checkErr = _leaveRepository.CheckErrors(start, end, command.EmployeeId, command.WorkshopId);
// start = new DateTime(start.Year, start.Month, start.Day, startH.Hours, startH.Minutes, startH.Seconds);
//end = new DateTime(end.Year, end.Month, end.Day, endH.Hours, endH.Minutes, endH.Seconds);
@@ -96,10 +96,8 @@ public class LeaveApplication : ILeaveApplication
return op.Failed(checkErr.ContractErrMessage);
if (checkErr.HasLeftWork)
return op.Failed(checkErr.LeftWorlErrMessage);
//if (checkErr.HasHolidayError)
// return op.Failed(checkErr.HolidayErrorMessage);
if (start > end)
if (start > end)
return op.Failed("تارخ شروع از پایان بزرگتر است");
@@ -182,30 +180,29 @@ public class LeaveApplication : ILeaveApplication
shiftDuration = shiftEndDateTime - shiftStartDateTime;
hasShiftDuration = true;
}
else if (employeeSettings is { WorkshopShiftStatus: WorkshopShiftStatus.Irregular })
{
if ((end - start).TotalDays > 1)
{
return op.Failed("شما نمیتوانید بیشتر از یک روز مرخصی روزانه ثبت کنید");
}
var isActive = _rollCallEmployeeStatusApplication.IsActiveInPeriod(command.EmployeeId, command.WorkshopId, start, start);
if (isActive)
{
shiftDuration = employeeSettings.IrregularShift.WorkshopIrregularShifts switch
{
WorkshopIrregularShifts.TwelveThirtySix => TimeSpan.FromHours(12),
WorkshopIrregularShifts.TwelveTwentyFour => TimeSpan.FromHours(12),
WorkshopIrregularShifts.TwentyFourFortyEight => TimeSpan.FromHours(24),
WorkshopIrregularShifts.TwentyFourTwentyFour => TimeSpan.FromHours(24),
_ => new TimeSpan()
};
hasShiftDuration = true;
}
}
}
else if (employeeSettings is { WorkshopShiftStatus: WorkshopShiftStatus.Irregular })
{
if ((end - start).TotalDays > 1)
{
return op.Failed("شما نمیتوانید بیشتر از یک روز مرخصی روزانه ثبت کنید");
}
var isActive = _rollCallEmployeeStatusApplication.IsActiveInPeriod(command.EmployeeId, command.WorkshopId, start, start);
if (isActive)
{
shiftDuration = employeeSettings.IrregularShift.WorkshopIrregularShifts switch
{
WorkshopIrregularShifts.TwelveThirtySix => TimeSpan.FromHours(12),
WorkshopIrregularShifts.TwelveTwentyFour => TimeSpan.FromHours(12),
WorkshopIrregularShifts.TwentyFourFortyEight => TimeSpan.FromHours(24),
WorkshopIrregularShifts.TwentyFourTwentyFour => TimeSpan.FromHours(24),
_ => new TimeSpan()
};
hasShiftDuration = true;
}
}
}
@@ -238,8 +235,7 @@ public class LeaveApplication : ILeaveApplication
var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName;
var workshopName = _workshopRepository.GetDetails(command.WorkshopId).WorkshopName;
var leave = new Leave(start, end, totalhourses, command.WorkshopId, command.EmployeeId
, command.PaidLeaveType, command.LeaveType, employeeFullName, workshopName, command.IsAccepted, command.Decription,
year, month, shiftDuration, hasShiftDuration,command.IsInvallid);
, command.PaidLeaveType, command.LeaveType, employeeFullName, workshopName, command.IsAccepted, command.Decription, year, month, shiftDuration, hasShiftDuration);
_leaveRepository.Create(leave);
_leaveRepository.SaveChanges();
@@ -301,15 +297,13 @@ public class LeaveApplication : ILeaveApplication
return op.Failed("لطفا تاریخ پایان را وارد کنید");
var start = command.StartLeave.ToGeorgianDateTime();
var end = command.PaidLeaveType == "ساعتی" ? start : command.EndLeave.ToGeorgianDateTime();
var checkErr = _leaveRepository.CheckErrors(start, end, command.EmployeeId, command.WorkshopId,command.IsInvallid);
var checkErr = _leaveRepository.CheckErrors(start, end, command.EmployeeId, command.WorkshopId);
if (checkErr.HasChekout)
return op.Failed(checkErr.CheckoutErrMessage);
if (checkErr.HasLeftWork)
return op.Failed(checkErr.LeftWorlErrMessage);
if (checkErr.HasHolidayError)
return op.Failed(checkErr.HolidayErrorMessage);
if (start > end)
return op.Failed("تارخ شروع از پایان بزرگتر است");

View File

@@ -21,11 +21,9 @@ public class RollCallMandatoryApplication : IRollCallMandatoryApplication
return _rollCallMandatoryRepository.Exists(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId && x.StartDate.Value.Date >= contractStart.Date);
}
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute)
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute,bool totalLeaveCompute)
{
return _rollCallMandatoryRepository.MandatoryCompute(employeeId,workshopId, contractStart, contractEnd, command, holidayWorking, isStaticCheckout, rotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
return _rollCallMandatoryRepository.MandatoryCompute(employeeId,workshopId, contractStart, contractEnd, command, holidayWorking, isStaticCheckout, rotatingShiftCompute, totalLeaveCompute);
}
public async Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart, DateTime contractEnd,

View File

@@ -1,17 +1,12 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.YearlySalaryAgg;
using CompanyManagment.App.Contracts.Contract;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.LeftWork;
using CompanyManagment.App.Contracts.YearlySalary;
using CompanyManagment.EFCore;
using Microsoft.EntityFrameworkCore;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace CompanyManagment.Application;
@@ -133,41 +128,6 @@ public class YearlySalaryApplication : IYearlySalaryApplication
return _yearlySalaryRepository.GetYearlySalary();
}
public Task<UpgradeManualDailyWageModel> UpgradeManualDailyWage(DateTime newContractStart, DateTime lastContractStart, double lastContractManualDailyWage)
{
return _yearlySalaryRepository.UpgradeManualDailyWage(newContractStart, lastContractStart,
lastContractManualDailyWage);
}
public async Task<BaseYearDataViewModel> BaseYearComputeByContractId(long contractId)
{
var contract = await _context.Contracts.FirstOrDefaultAsync(x => x.id == contractId);
var leftWorkList = await _context.LeftWorkList.Where(x=>x.EmployeeId ==contract.EmployeeId && x.WorkshopId == contract.WorkshopIds).Select(x => new LeftWorkViewModel()
{
Id = x.id,
LeftWorkDate = x.LeftWorkDate.ToFarsi(),
StartWorkDate = x.StartWorkDate.ToFarsi(),
LeftWorkDateGr = x.LeftWorkDate,
StartWorkDateGr = x.StartWorkDate,
WorkshopId = x.WorkshopId,
EmployeeId = x.EmployeeId,
HasLeft = x.HasLeft,
}).ToListAsync();
var baseYearResult = await _yearlySalaryRepository.BaseYearCompute(contract.ContarctStart, contract.ContractEnd,
contract.EmployeeId, contract.WorkshopIds, leftWorkList);
return baseYearResult;
}
public async Task<(double dailyWage, long yearlySalaryId)> GetDailyWageByStartEnd(DateTime start, DateTime end)
{
return await _yearlySalaryRepository.GetDailyWageByStartEnd(start, end);
}
public List<YearlySalaryViewModel> Search(YearlySalarySearchModel searchModel)
{
return _yearlySalaryRepository.Search(searchModel);

View File

@@ -26,8 +26,6 @@ public class ContractMapping : IEntityTypeConfiguration<Contract>
builder.Property(x => x.ContractPeriod).HasMaxLength(2).IsRequired(false);
builder.Property(x => x.AgreementSalary).HasMaxLength(50).IsRequired(false);
builder.Property(x => x.Signature).HasMaxLength(1).IsRequired(false);
builder.Property(x=>x.DailyWageType).HasMaxLength(30).IsRequired(false);

View File

@@ -20,7 +20,6 @@ public class LeaveMapping : IEntityTypeConfiguration<Leave>
builder.Property(x => x.IsAccepted);
builder.Property(x => x.Decription).HasMaxLength(255);
builder.Property(x => x.ShiftDuration).HasTimeSpanConversion();
builder.HasQueryFilter(x => !x.IsInvalid);
}
}

View File

@@ -1,73 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class ManualDailyWageToContract : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<double>(
name: "BaseYearAffected",
table: "Contracts",
type: "float",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "BaseYearUnAffected",
table: "Contracts",
type: "float",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "DailySalaryAffected",
table: "Contracts",
type: "float",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<double>(
name: "DailySalaryUnAffected",
table: "Contracts",
type: "float",
nullable: false,
defaultValue: 0.0);
migrationBuilder.AddColumn<bool>(
name: "HasManualDailyWage",
table: "Contracts",
type: "bit",
nullable: false,
defaultValue: false);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "BaseYearAffected",
table: "Contracts");
migrationBuilder.DropColumn(
name: "BaseYearUnAffected",
table: "Contracts");
migrationBuilder.DropColumn(
name: "DailySalaryAffected",
table: "Contracts");
migrationBuilder.DropColumn(
name: "DailySalaryUnAffected",
table: "Contracts");
migrationBuilder.DropColumn(
name: "HasManualDailyWage",
table: "Contracts");
}
}
}

View File

@@ -1,29 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class DailyWageTypeoContract : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "DailyWageType",
table: "Contracts",
type: "nvarchar(30)",
maxLength: 30,
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "DailyWageType",
table: "Contracts");
}
}
}

View File

@@ -1,29 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CompanyManagment.EFCore.Migrations
{
/// <inheritdoc />
public partial class addisInvalidtoleave : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "IsInvalid",
table: "Leave",
type: "bit",
nullable: false,
defaultValue: false);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "IsInvalid",
table: "Leave");
}
}
}

View File

@@ -753,12 +753,6 @@ namespace CompanyManagment.EFCore.Migrations
.HasMaxLength(255)
.HasColumnType("nvarchar(255)");
b.Property<double>("BaseYearAffected")
.HasColumnType("float");
b.Property<double>("BaseYearUnAffected")
.HasColumnType("float");
b.Property<string>("ConsumableItems")
.IsRequired()
.HasMaxLength(50)
@@ -787,16 +781,6 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<double>("DailySalaryAffected")
.HasColumnType("float");
b.Property<double>("DailySalaryUnAffected")
.HasColumnType("float");
b.Property<string>("DailyWageType")
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.Property<string>("DayliWage")
.IsRequired()
.HasMaxLength(50)
@@ -816,9 +800,6 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<DateTime>("GetWorkDate")
.HasColumnType("datetime2");
b.Property<bool>("HasManualDailyWage")
.HasColumnType("bit");
b.Property<string>("HousingAllowance")
.IsRequired()
.HasMaxLength(50)
@@ -3740,9 +3721,6 @@ namespace CompanyManagment.EFCore.Migrations
b.Property<bool>("IsAccepted")
.HasColumnType("bit");
b.Property<bool>("IsInvalid")
.HasColumnType("bit");
b.Property<string>("LeaveHourses")
.HasMaxLength(5)
.HasColumnType("nvarchar(5)");

View File

@@ -1,9 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.ContractAgg;
@@ -15,7 +13,6 @@ using CompanyManagment.App.Contracts.Employee;
using CompanyManagment.App.Contracts.Employer;
using CompanyManagment.App.Contracts.LeftWork;
using CompanyManagment.App.Contracts.Workshop;
using Microsoft.EntityFrameworkCore;
using PersianTools.Core;
using DateTime = System.DateTime;
@@ -43,56 +40,6 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
_leftWorkRepository = leftWorkRepository;
}
public async Task<double> GetManualDailWage(long workshopId, long employeeId, long yearlySalaryId, DateTime contractStart)
{
var lastContract = await _context.Contracts
.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && x.IsActiveString == "true" && x.ContarctStart < contractStart)
.OrderByDescending(x => x.ContarctStart)
.FirstOrDefaultAsync();
//اگر قردادی قبل از قرارداد جدید نداشت
if (lastContract == null)
return 0;
//اگر آخرین قرداد مزد دلخواه نداشت
if (!lastContract.HasManualDailyWage)
return 0;
var lastContractYearlySalary = await _context.YearlySalaries
.FirstOrDefaultAsync(x => x.StartDate <= lastContract.ContarctStart && x.EndDate >= lastContract.ContarctStart);
//اگر دستمزد آخرین قراداد و قرداد جدید از یک مقادیر سالانه بودن بدون ارتقاء دستمزد دلخواه آخرین قرداد ارسال میشه
if (lastContractYearlySalary.id == yearlySalaryId)
return lastContract.DailySalaryUnAffected;
var dailyWageResult = _yearlySalaryRepository.UpgradeManualDailyWage(contractStart,
lastContractYearlySalary.StartDate, lastContract.DailySalaryUnAffected).GetAwaiter().GetResult();
return dailyWageResult.DailyWage;
}
public async Task<UpgradeManualDailyWageModel> GetManualDailWageList(long workshopId, long employeeId,
DateTime contractStart)
{
var oldContracts = await _context.Contracts
.Where(x => x.WorkshopIds == workshopId && x.EmployeeId == employeeId && x.IsActiveString == "true" && x.DailyWageType == "ManualDailyWage" && x.ContarctStart < contractStart)
.OrderByDescending(x => x.ContarctStart)
.FirstOrDefaultAsync();
if (oldContracts == null)
return new UpgradeManualDailyWageModel();
//var endOfMonthFromStart = ($"{contractStart.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime();
var result =await _yearlySalaryRepository.UpgradeManualDailyWage(contractStart, oldContracts.ContarctStart,
oldContracts.DailySalaryUnAffected);
return result;
}
public EditContract GetDetails(long id)
{
return _context.Contracts.Select(x => new EditContract
@@ -123,12 +70,8 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
ContractPeriod = x.ContractPeriod,
AgreementSalary = x.AgreementSalary,
ArchiveCode = x.ArchiveCode,
BaseYearAffected = x.BaseYearAffected,
BaseYearUnAffected = x.BaseYearUnAffected,
DailySalaryAffected = x.DailySalaryAffected,
DailySalaryUnAffected = x.DailySalaryUnAffected,
HasManualDailyWage = x.HasManualDailyWage,
DailyWageType = x.DailyWageType,

View File

@@ -1345,12 +1345,8 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
public List<EmployeeDetailsForInsuranceListViewModel> GetEmployeeInsuranceDataForEdit(long insuranceListId, DateTime startDate, DateTime endDate)
{
var employeeDataQuery = _context.EmployeeInsurancListDataSet
var res = _context.EmployeeInsurancListDataSet
.Where(x => x.InsuranceListId == insuranceListId)
.Join(_context.InsuranceListSet,
employeeInsurancListData => employeeInsurancListData.InsuranceListId,
insuranceList => insuranceList.id,
(employeeInsurancListData, insuranceList) => new{employeeInsurancListData,insuranceList})
.Join(_context.LeftWorkInsuranceList
.Where(x =>
((x.LeftWorkDate != null && x.LeftWorkDate != DateTime.MinValue) &&
@@ -1361,18 +1357,14 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
(x.LeftWorkDate == null || x.LeftWorkDate == DateTime.MinValue))
.Where(x => x.StartWorkDate <= endDate)
.Include(x => x.Employee),
employeeData =>new { employeeData.employeeInsurancListData.EmployeeId,employeeData.insuranceList.WorkshopId},
leftwork => new {leftwork.EmployeeId,leftwork.WorkshopId},
(employeeData, leftwork)
=> new { employeeData = employeeData.employeeInsurancListData, leftwork });
var employeeJobs =employeeDataQuery.Join(_context.Jobs,
employeeData => employeeData.EmployeeId,
leftwork => leftwork.EmployeeId,
(employeeData, leftwork) => new { employeeData, leftwork })
.Join(_context.Jobs,
result => result.leftwork.JobId,
job => job.id,
(result, job) => new { result, job });
var res =employeeJobs.GroupJoin(_context.InsuranceEmployeeInformationSet.AsSplitQuery(),
(result, job) => new { result, job })
.GroupJoin(_context.InsuranceEmployeeInformationSet.AsSplitQuery(),
allResult => allResult.result.employeeData.EmployeeId,
employeeInfo => employeeInfo.EmployeeId,
(allResult, employeeInfo) => new

View File

@@ -6,14 +6,12 @@ using _0_Framework.InfraStructure;
using Company.Domain.LeaveAgg;
using CompanyManagment.App.Contracts.Checkout;
using CompanyManagment.App.Contracts.Leave;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
{
private readonly CompanyContext _context;
public LeaveRepository(CompanyContext context) : base(context)
{
_context = context;
@@ -22,24 +20,24 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
public EditLeave GetDetails(long id)
{
return _context.LeaveList.Select(x => new EditLeave()
{
Id = x.id,
StartLeave = x.StartLeave.ToFarsi(),
EndLeave = x.EndLeave.ToFarsi(),
StartLeaveGr = x.StartLeave,
EndLeaveGr = x.EndLeave,
WorkshopId = x.WorkshopId,
EmployeeId = x.EmployeeId,
LeaveHourses = x.LeaveHourses,
PaidLeaveType = x.PaidLeaveType,
LeaveType = x.LeaveType,
EmployeeFullName = x.EmployeeFullName,
WorkshopName = x.WorkshopName,
IsAccepted = x.IsAccepted,
Decription = x.Decription,
Year = x.Year,
Month = x.Month,
HasRollCall = x.HasShiftDuration,
{
Id = x.id,
StartLeave = x.StartLeave.ToFarsi(),
EndLeave = x.EndLeave.ToFarsi(),
StartLeaveGr = x.StartLeave,
EndLeaveGr = x.EndLeave,
WorkshopId = x.WorkshopId,
EmployeeId = x.EmployeeId,
LeaveHourses = x.LeaveHourses,
PaidLeaveType = x.PaidLeaveType,
LeaveType = x.LeaveType,
EmployeeFullName = x.EmployeeFullName,
WorkshopName = x.WorkshopName,
IsAccepted = x.IsAccepted,
Decription = x.Decription,
Year = x.Year,
Month = x.Month,
HasRollCall = x.HasShiftDuration,
}).FirstOrDefault(x => x.Id == id);
}
@@ -65,20 +63,16 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
Month = x.Month,
HasShiftDuration = x.HasShiftDuration,
ShiftDuration = x.ShiftDuration,
IsInvalid = x.IsInvalid
});
if (searchModel.IsInvalid)
{
query = query.IgnoreQueryFilters().Where(x => x.IsInvalid);
}
if (searchModel.WorkshopId != 0 && searchModel.EmployeeId != 0)
if (searchModel.WorkshopId != 0 && searchModel.EmployeeId != 0)
query = query.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId);
if (!string.IsNullOrWhiteSpace(searchModel.LeaveType))
query = query.Where(x => x.LeaveType == searchModel.LeaveType);
query = query.Where(x => x.LeaveType == searchModel.LeaveType);
if (!string.IsNullOrWhiteSpace(searchModel.PaidLeaveType))
query = query.Where(x => x.PaidLeaveType == searchModel.PaidLeaveType);
query = query.Where(x => x.PaidLeaveType == searchModel.PaidLeaveType);
if (!string.IsNullOrWhiteSpace(searchModel.StartLeave) && !string.IsNullOrWhiteSpace(searchModel.EndLeave))
{
DateTime startSearch = searchModel.StartLeave.ToGeorgianDateTime();
@@ -87,29 +81,21 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
(startSearch <= x.EndLeaveGr.Date && endSearch >= x.EndLeaveGr.Date) ||
(startSearch >= x.StartLeaveGr.Date && startSearch <= x.EndLeaveGr.Date) ||
(endSearch >= x.StartLeaveGr.Date && endSearch <= x.EndLeaveGr.Date));
}
else if (searchModel.StartLeaveGr != null && searchModel.EndLeaveGr != null)
}else if (searchModel.StartLeaveGr != null && searchModel.EndLeaveGr != null)
{
query = query.Where(x =>
(searchModel.StartLeaveGr <= x.StartLeaveGr.Date && searchModel.EndLeaveGr >= x.StartLeaveGr.Date) ||
(searchModel.StartLeaveGr <= x.EndLeaveGr.Date && searchModel.EndLeaveGr >= x.EndLeaveGr.Date) ||
(searchModel.StartLeaveGr >= x.StartLeaveGr.Date && searchModel.StartLeaveGr <= x.EndLeaveGr.Date) ||
(searchModel.EndLeaveGr >= x.StartLeaveGr.Date && searchModel.EndLeaveGr <= x.EndLeaveGr.Date));
}
if (searchModel.IsAccepted)
query = query.Where(x => x.IsAccepted == true);
return query.OrderByDescending(x => x.Id).ToList();
query = query.Where(x => (searchModel.StartLeaveGr <= x.StartLeaveGr.Date && searchModel.EndLeaveGr >= x.StartLeaveGr.Date) ||
(searchModel.StartLeaveGr <= x.EndLeaveGr.Date && searchModel.EndLeaveGr >= x.EndLeaveGr.Date) ||
(searchModel.StartLeaveGr >= x.StartLeaveGr.Date && searchModel.StartLeaveGr <= x.EndLeaveGr.Date) ||
(searchModel.EndLeaveGr >= x.StartLeaveGr.Date && searchModel.EndLeaveGr <= x.EndLeaveGr.Date));
}
if(searchModel.IsAccepted)
query = query.Where(x => x.IsAccepted == true);
return query.OrderByDescending(x => x.Id).ToList();
}
public List<LeaveMainViewModel> searchClient(LeaveSearchModel searchModel)
{
var leaveMainList = _context.LeaveList.Where(x =>
x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId);
if (searchModel.IsInvalid)
{
leaveMainList = leaveMainList.IgnoreQueryFilters().Where(x => x.IsInvalid);
}
var leaveMainList = _context.LeaveList.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId);
if (searchModel.LeaveType == "paidLeave")
leaveMainList = leaveMainList.Where(x => x.LeaveType == "استحقاقی");
@@ -149,7 +135,7 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
EndLeaveGr = item.EndLeave,
WorkshopId = item.WorkshopId,
EmployeeId = item.EmployeeId,
LeaveHourses = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType, item.LeaveHourses),
LeaveHourses = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType,item.LeaveHourses),
PaidLeaveType = item.PaidLeaveType,
LeaveType = item.LeaveType,
IsAccepted = item.IsAccepted,
@@ -183,21 +169,17 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
IsAccepted = x.IsAccepted,
Decription = x.Decription,
EmployerList = new List<EmprViewModel>(),
IsInvalid = x.IsInvalid
}).SingleOrDefault(x => x.Id == id);
//leave.ContractNo = _context.Contracts.FirstOrDefault(x => x.ContarctStart <= leave.StartLeaveGr && x.ContractEnd > leave.StartLeaveGr
// && x.ContarctStart < leave.EndLeaveGr && x.ContractEnd > leave.EndLeaveGr
// && x.WorkshopIds == leave.WorkshopId && x.EmployeeId == leave.EmployeeId).ContractNo;
leave.ContractNo = _context.Contracts.FirstOrDefault(x =>
x.ContarctStart <= leave.StartLeaveGr && x.ContractEnd >= leave.StartLeaveGr &&
x.EmployeeId == leave.EmployeeId && x.WorkshopIds == leave.WorkshopId)?.ContractNo;
leave.ContractNo = _context.Contracts.FirstOrDefault(x=>x.ContarctStart <= leave.StartLeaveGr && x.ContractEnd >= leave.StartLeaveGr && x.EmployeeId == leave.EmployeeId && x.WorkshopIds == leave.WorkshopId)?.ContractNo;
var Employee = _context.Employees.SingleOrDefault(x => x.id == leave.EmployeeId);
leave.NationalCode = Employee.NationalCode;
var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == leave.WorkshopId).Select(x => x.EmployerId)
.ToList();
var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == leave.WorkshopId).Select(x => x.EmployerId).ToList();
var employerlist = _context.Employers.Select(x => new EmprViewModel()
{
Id = x.id,
@@ -243,24 +225,21 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
Year = x.Year,
Month = x.Month,
MonthGr = Tools.ToFarsiMonthByIntNumber(x.Month),
EmployerList = new List<EmprViewModel>(),
IsInvalid = x.IsInvalid
EmployerList = new List<EmprViewModel>()
}).SingleOrDefault(x => x.Id == item);
//leave.ContractNo = _context.Contracts.FirstOrDefault(x => x.ContarctStart <= leave.StartLeaveGr && x.ContractEnd > leave.StartLeaveGr
// && x.ContarctStart < leave.EndLeaveGr && x.ContractEnd > leave.EndLeaveGr
// && x.WorkshopIds == leave.WorkshopId && x.EmployeeId == leave.EmployeeId).ContractNo;
leave.ContractNo = _context.Contracts.FirstOrDefault(x => x.ContarctStart <= leave.StartLeaveGr
&& x.ContractEnd >= leave.StartLeaveGr &&
x.EmployeeId == leave.EmployeeId
leave.ContractNo = _context.Contracts.FirstOrDefault(x => x.ContarctStart <= leave.StartLeaveGr
&& x.ContractEnd >= leave.StartLeaveGr && x.EmployeeId == leave.EmployeeId
&& x.WorkshopIds == leave.WorkshopId)?.ContractNo;
var Employee = _context.Employees.SingleOrDefault(x => x.id == leave.EmployeeId);
leave.NationalCode = Employee.NationalCode;
var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == leave.WorkshopId).Select(x => x.EmployerId)
.ToList();
var emp = _context.WorkshopEmployers.Where(x => x.WorkshopId == leave.WorkshopId).Select(x => x.EmployerId).ToList();
var employerlist = _context.Employers.Select(x => new EmprViewModel()
{
Id = x.id,
@@ -275,10 +254,8 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
{
leave.EmployerList = new List<EmprViewModel>();
}
query.Add(leave);
}
query = query.OrderBy(x => x.Year).ThenBy(x => x.Month).ToList();
int printNumer = 0;
foreach (var rec in query)
@@ -286,7 +263,6 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
printNumer += 1;
rec.PrintCounter = printNumer;
}
return query;
}
@@ -305,11 +281,6 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
if (searchModel.LeaveType == "sickLeave")
leaveMainList = leaveMainList.Where(x => x.LeaveType == "استعلاجی");
if (searchModel.IsInvalid)
{
leaveMainList = leaveMainList.IgnoreQueryFilters().Where(x => x.IsInvalid);
}
if (!string.IsNullOrWhiteSpace(searchModel.StartLeave) && !string.IsNullOrWhiteSpace(searchModel.EndLeave))
{
var start = searchModel.StartLeave.ToGeorgianDateTime();
@@ -326,43 +297,41 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
}
var leaveList = leaveMainList.Where(x => x.WorkshopId == searchModel.WorkshopId).Select(item =>
new LeaveViewModel()
{
Id = item.id,
StartLeave = item.StartLeave.ToFarsi(),
EndLeave = item.EndLeave.ToFarsi(),
StartLeaveGr = item.StartLeave,
EndLeaveGr = item.EndLeave,
WorkshopId = item.WorkshopId,
EmployeeId = item.EmployeeId,
EmployeeFullName = item.EmployeeFullName,
LeaveHourses = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType, item.LeaveHourses),
PaidLeaveType = item.PaidLeaveType,
LeaveType = item.LeaveType,
IsAccepted = item.IsAccepted,
Decription = item.Decription,
Year = item.Year,
Month = item.Month,
MonthStr = item.Month.ToFarsiMonthByIntNumber(),
CreationDate = item.CreationDate,
IsInvalid = item.IsInvalid
}).OrderByDescending(x => x.CreationDate).Skip(searchModel.PageIndex).Take(30).ToList();
var leaveList = leaveMainList.Where(x => x.WorkshopId == searchModel.WorkshopId).Select(item => new LeaveViewModel()
{
Id = item.id,
StartLeave = item.StartLeave.ToFarsi(),
EndLeave = item.EndLeave.ToFarsi(),
StartLeaveGr = item.StartLeave,
EndLeaveGr = item.EndLeave,
WorkshopId = item.WorkshopId,
EmployeeId = item.EmployeeId,
EmployeeFullName = item.EmployeeFullName,
LeaveHourses = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType, item.LeaveHourses),
PaidLeaveType = item.PaidLeaveType,
LeaveType = item.LeaveType,
IsAccepted = item.IsAccepted,
Decription = item.Decription,
Year = item.Year,
Month = item.Month,
MonthStr = item.Month.ToFarsiMonthByIntNumber(),
CreationDate = item.CreationDate,
}).OrderByDescending(x => x.CreationDate).Skip(searchModel.PageIndex).Take(30).ToList();
return leaveList;
}
#endregion
public bool CheckIfValidToEdit(long id)
{
var leave = _context.LeaveList.FirstOrDefault(x => x.id == id);
var checkoutExist = _context.CheckoutSet
.Where(x => x.WorkshopId == leave.WorkshopId && x.EmployeeId == leave.EmployeeId)
var checkoutExist = _context.CheckoutSet.Where(x => x.WorkshopId == leave.WorkshopId && x.EmployeeId == leave.EmployeeId)
.Where(x => leave.StartLeave <= x.ContractEnd).ToList();
if (checkoutExist.Count > 0)
{
return false;
}
else
@@ -377,38 +346,37 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
var item = _context.LeaveList.FirstOrDefault(x => x.id == id);
if (item != null)
{
var checkoutExist = _context.CheckoutSet
.Where(x => x.WorkshopId == item.WorkshopId && x.EmployeeId == item.EmployeeId)
var checkoutExist = _context.CheckoutSet.Where(x => x.WorkshopId == item.WorkshopId && x.EmployeeId == item.EmployeeId)
.Where(x => item.StartLeave <= x.ContractEnd).ToList();
if (checkoutExist.Count > 0)
{
return op.Failed("در بازه زمانی این مرخصی و یا بعد از آن فیش حقوقی وجود دارد");
}
else
{
_context.LeaveList.Remove(item);
_context.SaveChanges();
return op.Succcedded();
}
}
return op.Failed("موردی یافت نشد");
}
#region Pooya
public bool HasDailyLeave(long employeeId, long workshopId, DateTime date)
{
return _context.LeaveList
.Where(x => (x.LeaveType == "استحقاقی" && x.PaidLeaveType == "روزانه") ||
x.LeaveType == "استعلاجی")
.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
x.StartLeave.Date <= date.Date && x.EndLeave.Date >= date.Date) != null;
}
.Where(x => (x.LeaveType == "استحقاقی" && x.PaidLeaveType == "روزانه") ||
x.LeaveType == "استعلاجی")
.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId &&
x.StartLeave.Date <= date.Date && x.EndLeave.Date >= date.Date) != null;
public List<LeaveViewModel> GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime start,
DateTime end)
}
public List<LeaveViewModel> GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime start, DateTime end)
{
return _context.LeaveList.Where(x => x.EmployeeId == employeeId && x.EndLeave >= start && x.StartLeave <= end)
.Select(x => new LeaveViewModel
@@ -421,32 +389,28 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
EndLeaveGr = x.EndLeave,
LeaveHourses = x.LeaveHourses
}).ToList();
}
}
#endregion
public bool CheckContractExist(DateTime myDate, long employeeId, long workshopId)
{
var result = _context.Contracts.Any(x => x.ContarctStart <= myDate
&& x.ContractEnd >= myDate && x.EmployeeId == employeeId &&
x.WorkshopIds == workshopId && x.IsActiveString == "true");
x.WorkshopIds == workshopId && x.IsActiveString=="true");
return result;
}
public LeavErrorViewModel CheckErrors(DateTime startLeav, DateTime endLeav, long employeeId, long workshopId,
bool invalidCheckout)
public LeavErrorViewModel CheckErrors(DateTime startLeav, DateTime endLeav, long employeeId, long workshopId)
{
var res = new LeavErrorViewModel();
#region Check iF Has Checkout
//var checkoutExist = _context.CheckoutSet.Where(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId)
// .Where(x => (startLeav >= x.ContractStart && startLeav <= x.ContractEnd && endLeav > x.ContractEnd) ||
// (startLeav >= x.ContractStart && endLeav <= x.ContractEnd) ||
// (startLeav < x.ContractStart && endLeav <= x.ContractEnd && endLeav >= x.ContractStart) ||
// (startLeav < x.ContractStart && endLeav > x.ContractEnd)).ToList();
var checkoutExist = _context.CheckoutSet.Where(x =>
x.WorkshopId == workshopId && x.EmployeeId == employeeId && startLeav <= x.ContractEnd).ToList();
var checkoutExist = _context.CheckoutSet.Where(x => x.WorkshopId == workshopId && x.EmployeeId == employeeId && startLeav <= x.ContractEnd).ToList();
if (checkoutExist.Count > 0)
{
res.HasChekout = true;
@@ -469,7 +433,6 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
res.ContractErrMessage = "در بازه تاریخ مرخصی وارد شده قراردادی وجود ندارد";
return res;
}
#endregion
#region Check LeftWork
@@ -482,32 +445,11 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
if (leftCheck.Count < 1)
{
res.HasLeftWork = true;
res.LeftWorlErrMessage = " پرسنل در بازه تاریخ وارد شده شروع بکار ندارد";
return res;
}
#endregion
#region HolidayError
var hasCustomizeCheckout =
_context.RollCallServices.FirstOrDefault(x => x.WorkshopId == workshopId && x.IsActiveString == "true")
?.HasCustomizeCheckoutService == "true";
if (_context.HolidayItems.Any(x => startLeav.Date == x.Holidaydate.Date) ||
startLeav.DayOfWeek == DayOfWeek.Friday)
{
if (!hasCustomizeCheckout)
{
res.HasHolidayError = true;
res.HolidayErrorMessage = "شما نمیتوانید در روز های تعطیل مرخصی ثبت کنید";
}
else if (!invalidCheckout)
{
res.HasHolidayError = true;
res.HolidayErrorMessage = "شما نمیتوانید در روز های مرخصی دارای اعتبار ثبت کنید";
}
res.HasLeftWork = true;
res.LeftWorlErrMessage = " پرسنل در بازه تاریخ وارد شده شروع بکار ندارد";
return res;
}
#endregion
@@ -517,7 +459,7 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
public LeaveViewModel LeavOnChekout(DateTime starContract, DateTime endContract, long employeeId, long workshopId)
{
return _context.LeaveList.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x =>
return _context.LeaveList.Where(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId).Select(x =>
new LeaveViewModel()
{
Id = x.id,
@@ -530,9 +472,10 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
LeaveType = x.LeaveType,
IsAccepted = x.IsAccepted,
Decription = x.Decription
}).FirstOrDefault(x =>
(starContract <= x.StartLeaveGr && endContract >= x.StartLeaveGr) ||
(starContract <= x.EndLeaveGr && endContract >= x.EndLeaveGr) ||
(starContract <= x.EndLeaveGr && endContract >= x.EndLeaveGr) ||
(starContract >= x.StartLeaveGr && starContract <= x.EndLeaveGr) ||
(endContract >= x.StartLeaveGr && endContract <= x.EndLeaveGr));
}

View File

@@ -122,7 +122,6 @@ public class LeftWorkRepository : RepositoryBase<long, LeftWork>, ILeftWorkRepos
AddYearsPay = x.AddYearsPay,
AddLeavePay = x.AddLeavePay,
JobId = x.JobId,
HasLeft = x.HasLeft,
JobName = _context.Jobs.FirstOrDefault(j => j.id == x.JobId).JobName

View File

@@ -35,11 +35,9 @@ public class LoanRepository : RepositoryBase<long, Loan>, ILoanRepository
var startDate = loan.LoanInstallments.MinBy(x => x.InstallmentDate).InstallmentDate;
var endDate = loan.LoanInstallments.MaxBy(x => x.InstallmentDate).InstallmentDate;
var pc = new PersianCalendar();
var checkouts = (await _companyContext.CheckoutSet
.Where(x => x.WorkshopId == loan.WorkshopId && x.EmployeeId == loan.EmployeeId &&
startDate <= x.ContractEnd && endDate >= x.ContractEnd).AsNoTracking()
.SelectMany(x => x.LoanInstallments).ToListAsync());
var customizeCheckouts =await _companyContext.CustomizeCheckouts.Where(x => x.WorkshopId == loan.WorkshopId && x.EmployeeId == loan.EmployeeId &&
x.ContractStart <= endDate && x.ContractEnd >= startDate).Select(x=> new {x.MonthInt, x.YearInt}).ToListAsync();
var result = new LoanDetailsViewModel()
{
@@ -53,7 +51,7 @@ public class LoanRepository : RepositoryBase<long, Loan>, ILoanRepository
Id = x.Id,
InstallmentAmount = x.AmountForMonth.ToMoney(),
InstallmentDate = x.InstallmentDate.ToFarsi(),
IsPaid = checkouts.Any(c => c.EntityId == x.Id),
IsPaid = customizeCheckouts.Any(c => c.MonthInt.ToString() == x.Month && c.YearInt.ToString() == x.Year)
}).ToList()
};

View File

@@ -65,12 +65,11 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
}
#region OfficialChckout
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart,
DateTime contractEnd,
CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute,double dailyWageUnAffected, bool totalLeaveCompute)
{
#region OfficialChckout
public ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart,
DateTime contractEnd,
CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, bool totalLeaveCompute)
{
#region Entities
string SumWorkeTime = string.Empty;
@@ -491,31 +490,18 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
var startDate = command.GetWorkDateHide.ToGeorgianDateTime();
var dayliFee = "خطای تاریخ";
double dayliFeeDouble = 0;
double baseYearUnAffected = 0;
double baseYearAffected = 0;
double dailySalaryAffected = 0;
if (styear >= 1370)
{
if (leftworkList == null)
leftworkList = new List<LeftWorkViewModel>();
//var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStart, contractEnd,
// command.EmployeeId, command.WorkshopId, leftworkList);
//dayliFee = dayliFeeResult.DayliFee;
//dayliFeeDouble = dayliFeeResult.DayliFeeDouble;
//dayliFeeComplete = dayliFeeResult.DayliFee.MoneyToDouble();
//basic = dayliFeeResult.Basic;
//dayliFee = dailyWageUnAffected;
var baseYear = _yearlySalaryRepository.BaseYearCompute(contractStart, contractEnd, command.EmployeeId,
command.WorkshopId, leftworkList).Result;
dayliFee = (dailyWageUnAffected + baseYear.BaseYearResult).ToMoney();
baseYearUnAffected = baseYear.BaseYearResult;
baseYearAffected = baseYearUnAffected;
dailySalaryAffected = dailyWageUnAffected;
var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStart, contractEnd,
command.EmployeeId, command.WorkshopId, leftworkList);
dayliFee = dayliFeeResult.DayliFee;
dayliFeeDouble = dayliFeeResult.DayliFeeDouble;
dayliFeeComplete = dayliFeeResult.DayliFee.MoneyToDouble();
basic = dayliFeeResult.Basic;
}
#endregion
@@ -540,25 +526,10 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
if (!string.IsNullOrWhiteSpace(command.ShiftWork))
{
var workedHoursePerDay = totalHourses / mandatorDays;
//var result = (dayliFeeDouble / 7.33) * workedHoursePerDay;
//dayliFee = result.ToMoney();
#region NeWdailyWage
var da = dailyWageUnAffected / 7.33;
dailySalaryAffected = da > 0 ? ((workedHoursePerDay * da).ToMoney()).MoneyToDouble() : 0;
var ba = baseYearUnAffected / 7.33;
baseYearAffected = ba > 0 ? ((workedHoursePerDay * ba).ToMoney()).MoneyToDouble() : 0;
var fullDailySalary = dailySalaryAffected + baseYearAffected;
dayliFee = fullDailySalary.ToMoney();
#endregion
var result = (dayliFeeDouble / 7.33) * workedHoursePerDay;
dayliFee = result.ToMoney();
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30;
@@ -936,13 +907,6 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
//ساعت موظفی پرسنل در این ماه
EmployeeMandatoryHours = mandatoryHoursTimeSpan,
#endregion
#region NewDailWage
BaseYearAffected = baseYearAffected,
DailySalaryAffected = dailySalaryAffected,
#endregion
};
#endregion
@@ -3547,7 +3511,6 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
StartLeaveGr = contractStart,
EndLeaveGr = contractEnd,
IsAccepted = true,
};
List<LeaveViewModel> leaveList = _leaveRepository.search(leaveHourseSearch);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,75 @@
using _0_Framework.Application;
using _0_Framework.Application.Sms;
using AccountManagement.Application.Contracts.Task;
using AccountManagement.Application.Contracts.Ticket;
using CompanyManagment.App.Contracts.ClientDashboard;
using CompanyManagment.App.Contracts.HolidayItem;
using Microsoft.AspNetCore.Mvc;
using PersianTools.Core;
using ServiceHost.BaseControllers;
namespace ServiceHost.Areas.Admin.Controllers;
public class DashboardController : AdminBaseController
{
private readonly ISmsService _smsService;
private readonly IHolidayItemApplication _holidayItemApplication;
private readonly ITaskApplication _taskApplication;
private readonly ITicketApplication _ticketApplication;
private long UserId;
public DashboardController(ISmsService smsService, IHolidayItemApplication holidayItemApplication, ITaskApplication taskApplication,IAuthHelper authHelper, ITicketApplication ticketApplication)
{
_smsService = smsService;
_holidayItemApplication = holidayItemApplication;
_taskApplication = taskApplication;
_ticketApplication = ticketApplication;
UserId = authHelper.CurrentAccountId();
}
[HttpGet]
public async Task<ActionResult<AdminDashboardViewModel>> Index()
{
var calenderList = new List<CalenderViewModel>();
var todayGr = DateTime.Today;
var todayFa = todayGr.ToFarsi();
var todayPersian = new PersianDateTime(
int.Parse(todayFa.Substring(0, 4)),
int.Parse(todayFa.Substring(5, 2)),
int.Parse(todayFa.Substring(8, 2))
);
var startDate =new PersianDateTime(todayGr.AddDays(-3));
var endDate =new PersianDateTime(todayGr.AddDays(3));
for (var day = startDate; day <= endDate; day = day.AddDays(1))
{
var calenderNewItem = new CalenderViewModel
{
DayNumber = day.ToString("dd"),
IsToday = day.DateTime == todayGr,
DayOfWeek = day.DayOfWeek,
Holiday = _holidayItemApplication.IsHoliday(day.ToGregorianDateTime()) || day.DayOfWeek== "جمعه"
};
calenderList.Add(calenderNewItem);
}
var taskCount = await _taskApplication.RequestedAndOverdueTasksCount(UserId);
var ticketCount = _ticketApplication.GetAdminTicketsCount();
return new AdminDashboardViewModel(calenderList, taskCount, ticketCount);
}
[HttpGet("sms-remaining")]
public async Task<ActionResult<SmsRemainingResult>> OnGetSmsRemaining()
{
var result = (int)await _smsService.GetCreditAmount();
return new SmsRemainingResult(result);
}
}
public record SmsRemainingResult(int Data);
public record AdminDashboardViewModel(List<CalenderViewModel> Calender, int TaskCount, int TicketCount);

View File

@@ -230,12 +230,9 @@
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10327" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب امور مالیاتی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10328" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب طرح طبقه بندی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10330" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب تعیین سطح دسترسی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10328" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب طرح طبقه بندی </span> </label>
</div>
<!--پایان مودال-->
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10320" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> محاسبه مزایای پایان کار </span> </label>
@@ -400,11 +397,8 @@
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20120" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> مرخصی استعلاجی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20121" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> مرخصی استحقاقی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20123" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> گزارش ارتقاء مزد و سنوات </span> </label>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20121" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> مرخصی استحقاقی </span> </label>
</div>
</div>
@*تصفیه*@

View File

@@ -230,12 +230,9 @@
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10327" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب امور مالیاتی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10328" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب طرح طبقه بندی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10330" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب تعیین سطح دسترسی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10328" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> تب طرح طبقه بندی </span> </label>
</div>
<!--پایان مودال-->
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="10320" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> محاسبه مزایای پایان کار </span> </label>
@@ -401,12 +398,9 @@
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20120" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> مرخصی استعلاجی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20121" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> مرخصی استحقاقی </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20123" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> گزارش ارتقاء مزد و سنوات </span> </label>
</div>
<div class="child-check level3">
<label class="btn btn-inverse waves-effect waves-light m-b-5 children"><input type="checkbox" disabled="disabled" value="20121" class="check-btn"> &nbsp;<span style="bottom: 2px;position: relative"> مرخصی استحقاقی </span> </label>
</div>
</div>
@*تصفیه*@
<div class="child-check level2">

View File

@@ -763,7 +763,6 @@ public class IndexModel : PageModel
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,
@@ -823,15 +822,7 @@ public class IndexModel : PageModel
workingHours.EmployeeId = contract.EmployeeId;
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);
@@ -841,15 +832,13 @@ public class IndexModel : PageModel
{
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
contract.WorkshopIds,
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, false,workshop.RotatingShiftCompute, totalLeaveCompute);
}
else
{
mandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
contract.WorkshopIds,
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
separation.ContractStartGr, separation.ContractEndGr, workingHours, workshop.WorkshopHolidayWorking, true,workshop.RotatingShiftCompute, totalLeaveCompute);
//var hasLeave = _leaveApplication.LeavOnChekout(separation.ContractStartGr,
// separation.ContractEndGr, contract.EmployeeId, contract.WorkshopIds);
//if (hasLeave != null)
@@ -945,8 +934,7 @@ public class IndexModel : PageModel
{
foundMandatoryCompute = _rollCallMandatoryApplication.MandatoryCompute(contract.EmployeeId,
contract.WorkshopIds,
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute, dailyWageUnAffected, totalLeaveCompute);
found.ContractStart, found.ContractEnd, foundWorkingHours, workshop.WorkshopHolidayWorking, false, workshop.RotatingShiftCompute, totalLeaveCompute);
}
else
@@ -992,7 +980,7 @@ public class IndexModel : PageModel
officialHoliday, totalHoursH, totalHoursM, consumableItemDouble, housingAllowanceDouble,
familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract);
var command = new CreateCheckout
{
EmployeeFullName = employee.EmployeeFullName,
@@ -1088,19 +1076,7 @@ public class IndexModel : PageModel
// ساعت موظفی پرسنل برای این ماه
EmployeeMandatoryHours = mandatoryCompute.EmployeeMandatoryHours,
HasInsuranceChekoutOverTime = workshop.InsuranceCheckoutOvertime,
HasLeft = separation.HasLeft,
BaseYearAffected = mandatoryCompute.BaseYearAffected,
DailySalaryAffected = mandatoryCompute.DailySalaryAffected,
HasInsuranceChekoutOverTime = workshop.InsuranceCheckoutOvertime
};
_checkoutApplication.Create(command);

View File

@@ -1,375 +0,0 @@
@using _0_Framework.Application
@model CompanyManagment.App.Contracts.Contract.ContractDailyWageAndBaseYearReport
@{
<style>
.modal .modal-dialog .modal-content {
width: 110% !important;
padding: 0 !important;
}
.trTable {
background-color: cadetblue;
color: aliceblue;
border-radius: 5px;
padding: 3px;
margin: 3px;
}
.st {
background: #cecece;
border-radius: 8px;
padding: 0;
overflow: hidden;
box-sizing: border-box;
direction: rtl;
font-family: "IranSans", sans-serif;
margin: 5px 0px;
font-size: 13px;
}
.st .header {
background: #0d4c4c;
color: #fff;
padding: 10px 14px;
text-align: center;
font-weight: 700;
border-radius: 8px 8px 0 0;
}
.st .trTable {
padding: 4px 9px;
margin: 0;
display: block;
margin: 3px 3px;
}
.st .trTable .content {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
}
.st .trTable.green {
background: forestgreen;
color: #fff;
}
.st .trTable.red {
background: #d9534f;
color: #fff;
}
.st .trTable.teal {
background: #5fb0b0;
color: #fff;
}
.st .trTable.orange {
background: orangered;
color: #fff;
}
.date {
font-family: 'IranText' !important;
font-size: 12px;
}
</style>
}
<div class="container" style="margin: 10px 0px">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>نام پرسنل</div>
<div>@Model.EmployeeName</div>
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>نام کارگاه</div>
<div>@Model.WorkshopName</div>
</div>
</div>
</div>
</div>
</div>
@if (Model.OldComputeMethod)
{
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="st">
<div class="trTable" style="background-color: #fbddda">
<div class="content" style="background-color: #fbddda">
<div style="color:red">این قراداد با روش قدیم محاسبه مزد ایجاد شده است</div>
</div>
</div>
</div>
</div>
<div class="col-xs-12">
<button type="button" class="btn btn-warning btn-rounded waves-effect waves-light m-b-10" data-dismiss="modal">بستن فرم</button>
</div>
</div>
}
else
{
@if (Model.Contradiction)
{
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="st">
<div class="trTable" style="background-color: #fbddda">
<div class="content" style="background-color: #fbddda">
<div style="color:red">
<p>مقادیر محاسبه شده در این گزارش با مقادیر ذخیره شده در قراداد مغایرت دارد</p>
<p>احتمالا مواردی مانند شروع بکار/ترک کار پرسنل تغییر کرده است</p>
</div>
</div>
</div>
</div>
</div>
</div>
}
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header">محاسبه پایه سنوات</div>
@if (Model.BaseYearDataViewModel.BaseYearResult > 0)
{
@foreach (var item in Model.BaseYearDataViewModel.BaseYearDataList)
{
if (item.HasStartWork)
{
<div class="trTable green">
<div class="content">
<div class="date">@item.BaseYearPayDay</div>
<div>شروع بکار</div>
</div>
</div>
}
else if (item.HasLeftWork)
{
<div class="trTable red">
<div class="content">
<div class="date">@item.BaseYearPayDay</div>
<div>ترک کار</div>
</div>
</div>
}
else
{
if (item.BaseYearPayDay == "-")
{
<div class="trTable orange">
<div class="content">
<div>
<span class="date"> @item.BaseYearPayDayGr.ToFarsi()</span>
<span>فقط ارتقاء</span>
</div>
<div class="date">@item.BaseYear.ToMoney()</div>
</div>
</div>
}
else
{
<div class="trTable teal">
<div class="content">
<div class="date">@item.BaseYearPayDay</div>
<div class="date">@item.BaseYear.ToMoney()</div>
</div>
</div>
}
}
}
}
else
{
<div class="trTable">
<div class="trTable teal">
<div class="content">
<div>پایه سنوات ندارد</div>
</div>
</div>
</div>
}
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header"> محاسبه مزد روزانه </div>
@{
if (@Model.DailyWageType == "UpgradedDailyWage")
{
<div class="trTable">
<div class="content">
<div>بازه ارتقاء</div>
<div> ارتقاء مزد</div>
</div>
</div>
@foreach (var dailyWage in @Model.UpgradeManualDailyWageLists)
{
<div class="trTable">
<div class="content date">
<div>@dailyWage.StartEndDate</div>
<div>@dailyWage.DailyWage</div>
</div>
</div>
}
}
else if (@Model.DailyWageType == "ManualDailyWage")
{
<div class="trTable">
<div class="content date">
<div>مزد دلخواه</div>
<div>@Model.DailySalaryUnAffected</div>
</div>
</div>
}
else
{
<div class="trTable">
<div class="content date">
<div>مزد سالانه</div>
<div>@Model.DailySalaryUnAffected</div>
</div>
</div>
}
}
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header" style="background-color: #ff6100"> نتایج محاسبه پایه سنوات </div>
<div class="trTable date" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div> بدون تاثیر ساعت کار</div>
<div> @Model.BaseYearDataViewModel.BaseYearResult.ToMoney() </div>
</div>
</div>
<div class="trTable date" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>متاثر از ساعت کار</div>
<div> @Model.BaseYearAffected </div>
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="st">
<!-- هدر -->
<div class="header" style="background-color: #ff6100"> نتایج محاسبه مزد روزانه </div>
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>بدون تاثیر ساعت کار</div>
<div>@Model.DailySalaryUnAffected</div>
</div>
</div>
<div class="trTable" style="background-color: #727272">
<div class="content" style="background-color: #727272">
<div>متاثر از ساعت کار</div>
<div class="date"> @Model.DailySalaryAffected </div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="st">
<!-- هدر -->
<div class="header" style="background-color: #596059; padding: 3px"> دستمزد روزانه تجمیعی</div>
<div class="trTable" style="background-color: #3d7373">
<div class="content" style="background-color: #3d7373">
<div>@Model.ContractDate</div>
<div>@Model.DailyWage</div>
</div>
</div>
</div>
</div>
<div class="col-xs-12">
<button type="button" class="btn btn-warning btn-rounded waves-effect waves-light m-b-10" data-dismiss="modal">بستن فرم</button>
</div>
</div>
}
</div>

View File

@@ -47,13 +47,6 @@
position: relative;
}
.dailyWageReportIcon {
font-size: 20px !important;
top: 2px !important;
position: relative;
padding :6px !important;
}
.ionRad {
border-radius: 8px !important;
padding: 0px 7px 0px 7px !important;
@@ -804,13 +797,9 @@
<i class="ion-medkit ionSize"></i>
</a>
<a permission="20121" class="btn btn-inverse pull-left m-rl-5 ionRad2 @(item.IsBlockCantracingParty=="true" ? "disabled":"")"
<a permission="20121" class="btn btn-inverse pull-left m-rl-5 ionRad2 @(item.IsBlockCantracingParty=="true" ? "disabled":"")"
href="#showmodal=@Url.Page("./Index", "CreatePaidLeave", new {employeeId = item.EmployeeId, workshopId = item.WorkshopIds})">
<i class="ion-briefcase ionSize"></i>
</a>
<a permission="20123" class="btn btn-success pull-left m-rl-5 ionRad2 @(item.IsBlockCantracingParty=="true" ? "disabled":"")"
style="background-color: #c630fa !important; border-color: #c630fa !important;" href="#showmodal=@Url.Page("./Index", "DailyWageAndBaseYearReport", new {contractId = item.Id})">
<i class="ion-alert dailyWageReportIcon"></i>
</a>
</div>
<div class="flexible-div op-td mobile-view" style="justify-content: flex-end;">

View File

@@ -135,69 +135,6 @@ public class IndexModel : PageModel
employeeFullName = searchModel.EmployeeName;
}
/// <summary>
/// نحوه محاسبه پایه سنوات و ارتقاء مزد رو نمایش میده
/// </summary>
/// <param name="contractId"></param>
/// <returns></returns>
public async Task<IActionResult> OnGetDailyWageAndBaseYearReport(long contractId)
{
var res = new ContractDailyWageAndBaseYearReport();
var contract = _contractApplication.GetDetails(contractId);
var employeeName = _employeeApplication.GetDetails(contract.EmployeeId).EmployeeFullName;
var workshopName = _workshopApplication.GetWorkshopInfo(contract.WorkshopIds).WorkshopFullName;
var baseYearResult =await _yearlySalaryApplication.BaseYearComputeByContractId(contractId);
if (contract.DailySalaryUnAffected == 0 || string.IsNullOrWhiteSpace(contract.DailyWageType))
{
res = new ContractDailyWageAndBaseYearReport()
{
EmployeeName = employeeName,
WorkshopName = workshopName,
Contradiction = false,
OldComputeMethod = true,
};
return Partial("DailyWageAndBaseYearReport", res);
}
var dailyWageListResult = new List<UpgradeManualDailyWageList>();
bool contradiction = false;
if (contract.DailyWageType == "UpgradedDailyWage")
{
var upgradeDailyWageResult = _contractRepository.GetManualDailWageList(contract.WorkshopIds,
contract.EmployeeId, contract.ContractStartGr).GetAwaiter().GetResult();
dailyWageListResult = upgradeDailyWageResult.UpgradeManualDailyWageLists;
//اگر مغایرت داشت
if (contract.DailySalaryUnAffected.ToMoney().MoneyToDouble() != upgradeDailyWageResult.DailyWage.ToMoney().MoneyToDouble()
|| baseYearResult.BaseYearResult.ToMoney().MoneyToDouble() != contract.BaseYearUnAffected.ToMoney().MoneyToDouble())
contradiction = true;
}
res = new ContractDailyWageAndBaseYearReport()
{
BaseYearDataViewModel = baseYearResult,
BaseYearAffected = contract.BaseYearAffected > 0 ? contract.BaseYearAffected.ToMoney() : "0",
DailySalaryAffected = contract.DailySalaryAffected > 0 ? contract.DailySalaryAffected.ToMoney() : "0",
DailySalaryUnAffected = contract.DailySalaryUnAffected > 0 ? contract.DailySalaryUnAffected.ToMoney() : "0",
DailyWage = contract.DayliWage,
ContractDate = $"تا تاریخ {contract.ContarctStart.FindeEndOfMonth()}",
DailyWageType = contract.DailyWageType,
UpgradeManualDailyWageLists = dailyWageListResult,
EmployeeName = employeeName,
WorkshopName = workshopName,
Contradiction = contradiction,
};
return Partial("DailyWageAndBaseYearReport", res);
}
public async Task<IActionResult> OnGetPersonelMainList(string searchEmployee)
{

View File

@@ -568,32 +568,12 @@ public class AutoExtensionModel : PageModel
//return Partial("Alert", alarm);
if (!string.IsNullOrWhiteSpace(contractExistCheck)) contractExist = true;
//تاریخ پایان را پایان ماه شزع قرارداد در نظر میگیریم
//زیرا ممکن است تاریخ پایان قراداد در همان سال نباشد
var endOfMonthFromStart = ($"{start.ToFarsi().FindeEndOfMonth()}").ToGeorgianDateTime();
(double dailyWage, long yearlySalaryId) normalDailyWage = (0,0);
double upgradedDailyWage =0;
if (!contractExist)
{
normalDailyWage = _yearlySalaryApplication.GetDailyWageByStartEnd(start, endOfMonthFromStart).GetAwaiter().GetResult();
upgradedDailyWage =
_contractApplication.GetManualDailWage(workshopId, employeeId, normalDailyWage.yearlySalaryId, start).GetAwaiter().GetResult();
if (upgradedDailyWage == 0)
upgradedDailyWage = normalDailyWage.dailyWage;
}
return new JsonResult(new
{
success = true,
getWorkDate = getWorkDateHide,
errContractExist = contractExist,
errLeftValid = leftValid,
normalDailyWage = normalDailyWage.dailyWage > 0 ? normalDailyWage.dailyWage.ToMoney() : "0",
upgradedDailyWage = upgradedDailyWage > 0 ? upgradedDailyWage.ToMoney() : "0",
errLeftValid = leftValid
});
}
@@ -664,50 +644,6 @@ public class AutoExtensionModel : PageModel
#endregion
public IActionResult OnPostCompareDailyWage(string normalDailyWage,string manualDailyWage)
{
double normal = 0;
double manual = 0;
try
{
normal = normalDailyWage.MoneyToDouble();
manual = manualDailyWage.MoneyToDouble();
if (normal == 0 || manual == 0)
{
return new JsonResult(new
{
isSuccess = false,
message = "فقط عدد وارد کنید"
});
}
}
catch (Exception)
{
return new JsonResult(new
{
isSuccess = false,
message = "فقط عدد وارد کنید"
});
}
if (manual <= normal)
{
return new JsonResult(new
{
isSuccess = false,
message = $"مبلغ وارد شده می بایست بزرکتر یا مساوی {normalDailyWage} باشد"
});
}
return new JsonResult(new
{
isSuccess = true,
message = $"ok"
});
}
#region CreateContract
public IActionResult OnPostCreateContract(List<createContractModel> createContarctList)
@@ -723,28 +659,6 @@ public class AutoExtensionModel : PageModel
foreach (var item in createContarctList)
{
#region NewManualDailyWage
double normaldailyWage = item.NormalDailyWage.MoneyToDouble();
double dailySalaryUnAffected = item.DailySalaryUnAffectedStr.MoneyToDouble();
item.HasManualDailyWage = dailySalaryUnAffected > normaldailyWage;
item.DailySalaryUnAffected = dailySalaryUnAffected;
switch (item.DailyWageType)
{
case "1": item.DailyWageType = "NormalDailyWage";
break;
case "2":
item.DailyWageType = item.HasManualDailyWage == true ? "UpgradedDailyWage" : "NormalDailyWage";
break;
case "3":
item.DailyWageType = "ManualDailyWage";
break;
}
#endregion
var result =
_workingHoursTempApplication.GetByWorkshopIdAndEmployeeId(item.WorkshopId,
item.EmployeeId);
@@ -752,7 +666,6 @@ public class AutoExtensionModel : PageModel
result.WorkshopId = item.WorkshopId;
result.ContarctStart = item.ContractStart;
result.ContractEnd = item.ContractEnd;
result.DailySalaryUnAffected = dailySalaryUnAffected;
var leftWorkSerachModel = new LeftWorkSearchModel
{
EmployeeId = item.EmployeeId,
@@ -763,8 +676,6 @@ public class AutoExtensionModel : PageModel
?.StartWorkDate;
result.GetWorkDate = getWorkDateHide;
result.GetWorkDateHide = getWorkDateHide;
var compute = MandatoryHours(result);
item.DayliWage = compute.SalaryCompute;
item.GetWorkDate = getWorkDateHide;
@@ -782,10 +693,6 @@ public class AutoExtensionModel : PageModel
item.OverNightWorkM = compute.OverNightWorkM;
item.WorkshopAddress2 = result.WorkshopAddress2;
item.DailySalaryAffected = compute.DailySalaryAffected;
item.BaseYearAffected = compute.BaseYearAffected;
item.BaseYearUnAffected = compute.BaseYearUnAffected;
item.YearlySalaryId = yearlySalarId;
var createContractResult = _contractApplication.CreateNew(item);
var percent = i / maxNumber * 100;
@@ -5504,27 +5411,15 @@ public class AutoExtensionModel : PageModel
var endDate = command.ContractEnd.ToGeorgianDateTime();
var dayliFee = "خطای تاریخ";
var contractStartDate = command.ContarctStart.ToGeorgianDateTime();
double baseYearUnAffected = 0;
double baseYearAffected = 0;
double dailySalaryAffected = 0;
if (styear >= 1370)
{
if (leftworkList == null)
leftworkList = new List<LeftWorkViewModel>();
//var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStartDate,
// contractStartDate, command.EmployeeId, command.WorkshopId, leftworkList);
var baseYear = _yearlySalaryRepository.BaseYearCompute(contractStartDate, endDate, command.EmployeeId,
command.WorkshopId, leftworkList).Result;
dayliFee = (command.DailySalaryUnAffected + baseYear.BaseYearResult).ToMoney();
//basic = dayliFeeResult.Basic;
//Console.WriteLine($"oldDaily : {dayliFeeResult.DayliFee} newDaily {dayliFee}");
baseYearUnAffected = baseYear.BaseYearResult > 0 ? (baseYear.BaseYearResult.ToMoney()).MoneyToDouble() : 0;
baseYearAffected = baseYearUnAffected;
dailySalaryAffected = command.DailySalaryUnAffected;
var dayliFeeResult = _yearlySalaryRepository.DayliFeeComputing(startDate, contractStartDate,
contractStartDate, command.EmployeeId, command.WorkshopId, leftworkList);
dayliFee = dayliFeeResult.DayliFee;
basic = dayliFeeResult.Basic;
}
#endregion
@@ -5712,22 +5607,13 @@ public class AutoExtensionModel : PageModel
//var dividedForOneDay = totalHourses / notHolidaysCount;
if (totalHourses < FixHourses)
{
//var DailyFeeNumberType = dayliFee.MoneyToDouble();
//var dailyStep1 = DailyFeeNumberType / 7.33;
var DailyFeeNumberType = dayliFee.MoneyToDouble();
var dailyStep1 = DailyFeeNumberType / 7.33;
var hoursesPerDay = totalHourses / TotalDaysNoFriday;
//var result = hoursesPerDay * dailyStep1;
var result = hoursesPerDay * dailyStep1;
//dayliFee = result.ToMoney();
dayliFee = result.ToMoney();
var da = command.DailySalaryUnAffected / 7.33;
dailySalaryAffected = da > 0 ? ((hoursesPerDay * da).ToMoney()).MoneyToDouble() : 0 ;
var ba = baseYearUnAffected / 7.33;
baseYearAffected = ba > 0 ? ((hoursesPerDay * ba).ToMoney()).MoneyToDouble() : 0;
var fullDailySalary = dailySalaryAffected + baseYearAffected;
dayliFee = fullDailySalary.ToMoney();
var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
var HousingStep1 = HousingAllowonceNumberType / 30; // کمک هزینه خام به ازای روز
@@ -5814,21 +5700,12 @@ public class AutoExtensionModel : PageModel
if (totalHourses < FixHourses)
{
//var dailyFeeNumberType = dayliFee.MoneyToDouble();
//var dailyStep1 = dailyFeeNumberType / 7.33;
var dailyFeeNumberType = dayliFee.MoneyToDouble();
var dailyStep1 = dailyFeeNumberType / 7.33;
var hoursesPerDay = totalHourses / TotalDaysNoFriday;
//var result = hoursesPerDay * dailyStep1;
//dayliFee = result.ToMoney();
var da = command.DailySalaryUnAffected / 7.33;
dailySalaryAffected = da > 0 ? ((hoursesPerDay * da).ToMoney()).MoneyToDouble() : 0;
var ba = baseYearUnAffected / 7.33;
baseYearAffected = ba > 0 ? ((hoursesPerDay * ba).ToMoney()).MoneyToDouble() : 0;
var fullDailySalary = dailySalaryAffected + baseYearAffected;
dayliFee = fullDailySalary.ToMoney();
var result = hoursesPerDay * dailyStep1;
dayliFee = result.ToMoney();
//var HousingAllowonceNumberType = HousingAllowance.MoneyToDouble();
//var HousingStep1 = HousingAllowonceNumberType / 30;
@@ -6015,11 +5892,7 @@ public class AutoExtensionModel : PageModel
weeklyTime = weeklyTime,
RotatingResultList = rotatingResultList,
RotatingStatus = rotatingFaResult,
Basic = basic,
BaseYearAffected = baseYearAffected,
BaseYearUnAffected = baseYearUnAffected,
DailySalaryAffected = dailySalaryAffected,
Basic = basic
};

View File

@@ -299,23 +299,10 @@
</div>
</div>
</div>
<div class="row" id="formPermissionAccount" style="display: none">
@if (Model.Command.PermissionIds != null && Model.Command.PermissionIds.Contains(10330))
{
<partial name="_CreateForms/FormPermissionAccount" model="Model.Command"/>
}
else
{
<div class="flex-box w-100">
<h4 style="margin: auto; margin-top: 10%;" class="text-danger">
شما مجوز دسترسی به این بخش را ندارید.
</h4>
</div>
}
<partial name="_CreateForms/FormPermissionAccount" model="Model.Command" />
</div>
<div class="row" id="form2" style="display: none">
@if (Model.Command.PermissionIds != null && Model.Command.PermissionIds.Contains(10323))

View File

@@ -312,15 +312,7 @@
</div>
</div>
<div class="row" id="formPermissionAccount" style="display: none">
<div class="flex-box w-100" style="@(Model.HasPermissionAccount ? "display: none;" : "")">
<h4 style="margin: auto; margin-top: 10%;" class="text-danger">
شما مجوز دسترسی به این بخش را ندارید.
</h4>
</div>
<div style="@(!Model.HasPermissionAccount ? "display: none;" : "")">
<partial name="_EditForms/FormPermissionAccount" model="Model.Command"/>
</div>
<partial name="_EditForms/FormPermissionAccount" model="Model.Command" />
</div>
<div class="row" id="form2" style="display: none">
<input type="hidden" id="PermissionContract" asp-for="@Model.HasPermissionContract" value="@Model.HasPermissionContract" />

View File

@@ -32,7 +32,6 @@ namespace ServiceHost.Areas.Admin.Pages.Company.Workshops
public bool HasPermissionWorkshopInfo;
public bool HasPermissionContract;
public bool HasPermissionInsurance;
public bool HasPermissionAccount;
public List<AccountViewModel> DeactivatedAccounts;
public EditWorkshopModel(IWorkshopApplication workshopApplication, IWorkshopRepository workshopRepository, IEmployerApplication employerApplication, IAccountRepository accountRepository, IInsuranceJobApplication insuranceJobApplication, IAuthHelper authHelper, IRollCallServiceApplication rollCallServiceApplication)
@@ -52,7 +51,6 @@ namespace ServiceHost.Areas.Admin.Pages.Company.Workshops
HasPermissionWorkshopInfo = permissions.Any(x => x == 10326);
HasPermissionContract = permissions.Any(x => x == 10323);
HasPermissionInsurance = permissions.Any(x => x == 10324);
HasPermissionAccount = permissions.Any(x => x == 10330);
var permissionIds = _authHelper.GetPermissions();
// var currentAccout = _authHelper.CurrentAccountInfo();

View File

@@ -52,7 +52,6 @@ public class FinancialController : ClientBaseController
/// <param name="cancellationToken"></param>
/// <returns></returns>
[HttpPost("CreatePay")]
[AllowAnonymous]
public async Task<ActionResult<OperationResult<string>>> CreatePay([FromForm] CreateFinancialPayRequest request, CancellationToken cancellationToken)
{
var op = new OperationResult<string>();

View File

@@ -31,7 +31,6 @@
data-action="ReloadLeave">
<input type="hidden" asp-for="@Model.WorkshopId" />
<input type="hidden" asp-for="@Model.IsInvallid" id="isInvalid" />
<div class="modal-content">
<div class="modal-header d-block text-center position-relative">
@@ -209,8 +208,6 @@
var computeLeaveDailyAjax = `@Url.Page("/Company/Employees/Leave", "ComputeLeaveDaily")`;
var employeeListAjax = `@Url.Page("Index", "EmployeeList")`;
var hasRotatingShiftAjax = `@Url.Page("/Company/Employees/Leave", "HasRotatingShift")`;
var checkCanCreateInvalidUrl = `@Url.Page("/Company/Employees/Leave","CheckIsInvalidLeave")`;
</script>
<script src="~/assetsclient/pages/employees/js/createleave.js?ver=@clientVersion"></script>

View File

@@ -252,8 +252,6 @@
<input type="hidden" name="leaveType" id="leaveType" asp-for="SearchModel.LeaveType" />
<input type="hidden" name="start" id="start" asp-for="SearchModel.StartLeave" />
<input type="hidden" name="end" id="end" asp-for="SearchModel.EndLeave" />
<input type="hidden" name="isInvalid" id="isInvalid" asp-for="SearchModel.IsInvalid" />
<div class="container-fluid d-none d-lg-block">
<div class="row px-2">
@@ -262,80 +260,64 @@
<div class="col-12">
<div class="d-grid search-section gap-2">
@{
var gridCols = Model.HasCustomizeCheckout ? "4" : "3";
}
<div class="d-grid grid-cols-@gridCols gap-2 col-span-4">
<div class="d-grid grid-cols-3 gap-2 col-span-4">
<div class="wrapper-dropdown-normal btn-dropdown" id="dropdown-normal">
<span class="selected-display" id="destination-normal">هر دو</span>
<svg id="drp-arrow" class="arrow transition-all ml-auto rotate-180" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-normal boxes">
<li class="item" value-data-normal="both">هر دو</li>
<li class="item" value-data-normal="paidLeave">استحقاقی</li>
<li class="item" value-data-normal="sickLeave">استعلاجی</li>
</ul>
<input type="hidden" id="sendSorting" asp-for="SearchModel.LeaveType"/>
</div>
<span class="selected-display" id="destination-normal">هر دو</span>
<svg id="drp-arrow" class="arrow transition-all ml-auto rotate-180" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-normal boxes">
<li class="item" value-data-normal="both">هر دو</li>
<li class="item" value-data-normal="paidLeave">استحقاقی</li>
<li class="item" value-data-normal="sickLeave">استعلاجی</li>
</ul>
<input type="hidden" id="sendSorting" asp-for="SearchModel.LeaveType"/>
</div>
<div class="wrapper-dropdown-year btn-dropdown" id="dropdown-year">
<span class="selected-display" id="destination-year">سال</span>
<svg class="arrow transition-all ml-auto rotate-180" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-year boxes" id="my-scrollbar">
<li class="item" value-data-year="0">سال</li>
@foreach (string year in @Model.YearlyList)
{
<li class="item" value-data-year="@year">@year</li>
}
</ul>
<input type="hidden" id="sendDropdownYear" asp-for="SearchModel.Year"/>
</div>
<div class="wrapper-dropdown-year btn-dropdown" id="dropdown-year">
<span class="selected-display" id="destination-year">سال</span>
<svg class="arrow" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="transition-all ml-auto rotate-180">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-year boxes" id="my-scrollbar">
<li class="item" value-data-year="0">سال</li>
@foreach (string year in @Model.YearlyList)
{
<li class="item" value-data-year="@year">@year</li>
}
</ul>
<input type="hidden" id="sendDropdownYear" asp-for="SearchModel.Year"/>
</div>
<div class="wrapper-dropdown-month btn-dropdown" id="dropdown-month">
<span class="selected-display" id="destination-month">ماه</span>
<svg class="arrow transition-all ml-auto rotate-180" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-month boxes">
<li class="item" value-data-month="0">ماه</li>
<li class="item" value-data-month="01">فروردین</li>
<li class="item" value-data-month="02">اردیبهشت</li>
<li class="item" value-data-month="03">خرداد</li>
<li class="item" value-data-month="04">تیر</li>
<li class="item" value-data-month="05">مرداد</li>
<li class="item" value-data-month="06">شهریور</li>
<li class="item" value-data-month="07">مهر</li>
<li class="item" value-data-month="08">آبان</li>
<li class="item" value-data-month="09">آذر</li>
<li class="item" value-data-month="10">دی</li>
<li class="item" value-data-month="11">بهمن</li>
<li class="item" value-data-month="12">اسفند</li>
</ul>
<input type="hidden" id="sendDropdownMonth" asp-for="SearchModel.Month"/>
<div class="wrapper-dropdown-month btn-dropdown" id="dropdown-month">
<span class="selected-display" id="destination-month">ماه</span>
<svg class="arrow" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="transition-all ml-auto rotate-180">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-month boxes">
<li class="item" value-data-month="0">ماه</li>
<li class="item" value-data-month="01">فروردین</li>
<li class="item" value-data-month="02">اردیبهشت</li>
<li class="item" value-data-month="03">خرداد</li>
<li class="item" value-data-month="04">تیر</li>
<li class="item" value-data-month="05">مرداد</li>
<li class="item" value-data-month="06">شهریور</li>
<li class="item" value-data-month="07">مهر</li>
<li class="item" value-data-month="08">آبان</li>
<li class="item" value-data-month="09">آذر</li>
<li class="item" value-data-month="10">دی</li>
<li class="item" value-data-month="11">بهمن</li>
<li class="item" value-data-month="12">اسفند</li>
</ul>
<input type="hidden" id="sendDropdownMonth" asp-for="SearchModel.Month"/>
</div>
@if (Model.HasCustomizeCheckout)
{
<div class="wrapper-dropdown-invalid btn-dropdown" id="dropdown-invalid">
<span class="selected-display" id="destination-invalid">دارای اعتبار</span>
<svg class="arrow transition-all ml-auto rotate-180" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 14.5l5-5 5 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<ul class="dropdown-invalid boxes">
<li class="item" value-data-invalid="false">دارای اعتبار</li>
<li class="item" value-data-invalid="true">فاقد اعتبار</li>
</ul>
<input type="hidden" id="sendDropdownInvalid" asp-for="SearchModel.IsInvalid"/>
</div>
}
</div>
</div>
<div class="col-span-1 md-col-span-2"><input type="text" class="form-control date start-date" asp-for="SearchModel.StartLeave" placeholder="تاریخ شروع"></div>
<div class="col-span-2 md-col-span-2"><input type="text" class="form-control date start-date" asp-for="SearchModel.StartLeave" placeholder="تاریخ شروع"></div>
<div class="col-span-2 md-col-span-2"><input type="text" class="form-control date end-date" asp-for="SearchModel.EndLeave" placeholder="تاریخ پایان"></div>
<div class="col-span-2 md-col-span-3">
<div class="employeeSelect">
<select class="form-select select2Option" aria-label="انتخاب پرسنل ..." asp-for="SearchModel.EmployeeId" id="employeeSelect">
@@ -906,20 +888,13 @@
</select>
</div>
<div class="mb-2">
<select class="form-select" asp-for="SearchModel.LeaveType">
<option value="both" selected>هر دو</option>
<option value="paidLeave">استحقاقی</option>
<option value="sickLeave">استعلاجی</option>
</select>
</div>
<div class="mb-2">
<select class="form-select" asp-for="SearchModel.IsInvalid">
<option value="false">دارای اعتبار</option>
<option value="true">فاقد اعتبار</option>
</select>
</div>
<div class="mb-2">
<select class="form-select" asp-for="SearchModel.LeaveType">
<option value="both" selected>هر دو</option>
<option value="paidLeave">استحقاقی</option>
<option value="sickLeave">استعلاجی</option>
</select>
</div>
<div>
<span class="form-control text-center persianDateInputStartDate" id="start-date">تاریخ شروع</span>
@@ -1244,12 +1219,6 @@
$('#sendDropdownMonth').val(dataVal);
});
$('.dropdown-invalid .item').on("click", function () {
let dataVal = $(this).attr("value-data-invalid");
$('#sendDropdownInvalid').val(dataVal === 'both' ? '' : dataVal);
$('#isInvalid').val(dataVal === 'both' ? '' : dataVal)
});
var sendDropdownNormal = $("#sendSorting").val();
if (sendDropdownNormal) {
let itemDropdownNormal = $(".dropdown-normal").find(".item[value-data-normal='" + sendDropdownNormal + "']");
@@ -1274,21 +1243,6 @@
selectedMonthDisplay.text(itemDropdownMonth.text());
}
// Initialize invalid dropdown display
var sendDropdownInvalid = $("#sendDropdownInvalid").val();
if (!sendDropdownInvalid) {
let itemInvalidBoth = $(".dropdown-invalid").find(".item[value-data-invalid='both']");
itemInvalidBoth.addClass("active");
var selectedInvalidDisplay = $(".wrapper-dropdown-invalid").find(".selected-display");
selectedInvalidDisplay.text(itemInvalidBoth.text());
} else {
let invalidVal = sendDropdownInvalid.toString().toLowerCase();
let itemInvalid = $(".dropdown-invalid").find(".item[value-data-invalid='" + invalidVal + "']");
itemInvalid.addClass("active");
var selectedInvalidDisplay = $(".wrapper-dropdown-invalid").find(".selected-display");
selectedInvalidDisplay.text(itemInvalid.text());
}
// check if anything else ofther than the dropdown is clicked
window.addEventListener("click", function (e) {
if (e.target.closest(".wrapper-dropdown") === null) {
@@ -2798,8 +2752,7 @@
'searchModel.LeaveType': $('#leaveType').val(),
'searchModel.StartLeave': $('#start').val(),
'searchModel.EndLeave': $('#end').val(),
'searchModel.PageIndex': $('#pageIndex').val(),
'searchModel.IsInvalid': $('#isInvalid').val(),
'searchModel.PageIndex': $('#pageIndex').val()
};

View File

@@ -15,9 +15,7 @@ using System.Text.RegularExpressions;
using _0_Framework.Infrastructure;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
using CompanyManagment.App.Contracts.HolidayItem;
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
using CompanyManagment.App.Contracts.RollCallService;
namespace ServiceHost.Areas.Client.Pages.Company.Employees
{
@@ -51,13 +49,10 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication;
private readonly IHttpContextAccessor _contextAccessor;
private readonly long _workshopId;
private readonly IHolidayItemApplication _holidayItemApplication;
private readonly IRollCallServiceApplication _rollCallServiceApplication;
public int PageIndex;
public bool HasCustomizeCheckout { get; set; }
#region Initial Data
public LeaveModel(IWorkshopApplication workshopApplication, IEmployeeApplication employeeApplication, IAuthHelper authHelper, ILeaveApplication leaveApplication, IYearlySalaryApplication yearlySalaryApplication, IPasswordHasher passwordHasher, IHttpContextAccessor contextAccessor, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IHolidayItemApplication holidayItemApplication, IRollCallServiceApplication rollCallServiceApplication)
#region Initial Data
public LeaveModel(IWorkshopApplication workshopApplication, IEmployeeApplication employeeApplication, IAuthHelper authHelper, ILeaveApplication leaveApplication, IYearlySalaryApplication yearlySalaryApplication, IPasswordHasher passwordHasher, IHttpContextAccessor contextAccessor, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication)
{
_workshopApplication = workshopApplication;
_employeeApplication = employeeApplication;
@@ -67,8 +62,6 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
_contextAccessor = contextAccessor;
_rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication;
_customizeWorkshopSettingsApplication = customizeWorkshopSettingsApplication;
_holidayItemApplication = holidayItemApplication;
_rollCallServiceApplication = rollCallServiceApplication;
_authHelper = authHelper;
@@ -87,8 +80,6 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
{
//long employeeId = _passwordHasher.SlugDecrypt(employeeHash);
long employeeId = searchModel.EmployeeId;
var rollCallServiceViewModel = _rollCallServiceApplication.GetActiveServiceByWorkshopId(_workshopId);
HasCustomizeCheckout = rollCallServiceViewModel is { HasCustomizeCheckoutService: "true" };
if (employeeId >= 0)
{
var workshop = _workshopApplication.GetDetails(_workshopId);
@@ -100,8 +91,7 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
Year = searchModel.Year,
Month = searchModel.Month,
StartLeave = searchModel.StartLeave,
EndLeave = searchModel.EndLeave,
IsInvalid = searchModel.IsInvalid
EndLeave = searchModel.EndLeave
};
Year = searchModel.Year;
Month = searchModel.Month;
@@ -176,35 +166,6 @@ namespace ServiceHost.Areas.Client.Pages.Company.Employees
PrintID = result.SendId
});
}
public IActionResult OnPostCheckIsInvalidLeave(string startDate)
{
bool isInHoliday = false;
bool canCreateInvalid = false;
var dateTimeGr = startDate.ToGeorgianDateTime();
if (dateTimeGr.DayOfWeek == DayOfWeek.Friday)
{
isInHoliday = true;
}else if (_holidayItemApplication.IsHoliday(dateTimeGr))
{
isInHoliday = true;
};
if (isInHoliday)
{
var rollCallService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(_workshopId);
if (rollCallService != null)
{
canCreateInvalid =rollCallService.HasCustomizeCheckoutService == "true";
}
}
return new JsonResult(new
{
isInHoliday,
canCreateInvalid
});
}
#endregion
#region Check If Valide To Edit

View File

@@ -329,8 +329,7 @@
}
</div>
<div class="col-6 d-inline-block text-center">
<p class="m-0" style="font-size: 15px; font-weight: bold">برگ مرخصی @(item.IsInvalid?"(فاقداعتبار)":"")</p>
<p style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (item.PaidLeaveType == "روزانه")

View File

@@ -222,7 +222,7 @@
<div class="row">
<div class="col-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; width: 60%; font-size: 12px; text-align: center;"> @item.ContractNo</fieldset></div>
<div class="col-6 d-inline-block text-center">
<p class="m-0" style="font-size: 15px; font-weight: bold">برگ مرخصی @(item.IsInvalid?"(فاقداعتبار)":"")</p>
<p style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (item.PaidLeaveType == "روزانه")

View File

@@ -298,7 +298,7 @@
}
</div>
<div class="col-6 d-inline-block text-center">
<p class="m-0" style="font-size: 15px; font-weight: bold">برگ مرخصی @(Model.IsInvalid?"(فاقداعتبار)":"")</p>
<p class="m-0" style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (Model.PaidLeaveType == "روزانه")

View File

@@ -230,7 +230,7 @@
<div class="row">
<div class="col-3 d-inline-block"><fieldset style="border: 1px solid black; border-radius: 15px; padding: 1px 15px 1px 15px; width: 60%; font-size: 12px; text-align: center;"> @Model.ContractNo</fieldset></div>
<div class="col-6 d-inline-block text-center">
<p class="m-0" style="font-size: 15px; font-weight: bold">برگ مرخصی @(Model.IsInvalid?"(فاقداعتبار)":"")</p>
<p style="font-size: 15px; font-weight: bold">برگ مرخصی</p>
</div>
<div class="col-3 d-inline-block" style="text-align: left;">
@if (Model.PaidLeaveType == "روزانه")

View File

@@ -62,8 +62,7 @@
</div>
<div class="flex items-center gap-3">
<a referrerpolicy='origin' target='_blank' href='https://trustseal.enamad.ir/?id=653633&Code=i4xawX1zauW7nICGaD0VqxehuTpMHAiC'><img referrerpolicy='origin' src='https://trustseal.enamad.ir/logo.aspx?id=653633&Code=i4xawX1zauW7nICGaD0VqxehuTpMHAiC' alt='' style='cursor:pointer' code='i4xawX1zauW7nICGaD0VqxehuTpMHAiC'></a>
<img src="~/assetsmain/images/enamad_icon.png" class="w-24" alt="" srcset="" style="visibility: hidden">
<img src="~/assetsmain/images/enamad_icon.png" class="w-24" alt="" srcset="" style="visibility: hidden">
<img src="~/assetsmain/images/enamed-park.png" class="w-24" alt="" srcset="" style="visibility: hidden">
</div>
</div>

View File

@@ -196,13 +196,13 @@
<div class="w-full" style="z-index: 10;">
<div class="!text-white text-center font-extrabold text-[#1.4rem] md:text-start">نشانی گزارشگیر</div>
<div class="flex flex-col items-center justify-between md:flex-row">
<div class="!text-white font-medium text-center text-[#0.8rem] md:text-start"> رشت - خیابان حاجی آباد - روبروی پارکینگ بزرگ حاجی آباد - ابتدای کوچه سپهدار - ساختمان دادماش - طبقه پنجم - واحد 17 </div>
<div class="!text-white font-medium text-center text-[#0.8rem] md:text-start">منطقه آزاد انزلی، مجتمع ونوس طبقه اول، قرفه ۵۵۰</div>
<div class="text-center">
<div class="!text-white font-medium text-[#0.8rem]">شماره تماس</div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">01333238777</span></div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">01333328886</span></div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">01333328887</span></div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">۰۱۳۳۲۳۲۸۸۸۶</span></div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">۰۱۳۳۲۳۲۸۸۸۷</span></div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">۰۱۳۳۳۲۴۴۹۲۶</span></div>
<div class="!text-white font-medium text-[#0.8rem]"><span class="ss03">۰۱۳۳۳۲۳۸۷۷۷</span></div>
</div>
</div>
</div>

View File

@@ -96,19 +96,7 @@ connection.on('showStatus',
});
$('#firstCheckBtn').on('click',
function () {
$("a.groupDailyWage")
.removeClass("groupDailyWageEnable");
$('.errorCompare').addClass("falseStatusHide");
$('.dayliwage').removeClass("erroreManual");
$(".groupDailyWage").removeClass("selectedBtn");
$('.dayliwage').prop("disabled", true);
$('.dayliwage').val("0");
$(".selectDailyWageModel").prop("disabled", true);
$(".selectDailyWageModel").prop('selectedIndex', 0).trigger('chang');
$('#datatable tbody tr').each(function (i) {
const tagTrue = $(this).find(".ion-checkmark-circled");
const tagFalse = $(this).find(".ion-close-circled");
const statusTrue = $(this).find("input[name=isStatusTrue]");
@@ -145,8 +133,6 @@ $('#firstCheckBtn').on('click',
var failedTr;
var workshopId = $('#workshopId').val();
var normalDailyWage = "0";
var upgradedDailyWage = "0";
var address = $('#wAddress1').val();
const checkboxCount = $('#datatable').find("input[type=checkbox]:checked").length;
//ERR Response
@@ -191,12 +177,8 @@ $('#firstCheckBtn').on('click',
if (continueCheck && dateInputPannel) {
if (checkboxCount > 0) {
$('#datatable tbody tr').each(function (i) {
let chekbox = $(this).find("input[name=selectItem]");
$(this).find(".sdate").prop("disabled", false);
$(this).find(".edate").prop("disabled", false);
if (chekbox.is(":checked") == true) {
employeeId = $(this).attr("data-employeeId");
start = $(this).find("input[name=contarctStart]").val();
@@ -343,9 +325,6 @@ $('#firstCheckBtn').on('click',
errLeftValid = response.errLeftValid;
errContractExist = response.errContractExist;
normalDailyWage = response.normalDailyWage;
upgradedDailyWage = response.upgradedDailyWage;
}
},
failure: function (response) {
@@ -379,11 +358,6 @@ $('#firstCheckBtn').on('click',
} else {
$(this).removeClass("redColor");
$(this).addClass("greenColor");
$(this).find(".selectDailyWageModel").prop("disabled", false);
$(this).find(".normalDailyWage").val(normalDailyWage);
$(this).find(".upgradedDailyWage").val(upgradedDailyWage);
$(this).find(".sdate").prop("disabled", true);
$(this).find(".edate").prop("disabled", true);
//$(this).find("input[type=checkbox]").removeAttr("disabled");
//$(this).find("input[type=checkbox]").prop("checked", true);
var iTagTrue = $(this).find(".ion-checkmark-circled");
@@ -445,14 +419,6 @@ $('#firstCheckBtn').on('click',
}); //end of each
var greenCount = $("table tr.greenColor").length;
if (greenCount >= 1) {
$("a.groupDailyWage")
.addClass("groupDailyWageEnable");
}
} else { //checkboxCount If statment
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', " هیچ موردی انتخاب نشده است - میتوانید بصورت گروهی یا تکی، پرسنل را تیک بزنید");
@@ -570,14 +536,6 @@ $('#startProcess').on('click',
createContractModel.EmployerId = employerId;
createContractModel.NormalDailyWage = $(this).find("input[name=normalDailyWage]").val();
createContractModel.DailySalaryUnAffectedStr = $(this).find("input[name=dailySalaryUnAffectedStr]").val();
createContractModel.DailyWageType = $(this).find("select[name=dailyWageType]").val();
if (createContractModel.DailySalaryUnAffectedStr == "0") {
$(this).find("input[name=dailySalaryUnAffectedStr]").addClass("erroreManual");
startCreate = false;
}
createContarctList.push(createContractModel);

View File

@@ -548,7 +548,6 @@ svg {
overflow: hidden;
}
.dropdown-global-item {
padding: 4px 10px;
cursor: pointer;
@@ -568,101 +567,4 @@ svg {
.dropdown-global.active .dropdown-global-content {
display: flex;
}
/* --------------------------------------------------------------------------------Invalid-------------------------------------------------------------------------------------- */
/* the code below is for the dropdown menu */
.wrapper-dropdown-invalid {
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
padding: 3px 7px;
border-radius: 7px;
background: #ffffff;
color: #575a5d;
border: 1px solid #DADADA;
font-size: 12px;
font-weight: 400;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.wrapper-dropdown-invalid::before {
position: absolute;
top: 50%;
right: 16px;
margin-top: -2px;
border-width: 6px 6px 0 6px;
border-style: solid;
border-color: #fff transparent;
}
.wrapper-dropdown-invalid .dropdown-invalid {
transition: 0.3s;
position: absolute;
top: 120%;
right: 0;
left: 0;
margin: 0;
padding: 0;
list-style: none;
z-index: 99;
border-radius: 15px;
background: inherit;
-webkit-transform-origin: top;
-moz-transform-origin: top;
-ms-transform-origin: top;
transform-origin: top;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
opacity: 0;
visibility: hidden;
height: auto;
overflow: auto;
scrollbar-width: none;
scrollbar-color: #dfe3ea #fff;
border: 1px solid #DADADA;
}
.wrapper-dropdown-invalid .dropdown-invalid li {
padding: 0 10px;
line-height: 36px;
overflow: hidden;
transition: all .1s ease;
margin: 2px 0;
white-space: nowrap;
}
.wrapper-dropdown-invalid .dropdown-invalid li:last-child {
border-bottom: none;
}
.dropdown-invalid {
padding: 0.5rem !important;
}
.wrapper-dropdown-invalid .dropdown-invalid li:hover {
background-color: #3ad1d1;
color: #fff;
border-radius: 10px;
}
.wrapper-dropdown-invalid .dropdown-invalid .active {
background-color: #3ad1d1;
color: #fff;
border-radius: 10px;
}
.wrapper-dropdown-invalid.active .dropdown-invalid {
opacity: 1;
visibility: visible;
border-radius: 15px;
}
}

View File

@@ -215,58 +215,6 @@ $(document).ready(function () {
});
}
/* --------------------------------------------------------------------------------Invalid-------------------------------------------------------------------------------------- */
// dropdown invalid
const selectedAllInvalid = document.querySelectorAll(".wrapper-dropdown-invalid");
selectedAllInvalid.forEach((selected) => {
const optionsContainer = selected.children[2];
const optionsList = selected.querySelectorAll("div.wrapper-dropdown-invalid li");
selected.addEventListener("click", () => {
let arrow = selected.children[1];
let currentActive = document.querySelector(".wrapper-dropdown-invalid.active");
if (currentActive) {
let anotherArrow = currentActive.children[1];
handleDropdown(currentActive, anotherArrow, false);
}
handleDropdown(selected, arrow, true);
});
// update the display of the dropdown invalid
for (let o of optionsList) {
o.addEventListener("click", () => {
selected.querySelector(".selected-display").innerHTML = o.innerHTML;
});
}
$(document).on("click", '.dropdown-invalid .item', function (e) {
$('.dropdown-invalid .item').removeClass("active");
$(this).addClass("active");
closeAllDropdownsInvalid();
});
});
// check if anything else other than the dropdown invalid is clicked
window.addEventListener("click", function (e) {
if (e.target.closest(".wrapper-dropdown-invalid") === null) {
closeAllDropdownsInvalid();
}
});
// close all the dropdowns invalid
function closeAllDropdownsInvalid() {
const selectedInvalid = document.querySelectorAll(".wrapper-dropdown-invalid");
selectedInvalid.forEach((selected) => {
const optionsContainer = selected.children[2];
let arrow = selected.children[1];
handleDropdown(selected, arrow, false);
});
}
// open all the dropdowns
function handleDropdown(dropdown, arrow, open) {

View File

@@ -14,7 +14,7 @@ $(document).ready(function () {
return data.text;
}
});
$(".select2OptionShift").select2({
language: "fa",
dir: "rtl",
@@ -27,12 +27,12 @@ $(document).ready(function () {
}
});
ajaxPersonals();
ajaxPersonals();
$("#cardSectionLeave div *").prop('disabled', true);
document.getElementById("MainModal").style.visibility = "visible";
document.getElementById("MainModal").style.visibility = "visible";
$('#employeeSelectList').on('change', function () {
$('#employeeSelectList').on('change', function () {
$('#rotatingShiftSection').addClass('disable');
$('#HasRollCall').val(false);
previousStartDate = "";
@@ -65,7 +65,7 @@ $(document).ready(function () {
$('#SelectedShift_EndTime').val(endTime || '');
});
$('#employeeSelectList').change(function () {
$('#employeeSelectList').change(function () {
var selectValue = $('#employeeSelectList').val();
if (selectValue === '') {
@@ -78,64 +78,64 @@ $(document).ready(function () {
}
});
//******************** شرط استحقاقی و استعلاجی ********************
$(document).on("change", ".LeaveType", function () {
if ($('#paid').is(':checked')) {
$('#dailyType').css('visibility', 'visible');
//******************** شرط استحقاقی و استعلاجی ********************
$(document).on("change", ".LeaveType", function () {
if ($('#paid').is(':checked')) {
$('#dailyType').css('visibility', 'visible');
rotatingShift();
}
if ($('#sick').is(':checked')) {
$('#dailyType').css('visibility', 'hidden');
$('#daily').prop('checked', true);
if ($('#daily').is(':checked')) {
$('#end_date_estehghaghi').show();
$('.time_paid').hide();
}
rotatingShift();
}
}
});
if ($('#sick').is(':checked')) {
$('#dailyType').css('visibility', 'hidden');
$('#daily').prop('checked', true);
if ($('#daily').is(':checked')) {
$('#end_date_estehghaghi').show();
$('.time_paid').hide();
}
// شرط ساعتی و روزانه
$(document).on("change", ".LeaveTime", function () {
if ($('#daily').is(':checked')) {
$('#end_date_estehghaghi').show();
$('.time_paid').hide();
rotatingShift();
}
});
}
// شرط ساعتی و روزانه
$(document).on("change", ".LeaveTime", function () {
if ($('#daily').is(':checked')) {
$('#end_date_estehghaghi').show();
$('.time_paid').hide();
if ($('#hourly').is(':checked')) {
$('#end_date_estehghaghi').hide();
$('.time_paid').show();
rotatingShift();
}
if ($('#hourly').is(':checked')) {
$('#end_date_estehghaghi').hide();
$('.time_paid').show();
rotatingShift();
}
});
//******************** شرط استحقاقی و استعلاجی ********************
}
});
//******************** شرط استحقاقی و استعلاجی ********************
//******************** بلور کردن باکس ********************
$('#IsAccepted').on('change', function () {
if ($(this).is(':checked')) {
$('#blur-div').addClass('blur');
$('#textArea').text('');
$('#textArea').attr('disabled', true);
//******************** بلور کردن باکس ********************
$('#IsAccepted').on('change', function () {
if ($(this).is(':checked')) {
$('#blur-div').addClass('blur');
$('#textArea').text('');
$('#textArea').attr('disabled', true);
} else {
$('#blur-div').removeClass('blur');
$('#textArea').attr('disabled', false);
}
});
} else {
$('#blur-div').removeClass('blur');
$('#textArea').attr('disabled', false);
}
});
if ($('#IsAccepted').is(':checked')) {
$('#blur-div').addClass('blur');
$('#textArea').text('');
$('#textArea').attr('disabled', true);
} else {
$('#blur-div').removeClass('blur');
$('#textArea').attr('disabled', false);
}
//******************** بلور کردن باکس ********************
if ($('#IsAccepted').is(':checked')) {
$('#blur-div').addClass('blur');
$('#textArea').text('');
$('#textArea').attr('disabled', true);
} else {
$('#blur-div').removeClass('blur');
$('#textArea').attr('disabled', false);
}
//******************** بلور کردن باکس ********************
$(document).on("change", "#IsAccepted", function () {
var IsAcceptedCheck = $('#IsAccepted').is(':checked');
@@ -149,7 +149,7 @@ $(document).ready(function () {
}
});
$('#save').on('click', function () {
$('#save').on('click', function () {
var hasRollCallInput = $("#HasRollCall").val();
var rotatingShiftInput = $("#rotatingShift").val();
@@ -166,128 +166,91 @@ $(document).ready(function () {
}
}
$("#descriptionAcceptedCheck").on("change", function () {
$('#descriptionAcceptedCheck').removeClass('errored');
});
$("#descriptionAcceptedCheck").on("change", function () {
$('#descriptionAcceptedCheck').removeClass('errored');
});
var IsAcceptedCheck = $('#IsAccepted').is(':checked');
var descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
var IsAcceptedCheck = $('#IsAccepted').is(':checked');
var descriptionAcceptedCheck = $('#descriptionAcceptedCheck').val();
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا توضیحات در صورت عدم موافقت را پر کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
return false;
}
if (!IsAcceptedCheck && descriptionAcceptedCheck.length === 0) {
$('#descriptionAcceptedCheck').addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا توضیحات در صورت عدم موافقت را پر کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
return false;
}
if ($('.errored').length < 1) {
$.ajax({
/* contentType: 'charset=utf-8',*/
async: false,
dataType: 'json',
type: 'POST',
url: checkCanCreateInvalidUrl,
headers: {"RequestVerificationToken": antiForgeryToken},
data: {"startDate": $('#StartLeave').val()},
success: function (response) {
debugger;
if (response.isInHoliday) {
if (response.canCreateInvalid) {
swal({
title: "در قانون کار کشور ایجاد مرخصی در روز های تعطیل فاقد اعتبار میباشد، و فقط در فیش های حقوقی غیر رسمی قابل استفاده میباشند. آیا میخواهید ادامه دهید؟",
text: "",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "بله",
cancelButtonText: "خیر",
closeOnConfirm: true
},
function (isConfirm) {
if (isConfirm) {
$('#isInvalid').val("true");
$('#saveFinaly').click();
}
});
}
} else if (response.isInHoliday === false) {
$('#saveFinaly').click();
}
},
failure: function (response) {
console.log(5, response);
}
});
//$('#saveFinaly').click();
} else {
$('.alert-msg').show();
$('.alert-msg p').text('لطفا خطاها را برطرف کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
}
});
if ($('.errored').length < 1) {
$('#saveFinaly').click();
} else {
$('.alert-msg').show();
$('.alert-msg p').text('لطفا خطاها را برطرف کنید.');
setTimeout(function () {
$('.alert-msg').hide();
$('.alert-msg p').text('');
}, 3500);
}
});
$(".date").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).mask("0000/00/00");
$('.date').on('input', function () {
let startDate = this.value;
if (startDate.length === 10) {
let submitcheck = dateValidcheck(this);
if (submitcheck) {
$(".date").on('input', function () {
var value = $(this).val();
$(this).val(convertPersianNumbersToEnglish(value));
}).mask("0000/00/00");
$('.date').on('input', function () {
let startDate = this.value;
if (startDate.length === 10) {
let submitcheck = dateValidcheck(this);
if (submitcheck) {
$(this).removeClass('errored');
if ($('#StartLeave').val() != '' && $('#EndLeave').val() != '') {
computeDays();
}
$(this).removeClass('errored');
if ($('#StartLeave').val() != '' && $('#EndLeave').val() != '') {
computeDays();
}
} else {
$(this).addClass('errored');
} else {
$(this).addClass('errored');
}
}
} else {
$(this).addClass('errored');
}
});
} else {
$(this).addClass('errored');
}
});
$('input:radio[name="PaidLeaveType"]').change(function () {
if ($(this).is(':checked') && $(this).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$('.endLeaveLabal').show();
$('#StartHoures').removeClass("invalidTime");
$('#StartHoures').val('');
$('#EndHours').removeClass("invalidTime");
$('#EndHours').val('');
$("#endLeave").show();
$('.res').remove();
$('.validTime').removeClass("validTime");
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
} else if ($(this).is(':checked') && $(this).val() == 'ساعتی') {
$("#endLeave").val('');
$("#endLeave").attr("disabled", "disabled");
$("#endLeave").hide();
$('.endLeaveLabal').hide();
$("#hours").removeAttr("disabled");
$('.sumHourseDiv').show();
$('.sumDaysDiv').hide();
}
});
/////////////////Time Input Validatet/////////////////
$('input:radio[name="PaidLeaveType"]').change(function () {
if ($(this).is(':checked') && $(this).val() == 'روزانه') {
$("#hours").val('');
$("#hours").attr("disabled", "disabled");
$("#endLeave").removeAttr("disabled");
$('.endLeaveLabal').show();
$('#StartHoures').removeClass("invalidTime");
$('#StartHoures').val('');
$('#EndHours').removeClass("invalidTime");
$('#EndHours').val('');
$("#endLeave").show();
$('.res').remove();
$('.validTime').removeClass("validTime");
$('.sumHourseDiv').hide();
$('.sumDaysDiv').show();
} else if ($(this).is(':checked') && $(this).val() == 'ساعتی') {
$("#endLeave").val('');
$("#endLeave").attr("disabled", "disabled");
$("#endLeave").hide();
$('.endLeaveLabal').hide();
$("#hours").removeAttr("disabled");
$('.sumHourseDiv').show();
$('.sumDaysDiv').hide();
}
});
/////////////////Time Input Validatet/////////////////
$(".dateTime").each(function () {
$(".dateTime").each(function () {
let element = $(this);
element.on('input', function () {
let value = convertPersianNumbersToEnglish(element.val());
@@ -301,7 +264,6 @@ $(document).ready(function () {
});
$("#StartHoures, #EndHours").on("keyup", validateTimeOrder);
function parseTimeToMinutes(time) {
const [hours, minutes] = time.split(':').map(Number);
return hours * 60 + minutes;
@@ -339,122 +301,121 @@ $(document).ready(function () {
return true;
}
//$('#StartHoures').on("keyup", function () {
// var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test($(this).val());
// if (isValid) {
// $(this).addClass("validTime");
// $(this).removeClass("invalidTime");
// if ($('#EndHours').hasClass('validTime') && $('#EndHours').val() != null) {
// computeHourse();
// }
// } else {
// $(this).removeClass("validTime");
// $(this).addClass("invalidTime");
// }
// });
//$('#EndHours').on("keyup", function () {
// var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test($(this).val());
// if (isValid) {
// $(this).addClass("validTime");
// $(this).removeClass("invalidTime");
// if ($('#StartHoures').hasClass('validTime') && $('#StartHoures').val() != null) {
// computeHourse();
// }
// } else {
// $(this).removeClass("validTime");
// $(this).addClass("invalidTime");
// }
// });
//$('#StartHoures').on("keyup", function () {
// var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test($(this).val());
// if (isValid) {
// $(this).addClass("validTime");
// $(this).removeClass("invalidTime");
// if ($('#EndHours').hasClass('validTime') && $('#EndHours').val() != null) {
// computeHourse();
// }
// } else {
// $(this).removeClass("validTime");
// $(this).addClass("invalidTime");
// }
// });
//$('#EndHours').on("keyup", function () {
// var isValid = /^([2][0-3]|[1][0-9]|[0-9]|[0][0-9])([:][0-5][0-9])$/.test($(this).val());
// if (isValid) {
// $(this).addClass("validTime");
// $(this).removeClass("invalidTime");
// if ($('#StartHoures').hasClass('validTime') && $('#StartHoures').val() != null) {
// computeHourse();
// }
// } else {
// $(this).removeClass("validTime");
// $(this).addClass("invalidTime");
// }
// });
//$('#employeeSelect').change(function () {
// var selectValue = $('#employeeSelect').val();
//
// if (selectValue == '') {
// $('#cardSectionLeave').addClass('blur');
// $("#cardSectionLeave div *").prop('disabled', true);
// } else {
// $('#cardSectionLeave').removeClass('blur');
// $("#cardSectionLeave div *").prop('disabled', false);
// $('#descriptionAcceptedCheck').attr('disabled', true);
// }
//});
//$('#employeeSelect').change(function () {
// var selectValue = $('#employeeSelect').val();
//
// if (selectValue == '') {
// $('#cardSectionLeave').addClass('blur');
// $("#cardSectionLeave div *").prop('disabled', true);
// } else {
// $('#cardSectionLeave').removeClass('blur');
// $("#cardSectionLeave div *").prop('disabled', false);
// $('#descriptionAcceptedCheck').attr('disabled', true);
// }
//});
});
function dateValidcheck(inputField1) {
let persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],
arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],
fixNumbers = function (str) {
if (typeof str === 'string') {
for (var i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = inputField1.value;
let persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],
arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],
fixNumbers = function (str) {
if (typeof str === 'string') {
for (var i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = inputField1.value;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
for (var i = 0; i < getdate.length; i++) {
if (i === 0) {
y1 = fixNumbers(getdate[i]);
}
if (i === 1) {
y2 = fixNumbers(getdate[i]);
}
if (i === 2) {
y3 = fixNumbers(getdate[i]);
}
if (i === 3) {
y4 = fixNumbers(getdate[i]);
}
if (i === 4) {
s1 = fixNumbers(getdate[i]);
}
if (i === 5) {
m1 = fixNumbers(getdate[i]);
}
if (i === 6) {
m2 = fixNumbers(getdate[i]);
}
if (i === 7) {
s2 = fixNumbers(getdate[i]);
}
if (i === 8) {
d1 = fixNumbers(getdate[i]);
}
if (i === 9) {
d2 = fixNumbers(getdate[i]);
}
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
let s1, s2;
for (var i = 0; i < getdate.length; i++) {
if (i === 0) {
y1 = fixNumbers(getdate[i]);
}
if (i === 1) {
y2 = fixNumbers(getdate[i]);
}
if (i === 2) {
y3 = fixNumbers(getdate[i]);
}
if (i === 3) {
y4 = fixNumbers(getdate[i]);
}
if (i === 4) {
s1 = fixNumbers(getdate[i]);
}
if (i === 5) {
m1 = fixNumbers(getdate[i]);
}
if (i === 6) {
m2 = fixNumbers(getdate[i]);
}
if (i === 7) {
s2 = fixNumbers(getdate[i]);
}
if (i === 8) {
d1 = fixNumbers(getdate[i]);
}
if (i === 9) {
d2 = fixNumbers(getdate[i]);
}
}
let yRes = y1 + y2 + y3 + y4;
let year = parseInt(yRes);
let mRes = m1 + m2;
let month = parseInt(mRes);
let dRes = d1 + d2;
let day = parseInt(dRes);
let fixResult = yRes + s1 + mRes + s2 + dRes;
let test1 = checkEnValid(inputField1.value);
}
let yRes = y1 + y2 + y3 + y4;
let year = parseInt(yRes);
let mRes = m1 + m2;
let month = parseInt(mRes);
let dRes = d1 + d2;
let day = parseInt(dRes);
let fixResult = yRes + s1 + mRes + s2 + dRes;
let test1 = checkEnValid(inputField1.value);
let isValid = /^([1][3-4][0-9][0-9][/])([0][1-9]|[1][0-2])([/])([0][1-9]|[1-2][0-9]|[3][0-1])$/.test(fixResult);
let isValid = /^([1][3-4][0-9][0-9][/])([0][1-9]|[1][0-2])([/])([0][1-9]|[1-2][0-9]|[3][0-1])$/.test(fixResult);
if (isValid && test1) {
// inputField1.style.backgroundColor = '#a6e9a6';
start1valid = true;
if (isValid && test1) {
// inputField1.style.backgroundColor = '#a6e9a6';
start1valid = true;
} else {
} else {
if (inputField1.value != "") {
// inputField1.style.backgroundColor = '#f94c4c';
//$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
if (inputField1.value != "") {
// inputField1.style.backgroundColor = '#f94c4c';
//$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', "لطفا تاریخ را بصورت صحیح وارد کنید");
$('#StartLeave').addClass('errored');
$('.alert-msg').show();
$('.alert-msg p').text('لطفا تاریخ را بصورت صحیح وارد کنید');
@@ -463,161 +424,161 @@ function dateValidcheck(inputField1) {
$('.alert-msg p').text("");
$('#StartLeave').removeClass("errored");
}, 3500);
start1valid = false;
}
start1valid = false;
}
}
return start1valid;
}
return start1valid;
}
function checkEnValid(fixDate1) {
let persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],
arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],
fixNumbers = function (str) {
if (typeof str === 'string') {
for (var i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = fixDate1;
let persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],
arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],
fixNumbers = function (str) {
if (typeof str === 'string') {
for (var i = 0; i < 10; i++) {
str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);
}
}
return str;
};
let getdate = fixDate1;
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
for (let i = 0; i < getdate.length; i++) {
if (i === 0) {
y1 = fixNumbers(getdate[i]);
}
if (i === 1) {
y2 = fixNumbers(getdate[i]);
}
if (i === 2) {
y3 = fixNumbers(getdate[i]);
}
if (i === 3) {
y4 = fixNumbers(getdate[i]);
}
if (i === 5) {
m1 = fixNumbers(getdate[i]);
}
if (i === 6) {
m2 = fixNumbers(getdate[i]);
}
if (i === 8) {
d1 = fixNumbers(getdate[i]);
}
if (i === 9) {
d2 = fixNumbers(getdate[i]);
}
}
let yRes = y1 + y2 + y3 + y4;
let year = parseInt(yRes);
let mRes = m1 + m2;
let month = parseInt(mRes);
let dRes = d1 + d2;
let day = parseInt(dRes);
let kabiseh = false;
if (month <= 6 && day > 31) {
return false;
} else if (month > 6 && month < 12 && day > 30) {
return false;
} else if (month === 12) {
let m1, m2;
let y1, y2, y3, y4;
let d1, d2;
for (let i = 0; i < getdate.length; i++) {
if (i === 0) {
y1 = fixNumbers(getdate[i]);
}
if (i === 1) {
y2 = fixNumbers(getdate[i]);
}
if (i === 2) {
y3 = fixNumbers(getdate[i]);
}
if (i === 3) {
y4 = fixNumbers(getdate[i]);
}
if (i === 5) {
m1 = fixNumbers(getdate[i]);
}
if (i === 6) {
m2 = fixNumbers(getdate[i]);
}
if (i === 8) {
d1 = fixNumbers(getdate[i]);
}
if (i === 9) {
d2 = fixNumbers(getdate[i]);
}
}
let yRes = y1 + y2 + y3 + y4;
let year = parseInt(yRes);
let mRes = m1 + m2;
let month = parseInt(mRes);
let dRes = d1 + d2;
let day = parseInt(dRes);
let kabiseh = false;
if (month <= 6 && day > 31) {
return false;
} else if (month > 6 && month < 12 && day > 30) {
return false;
} else if (month === 12) {
switch (year) {
case 1346:
kabiseh = true;
break;
case 1350:
kabiseh = true;
break;
case 1354:
kabiseh = true;
break;
case 1358:
kabiseh = true;
break;
case 1362:
kabiseh = true;
break;
case 1366:
kabiseh = true;
break;
case 1370:
kabiseh = true;
break;
case 1375:
kabiseh = true;
break;
case 1379:
kabiseh = true;
break;
case 1383:
kabiseh = true;
break;
case 1387:
kabiseh = true;
break;
case 1391:
kabiseh = true;
break;
case 1395:
kabiseh = true;
break;
case 1399:
kabiseh = true;
break;
case 1403:
kabiseh = true;
break;
case 1408:
kabiseh = true;
break;
case 1412:
kabiseh = true;
break;
case 1416:
kabiseh = true;
break;
case 1420:
kabiseh = true;
break;
case 1424:
kabiseh = true;
break;
case 1428:
kabiseh = true;
break;
case 1432:
kabiseh = true;
break;
case 1436:
kabiseh = true;
break;
case 1441:
kabiseh = true;
break;
case 1445:
kabiseh = true;
break;
default:
kabiseh = false;
switch (year) {
case 1346:
kabiseh = true;
break;
case 1350:
kabiseh = true;
break;
case 1354:
kabiseh = true;
break;
case 1358:
kabiseh = true;
break;
case 1362:
kabiseh = true;
break;
case 1366:
kabiseh = true;
break;
case 1370:
kabiseh = true;
break;
case 1375:
kabiseh = true;
break;
case 1379:
kabiseh = true;
break;
case 1383:
kabiseh = true;
break;
case 1387:
kabiseh = true;
break;
case 1391:
kabiseh = true;
break;
case 1395:
kabiseh = true;
break;
case 1399:
kabiseh = true;
break;
case 1403:
kabiseh = true;
break;
case 1408:
kabiseh = true;
break;
case 1412:
kabiseh = true;
break;
case 1416:
kabiseh = true;
break;
case 1420:
kabiseh = true;
break;
case 1424:
kabiseh = true;
break;
case 1428:
kabiseh = true;
break;
case 1432:
kabiseh = true;
break;
case 1436:
kabiseh = true;
break;
case 1441:
kabiseh = true;
break;
case 1445:
kabiseh = true;
break;
default:
kabiseh = false;
}
if (kabiseh == true && day > 30) {
return false;
} else if (kabiseh == false && day > 29) {
return false;
} else {
return true;
}
} else {
return true;
}
}
if (kabiseh == true && day > 30) {
return false;
} else if (kabiseh == false && day > 29) {
return false;
} else {
return true;
}
} else {
return true;
}
}
function computeHourse() {
@@ -627,9 +588,9 @@ function computeHourse() {
async: false,
dataType: 'json',
type: 'GET',
url: computeLeaveHourlyAjax,
headers: {"RequestVerificationToken": antiForgeryToken},
data: {"startHours": $('#StartHoures').val(), "endHours": $('#EndHours').val()},
url: computeLeaveHourlyAjax,
headers: { "RequestVerificationToken": antiForgeryToken },
data: { "startHours": $('#StartHoures').val(), "endHours": $('#EndHours').val() },
success: function (response) {
let res = `<span class="res">${response.res}</span>`;
$('.sumHours').append(res);
@@ -647,9 +608,9 @@ function computeDays() {
async: false,
dataType: 'json',
type: 'GET',
url: computeLeaveDailyAjax,
headers: {"RequestVerificationToken": antiForgeryToken},
data: {"startDay": $('#StartLeave').val(), "endDay": $('#EndLeave').val()},
url: computeLeaveDailyAjax,
headers: { "RequestVerificationToken": antiForgeryToken },
data: { "startDay": $('#StartLeave').val(), "endDay": $('#EndLeave').val() },
success: function (response) {
if (response.status == false) {
$('.sumDays').addClass("note");
@@ -674,11 +635,11 @@ function ajaxPersonals() {
$("#cardSectionLeave div *").prop('disabled', true);
var employees = response.data;
var employeeOptionsHtml = '<option value="">انتخاب پرسنل ...</option>';
employees.forEach(function (employee) {
var black = employee.black ? "blackSelect" : "";
employees.forEach(function (employee) {
var black = employee.black ? "blackSelect" : "";
employeeOptionsHtml += `<option class="${black}" value="${employee.id}">${employee.employeeFullName}</option>`;
});
$('#employeeSelectList').html(employeeOptionsHtml);
$('#employeeSelectList').html(employeeOptionsHtml);
},
error: function (xhr, status, error) {
console.error(xhr.responseText);
@@ -687,13 +648,15 @@ function ajaxPersonals() {
}
function rotatingShift() {
var startDateValue = $('#StartLeave').val();
$('#rotatingShiftSection').addClass('disable');
if ($('#paid').is(':checked') && $('#daily').is(':checked') && startDateValue.length === 10) {
ajaxService.get(hasRotatingShiftAjax, {employeeId: currentEmployeeId, startDateTime: startDateValue})
ajaxService.get(hasRotatingShiftAjax, { employeeId: currentEmployeeId, startDateTime: startDateValue })
.then(response => {
$('#HasRollCall').val(response.hasRollCall);