Compare commits
29 Commits
Feature/ro
...
Feature/co
| Author | SHA1 | Date | |
|---|---|---|---|
| 4b39994de6 | |||
| 0dd2dc7c43 | |||
| 20c00893b6 | |||
| b0d174a575 | |||
| 0fbd5c9d3e | |||
| 8436f70aa0 | |||
| 9cf8447a83 | |||
| e124a4d5d9 | |||
| 7b9e7881c6 | |||
| 18c27d7a9a | |||
|
|
c080e11fe0 | ||
|
|
0eb9ecc373 | ||
| 470651cb76 | |||
| 2a9d9574e3 | |||
|
|
7b1542d5c6 | ||
|
|
981fd2d4ee | ||
|
|
7f3f785e39 | ||
| ca1ef420af | |||
| d7baf358cc | |||
|
|
676c8d2fa6 | ||
|
|
632ab3631b | ||
| 595b2c8a2d | |||
| c7bace728e | |||
| 8134216a4a | |||
|
|
3d013cfa60 | ||
| 30bfc96cbe | |||
| 280db87408 | |||
| 6b6b0767e3 | |||
| 6a6e2e532a |
15
0_Framework/Application/Enums/TypeOfCheckoutWarning.cs
Normal file
15
0_Framework/Application/Enums/TypeOfCheckoutWarning.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
namespace _0_Framework.Application.Enums;
|
||||||
|
|
||||||
|
public enum TypeOfCheckoutWarning
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// هشدار های متفرقه
|
||||||
|
/// </summary>
|
||||||
|
OthersWarning,
|
||||||
|
/// <summary>
|
||||||
|
/// هشدار سهم بیمه کارگر
|
||||||
|
/// </summary>
|
||||||
|
InsuranceEmployeeShare,
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Security.AccessControl;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
@@ -12,10 +13,10 @@ namespace Company.Domain.CheckoutAgg;
|
|||||||
|
|
||||||
public class Checkout : EntityBase
|
public class Checkout : EntityBase
|
||||||
{
|
{
|
||||||
private Checkout()
|
public Checkout()
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
public Checkout(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
|
public Checkout(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
|
||||||
long employeeId, string workshopName, long workshopId, string contractNo, DateTime contractStart,
|
long employeeId, string workshopName, long workshopId, string contractNo, DateTime contractStart,
|
||||||
DateTime contractEnd, string month, string year, long contractId, long workingHoursId,
|
DateTime contractEnd, string month, string year, long contractId, long workingHoursId,
|
||||||
@@ -30,7 +31,7 @@ public class Checkout : EntityBase
|
|||||||
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
|
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
|
||||||
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
|
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
|
||||||
ICollection<CheckoutLoanInstallment> loanInstallments,
|
ICollection<CheckoutLoanInstallment> loanInstallments,
|
||||||
ICollection<CheckoutSalaryAid> salaryAids,CheckoutRollCall checkoutRollCall,TimeSpan employeeMandatoryHours)
|
ICollection<CheckoutSalaryAid> salaryAids, CheckoutRollCall checkoutRollCall, TimeSpan employeeMandatoryHours, bool hasInsuranceShareTheSameAsList)
|
||||||
{
|
{
|
||||||
EmployeeFullName = employeeFullName;
|
EmployeeFullName = employeeFullName;
|
||||||
FathersName = fathersName;
|
FathersName = fathersName;
|
||||||
@@ -91,6 +92,7 @@ public class Checkout : EntityBase
|
|||||||
SalaryAids = salaryAids;
|
SalaryAids = salaryAids;
|
||||||
CheckoutRollCall = checkoutRollCall;
|
CheckoutRollCall = checkoutRollCall;
|
||||||
EmployeeMandatoryHours = employeeMandatoryHours;
|
EmployeeMandatoryHours = employeeMandatoryHours;
|
||||||
|
HasInsuranceShareTheSameAsList = hasInsuranceShareTheSameAsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -157,58 +159,70 @@ public class Checkout : EntityBase
|
|||||||
//میانگین ساعت کار در یک روز
|
//میانگین ساعت کار در یک روز
|
||||||
public double AverageHoursPerDay { get; private set; }
|
public double AverageHoursPerDay { get; private set; }
|
||||||
public bool HasRollCall { get; private set; }
|
public bool HasRollCall { get; private set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مقدار اضافه کار
|
/// مقدار اضافه کار
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string OverTimeWorkValue { get; private set; }
|
public string OverTimeWorkValue { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مقدار شبکاری
|
/// مقدار شبکاری
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string OverNightWorkValue { get; private set; }
|
public string OverNightWorkValue { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مقدار جمعه کاری
|
/// مقدار جمعه کاری
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string FridayWorkValue { get; private set; }
|
public string FridayWorkValue { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// درصد نوبت کاری
|
/// درصد نوبت کاری
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string RotatingShiftValue { get; private set; }
|
public string RotatingShiftValue { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مقدار غیبت
|
/// مقدار غیبت
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string AbsenceValue { get; private set; }
|
public string AbsenceValue { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد روزهای محاسبه شده برای مزد مرخصی
|
/// تعداد روزهای محاسبه شده برای مزد مرخصی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalDayOfLeaveCompute { get; private set; }
|
public string TotalDayOfLeaveCompute { get; private set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد روزهای محاسبه شده برای سنوات
|
/// تعداد روزهای محاسبه شده برای سنوات
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalDayOfYearsCompute { get; private set; }
|
public string TotalDayOfYearsCompute { get; private set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد روزهای محاسبه شده برای عیدی و پاداش
|
/// تعداد روزهای محاسبه شده برای عیدی و پاداش
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalDayOfBunosesCompute { get; private set; }
|
public string TotalDayOfBunosesCompute { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// دارای تداخل مبلغ است. این در زمانی اتفاق می افتد که فیش مبلغ آن تغییر کرده ولی به دلیل مسائل قانونی امکان صدور دوباره آن وجود ندارد
|
/// دارای تداخل مبلغ است. این در زمانی اتفاق می افتد که فیش مبلغ آن تغییر کرده ولی به دلیل مسائل قانونی امکان صدور دوباره آن وجود ندارد
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasAmountConflict { get; private set; }
|
public bool HasAmountConflict { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ساعت موظفی پرسنل در ماه
|
/// ساعت موظفی پرسنل در ماه
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TimeSpan EmployeeMandatoryHours { get; set; }
|
public TimeSpan EmployeeMandatoryHours { get; set; }
|
||||||
|
|
||||||
#region valueObjects
|
/// <summary>
|
||||||
|
/// آیا حق بیمه مشابه لیست بیمه حساب شده؟
|
||||||
|
/// </summary>
|
||||||
|
public bool HasInsuranceShareTheSameAsList { get; private set; }
|
||||||
|
|
||||||
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
|
/// <summary>
|
||||||
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
|
/// آیا فیش نیاز به بروزرسانی دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool IsUpdateNeeded { get; private set; }
|
||||||
|
|
||||||
|
public List<CheckoutWarningMessage> CheckoutWarningMessageList { get; set; }
|
||||||
|
|
||||||
|
#region valueObjects
|
||||||
|
|
||||||
|
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
|
||||||
|
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
|
||||||
public CheckoutRollCall CheckoutRollCall { get; private set; }
|
public CheckoutRollCall CheckoutRollCall { get; private set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -312,7 +326,7 @@ public class Checkout : EntityBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void SetSalaryAid(ICollection<CheckoutSalaryAid> salaryAids,double salaryAidAmount)
|
public void SetSalaryAid(ICollection<CheckoutSalaryAid> salaryAids, double salaryAidAmount)
|
||||||
{
|
{
|
||||||
SalaryAids = salaryAids;
|
SalaryAids = salaryAids;
|
||||||
SalaryAidDeduction = salaryAidAmount;
|
SalaryAidDeduction = salaryAidAmount;
|
||||||
@@ -330,30 +344,45 @@ public class Checkout : EntityBase
|
|||||||
|
|
||||||
public void SetAmountConflict(bool hasAmountConflict)
|
public void SetAmountConflict(bool hasAmountConflict)
|
||||||
{
|
{
|
||||||
HasAmountConflict = hasAmountConflict;
|
HasAmountConflict = hasAmountConflict;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetEmployeeMandatoryHours(TimeSpan employeeMandatoryHours)
|
public void SetEmployeeMandatoryHours(TimeSpan employeeMandatoryHours)
|
||||||
{
|
{
|
||||||
EmployeeMandatoryHours = employeeMandatoryHours;
|
EmployeeMandatoryHours = employeeMandatoryHours;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetInsuranceShare()
|
||||||
|
{
|
||||||
|
HasInsuranceShareTheSameAsList = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نیاز به آپدیت
|
||||||
|
/// </summary>
|
||||||
|
public void SetUpdateNeeded()
|
||||||
|
{
|
||||||
|
IsUpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CheckoutRollCall
|
public class CheckoutRollCall
|
||||||
{
|
{
|
||||||
private CheckoutRollCall(){}
|
private CheckoutRollCall() { }
|
||||||
public CheckoutRollCall(TimeSpan totalMandatoryTimeSpan, TimeSpan totalPresentTimeSpan, TimeSpan totalBreakTimeSpan,
|
public CheckoutRollCall(TimeSpan totalMandatoryTimeSpan, TimeSpan totalPresentTimeSpan, TimeSpan totalBreakTimeSpan,
|
||||||
TimeSpan totalWorkingTimeSpan, TimeSpan totalPaidLeaveTmeSpan, TimeSpan totalSickLeaveTimeSpan,
|
TimeSpan totalWorkingTimeSpan, TimeSpan totalPaidLeaveTmeSpan, TimeSpan totalSickLeaveTimeSpan,
|
||||||
ICollection<CheckoutRollCallDay> rollCallDaysCollection)
|
ICollection<CheckoutRollCallDay> rollCallDaysCollection)
|
||||||
{
|
{
|
||||||
TotalMandatoryTimeSpan = totalMandatoryTimeSpan;
|
TotalMandatoryTimeSpan = totalMandatoryTimeSpan;
|
||||||
TotalPresentTimeSpan = totalPresentTimeSpan;
|
TotalPresentTimeSpan = totalPresentTimeSpan;
|
||||||
TotalBreakTimeSpan = totalBreakTimeSpan;
|
TotalBreakTimeSpan = totalBreakTimeSpan;
|
||||||
TotalWorkingTimeSpan = totalWorkingTimeSpan;
|
TotalWorkingTimeSpan = totalWorkingTimeSpan;
|
||||||
TotalPaidLeaveTmeSpan = totalPaidLeaveTmeSpan;
|
TotalPaidLeaveTmeSpan = totalPaidLeaveTmeSpan;
|
||||||
TotalSickLeaveTimeSpan = totalSickLeaveTimeSpan;
|
TotalSickLeaveTimeSpan = totalSickLeaveTimeSpan;
|
||||||
RollCallDaysCollection = rollCallDaysCollection;
|
RollCallDaysCollection = rollCallDaysCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -394,27 +423,27 @@ public class CheckoutRollCall
|
|||||||
|
|
||||||
public class CheckoutRollCallDay
|
public class CheckoutRollCallDay
|
||||||
{
|
{
|
||||||
private CheckoutRollCallDay(){}
|
private CheckoutRollCallDay() { }
|
||||||
public CheckoutRollCallDay(DateTime date, string firstStartDate, string firstEndDate,
|
public CheckoutRollCallDay(DateTime date, string firstStartDate, string firstEndDate,
|
||||||
string secondStartDate, string secondEndDate, TimeSpan breakTimeSpan,
|
string secondStartDate, string secondEndDate, TimeSpan breakTimeSpan,
|
||||||
bool isSliced, TimeSpan workingTimeSpan, bool isAbsent, bool isFriday,
|
bool isSliced, TimeSpan workingTimeSpan, bool isAbsent, bool isFriday,
|
||||||
bool isHoliday, string leaveType)
|
bool isHoliday, string leaveType)
|
||||||
{
|
{
|
||||||
Date = date;
|
Date = date;
|
||||||
FirstStartDate = firstStartDate;
|
FirstStartDate = firstStartDate;
|
||||||
FirstEndDate = firstEndDate;
|
FirstEndDate = firstEndDate;
|
||||||
SecondStartDate = secondStartDate;
|
SecondStartDate = secondStartDate;
|
||||||
SecondEndDate = secondEndDate;
|
SecondEndDate = secondEndDate;
|
||||||
BreakTimeSpan = breakTimeSpan;
|
BreakTimeSpan = breakTimeSpan;
|
||||||
IsSliced = isSliced;
|
IsSliced = isSliced;
|
||||||
WorkingTimeSpan = workingTimeSpan;
|
WorkingTimeSpan = workingTimeSpan;
|
||||||
IsAbsent = isAbsent;
|
IsAbsent = isAbsent;
|
||||||
IsFriday = isFriday;
|
IsFriday = isFriday;
|
||||||
IsHoliday = isHoliday;
|
IsHoliday = isHoliday;
|
||||||
LeaveType = leaveType;
|
LeaveType = leaveType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تاریخ
|
/// تاریخ
|
||||||
@@ -463,7 +492,7 @@ public class CheckoutRollCallDay
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// آیا جمعه است
|
/// آیا جمعه است
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsFriday { get; private set; }
|
public bool IsFriday { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// آیا تعطیل رسمی است
|
/// آیا تعطیل رسمی است
|
||||||
@@ -475,6 +504,6 @@ public class CheckoutRollCallDay
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string LeaveType { get; private set; }
|
public string LeaveType { get; private set; }
|
||||||
|
|
||||||
public long CheckoutId { get; set; }
|
public long CheckoutId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
32
Company.Domain/CheckoutAgg/CheckoutWarningMessage.cs
Normal file
32
Company.Domain/CheckoutAgg/CheckoutWarningMessage.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.CheckoutAgg;
|
||||||
|
|
||||||
|
public class CheckoutWarningMessage : EntityBaseWithoutCreationDate
|
||||||
|
{
|
||||||
|
public CheckoutWarningMessage(string warningMessage, long checkoutId, TypeOfCheckoutWarning typeOfCheckoutWarning)
|
||||||
|
{
|
||||||
|
WarningMessage = warningMessage;
|
||||||
|
CheckoutId = checkoutId;
|
||||||
|
TypeOfCheckoutWarning = typeOfCheckoutWarning;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پیام هشدار
|
||||||
|
/// </summary>
|
||||||
|
public string WarningMessage { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public long CheckoutId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع هشدار فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCheckoutWarning TypeOfCheckoutWarning { get; private set; }
|
||||||
|
|
||||||
|
public Checkout Checkout { get; set; }
|
||||||
|
}
|
||||||
@@ -48,6 +48,10 @@ public interface IContractRepository : IRepository<long, Contract>
|
|||||||
bool Remove(long id);
|
bool Remove(long id);
|
||||||
|
|
||||||
List<ContractViweModel> SearchForClient(ContractSearchModel searchModel);
|
List<ContractViweModel> SearchForClient(ContractSearchModel searchModel);
|
||||||
|
|
||||||
|
Task<PagedResult<GetContractListForClientResponse>> GetContractListForClient(GetContractListForClientRequest searchModel);
|
||||||
|
|
||||||
|
Task<List<ContractPrintViewModel>> PrintAllAsync(List<long> ids);
|
||||||
#endregion
|
#endregion
|
||||||
#region NewChangeByHeydari
|
#region NewChangeByHeydari
|
||||||
|
|
||||||
@@ -63,4 +67,8 @@ public interface IContractRepository : IRepository<long, Contract>
|
|||||||
ContractViweModel GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth);
|
ContractViweModel GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth);
|
||||||
List<ContractViweModel> GetByWorkshopIdInDates(long workshopId, DateTime contractStart, DateTime contractEnd);
|
List<ContractViweModel> GetByWorkshopIdInDates(long workshopId, DateTime contractStart, DateTime contractEnd);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using _0_Framework.Application;
|
|||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.InstitutionContract;
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
using CompanyManagment.App.Contracts.Workshop;
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace Company.Domain.InstitutionContractAgg;
|
namespace Company.Domain.InstitutionContractAgg;
|
||||||
|
|
||||||
@@ -75,4 +76,5 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search, string selected);
|
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search, string selected);
|
||||||
|
Task<List<InstitutionContractPrintViewModel>> PrintAllAsync(List<long> ids);
|
||||||
}
|
}
|
||||||
@@ -125,6 +125,8 @@ public class InstitutionContract : EntityBase
|
|||||||
|
|
||||||
public string VerifyCode { get; private set; }
|
public string VerifyCode { get; private set; }
|
||||||
public DateTime VerifyCodeCreation { get; private set; }
|
public DateTime VerifyCodeCreation { get; private set; }
|
||||||
|
public string VerifierFullName { get; private set; }
|
||||||
|
public string VerifierPhoneNumber { get; private set; }
|
||||||
|
|
||||||
[NotMapped] public bool VerifyCodeExpired => VerifyCodeCreation.Add(ExpireTime) <= DateTime.Now;
|
[NotMapped] public bool VerifyCodeExpired => VerifyCodeCreation.Add(ExpireTime) <= DateTime.Now;
|
||||||
|
|
||||||
@@ -225,10 +227,12 @@ public class InstitutionContract : EntityBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void SetVerifyCode(string code)
|
public void SetVerifyCode(string code,string verifierFullName, string verifierPhoneNumber)
|
||||||
{
|
{
|
||||||
VerifyCode = code;
|
VerifyCode = code;
|
||||||
VerifyCodeCreation = DateTime.Now;
|
VerifyCodeCreation = DateTime.Now;
|
||||||
|
VerifierFullName = verifierFullName;
|
||||||
|
VerifierPhoneNumber = verifierPhoneNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetWorkshopGroup(InstitutionContractWorkshopGroup workshopGroup)
|
public void SetWorkshopGroup(InstitutionContractWorkshopGroup workshopGroup)
|
||||||
@@ -276,11 +280,19 @@ public class InstitutionContractAmendment : EntityBase
|
|||||||
|
|
||||||
public long LawId { get; set; }
|
public long LawId { get; set; }
|
||||||
|
|
||||||
public void SetVerifyCode(string code)
|
public void SetVerifyCode(string code,string verifierFullName, string verifierPhoneNumber)
|
||||||
{
|
{
|
||||||
VerifyCode = code;
|
VerifyCode = code;
|
||||||
VerificationCreation = DateTime.Now;
|
VerifyCodeCreation = DateTime.Now;
|
||||||
|
VerifierFullName = verifierFullName;
|
||||||
|
VerifierPhoneNumber = verifierPhoneNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string VerifierPhoneNumber { get; private set; }
|
||||||
|
|
||||||
|
public string VerifierFullName { get; private set; }
|
||||||
|
|
||||||
|
public DateTime VerifyCodeCreation { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InstitutionContractAmendmentChange : EntityBase
|
public class InstitutionContractAmendmentChange : EntityBase
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ public interface IInsuranceListRepository:IRepository<long, InsuranceList>
|
|||||||
List<EmployeeInsurancListDataViewModel> GetEmployeeInsuranceDataAmonthAgo(DateTime currentMonthStartDate, long workshopId);
|
List<EmployeeInsurancListDataViewModel> GetEmployeeInsuranceDataAmonthAgo(DateTime currentMonthStartDate, long workshopId);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات بیمه کارکنان برای استفاده در فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
List<EmployeeInsurancListDataViewModel> EmployeeInsuranceDataBy(DateTime startDate, long workshopId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// بدست آوردن اطلاعات محاسباتی ماه پرسنل برای ویرایش
|
/// بدست آوردن اطلاعات محاسباتی ماه پرسنل برای ویرایش
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -26,5 +26,6 @@ namespace Company.Domain.RollCallEmployeeStatusAgg
|
|||||||
List<RollCallEmployeeStatusViewModel> GetActiveByWorkshopIdInDate(long workshopId, DateTime startDateGr, DateTime endDateGr);
|
List<RollCallEmployeeStatusViewModel> GetActiveByWorkshopIdInDate(long workshopId, DateTime startDateGr, DateTime endDateGr);
|
||||||
List<RollCallEmployeeStatusViewModel> GetByWorkshopIdInDates(long workshopId, DateTime start, DateTime end);
|
List<RollCallEmployeeStatusViewModel> GetByWorkshopIdInDates(long workshopId, DateTime start, DateTime end);
|
||||||
bool IsActiveInPeriod(long employeeId, long workshopId, DateTime startDate, DateTime endDate);
|
bool IsActiveInPeriod(long employeeId, long workshopId, DateTime startDate, DateTime endDate);
|
||||||
}
|
void RemoveRange(IEnumerable<RollCallEmployeeStatus> rollCallEmployeeStatusList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
using CompanyManagment.App.Contracts.Employer;
|
using CompanyManagment.App.Contracts.Employer;
|
||||||
using CompanyManagment.App.Contracts.Loan;
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
using CompanyManagment.App.Contracts.RollCall;
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
@@ -133,6 +134,15 @@ public class CheckoutViewModel
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalPaidLeave { get; set; }
|
public string TotalPaidLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا فیش نیاز به بروزرسانی دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool IsUpdateNeeded { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست پیام های هشدار فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public List<CheckoutWarningMessageModel> CheckoutWarningMessageList { get; set; }
|
||||||
|
|
||||||
public bool HasSignCheckout { get; set; }
|
public bool HasSignCheckout { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدل هشدار فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public class CheckoutWarningMessageModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// پیام هشدار
|
||||||
|
/// </summary>
|
||||||
|
public string WarningMessage { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public long CheckoutId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع هشدار فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCheckoutWarning TypeOfCheckoutWarning { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
|
|
||||||
|
public enum ContractListOrderType
|
||||||
|
{
|
||||||
|
ByContractCreationDate,
|
||||||
|
BySignedContract,
|
||||||
|
ByUnSignedContract,
|
||||||
|
ByPersonnelCode,
|
||||||
|
ByPersonnelCodeDescending,
|
||||||
|
ByContractStartDate,
|
||||||
|
ByContractStartDateDescending
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
|
|
||||||
|
public class GetContractListForClientRequest: PaginationRequest
|
||||||
|
{
|
||||||
|
public int Year { get; set; }
|
||||||
|
public int Month { get; set; }
|
||||||
|
public string StartDate { get; set; }
|
||||||
|
public string EndDate { get; set; }
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
public ContractListOrderType? OrderType { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
|
|
||||||
|
public class GetContractListForClientResponse
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public string PersonnelCode { get; set; }
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
public bool IsSigned { get; set; }
|
||||||
|
public string DailyWage { get; set; }
|
||||||
|
public string AvgWorkingHour { get; set; }
|
||||||
|
public string FamilyAllowance { get; set; }
|
||||||
|
}
|
||||||
@@ -3,6 +3,8 @@ using System.Collections.Generic;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using CompanyManagment.App.Contracts.Workshop;
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Contract;
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
|
|
||||||
public interface IContractApplication
|
public interface IContractApplication
|
||||||
@@ -45,12 +47,25 @@ public interface IContractApplication
|
|||||||
#region Client
|
#region Client
|
||||||
|
|
||||||
OperationResult Remove(long id);
|
OperationResult Remove(long id);
|
||||||
|
|
||||||
|
[Obsolete("این متد منسوخ شده است. لطفاً از متد GetContractListForClient استفاده کنید.")]
|
||||||
List<ContractViweModel> SearchForClient(ContractSearchModel searchModel);
|
List<ContractViweModel> SearchForClient(ContractSearchModel searchModel);
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region NewChangeByHeydari
|
/// <summary>
|
||||||
|
/// لیست قراردادها برای کلاینت
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagedResult<GetContractListForClientResponse>>
|
||||||
|
GetContractListForClient(GetContractListForClientRequest searchModel);
|
||||||
|
Task<ContractPrintViewModel> PrintOneAsync(long id);
|
||||||
|
Task<List<ContractPrintViewModel>> PrintAllAsync(List<long> ids);
|
||||||
|
|
||||||
OperationResult DeleteAllContarcts(List<long> ids);
|
#endregion
|
||||||
|
|
||||||
|
#region NewChangeByHeydari
|
||||||
|
|
||||||
|
OperationResult DeleteAllContarcts(List<long> ids);
|
||||||
OperationResult DeleteContarcts(long id);
|
OperationResult DeleteContarcts(long id);
|
||||||
List<long> CheckHasCheckout(List<long> ids);
|
List<long> CheckHasCheckout(List<long> ids);
|
||||||
List<long> CheckHasSignature(List<long> ids);
|
List<long> CheckHasSignature(List<long> ids);
|
||||||
@@ -58,3 +73,75 @@ public interface IContractApplication
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ContractPrintViewModel
|
||||||
|
{
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
public ContractPrintEmployerViewModel Employer { get; set; }
|
||||||
|
public ContractPrintEmployeeViewModel Employee { get; set; }
|
||||||
|
public ContractPrintTypeOfContractViewModel TypeOfContract { get; set; }
|
||||||
|
public ContractPrintFeesViewModel Fees { get; set; }
|
||||||
|
public string ConditionAndDetials { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContractPrintFeesViewModel
|
||||||
|
{
|
||||||
|
public string DailyWage { get; set; }
|
||||||
|
public string FamilyAllowance { get; set; }
|
||||||
|
public string ConsumableItems { get; set; }
|
||||||
|
public string HousingAllowance { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContractPrintTypeOfContractViewModel
|
||||||
|
{
|
||||||
|
public string ContractType { get; set; }
|
||||||
|
public string JobName { get; set; }
|
||||||
|
public string SetContractDate { get; set; }
|
||||||
|
public string ContarctStart { get; set; }
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
public string WorkingHoursWeekly { get; set; }
|
||||||
|
public List<string> WorkshopAddress { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContractPrintEmployeeViewModel
|
||||||
|
{
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
public string IdNumber { get; set; }
|
||||||
|
public string DateOfBirth { get; set; }
|
||||||
|
public string FatherName { get; set; }
|
||||||
|
public string LevelOfEducation { get; set; }
|
||||||
|
public string Address { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContractPrintEmployerViewModel
|
||||||
|
{
|
||||||
|
public LegalType LegalType { get; set; }
|
||||||
|
public ContractPrintRealEmployerViewModel RealEmployer { get; set; }
|
||||||
|
public ContractPrintLegalEmployerViewModel LegalEmployer { get; set; }
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
public string Address { get; set; }
|
||||||
|
public string WorkshopCode { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContractPrintLegalEmployerViewModel
|
||||||
|
{
|
||||||
|
public string CompanyName { get; set; }
|
||||||
|
public string NationalId { get; set; }
|
||||||
|
public string RegisterId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ContractPrintRealEmployerViewModel
|
||||||
|
{
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
public string IdNumber { get; set; }
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Application.Sms;
|
using _0_Framework.Application.Sms;
|
||||||
using CompanyManagment.App.Contracts.Checkout;
|
using CompanyManagment.App.Contracts.Checkout;
|
||||||
|
using CompanyManagment.App.Contracts.Law;
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||||
using CompanyManagment.App.Contracts.Workshop;
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
using CompanyManagment.App.Contracts.WorkshopPlan;
|
using CompanyManagment.App.Contracts.WorkshopPlan;
|
||||||
@@ -77,6 +78,8 @@ public interface IInstitutionContractApplication
|
|||||||
/// <returns>لیست قراردادها برای چاپ</returns>
|
/// <returns>لیست قراردادها برای چاپ</returns>
|
||||||
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
||||||
|
|
||||||
|
|
||||||
|
[Obsolete("استفاده نشود، از متد غیرهمزمان استفاده شود")]
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// چاپ یک قرارداد
|
/// چاپ یک قرارداد
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -241,6 +244,34 @@ public interface IInstitutionContractApplication
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<OperationResult> ResendVerifyLink(long institutionContractId);
|
Task<OperationResult> ResendVerifyLink(long institutionContractId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دیتای پرینت قرارداد مالی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<InstitutionContractPrintViewModel> PrintOneAsync(long id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractPrintViewModel
|
||||||
|
{
|
||||||
|
public InstitutionContratVerificationParty FirstParty { get; set; }
|
||||||
|
public InstitutionContratVerificationParty SecondParty { get; set; }
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
public string CreationDate { get; set; }
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
public List<GetInstitutionVerificationDetailsWorkshopsViewModel> Workshops { get; set; }
|
||||||
|
public string TotalPrice { get; set; }
|
||||||
|
public string TaxPrice { get; set; }
|
||||||
|
public string PaymentPrice { get; set; }
|
||||||
|
public string VerifyCode { get; set; }
|
||||||
|
public string VerifyDate { get; set; }
|
||||||
|
public string VerifyTime { get; set; }
|
||||||
|
public string VerifierFullName { get; set; }
|
||||||
|
public string VerifierPhoneNumber { get; set; }
|
||||||
|
public LawViewModel LawViewModel { get; set; }
|
||||||
|
public string Obligation { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InsertAmendmentTempWorkshopResponse
|
public class InsertAmendmentTempWorkshopResponse
|
||||||
|
|||||||
@@ -31,6 +31,50 @@ public interface IInsuranceListApplication
|
|||||||
double GetRoundValue(double value);
|
double GetRoundValue(double value);
|
||||||
OperationResult ConfirmInsuranceList(long id);
|
OperationResult ConfirmInsuranceList(long id);
|
||||||
|
|
||||||
|
#region New
|
||||||
|
/// <summary>
|
||||||
|
/// دستمزد روزانه مشاغل مقطوع بیمه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="startDateGr"></param>
|
||||||
|
/// <param name="endDateGr"></param>
|
||||||
|
/// <param name="jobId"></param>
|
||||||
|
/// <param name="population"></param>
|
||||||
|
/// <param name="insuranceJobId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
double? GetDailyWageFixedSalary(string year, long workshopId, long employeeId, DateTime? startDateGr,
|
||||||
|
DateTime? endDateGr, long jobId, string population, long? insuranceJobId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه مزایای ماهانه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="endMonthCurrentDay"></param>
|
||||||
|
/// <param name="consumableItemsItemValue"></param>
|
||||||
|
/// <param name="housingAllowanceItemValue"></param>
|
||||||
|
/// <param name="maritalStatus"></param>
|
||||||
|
/// <param name="countWorkingDays"></param>
|
||||||
|
/// <param name="typeOfInsuranceSendWorkshop"></param>
|
||||||
|
/// <param name="jobId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="includeStatus"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public double GetMonthlyBenefits(int endMonthCurrentDay, double consumableItemsItemValue,
|
||||||
|
double housingAllowanceItemValue, double maritalStatus, int countWorkingDays,
|
||||||
|
string typeOfInsuranceSendWorkshop, long jobId, long employeeId, bool includeStatus);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="yearlysalaryItemValue"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public double ComputeDailyWage(double yearlysalaryItemValue, long employeeId, long workshopId, string year);
|
||||||
|
|
||||||
|
#endregion
|
||||||
List<InsuranceListViewModel> SearchForClient(InsuranceListSearchModel searchModel);
|
List<InsuranceListViewModel> SearchForClient(InsuranceListSearchModel searchModel);
|
||||||
|
|
||||||
//farokhiChanges
|
//farokhiChanges
|
||||||
|
|||||||
@@ -193,8 +193,19 @@ public class CheckoutApplication : ICheckoutApplication
|
|||||||
//حق بیمه سهم کارگر
|
//حق بیمه سهم کارگر
|
||||||
#region InsuranceDeduction
|
#region InsuranceDeduction
|
||||||
|
|
||||||
var insuranceOverTime = command.HasInsuranceChekoutOverTime ? command.OvertimePay : 0;
|
double insuranceDeduction = 0;
|
||||||
var insuranceDeduction = (monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + insuranceOverTime) * 7 / 100;
|
bool hasInsuranceShareTheSameAsList = false;
|
||||||
|
if (command.InsuranceDeduction == 0)
|
||||||
|
{
|
||||||
|
var insuranceOverTime = command.HasInsuranceChekoutOverTime ? command.OvertimePay : 0;
|
||||||
|
insuranceDeduction = (monthlyWage + bacicYears + consumableItem + housingAllowance + marriedAllowance + insuranceOverTime) * 7 / 100;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
insuranceDeduction = command.InsuranceDeduction;
|
||||||
|
hasInsuranceShareTheSameAsList = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -375,7 +386,7 @@ public class CheckoutApplication : ICheckoutApplication
|
|||||||
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
|
, command.OvertimePay, command.NightworkPay, command.FridayPay, 0, command.ShiftPay, familyAllowance, bunos, years, command.LeavePay, insuranceDeduction, 0, command.InstallmentDeduction, command.SalaryAidDeduction, command.AbsenceDeduction, sumOfWorkingDays,
|
||||||
command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature, marriedAllowance, command.LeaveCheckout, command.CreditLeaves, command.AbsencePeriod, command.AverageHoursPerDay, command.HasRollCall, command.OverTimeWorkValue, command.OverNightWorkValue
|
command.ArchiveCode, command.PersonnelCode, totalClaims, totalDeductions, totalPayment, command.Signature, marriedAllowance, command.LeaveCheckout, command.CreditLeaves, command.AbsencePeriod, command.AverageHoursPerDay, command.HasRollCall, command.OverTimeWorkValue, command.OverNightWorkValue
|
||||||
, command.FridayWorkValue, command.RotatingShiftValue, command.AbsenceValue, command.TotalDayOfLeaveCompute, command.TotalDayOfYearsCompute, command.TotalDayOfBunosesCompute,
|
, command.FridayWorkValue, command.RotatingShiftValue, command.AbsenceValue, command.TotalDayOfLeaveCompute, command.TotalDayOfYearsCompute, command.TotalDayOfBunosesCompute,
|
||||||
loanInstallments, salaryAids,checkoutRollCall,command.EmployeeMandatoryHours);
|
loanInstallments, salaryAids,checkoutRollCall,command.EmployeeMandatoryHours, hasInsuranceShareTheSameAsList);
|
||||||
|
|
||||||
_checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
|
_checkoutRepository.CreateCkeckout(checkout).GetAwaiter().GetResult();
|
||||||
//_checkoutRepository.SaveChanges();
|
//_checkoutRepository.SaveChanges();
|
||||||
|
|||||||
@@ -2712,7 +2712,9 @@ public class ContractApplication : IContractApplication
|
|||||||
|
|
||||||
var emp = workshopEmpList.Where(x => x.WorkshopId == res.WorkshopIds)
|
var emp = workshopEmpList.Where(x => x.WorkshopId == res.WorkshopIds)
|
||||||
.Select(x => x.EmployerId).ToList();
|
.Select(x => x.EmployerId).ToList();
|
||||||
|
|
||||||
res.Employers = _employerRepository.GetEmployers(emp);
|
res.Employers = _employerRepository.GetEmployers(emp);
|
||||||
|
|
||||||
var workshopSelect = _workshopApplication.GetDetails(res.WorkshopIds);
|
var workshopSelect = _workshopApplication.GetDetails(res.WorkshopIds);
|
||||||
var workshop = new WorkshopViewModel()
|
var workshop = new WorkshopViewModel()
|
||||||
{
|
{
|
||||||
@@ -3107,6 +3109,21 @@ public class ContractApplication : IContractApplication
|
|||||||
return _contractRepository.SearchForClient(searchModel);
|
return _contractRepository.SearchForClient(searchModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<PagedResult<GetContractListForClientResponse>> GetContractListForClient(GetContractListForClientRequest searchModel)
|
||||||
|
{
|
||||||
|
return await _contractRepository.GetContractListForClient(searchModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<ContractPrintViewModel> PrintOneAsync(long id)
|
||||||
|
{
|
||||||
|
return (await _contractRepository.PrintAllAsync([id])).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<ContractPrintViewModel>> PrintAllAsync(List<long> ids)
|
||||||
|
{
|
||||||
|
return await _contractRepository.PrintAllAsync(ids);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region NewChangeByHeydari
|
#region NewChangeByHeydari
|
||||||
|
|||||||
@@ -1203,7 +1203,12 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
|||||||
throw new NotFoundException("طرف قرارداد یافت نشد");
|
throw new NotFoundException("طرف قرارداد یافت نشد");
|
||||||
|
|
||||||
var code = new Random().Next(1000, 9999).ToString();
|
var code = new Random().Next(1000, 9999).ToString();
|
||||||
institutionContract.SetVerifyCode(code);
|
|
||||||
|
var contractingPartyFullName = contractingParty.IsLegal == "حقیقی"
|
||||||
|
? contractingParty.FName + " " + contractingParty.LName
|
||||||
|
: contractingParty.CeoFName + " " + contractingParty.CeoLName;
|
||||||
|
|
||||||
|
institutionContract.SetVerifyCode(code,contractingPartyFullName ,contractingParty.Phone);
|
||||||
|
|
||||||
var transaction = await _institutionContractRepository.BeginTransactionAsync();
|
var transaction = await _institutionContractRepository.BeginTransactionAsync();
|
||||||
try
|
try
|
||||||
@@ -1377,6 +1382,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
|||||||
return new OperationResult().Succcedded();
|
return new OperationResult().Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<InstitutionContractPrintViewModel> PrintOneAsync(long id)
|
||||||
|
{
|
||||||
|
return (await _institutionContractRepository.PrintAllAsync([id])).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task<OperationResult<PersonalContractingParty>> CreateLegalContractingPartyEntity(
|
private async Task<OperationResult<PersonalContractingParty>> CreateLegalContractingPartyEntity(
|
||||||
CreateInstitutionContractLegalPartyRequest request, long representativeId, string address, string city,
|
CreateInstitutionContractLegalPartyRequest request, long representativeId, string address, string city,
|
||||||
|
|||||||
@@ -1707,7 +1707,7 @@ public class InsuranceListApplication : IInsuranceListApplication
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private double? GetDailyWageFixedSalary(string year, long workshopId, long employeeId, DateTime? startDateGr, DateTime? endDateGr, long jobId, string population, long? insuranceJobId)
|
public double? GetDailyWageFixedSalary(string year, long workshopId, long employeeId, DateTime? startDateGr, DateTime? endDateGr, long jobId, string population, long? insuranceJobId)
|
||||||
{
|
{
|
||||||
|
|
||||||
double? result = 0;
|
double? result = 0;
|
||||||
@@ -1858,7 +1858,7 @@ public class InsuranceListApplication : IInsuranceListApplication
|
|||||||
/// <param name="jobId"></param>
|
/// <param name="jobId"></param>
|
||||||
/// <param name="employeeId"></param>
|
/// <param name="employeeId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private double GetMonthlyBenefits(int endMonthCurrentDay, double consumableItemsItemValue, double housingAllowanceItemValue, double maritalStatus, int countWorkingDays, string typeOfInsuranceSendWorkshop, long jobId, long employeeId, bool includeStatus)
|
public double GetMonthlyBenefits(int endMonthCurrentDay, double consumableItemsItemValue, double housingAllowanceItemValue, double maritalStatus, int countWorkingDays, string typeOfInsuranceSendWorkshop, long jobId, long employeeId, bool includeStatus)
|
||||||
{
|
{
|
||||||
//ToDo
|
//ToDo
|
||||||
//افزودن شرط مشمول مزایای
|
//افزودن شرط مشمول مزایای
|
||||||
@@ -1898,7 +1898,7 @@ public class InsuranceListApplication : IInsuranceListApplication
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
private double ComputeDailyWage(double yearlysalaryItemValue, long employeeId, long workshopId, string year)
|
public double ComputeDailyWage(double yearlysalaryItemValue, long employeeId, long workshopId, string year)
|
||||||
{
|
{
|
||||||
double dailyWage = yearlysalaryItemValue;
|
double dailyWage = yearlysalaryItemValue;
|
||||||
InsuranceListSearchModel searchModel = new InsuranceListSearchModel();
|
InsuranceListSearchModel searchModel = new InsuranceListSearchModel();
|
||||||
|
|||||||
@@ -30,13 +30,14 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
private readonly IEmployeeRepository _employeeRepository;
|
private readonly IEmployeeRepository _employeeRepository;
|
||||||
private readonly IWorkshopRepository _workshopRepository;
|
private readonly IWorkshopRepository _workshopRepository;
|
||||||
private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository;
|
private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository;
|
||||||
private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository;
|
private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository;
|
||||||
|
|
||||||
|
|
||||||
public LeftWorkApplication(ILeftWorkRepository leftWorkRepository, IContractRepository contractRepository,
|
public LeftWorkApplication(ILeftWorkRepository leftWorkRepository, IContractRepository contractRepository,
|
||||||
IContractApplication contractApplication, IWorkingHoursApplication workingHoursApplication,
|
IContractApplication contractApplication, IWorkingHoursApplication workingHoursApplication,
|
||||||
IWorkingHoursItemsApplication workingHoursItemsApplication, IEmployeeRepository employeeRepository,
|
IWorkingHoursItemsApplication workingHoursItemsApplication, IEmployeeRepository employeeRepository,
|
||||||
IWorkshopRepository workshopRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository, IRollCallEmployeeRepository rollCallEmployeeRepository)
|
IWorkshopRepository workshopRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository,
|
||||||
|
IRollCallEmployeeRepository rollCallEmployeeRepository)
|
||||||
{
|
{
|
||||||
_leftWorkRepository = leftWorkRepository;
|
_leftWorkRepository = leftWorkRepository;
|
||||||
_contractRepository = contractRepository;
|
_contractRepository = contractRepository;
|
||||||
@@ -51,7 +52,6 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
|
|
||||||
public OperationResult Create(CreateLeftWork command)
|
public OperationResult Create(CreateLeftWork command)
|
||||||
{
|
{
|
||||||
|
|
||||||
// var Contracts = _contractRepository.Search(new ContractSearchModel()
|
// var Contracts = _contractRepository.Search(new ContractSearchModel()
|
||||||
// {
|
// {
|
||||||
// EmployeeId = command.EmployeeId,
|
// EmployeeId = command.EmployeeId,
|
||||||
@@ -70,7 +70,6 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
var start = command.StartWorkDate.ToGeorgianDateTime();
|
var start = command.StartWorkDate.ToGeorgianDateTime();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//if (_leftWorkRepository.Exists(x =>
|
//if (_leftWorkRepository.Exists(x =>
|
||||||
// x.StartWorkDate > start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId))
|
// x.StartWorkDate > start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId))
|
||||||
// return operation.Failed("تاریخ وارد شده کوچکتر از سابقه شروع به کار قبلی است");
|
// return operation.Failed("تاریخ وارد شده کوچکتر از سابقه شروع به کار قبلی است");
|
||||||
@@ -112,16 +111,17 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است");
|
return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است");
|
||||||
|
|
||||||
var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName;
|
var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName;
|
||||||
var workshop = _workshopRepository.GetDetails(command.WorkshopId);
|
var workshop = _workshopRepository.GetDetails(command.WorkshopId);
|
||||||
var workshopName = workshop.WorkshopFullName;
|
var workshopName = workshop.WorkshopFullName;
|
||||||
var leftWork = new LeftWork(left, start, command.WorkshopId,
|
var leftWork = new LeftWork(left, start, command.WorkshopId,
|
||||||
command.EmployeeId, employeeFullName, workshopName, command.JobId, command.IncludeStatus,
|
command.EmployeeId, employeeFullName, workshopName, command.JobId, command.IncludeStatus,
|
||||||
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay,workshop.ComputeOptions,workshop.BonusesOptions);
|
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay, workshop.ComputeOptions,
|
||||||
|
workshop.BonusesOptions);
|
||||||
_leftWorkRepository.Create(leftWork);
|
_leftWorkRepository.Create(leftWork);
|
||||||
_leftWorkRepository.SaveChanges();
|
_leftWorkRepository.SaveChanges();
|
||||||
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(command.EmployeeId);
|
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(command.EmployeeId, command.WorkshopId);
|
||||||
|
|
||||||
return operation.Succcedded();
|
return operation.Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
//public OperationResult Create(CreateLeftWork command)
|
//public OperationResult Create(CreateLeftWork command)
|
||||||
@@ -193,8 +193,8 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
command.EmployeeId, command.JobId, command.IncludeStatus, command.AddBonusesPay, command.AddYearsPay,
|
command.EmployeeId, command.JobId, command.IncludeStatus, command.AddBonusesPay, command.AddYearsPay,
|
||||||
command.AddLeavePay);
|
command.AddLeavePay);
|
||||||
_leftWorkRepository.SaveChanges();
|
_leftWorkRepository.SaveChanges();
|
||||||
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(command.EmployeeId);
|
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(command.EmployeeId, command.WorkshopId);
|
||||||
return operation.Succcedded();
|
return operation.Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditLeftWork GetDetails(long id)
|
public EditLeftWork GetDetails(long id)
|
||||||
@@ -214,12 +214,10 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
|
|
||||||
public List<LeftWorkViewModel> SearchCreateContract(LeftWorkSearchModel searchModel)
|
public List<LeftWorkViewModel> SearchCreateContract(LeftWorkSearchModel searchModel)
|
||||||
{
|
{
|
||||||
|
|
||||||
return _leftWorkRepository.SearchCreateContract(searchModel);
|
return _leftWorkRepository.SearchCreateContract(searchModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public async Task<List<LeftWorkViewModel>> searchAsync(LeftWorkSearchModel searchModel)
|
public async Task<List<LeftWorkViewModel>> searchAsync(LeftWorkSearchModel searchModel)
|
||||||
{
|
{
|
||||||
var res = search(searchModel);
|
var res = search(searchModel);
|
||||||
@@ -228,7 +226,6 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
|
|
||||||
public string GetBeforeDate(string date)
|
public string GetBeforeDate(string date)
|
||||||
{
|
{
|
||||||
|
|
||||||
var persianBefore = "";
|
var persianBefore = "";
|
||||||
var year = Convert.ToInt32(date.Substring(0, 4));
|
var year = Convert.ToInt32(date.Substring(0, 4));
|
||||||
var month = Convert.ToInt32(date.Substring(5, 2));
|
var month = Convert.ToInt32(date.Substring(5, 2));
|
||||||
@@ -255,10 +252,8 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void LeftWorkExtension(long contractId, string CStart, string CEnd)
|
public void LeftWorkExtension(long contractId, string CStart, string CEnd)
|
||||||
{
|
{
|
||||||
|
|
||||||
var step1 = _contractApplication.GetDetails(contractId);
|
var step1 = _contractApplication.GetDetails(contractId);
|
||||||
var step2 = _workingHoursApplication.GetByContractId(contractId);
|
var step2 = _workingHoursApplication.GetByContractId(contractId);
|
||||||
var step3 = _workingHoursItemsApplication.GetWorkingHoursItems();
|
var step3 = _workingHoursItemsApplication.GetWorkingHoursItems();
|
||||||
@@ -380,13 +375,11 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
ContarctStart = CStart,
|
ContarctStart = CStart,
|
||||||
ContractEnd = CEnd,
|
ContractEnd = CEnd,
|
||||||
GetWorkDateHide = step1.GetWorkDate,
|
GetWorkDateHide = step1.GetWorkDate,
|
||||||
|
|
||||||
};
|
};
|
||||||
var step5 = _contractApplication.MandatoryHours(computing);
|
var step5 = _contractApplication.MandatoryHours(computing);
|
||||||
string workingDays = string.Empty;
|
string workingDays = string.Empty;
|
||||||
if (step5.NumberOfWorkingDays == "0")
|
if (step5.NumberOfWorkingDays == "0")
|
||||||
{
|
{
|
||||||
|
|
||||||
workingDays = step5.ComplexNumberOfWorkingDays;
|
workingDays = step5.ComplexNumberOfWorkingDays;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -477,8 +470,6 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
OverTimeWorkM = step5.OverTimeWorkM == "0" ? "" : step5.OverTimeWorkM,
|
OverTimeWorkM = step5.OverTimeWorkM == "0" ? "" : step5.OverTimeWorkM,
|
||||||
OverNightWorkH = step5.OverNightWorkH == "0" ? "" : step5.OverNightWorkH,
|
OverNightWorkH = step5.OverNightWorkH == "0" ? "" : step5.OverNightWorkH,
|
||||||
OverNightWorkM = step5.OverNightWorkM == "0" ? "" : step5.OverNightWorkM,
|
OverNightWorkM = step5.OverNightWorkM == "0" ? "" : step5.OverNightWorkM,
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
var resss = _contractApplication.Create(createNew);
|
var resss = _contractApplication.Create(createNew);
|
||||||
}
|
}
|
||||||
@@ -529,7 +520,9 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
item.LeftWorkDate = string.IsNullOrWhiteSpace(item.LeftWorkDate) ? "1500/01/01" : item.LeftWorkDate;
|
item.LeftWorkDate = string.IsNullOrWhiteSpace(item.LeftWorkDate) ? "1500/01/01" : item.LeftWorkDate;
|
||||||
var left = item.LeftWorkDate.ToGeorgianDateTime();
|
var left = item.LeftWorkDate.ToGeorgianDateTime();
|
||||||
var start = item.StartWorkDate.ToGeorgianDateTime();
|
var start = item.StartWorkDate.ToGeorgianDateTime();
|
||||||
if (_leftWorkRepository.Exists(x => x.StartWorkDate > start && left == null && x.EmployeeId == informationLeftwork.EmployeeId && x.WorkshopId == informationLeftwork.WorkshopId && x.id!=item.Id))
|
if (_leftWorkRepository.Exists(x =>
|
||||||
|
x.StartWorkDate > start && left == null && x.EmployeeId == informationLeftwork.EmployeeId &&
|
||||||
|
x.WorkshopId == informationLeftwork.WorkshopId && x.id != item.Id))
|
||||||
return operation.Failed("وارد کردن تاریخ پایان کار اجباری است ");
|
return operation.Failed("وارد کردن تاریخ پایان کار اجباری است ");
|
||||||
if (_leftWorkRepository.Exists(x =>
|
if (_leftWorkRepository.Exists(x =>
|
||||||
x.StartWorkDate == start && x.EmployeeId == informationLeftwork.EmployeeId &&
|
x.StartWorkDate == start && x.EmployeeId == informationLeftwork.EmployeeId &&
|
||||||
@@ -540,17 +533,23 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
x.EmployeeId == informationLeftwork.EmployeeId &&
|
x.EmployeeId == informationLeftwork.EmployeeId &&
|
||||||
x.WorkshopId == informationLeftwork.WorkshopId && x.id != item.Id))
|
x.WorkshopId == informationLeftwork.WorkshopId && x.id != item.Id))
|
||||||
return operation.Failed("شروع به کار قبلی این شخص ترک کار ندارد ");
|
return operation.Failed("شروع به کار قبلی این شخص ترک کار ندارد ");
|
||||||
if (_leftWorkRepository.Exists(x => x.StartWorkDate <= start && x.LeftWorkDate < left && x.LeftWorkDate >= start && x.EmployeeId == informationLeftwork.EmployeeId && x.WorkshopId == informationLeftwork.WorkshopId && x.id != item.Id))
|
if (_leftWorkRepository.Exists(x =>
|
||||||
|
x.StartWorkDate <= start && x.LeftWorkDate < left && x.LeftWorkDate >= start &&
|
||||||
|
x.EmployeeId == informationLeftwork.EmployeeId &&
|
||||||
|
x.WorkshopId == informationLeftwork.WorkshopId && x.id != item.Id))
|
||||||
return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است");
|
return operation.Failed("تاریخ وارد شده در بازه زمانی سابقه ترک کار قبلی است");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operation = _leftWorkRepository.CreateLeftWork(informationLeftwork);
|
operation = _leftWorkRepository.CreateLeftWork(informationLeftwork);
|
||||||
if (informationLeftwork != null && operation.IsSuccedded) IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(informationLeftwork.EmployeeId);
|
if (informationLeftwork != null && operation.IsSuccedded)
|
||||||
return operation;
|
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(informationLeftwork.EmployeeId,
|
||||||
}
|
informationLeftwork.WorkshopId);
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
public OperationResult CreateLeftWorkByLeftWorkGroups(string employeeFullName, long commandEmployeeId, List<PersonnelCodeViewModel> commandPersonnelCode, List<LeftWorkGroup> leftWorkGroups)
|
public OperationResult CreateLeftWorkByLeftWorkGroups(string employeeFullName, long commandEmployeeId,
|
||||||
|
List<PersonnelCodeViewModel> commandPersonnelCode, List<LeftWorkGroup> leftWorkGroups)
|
||||||
{
|
{
|
||||||
var operation = new OperationResult();
|
var operation = new OperationResult();
|
||||||
|
|
||||||
@@ -560,7 +559,9 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
{
|
{
|
||||||
foreach (var item2 in item.LeftWorkViewModels)
|
foreach (var item2 in item.LeftWorkViewModels)
|
||||||
{
|
{
|
||||||
item2.LeftWorkDate = string.IsNullOrWhiteSpace(item2.LeftWorkDate) ? "1500/01/01" : item2.LeftWorkDate;
|
item2.LeftWorkDate = string.IsNullOrWhiteSpace(item2.LeftWorkDate)
|
||||||
|
? "1500/01/01"
|
||||||
|
: item2.LeftWorkDate;
|
||||||
var left = item2.LeftWorkDate.ToGeorgianDateTime();
|
var left = item2.LeftWorkDate.ToGeorgianDateTime();
|
||||||
var start = item2.StartWorkDate.ToGeorgianDateTime();
|
var start = item2.StartWorkDate.ToGeorgianDateTime();
|
||||||
if (_leftWorkRepository.Exists(x =>
|
if (_leftWorkRepository.Exists(x =>
|
||||||
@@ -586,14 +587,16 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
operation = _leftWorkRepository.CreateLeftWorkByLeftWorkGroups(employeeFullName, commandEmployeeId, commandPersonnelCode, leftWorkGroups);
|
operation = _leftWorkRepository.CreateLeftWorkByLeftWorkGroups(employeeFullName, commandEmployeeId,
|
||||||
if (operation.IsSuccedded) IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(commandEmployeeId);
|
commandPersonnelCode, leftWorkGroups);
|
||||||
return operation;
|
if (operation.IsSuccedded)
|
||||||
}
|
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(commandEmployeeId);
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
public OperationResult CheckDeleteLeftWork(long workshopId, long employeeId, string date, int type)
|
public OperationResult CheckDeleteLeftWork(long workshopId, long employeeId, string date, int type)
|
||||||
{
|
{
|
||||||
return _leftWorkRepository.CheckDeleteLeftWork( workshopId, employeeId, date.ToGeorgianDateTime(),type);
|
return _leftWorkRepository.CheckDeleteLeftWork(workshopId, employeeId, date.ToGeorgianDateTime(), type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult CheckEditLeftWork(long workshopId, long employeeId, string date, int type)
|
public OperationResult CheckEditLeftWork(long workshopId, long employeeId, string date, int type)
|
||||||
@@ -607,21 +610,23 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
|
|
||||||
//این متد ترک کار های کارمند را با فعالیت حضور غیاب یکپارچه می کند
|
//این متد ترک کار های کارمند را با فعالیت حضور غیاب یکپارچه می کند
|
||||||
private void IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(long employeeId)
|
private void IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(long employeeId)
|
||||||
{
|
{
|
||||||
//get last leftworks for employee in all workshops
|
//get last leftworks for employee in all workshops
|
||||||
var leftWorks = _leftWorkRepository.search(new LeftWorkSearchModel() { EmployeeId = employeeId }).GroupBy(x => x.WorkshopId).Select(x =>
|
var leftWorks = _leftWorkRepository.search(new LeftWorkSearchModel() { EmployeeId = employeeId })
|
||||||
{
|
.GroupBy(x => x.WorkshopId).Select(x =>
|
||||||
var leftWork = x.MaxBy(y => y.StartWorkDateGr);
|
|
||||||
return new LeftWorkViewModel()
|
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId,
|
var leftWork = x.MaxBy(y => y.StartWorkDateGr);
|
||||||
WorkshopId = x.Key,
|
return new LeftWorkViewModel()
|
||||||
LeftWorkDateGr = leftWork.LeftWorkDateGr.Date.AddDays(-1),
|
{
|
||||||
StartWorkDateGr = leftWork.StartWorkDateGr
|
EmployeeId = employeeId,
|
||||||
};
|
WorkshopId = x.Key,
|
||||||
}).ToList();
|
LeftWorkDateGr = leftWork.LeftWorkDateGr.Date.AddDays(-1),
|
||||||
|
StartWorkDateGr = leftWork.StartWorkDateGr
|
||||||
|
};
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
//get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate
|
//get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate
|
||||||
var rollCallsEmployee = _rollCallEmployeeRepository.GetByEmployeeIdWithStatuses(employeeId)
|
var rollCallsEmployee = _rollCallEmployeeRepository.GetByEmployeeIdWithStatuses(employeeId)
|
||||||
@@ -632,17 +637,90 @@ public class LeftWorkApplication : ILeftWorkApplication
|
|||||||
x.WorkshopId,
|
x.WorkshopId,
|
||||||
x.EmployeeId,
|
x.EmployeeId,
|
||||||
y.LeftWorkDateGr,
|
y.LeftWorkDateGr,
|
||||||
Status = x.Statuses.OrderByDescending(z => z.StartDate).FirstOrDefault(z => z.StartDateGr.Date < y.LeftWorkDateGr && z.EndDateGr.Date > y.LeftWorkDateGr)
|
Status = x.Statuses.OrderByDescending(z => z.StartDate).FirstOrDefault(z =>
|
||||||
|
z.StartDateGr.Date < y.LeftWorkDateGr && z.EndDateGr.Date > y.LeftWorkDateGr)
|
||||||
});
|
});
|
||||||
|
|
||||||
//shaping up the list to send as parameter to repository
|
//shaping up the list to send as parameter to repository
|
||||||
var newRollCallRecords = joinedList.Where(x => x.Status != null).Select(x => new AdjustRollCallEmployeesWithEmployeeLeftWork()
|
var newRollCallRecords = joinedList.Where(x => x.Status != null).Select(x =>
|
||||||
{
|
new AdjustRollCallEmployeesWithEmployeeLeftWork()
|
||||||
LeaveDate = x.LeftWorkDateGr,
|
{
|
||||||
RollCallStatusId = x.Status.Id
|
LeaveDate = x.LeftWorkDateGr,
|
||||||
}).ToList();
|
RollCallStatusId = x.Status.Id
|
||||||
if(newRollCallRecords.Count > 0)
|
}).ToList();
|
||||||
|
if (newRollCallRecords.Count > 0)
|
||||||
_rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates(newRollCallRecords);
|
_rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates(newRollCallRecords);
|
||||||
|
|
||||||
|
foreach (var rollCallEmployeeViewModel in rollCallsEmployee)
|
||||||
|
{
|
||||||
|
var maxLeftWork = leftWorks.FirstOrDefault(x => x.WorkshopId == rollCallEmployeeViewModel.WorkshopId);
|
||||||
|
if (maxLeftWork == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var employeeStatus = _rollCallEmployeeRepository.GetBy(rollCallEmployeeViewModel.EmployeeId,
|
||||||
|
rollCallEmployeeViewModel.WorkshopId);
|
||||||
|
var rollCallEmployeeStatusList = employeeStatus.EmployeesStatus
|
||||||
|
.Where(x => x.StartDate >= maxLeftWork.LeftWorkDateGr).ToList();
|
||||||
|
if (rollCallEmployeeStatusList.Any())
|
||||||
|
{
|
||||||
|
_rollCallEmployeeStatusRepository.RemoveRange(rollCallEmployeeStatusList);
|
||||||
|
_rollCallEmployeeStatusRepository.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(long employeeId, long workshopId)
|
||||||
|
{
|
||||||
|
//get last leftworks for employee in all workshops
|
||||||
|
var leftWorks = _leftWorkRepository.search(new LeftWorkSearchModel()
|
||||||
|
{ EmployeeId = employeeId, WorkshopId = workshopId })
|
||||||
|
.Select(x => new LeftWorkViewModel()
|
||||||
|
{
|
||||||
|
EmployeeId = employeeId,
|
||||||
|
WorkshopId = x.WorkshopId,
|
||||||
|
LeftWorkDateGr = x.LeftWorkDateGr.Date.AddDays(-1),
|
||||||
|
StartWorkDateGr = x.StartWorkDateGr
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
var maxLeftWork = leftWorks.MaxBy(y => y.StartWorkDateGr);
|
||||||
|
|
||||||
|
|
||||||
|
//get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate
|
||||||
|
var rollCallsEmployee = _rollCallEmployeeRepository.GetBy(employeeId, workshopId);
|
||||||
|
|
||||||
|
// var joinedList = rollCallsEmployee.Join(leftWorks, x => x.WorkshopId, y => y.WorkshopId, (x, y) => new
|
||||||
|
// {
|
||||||
|
// x.WorkshopId,
|
||||||
|
// x.EmployeeId,
|
||||||
|
// y.LeftWorkDateGr,
|
||||||
|
// Status = x.Statuses.OrderByDescending(z => z.StartDate).FirstOrDefault(z => z.StartDateGr.Date < y.LeftWorkDateGr && z.EndDateGr.Date > y.LeftWorkDateGr)
|
||||||
|
// });
|
||||||
|
|
||||||
|
|
||||||
|
var status = rollCallsEmployee.EmployeesStatus.OrderByDescending(z => z.StartDate)
|
||||||
|
.FirstOrDefault(rollCallEmployeeStatus => rollCallEmployeeStatus.StartDate.Date < maxLeftWork.LeftWorkDateGr
|
||||||
|
&& rollCallEmployeeStatus.EndDate.Date >
|
||||||
|
maxLeftWork.LeftWorkDateGr);
|
||||||
|
|
||||||
|
if (status != null)
|
||||||
|
{
|
||||||
|
var adjust = new AdjustRollCallEmployeesWithEmployeeLeftWork()
|
||||||
|
{
|
||||||
|
LeaveDate = maxLeftWork.LeftWorkDateGr,
|
||||||
|
RollCallStatusId = status.id
|
||||||
|
};
|
||||||
|
_rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates([adjust]);
|
||||||
|
}
|
||||||
|
|
||||||
|
var rollCallEmployeeStatusList = rollCallsEmployee.EmployeesStatus
|
||||||
|
.Where(x => x.StartDate >= maxLeftWork.LeftWorkDateGr).ToList();
|
||||||
|
if (rollCallEmployeeStatusList.Any())
|
||||||
|
{
|
||||||
|
_rollCallEmployeeStatusRepository.RemoveRange(rollCallEmployeeStatusList);
|
||||||
|
_rollCallEmployeeStatusRepository.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -27,26 +27,30 @@ namespace CompanyManagment.Application;
|
|||||||
|
|
||||||
public class LeftWorkTempApplication : ILeftWorkTempApplication
|
public class LeftWorkTempApplication : ILeftWorkTempApplication
|
||||||
{
|
{
|
||||||
private readonly ILeftWorkTempRepository _leftWorkTempRepository;
|
private readonly ILeftWorkTempRepository _leftWorkTempRepository;
|
||||||
private readonly ILeftWorkRepository _leftWorkRepository;
|
private readonly ILeftWorkRepository _leftWorkRepository;
|
||||||
private readonly IWorkshopRepository _workshopRepository;
|
private readonly IWorkshopRepository _workshopRepository;
|
||||||
private readonly IEmployeeRepository _employeeRepository;
|
private readonly IEmployeeRepository _employeeRepository;
|
||||||
private readonly IJobRepository _jobRepository;
|
private readonly IJobRepository _jobRepository;
|
||||||
private readonly ICheckoutRepository _checkoutRepository;
|
private readonly ICheckoutRepository _checkoutRepository;
|
||||||
private readonly IContractRepository _contractRepository;
|
private readonly IContractRepository _contractRepository;
|
||||||
private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository;
|
private readonly IRollCallEmployeeRepository _rollCallEmployeeRepository;
|
||||||
private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository;
|
private readonly IRollCallEmployeeStatusRepository _rollCallEmployeeStatusRepository;
|
||||||
|
|
||||||
|
|
||||||
public LeftWorkTempApplication(ILeftWorkTempRepository leftWorkTempRepository, ILeftWorkRepository leftWorkRepository, IWorkshopRepository workshopRepository, IEmployeeRepository employeeRepository, IJobRepository jobRepository, ICheckoutRepository checkoutRepository, IContractRepository contractRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository, IRollCallEmployeeRepository rollCallEmployeeRepository)
|
public LeftWorkTempApplication(ILeftWorkTempRepository leftWorkTempRepository,
|
||||||
{
|
ILeftWorkRepository leftWorkRepository, IWorkshopRepository workshopRepository,
|
||||||
_leftWorkTempRepository = leftWorkTempRepository;
|
IEmployeeRepository employeeRepository, IJobRepository jobRepository, ICheckoutRepository checkoutRepository,
|
||||||
_leftWorkRepository = leftWorkRepository;
|
IContractRepository contractRepository, IRollCallEmployeeStatusRepository rollCallEmployeeStatusRepository,
|
||||||
_workshopRepository = workshopRepository;
|
IRollCallEmployeeRepository rollCallEmployeeRepository)
|
||||||
_employeeRepository = employeeRepository;
|
{
|
||||||
_jobRepository = jobRepository;
|
_leftWorkTempRepository = leftWorkTempRepository;
|
||||||
_checkoutRepository = checkoutRepository;
|
_leftWorkRepository = leftWorkRepository;
|
||||||
_contractRepository = contractRepository;
|
_workshopRepository = workshopRepository;
|
||||||
|
_employeeRepository = employeeRepository;
|
||||||
|
_jobRepository = jobRepository;
|
||||||
|
_checkoutRepository = checkoutRepository;
|
||||||
|
_contractRepository = contractRepository;
|
||||||
_rollCallEmployeeStatusRepository = rollCallEmployeeStatusRepository;
|
_rollCallEmployeeStatusRepository = rollCallEmployeeStatusRepository;
|
||||||
_rollCallEmployeeRepository = rollCallEmployeeRepository;
|
_rollCallEmployeeRepository = rollCallEmployeeRepository;
|
||||||
}
|
}
|
||||||
@@ -59,15 +63,16 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
{
|
{
|
||||||
#region Validation
|
#region Validation
|
||||||
|
|
||||||
if (_leftWorkTempRepository.Exists(x=>x.WorkshopId == command.WorkshopId && x.EmployeeId == employeeId))
|
if (_leftWorkTempRepository.Exists(x => x.WorkshopId == command.WorkshopId && x.EmployeeId == employeeId))
|
||||||
{
|
{
|
||||||
return op.Failed("برای پرسنل وارد شده قبلا درخواست ترک کار ثبت کرده اید");
|
return op.Failed("برای پرسنل وارد شده قبلا درخواست ترک کار ثبت کرده اید");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command.LeftWorkTime.TryToGeorgianDateTime(out var leftWorkDateGr) == false)
|
if (command.LeftWorkTime.TryToGeorgianDateTime(out var leftWorkDateGr) == false)
|
||||||
{
|
{
|
||||||
return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است");
|
return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command.LastDayStanding.TryToGeorgianDateTime(out var lastDayStandingDateGr) == false)
|
if (command.LastDayStanding.TryToGeorgianDateTime(out var lastDayStandingDateGr) == false)
|
||||||
{
|
{
|
||||||
return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است");
|
return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است");
|
||||||
@@ -101,7 +106,6 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//if (leftWork.StartWorkDate >= leftWorkDateGr)
|
//if (leftWork.StartWorkDate >= leftWorkDateGr)
|
||||||
//{
|
//{
|
||||||
// return op.Failed("ترک کار نمیتواند کوچک تر یا مساوی شروع به کار باشد");
|
// return op.Failed("ترک کار نمیتواند کوچک تر یا مساوی شروع به کار باشد");
|
||||||
@@ -121,10 +125,10 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
// return op.Failed("این پرسنل در تاریخ ترک کار وارد شده دارای قرارداد میباشد");
|
// return op.Failed("این پرسنل در تاریخ ترک کار وارد شده دارای قرارداد میباشد");
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var leftWorkTemp = LeftWorkTemp.CreateLeftWork(leftWork.id, leftWork.StartWorkDate, leftWorkDateGr, lastDayStandingDateGr,
|
var leftWorkTemp = LeftWorkTemp.CreateLeftWork(leftWork.id, leftWork.StartWorkDate, leftWorkDateGr,
|
||||||
|
lastDayStandingDateGr,
|
||||||
command.WorkshopId, employeeId, leftWork.JobId);
|
command.WorkshopId, employeeId, leftWork.JobId);
|
||||||
|
|
||||||
await _leftWorkTempRepository.CreateAsync(leftWorkTemp);
|
await _leftWorkTempRepository.CreateAsync(leftWorkTemp);
|
||||||
@@ -135,61 +139,63 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Task<GetStartWorkTempDetails> GetStartAndLeftWorkDetails(long employeeId, long workshopId)
|
public Task<GetStartWorkTempDetails> GetStartAndLeftWorkDetails(long employeeId, long workshopId)
|
||||||
{
|
{
|
||||||
return _leftWorkTempRepository.GetStartAndLeftWorkDetails(employeeId, workshopId);
|
return _leftWorkTempRepository.GetStartAndLeftWorkDetails(employeeId, workshopId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<OperationResult> AcceptStartWork(AcceptStartWorkTemp command)
|
public async Task<OperationResult> AcceptStartWork(AcceptStartWorkTemp command)
|
||||||
{
|
{
|
||||||
var op = new OperationResult();
|
var op = new OperationResult();
|
||||||
if (command.StartDateTime.TryToGeorgianDateTime(out var startDateGr) == false)
|
if (command.StartDateTime.TryToGeorgianDateTime(out var startDateGr) == false)
|
||||||
{
|
{
|
||||||
return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است");
|
return op.Failed("تاریخ شروع به کار وارد شده نامعتبر است");
|
||||||
}
|
}
|
||||||
|
|
||||||
var leftWorkTemp = _leftWorkTempRepository.Get(command.LeftWorkTempId);
|
var leftWorkTemp = _leftWorkTempRepository.Get(command.LeftWorkTempId);
|
||||||
|
|
||||||
if (leftWorkTemp.LeftWorkType != LeftWorkTempType.StartWork)
|
if (leftWorkTemp.LeftWorkType != LeftWorkTempType.StartWork)
|
||||||
{
|
{
|
||||||
return op.Failed("اطلاعات وارد شده نامعتبر است");
|
return op.Failed("اطلاعات وارد شده نامعتبر است");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_leftWorkRepository.Exists(x => x.WorkshopId == leftWorkTemp.WorkshopId && x.EmployeeId == leftWorkTemp.EmployeeId && x.LeftWorkDate >= startDateGr))
|
if (_leftWorkRepository.Exists(x =>
|
||||||
{
|
x.WorkshopId == leftWorkTemp.WorkshopId && x.EmployeeId == leftWorkTemp.EmployeeId &&
|
||||||
return op.Failed("شروع به کار وارد شده با ترک کار های قبلی تداخل دارد");
|
x.LeftWorkDate >= startDateGr))
|
||||||
}
|
{
|
||||||
|
return op.Failed("شروع به کار وارد شده با ترک کار های قبلی تداخل دارد");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (_jobRepository.Exists(x => x.id == command.JobId) == false)
|
if (_jobRepository.Exists(x => x.id == command.JobId) == false)
|
||||||
{
|
{
|
||||||
return op.Failed("سمت وارد شده نامعتبر است");
|
return op.Failed("سمت وارد شده نامعتبر است");
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultTime = new DateTime(2121, 03, 21);
|
var defaultTime = new DateTime(2121, 03, 21);
|
||||||
|
|
||||||
var workshop = _workshopRepository.Get(leftWorkTemp.WorkshopId);
|
var workshop = _workshopRepository.Get(leftWorkTemp.WorkshopId);
|
||||||
var employee = _employeeRepository.Get(leftWorkTemp.EmployeeId);
|
var employee = _employeeRepository.Get(leftWorkTemp.EmployeeId);
|
||||||
|
|
||||||
var newLeftWork = new LeftWork(defaultTime, startDateGr, leftWorkTemp.WorkshopId, leftWorkTemp.EmployeeId,
|
var newLeftWork = new LeftWork(defaultTime, startDateGr, leftWorkTemp.WorkshopId, leftWorkTemp.EmployeeId,
|
||||||
employee.FullName, workshop.WorkshopFullName, command.JobId, false, false, false, false, "", "");
|
employee.FullName, workshop.WorkshopFullName, command.JobId, false, false, false, false, "", "");
|
||||||
|
|
||||||
await _leftWorkRepository.CreateAsync(newLeftWork);
|
await _leftWorkRepository.CreateAsync(newLeftWork);
|
||||||
_leftWorkTempRepository.Remove(leftWorkTemp);
|
_leftWorkTempRepository.Remove(leftWorkTemp);
|
||||||
var rollCallEmployee = _rollCallEmployeeRepository.GetBy(leftWorkTemp.EmployeeId, leftWorkTemp.WorkshopId);
|
var rollCallEmployee = _rollCallEmployeeRepository.GetBy(leftWorkTemp.EmployeeId, leftWorkTemp.WorkshopId);
|
||||||
|
|
||||||
var rollCallStatus = rollCallEmployee?.EmployeesStatus.MaxBy(x => x.StartDate);
|
var rollCallStatus = rollCallEmployee?.EmployeesStatus.MaxBy(x => x.StartDate);
|
||||||
|
|
||||||
if (rollCallStatus != null)
|
if (rollCallStatus != null)
|
||||||
{
|
{
|
||||||
var startWork = newLeftWork.StartWorkDate;
|
var startWork = newLeftWork.StartWorkDate;
|
||||||
rollCallStatus.Edit(startWork, rollCallStatus.EndDate);
|
rollCallStatus.Edit(startWork, rollCallStatus.EndDate);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
await _leftWorkRepository.SaveChangesAsync();
|
||||||
await _leftWorkRepository.SaveChangesAsync();
|
await _leftWorkTempRepository.SaveChangesAsync();
|
||||||
await _leftWorkTempRepository.SaveChangesAsync();
|
|
||||||
|
|
||||||
return op.Succcedded();
|
return op.Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<OperationResult> AcceptLeftWork(AcceptLeftWorkTemp command)
|
public async Task<OperationResult> AcceptLeftWork(AcceptLeftWorkTemp command)
|
||||||
{
|
{
|
||||||
@@ -237,9 +243,12 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
x.WorkshopId == leftWorkTemp.WorkshopId &&
|
x.WorkshopId == leftWorkTemp.WorkshopId &&
|
||||||
x.ContractStart <= lastDayStandingGr && x.ContractEnd >= lastDayStandingGr))
|
x.ContractStart <= lastDayStandingGr && x.ContractEnd >= lastDayStandingGr))
|
||||||
{
|
{
|
||||||
return op.Failed("این پرسنل در تاریخ ترک کار وارد شده دارای فیش حقوقی میباشد. ابتدا فیش حقوقی پرسنل را حذف کنید ");
|
return op.Failed(
|
||||||
|
"این پرسنل در تاریخ ترک کار وارد شده دارای فیش حقوقی میباشد. ابتدا فیش حقوقی پرسنل را حذف کنید ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var transaction = await _rollCallEmployeeStatusRepository.BeginTransactionAsync();
|
||||||
|
|
||||||
leftWork.Edit(leftWorkDateGr, leftWork.StartWorkDate, leftWork.WorkshopId, leftWork.EmployeeId, leftWork.JobId,
|
leftWork.Edit(leftWorkDateGr, leftWork.StartWorkDate, leftWork.WorkshopId, leftWork.EmployeeId, leftWork.JobId,
|
||||||
leftWork.IncludeStatus, leftWork.AddBonusesPay, leftWork.AddYearsPay, leftWork.AddLeavePay);
|
leftWork.IncludeStatus, leftWork.AddBonusesPay, leftWork.AddYearsPay, leftWork.AddLeavePay);
|
||||||
|
|
||||||
@@ -247,8 +256,9 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
await _leftWorkRepository.SaveChangesAsync();
|
await _leftWorkRepository.SaveChangesAsync();
|
||||||
await _leftWorkTempRepository.SaveChangesAsync();
|
await _leftWorkTempRepository.SaveChangesAsync();
|
||||||
|
|
||||||
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(leftWork.EmployeeId);
|
IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(leftWork.EmployeeId, leftWork.WorkshopId);
|
||||||
|
|
||||||
|
await transaction.CommitAsync();
|
||||||
return op.Succcedded();
|
return op.Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,45 +269,59 @@ public class LeftWorkTempApplication : ILeftWorkTempApplication
|
|||||||
|
|
||||||
public List<LeftWorkTempViewModel> GetLeftWorksByWorkshopId(long workshopId)
|
public List<LeftWorkTempViewModel> GetLeftWorksByWorkshopId(long workshopId)
|
||||||
{
|
{
|
||||||
return _leftWorkTempRepository.GetLeftWorksByWorkshopId(workshopId);
|
return _leftWorkTempRepository.GetLeftWorksByWorkshopId(workshopId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//این متد ترک کار های کارمند را با فعالیت حضور غیاب یکپارچه می کند
|
//این متد ترک کار های کارمند را با فعالیت حضور غیاب یکپارچه می کند
|
||||||
private void IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(long employeeId)
|
private void IfEmployeeHasNewLeftWorkDateAddEndDateToRollCallStatus(long employeeId, long workshopId)
|
||||||
{
|
{
|
||||||
//get last leftworks for employee in all workshops
|
//get last leftworks for employee in all workshops
|
||||||
var leftWorks = _leftWorkRepository.search(new LeftWorkSearchModel() { EmployeeId = employeeId }).GroupBy(x => x.WorkshopId).Select(x =>
|
var leftWorks = _leftWorkRepository.search(new LeftWorkSearchModel()
|
||||||
{
|
{ EmployeeId = employeeId, WorkshopId = workshopId })
|
||||||
var leftWork = x.MaxBy(y => y.StartWorkDateGr);
|
.Select(x => new LeftWorkViewModel()
|
||||||
return new LeftWorkViewModel()
|
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId,
|
EmployeeId = employeeId,
|
||||||
WorkshopId = x.Key,
|
WorkshopId = x.WorkshopId,
|
||||||
LeftWorkDateGr = leftWork.LeftWorkDateGr.Date.AddDays(-1),
|
LeftWorkDateGr = x.LeftWorkDateGr.Date.AddDays(-1),
|
||||||
StartWorkDateGr = leftWork.StartWorkDateGr
|
StartWorkDateGr = x.StartWorkDateGr
|
||||||
};
|
}).ToList();
|
||||||
}).ToList();
|
|
||||||
|
var maxLeftWork = leftWorks.MaxBy(y => y.StartWorkDateGr);
|
||||||
|
|
||||||
|
|
||||||
//get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate
|
//get rollCallEmployee associated with those leftworks which have a higher end date than leftworkDate
|
||||||
var rollCallsEmployee = _rollCallEmployeeRepository.GetByEmployeeIdWithStatuses(employeeId)
|
var rollCallsEmployee = _rollCallEmployeeRepository.GetBy(employeeId, workshopId);
|
||||||
.Where(x => leftWorks.Any(y => y.WorkshopId == x.WorkshopId)).ToList();
|
|
||||||
|
|
||||||
var joinedList = rollCallsEmployee.Join(leftWorks, x => x.WorkshopId, y => y.WorkshopId, (x, y) => new
|
// var joinedList = rollCallsEmployee.Join(leftWorks, x => x.WorkshopId, y => y.WorkshopId, (x, y) => new
|
||||||
{
|
// {
|
||||||
x.WorkshopId,
|
// x.WorkshopId,
|
||||||
x.EmployeeId,
|
// x.EmployeeId,
|
||||||
y.LeftWorkDateGr,
|
// y.LeftWorkDateGr,
|
||||||
Status = x.Statuses.OrderByDescending(z => z.StartDate).FirstOrDefault(z => z.StartDateGr.Date < y.LeftWorkDateGr && z.EndDateGr.Date > y.LeftWorkDateGr)
|
// Status = x.Statuses.OrderByDescending(z => z.StartDate).FirstOrDefault(z => z.StartDateGr.Date < y.LeftWorkDateGr && z.EndDateGr.Date > y.LeftWorkDateGr)
|
||||||
});
|
// });
|
||||||
|
|
||||||
//shaping up the list to send as parameter to repository
|
|
||||||
var newRollCallRecords = joinedList.Where(x => x.Status != null).Select(x => new AdjustRollCallEmployeesWithEmployeeLeftWork()
|
var status = rollCallsEmployee.EmployeesStatus.OrderByDescending(z => z.StartDate)
|
||||||
|
.FirstOrDefault(rollCallEmployeeStatus => rollCallEmployeeStatus.StartDate.Date < maxLeftWork.LeftWorkDateGr
|
||||||
|
&& rollCallEmployeeStatus.EndDate.Date >
|
||||||
|
maxLeftWork.LeftWorkDateGr);
|
||||||
|
|
||||||
|
if (status != null)
|
||||||
{
|
{
|
||||||
LeaveDate = x.LeftWorkDateGr,
|
var adjust = new AdjustRollCallEmployeesWithEmployeeLeftWork()
|
||||||
RollCallStatusId = x.Status.Id
|
{
|
||||||
}).ToList();
|
LeaveDate = maxLeftWork.LeftWorkDateGr,
|
||||||
if (newRollCallRecords.Count > 0)
|
RollCallStatusId = status.id
|
||||||
_rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates(newRollCallRecords);
|
};
|
||||||
|
_rollCallEmployeeStatusRepository.AdjustRollCallStatusEndDates([adjust]);
|
||||||
|
}
|
||||||
|
|
||||||
|
var rollCallEmployeeStatusList = rollCallsEmployee.EmployeesStatus
|
||||||
|
.Where(x => x.StartDate >= maxLeftWork.LeftWorkDateGr).ToList();
|
||||||
|
if (rollCallEmployeeStatusList.Any())
|
||||||
|
{
|
||||||
|
_rollCallEmployeeStatusRepository.RemoveRange(rollCallEmployeeStatusList);
|
||||||
|
_rollCallEmployeeStatusRepository.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,6 +230,8 @@ public class CompanyContext : DbContext
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public DbSet<CheckoutWarningMessage> CheckoutWarningMessages { get; set; }
|
||||||
|
|
||||||
public DbSet<CustomizeCheckout> CustomizeCheckouts { get; set; }
|
public DbSet<CustomizeCheckout> CustomizeCheckouts { get; set; }
|
||||||
public DbSet<CustomizeCheckoutTemp> CustomizeCheckoutTemps { get; set; }
|
public DbSet<CustomizeCheckoutTemp> CustomizeCheckoutTemps { get; set; }
|
||||||
public DbSet<TaxLeftWorkItem> TaxLeftWorkItems { get; set; }
|
public DbSet<TaxLeftWorkItem> TaxLeftWorkItems { get; set; }
|
||||||
|
|||||||
@@ -51,11 +51,17 @@ class CheckoutMapping : IEntityTypeConfiguration<Checkout>
|
|||||||
builder.Property(x => x.TotalDayOfYearsCompute).HasMaxLength(10);
|
builder.Property(x => x.TotalDayOfYearsCompute).HasMaxLength(10);
|
||||||
builder.Property(x => x.TotalDayOfBunosesCompute).HasMaxLength(10);
|
builder.Property(x => x.TotalDayOfBunosesCompute).HasMaxLength(10);
|
||||||
|
|
||||||
|
|
||||||
builder.Property(x => x.EmployeeMandatoryHours).HasTimeSpanConversion();
|
builder.Property(x => x.EmployeeMandatoryHours).HasTimeSpanConversion();
|
||||||
builder.HasOne(x => x.Workshop)
|
builder.HasOne(x => x.Workshop)
|
||||||
.WithMany(x => x.Checkouts)
|
.WithMany(x => x.Checkouts)
|
||||||
.HasForeignKey(x => x.WorkshopId);
|
.HasForeignKey(x => x.WorkshopId);
|
||||||
|
|
||||||
|
builder.HasMany(x => x.CheckoutWarningMessageList)
|
||||||
|
.WithOne(x => x.Checkout)
|
||||||
|
.HasForeignKey(x => x.CheckoutId);
|
||||||
|
|
||||||
|
|
||||||
builder.OwnsMany(x => x.LoanInstallments, installments =>
|
builder.OwnsMany(x => x.LoanInstallments, installments =>
|
||||||
{
|
{
|
||||||
installments.Property(x => x.AmountForMonth).HasMaxLength(25);
|
installments.Property(x => x.AmountForMonth).HasMaxLength(25);
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using Company.Domain.CheckoutAgg;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
|
|
||||||
|
namespace CompanyManagment.EFCore.Mapping;
|
||||||
|
|
||||||
|
public class CheckoutWarningMessageMapping : IEntityTypeConfiguration<CheckoutWarningMessage>
|
||||||
|
{
|
||||||
|
public void Configure(EntityTypeBuilder<CheckoutWarningMessage> builder)
|
||||||
|
{
|
||||||
|
builder.ToTable("CheckoutWarningMessage");
|
||||||
|
builder.HasKey(x => x.id);
|
||||||
|
|
||||||
|
builder.Property(x => x.WarningMessage).HasMaxLength(150);
|
||||||
|
|
||||||
|
builder.Property(x => x.TypeOfCheckoutWarning).HasConversion(
|
||||||
|
v => v.ToString(),
|
||||||
|
v => (TypeOfCheckoutWarning)Enum.Parse(typeof(TypeOfCheckoutWarning), v)).HasMaxLength(30);
|
||||||
|
|
||||||
|
builder.HasOne(x => x.Checkout)
|
||||||
|
.WithMany(x => x.CheckoutWarningMessageList)
|
||||||
|
.HasForeignKey(x => x.CheckoutId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,8 @@ public class InstitutionContractAmendmentMapping:IEntityTypeConfiguration<Instit
|
|||||||
builder.HasKey(x => x.id);
|
builder.HasKey(x => x.id);
|
||||||
|
|
||||||
builder.Property(x => x.VerifyCode).HasMaxLength(10);
|
builder.Property(x => x.VerifyCode).HasMaxLength(10);
|
||||||
|
builder.Property(x => x.VerifierFullName).HasMaxLength(100);
|
||||||
|
builder.Property(x => x.VerifierPhoneNumber).HasMaxLength(20);
|
||||||
|
|
||||||
builder.HasOne(x => x.InstitutionContract)
|
builder.HasOne(x => x.InstitutionContract)
|
||||||
.WithMany(x => x.Amendments)
|
.WithMany(x => x.Amendments)
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ public class InstitutionContractMapping : IEntityTypeConfiguration<InstitutionCo
|
|||||||
builder.Property(x => x.HasValueAddedTax).HasMaxLength(10);
|
builder.Property(x => x.HasValueAddedTax).HasMaxLength(10);
|
||||||
|
|
||||||
builder.Property(x => x.VerifyCode).HasMaxLength(20);
|
builder.Property(x => x.VerifyCode).HasMaxLength(20);
|
||||||
|
builder.Property(x => x.VerifierFullName).HasMaxLength(100);
|
||||||
|
builder.Property(x => x.VerifierPhoneNumber).HasMaxLength(20);
|
||||||
|
|
||||||
builder.Property(x => x.VerificationStatus).HasConversion<string>().HasMaxLength(122);
|
builder.Property(x => x.VerificationStatus).HasConversion<string>().HasMaxLength(122);
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,74 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace CompanyManagment.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddVerifierdetailsininstituioncontractandamendment : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "VerifierFullName",
|
||||||
|
table: "InstitutionContracts",
|
||||||
|
type: "nvarchar(100)",
|
||||||
|
maxLength: 100,
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "VerifierPhoneNumber",
|
||||||
|
table: "InstitutionContracts",
|
||||||
|
type: "nvarchar(20)",
|
||||||
|
maxLength: 20,
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "VerifierFullName",
|
||||||
|
table: "InstitutionContractAmendments",
|
||||||
|
type: "nvarchar(100)",
|
||||||
|
maxLength: 100,
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "VerifierPhoneNumber",
|
||||||
|
table: "InstitutionContractAmendments",
|
||||||
|
type: "nvarchar(20)",
|
||||||
|
maxLength: 20,
|
||||||
|
nullable: true);
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<DateTime>(
|
||||||
|
name: "VerifyCodeCreation",
|
||||||
|
table: "InstitutionContractAmendments",
|
||||||
|
type: "datetime2",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "VerifierFullName",
|
||||||
|
table: "InstitutionContracts");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "VerifierPhoneNumber",
|
||||||
|
table: "InstitutionContracts");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "VerifierFullName",
|
||||||
|
table: "InstitutionContractAmendments");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "VerifierPhoneNumber",
|
||||||
|
table: "InstitutionContractAmendments");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "VerifyCodeCreation",
|
||||||
|
table: "InstitutionContractAmendments");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11070
CompanyManagment.EFCore/Migrations/20251027125514_hasInsuranceShareTheSameAsList_checkoutTable.Designer.cs
generated
Normal file
11070
CompanyManagment.EFCore/Migrations/20251027125514_hasInsuranceShareTheSameAsList_checkoutTable.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace CompanyManagment.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class hasInsuranceShareTheSameAsList_checkoutTable : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "HasInsuranceShareTheSameAsList",
|
||||||
|
table: "Checkouts",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "HasInsuranceShareTheSameAsList",
|
||||||
|
table: "Checkouts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11116
CompanyManagment.EFCore/Migrations/20251028121828_CheckoutWarningMessage.Designer.cs
generated
Normal file
11116
CompanyManagment.EFCore/Migrations/20251028121828_CheckoutWarningMessage.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,58 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace CompanyManagment.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class CheckoutWarningMessage : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "IsUpdateNeeded",
|
||||||
|
table: "Checkouts",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false);
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "CheckoutWarningMessage",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
id = table.Column<long>(type: "bigint", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
WarningMessage = table.Column<string>(type: "nvarchar(150)", maxLength: 150, nullable: true),
|
||||||
|
CheckoutId = table.Column<long>(type: "bigint", nullable: false),
|
||||||
|
TypeOfCheckoutWarning = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_CheckoutWarningMessage", x => x.id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_CheckoutWarningMessage_Checkouts_CheckoutId",
|
||||||
|
column: x => x.CheckoutId,
|
||||||
|
principalTable: "Checkouts",
|
||||||
|
principalColumn: "id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_CheckoutWarningMessage_CheckoutId",
|
||||||
|
table: "CheckoutWarningMessage",
|
||||||
|
column: "CheckoutId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "CheckoutWarningMessage");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "IsUpdateNeeded",
|
||||||
|
table: "Checkouts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -415,6 +415,9 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
b.Property<bool>("HasAmountConflict")
|
b.Property<bool>("HasAmountConflict")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<bool>("HasInsuranceShareTheSameAsList")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
b.Property<bool>("HasRollCall")
|
b.Property<bool>("HasRollCall")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
@@ -431,6 +434,9 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
.HasMaxLength(10)
|
.HasMaxLength(10)
|
||||||
.HasColumnType("nvarchar(10)");
|
.HasColumnType("nvarchar(10)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsUpdateNeeded")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
b.Property<bool>("LeaveCheckout")
|
b.Property<bool>("LeaveCheckout")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
@@ -543,6 +549,33 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
b.ToTable("Checkouts", (string)null);
|
b.ToTable("Checkouts", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Company.Domain.CheckoutAgg.CheckoutWarningMessage", b =>
|
||||||
|
{
|
||||||
|
b.Property<long>("id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("id"));
|
||||||
|
|
||||||
|
b.Property<long>("CheckoutId")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
b.Property<string>("TypeOfCheckoutWarning")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(30)
|
||||||
|
.HasColumnType("nvarchar(30)");
|
||||||
|
|
||||||
|
b.Property<string>("WarningMessage")
|
||||||
|
.HasMaxLength(150)
|
||||||
|
.HasColumnType("nvarchar(150)");
|
||||||
|
|
||||||
|
b.HasKey("id");
|
||||||
|
|
||||||
|
b.HasIndex("CheckoutId");
|
||||||
|
|
||||||
|
b.ToTable("CheckoutWarningMessage", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b =>
|
modelBuilder.Entity("Company.Domain.ClassifiedSalaryAgg.ClassifiedSalary", b =>
|
||||||
{
|
{
|
||||||
b.Property<long>("id")
|
b.Property<long>("id")
|
||||||
@@ -3205,6 +3238,14 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
.HasMaxLength(122)
|
.HasMaxLength(122)
|
||||||
.HasColumnType("nvarchar(122)");
|
.HasColumnType("nvarchar(122)");
|
||||||
|
|
||||||
|
b.Property<string>("VerifierFullName")
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("nvarchar(100)");
|
||||||
|
|
||||||
|
b.Property<string>("VerifierPhoneNumber")
|
||||||
|
.HasMaxLength(20)
|
||||||
|
.HasColumnType("nvarchar(20)");
|
||||||
|
|
||||||
b.Property<string>("VerifyCode")
|
b.Property<string>("VerifyCode")
|
||||||
.HasMaxLength(20)
|
.HasMaxLength(20)
|
||||||
.HasColumnType("nvarchar(20)");
|
.HasColumnType("nvarchar(20)");
|
||||||
@@ -3247,10 +3288,21 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
b.Property<DateTime>("VerificationCreation")
|
b.Property<DateTime>("VerificationCreation")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<string>("VerifierFullName")
|
||||||
|
.HasMaxLength(100)
|
||||||
|
.HasColumnType("nvarchar(100)");
|
||||||
|
|
||||||
|
b.Property<string>("VerifierPhoneNumber")
|
||||||
|
.HasMaxLength(20)
|
||||||
|
.HasColumnType("nvarchar(20)");
|
||||||
|
|
||||||
b.Property<string>("VerifyCode")
|
b.Property<string>("VerifyCode")
|
||||||
.HasMaxLength(10)
|
.HasMaxLength(10)
|
||||||
.HasColumnType("nvarchar(10)");
|
.HasColumnType("nvarchar(10)");
|
||||||
|
|
||||||
|
b.Property<DateTime>("VerifyCodeCreation")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.HasKey("id");
|
b.HasKey("id");
|
||||||
|
|
||||||
b.HasIndex("InstitutionContractId");
|
b.HasIndex("InstitutionContractId");
|
||||||
@@ -7192,6 +7244,17 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
b.Navigation("Workshop");
|
b.Navigation("Workshop");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Company.Domain.CheckoutAgg.CheckoutWarningMessage", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Company.Domain.CheckoutAgg.Checkout", "Checkout")
|
||||||
|
.WithMany("CheckoutWarningMessageList")
|
||||||
|
.HasForeignKey("CheckoutId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("Checkout");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b =>
|
modelBuilder.Entity("Company.Domain.ClientEmployeeWorkshopAgg.ClientEmployeeWorkshop", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee")
|
b.HasOne("Company.Domain.EmployeeAgg.Employee", "Employee")
|
||||||
@@ -10711,6 +10774,11 @@ namespace CompanyManagment.EFCore.Migrations
|
|||||||
b.Navigation("PetitionsList");
|
b.Navigation("PetitionsList");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Company.Domain.CheckoutAgg.Checkout", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("CheckoutWarningMessageList");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b =>
|
modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("ContractingPartyBankAccounts");
|
b.Navigation("ContractingPartyBankAccounts");
|
||||||
|
|||||||
@@ -524,6 +524,8 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction);
|
entity.SetLoanInstallment(command.LoanInstallments, command.InstallmentDeduction);
|
||||||
entity.SetCheckoutRollCall(command.CheckoutRollCall);
|
entity.SetCheckoutRollCall(command.CheckoutRollCall);
|
||||||
entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours);
|
entity.SetEmployeeMandatoryHours(command.EmployeeMandatoryHours);
|
||||||
|
if(command.HasInsuranceShareTheSameAsList)
|
||||||
|
entity.SetInsuranceShare();
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1689,7 +1691,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
return new List<CheckoutViewModel>();
|
return new List<CheckoutViewModel>();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
var query = _context.CheckoutSet
|
var query = _context.CheckoutSet.Include(w => w.CheckoutWarningMessageList)
|
||||||
.AsSplitQuery().Select(x => new CheckoutViewModel()
|
.AsSplitQuery().Select(x => new CheckoutViewModel()
|
||||||
{
|
{
|
||||||
Id = x.id,
|
Id = x.id,
|
||||||
@@ -1724,7 +1726,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
|
SalaryAidDateTimeFa = s.SalaryAidDateTimeFa,
|
||||||
SalaryAidDateTimeGe = s.SalaryAidDateTime
|
SalaryAidDateTimeGe = s.SalaryAidDateTime
|
||||||
}).ToList(),
|
}).ToList(),
|
||||||
HasAmountConflict = x.HasAmountConflict
|
HasAmountConflict = x.HasAmountConflict,
|
||||||
|
IsUpdateNeeded = x.IsUpdateNeeded,
|
||||||
|
CheckoutWarningMessageList = x.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
|
||||||
|
{
|
||||||
|
WarningMessage = wm.WarningMessage,
|
||||||
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
||||||
|
|
||||||
|
}).ToList()
|
||||||
|
|
||||||
}).Where(x => x.WorkshopId == searchModel.WorkshopId);
|
}).Where(x => x.WorkshopId == searchModel.WorkshopId);
|
||||||
if (searchModel.EmployeeId > 0)
|
if (searchModel.EmployeeId > 0)
|
||||||
@@ -1992,7 +2001,7 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
// );
|
// );
|
||||||
|
|
||||||
var checkouts =
|
var checkouts =
|
||||||
_context.CheckoutSet.Where(x => workshopAcounts.Contains(x.WorkshopId))
|
_context.CheckoutSet.Include(w=>w.CheckoutWarningMessageList).Where(x => workshopAcounts.Contains(x.WorkshopId))
|
||||||
.Join(_context.Workshops.AsSplitQuery(),
|
.Join(_context.Workshops.AsSplitQuery(),
|
||||||
ch => ch.WorkshopId,
|
ch => ch.WorkshopId,
|
||||||
workshop => workshop.id,
|
workshop => workshop.id,
|
||||||
@@ -2261,7 +2270,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
CreationDate = x.ch.CreationDate,
|
CreationDate = x.ch.CreationDate,
|
||||||
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
||||||
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
||||||
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
||||||
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
||||||
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm=> new CheckoutWarningMessageModel
|
||||||
|
{
|
||||||
|
WarningMessage = wm.WarningMessage,
|
||||||
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
||||||
|
|
||||||
|
}).ToList()
|
||||||
|
|
||||||
|
|
||||||
}).OrderByDescending(x=>x.Id).Take(3000).ToList().DistinctBy(x => x.Id)
|
}).OrderByDescending(x=>x.Id).Take(3000).ToList().DistinctBy(x => x.Id)
|
||||||
@@ -2299,7 +2315,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
CreationDate = x.ch.CreationDate,
|
CreationDate = x.ch.CreationDate,
|
||||||
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
||||||
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
||||||
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
||||||
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
||||||
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
|
||||||
|
{
|
||||||
|
WarningMessage = wm.WarningMessage,
|
||||||
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
||||||
|
|
||||||
|
}).ToList()
|
||||||
|
|
||||||
}).OrderByDescending(x => x.Id)
|
}).OrderByDescending(x => x.Id)
|
||||||
.GroupBy(x => x.Id)
|
.GroupBy(x => x.Id)
|
||||||
@@ -2365,7 +2388,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
CreationDate = x.ch.CreationDate,
|
CreationDate = x.ch.CreationDate,
|
||||||
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
||||||
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
||||||
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
||||||
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
||||||
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
|
||||||
|
{
|
||||||
|
WarningMessage = wm.WarningMessage,
|
||||||
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
||||||
|
|
||||||
|
}).ToList()
|
||||||
|
|
||||||
}).GroupBy(x => x.Id).Select(x => x.First()).ToList()
|
}).GroupBy(x => x.Id).Select(x => x.First()).ToList()
|
||||||
.OrderByDescending(x => x.ContractStartGr).ToList();
|
.OrderByDescending(x => x.ContractStartGr).ToList();
|
||||||
@@ -2398,7 +2428,14 @@ public class CheckoutRepository : RepositoryBase<long, Checkout>, ICheckoutRepos
|
|||||||
CreationDate = x.ch.CreationDate,
|
CreationDate = x.ch.CreationDate,
|
||||||
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
EmployerName = $"{x.workshopEmployer.Employer.FName} {x.workshopEmployer.Employer.LName}",
|
||||||
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
IsBlockCantracingParty = x.contractingParty.IsBlock,
|
||||||
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout
|
HasSignCheckout = x.option != null ? x.option.SignCheckout : x.workshop.SignCheckout,
|
||||||
|
IsUpdateNeeded = x.ch.IsUpdateNeeded,
|
||||||
|
CheckoutWarningMessageList = x.ch.CheckoutWarningMessageList.Select(wm => new CheckoutWarningMessageModel
|
||||||
|
{
|
||||||
|
WarningMessage = wm.WarningMessage,
|
||||||
|
TypeOfCheckoutWarning = wm.TypeOfCheckoutWarning,
|
||||||
|
|
||||||
|
}).ToList()
|
||||||
|
|
||||||
}).GroupBy(x => x.Id)
|
}).GroupBy(x => x.Id)
|
||||||
.Select(x => x.First()).ToList()
|
.Select(x => x.First()).ToList()
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ using System.Globalization;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using _0_Framework.Exceptions;
|
||||||
using _0_Framework.InfraStructure;
|
using _0_Framework.InfraStructure;
|
||||||
using Company.Domain.ContractAgg;
|
using Company.Domain.ContractAgg;
|
||||||
using Company.Domain.empolyerAgg;
|
using Company.Domain.empolyerAgg;
|
||||||
@@ -1081,30 +1083,7 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
|||||||
|
|
||||||
var weeklyDouble = 0.0;
|
var weeklyDouble = 0.0;
|
||||||
var weekly = c.WorkingHoursWeekly;
|
var weekly = c.WorkingHoursWeekly;
|
||||||
if (!string.IsNullOrWhiteSpace(weekly) &&
|
c.WorkingHoursWeekly = WeeklyHourConvertor(weekly);
|
||||||
weekly != "24 - 12" && weekly != "24 - 24" && weekly != "36 - 12" && weekly != "48 - 24")
|
|
||||||
{
|
|
||||||
if (weekly.Contains("/"))
|
|
||||||
{
|
|
||||||
weeklyDouble = double.Parse(weekly);
|
|
||||||
var minute = (int)((weeklyDouble % 1) * 60);
|
|
||||||
var hour = (int)(weeklyDouble);
|
|
||||||
c.WorkingHoursWeekly = hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
|
||||||
}
|
|
||||||
else if (weekly.Contains("."))
|
|
||||||
{
|
|
||||||
weeklyDouble = double.Parse(weekly, CultureInfo.InvariantCulture);
|
|
||||||
var minute = (int)((weeklyDouble % 1) * 60);
|
|
||||||
var hour = (int)(weeklyDouble);
|
|
||||||
c.WorkingHoursWeekly = hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
c.WorkingHoursWeekly = c.WorkingHoursWeekly + " " + "ساعت";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
var emp = workshopEmpList.Where(x => x.WorkshopId == c.WorkshopIds)
|
var emp = workshopEmpList.Where(x => x.WorkshopId == c.WorkshopIds)
|
||||||
.Select(x => x.EmployerId).ToList();
|
.Select(x => x.EmployerId).ToList();
|
||||||
c.Employers = _employerRepository.GetEmployers(emp);
|
c.Employers = _employerRepository.GetEmployers(emp);
|
||||||
@@ -1161,6 +1140,37 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string WeeklyHourConvertor(string weekly)
|
||||||
|
{
|
||||||
|
double weeklyDouble;
|
||||||
|
if (!string.IsNullOrWhiteSpace(weekly) &&
|
||||||
|
weekly != "24 - 12" && weekly != "24 - 24" && weekly != "36 - 12" && weekly != "48 - 24")
|
||||||
|
{
|
||||||
|
if (weekly.Contains("/"))
|
||||||
|
{
|
||||||
|
weeklyDouble = double.Parse(weekly);
|
||||||
|
var minute = (int)((weeklyDouble % 1) * 60);
|
||||||
|
var hour = (int)(weeklyDouble);
|
||||||
|
return hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
||||||
|
}
|
||||||
|
else if (weekly.Contains("."))
|
||||||
|
{
|
||||||
|
weeklyDouble = double.Parse(weekly, CultureInfo.InvariantCulture);
|
||||||
|
var minute = (int)((weeklyDouble % 1) * 60);
|
||||||
|
var hour = (int)(weeklyDouble);
|
||||||
|
return hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return weekly + " " + "ساعت";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public IQueryable<WorkshopEmployerViewModel> GetWorkshopEmployer()
|
public IQueryable<WorkshopEmployerViewModel> GetWorkshopEmployer()
|
||||||
{
|
{
|
||||||
return _context.WorkshopEmployers.Select(x => new WorkshopEmployerViewModel
|
return _context.WorkshopEmployers.Select(x => new WorkshopEmployerViewModel
|
||||||
@@ -1506,6 +1516,195 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<PagedResult<GetContractListForClientResponse>> GetContractListForClient(GetContractListForClientRequest searchModel)
|
||||||
|
{
|
||||||
|
var workshopId = _authHelper.GetWorkshopId();
|
||||||
|
var query = _context.Contracts
|
||||||
|
.Where(c => c.WorkshopIds == workshopId);
|
||||||
|
|
||||||
|
#region Search
|
||||||
|
|
||||||
|
if (searchModel.EmployeeId > 0)
|
||||||
|
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.StartDate) && string.IsNullOrWhiteSpace(searchModel.EndDate))
|
||||||
|
{
|
||||||
|
if (!searchModel.StartDate.TryToGeorgianDateTime(out var startDate))
|
||||||
|
throw new BadRequestException("تاریخ شروع وارد شده معتبر نمی باشد.");
|
||||||
|
|
||||||
|
if (!searchModel.EndDate.TryToGeorgianDateTime(out var endDate))
|
||||||
|
throw new BadRequestException("تاریخ پایان وارد شده معتبر نمی باشد.");
|
||||||
|
|
||||||
|
query = query.Where(x => x.ContarctStart <=endDate && x.ContractEnd >= startDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchModel.Year>0 && searchModel.Month >0)
|
||||||
|
{
|
||||||
|
|
||||||
|
var startDateFa = $"{searchModel.Year:0000}/{searchModel.Month:00}/01";
|
||||||
|
if (!startDateFa.TryToGeorgianDateTime(out var startDate))
|
||||||
|
throw new BadRequestException("سال و ماه وارد شده معتبر نمی باشد.");
|
||||||
|
|
||||||
|
if(!startDateFa.FindeEndOfMonth().TryToGeorgianDateTime(out var endDate))
|
||||||
|
throw new BadRequestException("سال و ماه وارد شده معتبر نمی باشد.");
|
||||||
|
|
||||||
|
query = query.Where(x => x.ContarctStart <=endDate && x.ContractEnd >= startDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchModel.OrderType != null)
|
||||||
|
{
|
||||||
|
switch (searchModel.OrderType)
|
||||||
|
{
|
||||||
|
case ContractListOrderType.ByContractCreationDate:
|
||||||
|
query = query.OrderBy(x => x.CreationDate);
|
||||||
|
break;
|
||||||
|
case ContractListOrderType.ByContractStartDate:
|
||||||
|
query = query.OrderBy(x => x.ContarctStart);
|
||||||
|
break;
|
||||||
|
case ContractListOrderType.ByContractStartDateDescending:
|
||||||
|
query = query.OrderByDescending(x=>x.ContarctStart);
|
||||||
|
break;
|
||||||
|
case ContractListOrderType.ByPersonnelCode:
|
||||||
|
query = query.OrderBy(x => x.PersonnelCode);
|
||||||
|
break;
|
||||||
|
case ContractListOrderType.ByPersonnelCodeDescending:
|
||||||
|
query = query.OrderByDescending(x => x.PersonnelCode);
|
||||||
|
break;
|
||||||
|
case ContractListOrderType.BySignedContract:
|
||||||
|
query = query.OrderByDescending(x => x.Signature == "1");
|
||||||
|
break;
|
||||||
|
case ContractListOrderType.ByUnSignedContract:
|
||||||
|
query = query.OrderBy(x => x.Signature == "1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
query = query.OrderByDescending(x => x.id);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
var pagedList =await query
|
||||||
|
.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
|
||||||
|
|
||||||
|
var employeeIds = pagedList.Select(x => x.EmployeeId).ToList();
|
||||||
|
|
||||||
|
var employees = await _context.Employees
|
||||||
|
.Where(x => employeeIds.Contains(x.id)).Select(x => new
|
||||||
|
{
|
||||||
|
Id = x.id,
|
||||||
|
x.FullName
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
var result = new PagedResult<GetContractListForClientResponse>
|
||||||
|
{
|
||||||
|
TotalCount = await query.CountAsync(),
|
||||||
|
List = pagedList.Select(c =>
|
||||||
|
{
|
||||||
|
var employeeFullName = employees
|
||||||
|
.FirstOrDefault(e => e.Id == c.EmployeeId)?.FullName ?? "";
|
||||||
|
|
||||||
|
return new GetContractListForClientResponse
|
||||||
|
{
|
||||||
|
Id = c.id,
|
||||||
|
PersonnelCode = c.PersonnelCode.ToString(),
|
||||||
|
ContractStart = c.ContarctStart.ToFarsi(),
|
||||||
|
ContractEnd = c.ContractEnd.ToFarsi(),
|
||||||
|
ContractNo = c.ContractNo,
|
||||||
|
IsSigned = c.Signature == "1",
|
||||||
|
EmployeeFullName = employeeFullName,
|
||||||
|
AvgWorkingHour = WeeklyHourConvertor(c.WorkingHoursWeekly),
|
||||||
|
DailyWage = c.DayliWage,
|
||||||
|
FamilyAllowance = c.FamilyAllowance
|
||||||
|
};
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<ContractPrintViewModel>> PrintAllAsync(List<long> ids)
|
||||||
|
{
|
||||||
|
var query =await _context.Contracts.Include(x => x.Employer)
|
||||||
|
.Include(x => x.Employee).Where(x => ids.Contains(x.id))
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var workshopIds = query.Select(x => x.WorkshopIds).Distinct().ToList();
|
||||||
|
|
||||||
|
var workshops = await _context.Workshops
|
||||||
|
.Where(x => workshopIds.Contains(x.id))
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
List<long> exceptionWorkshops = [516,63,38,39];
|
||||||
|
var res = query.Select(x =>
|
||||||
|
{
|
||||||
|
var workshop = workshops.FirstOrDefault(w => w.id == x.WorkshopIds);
|
||||||
|
|
||||||
|
var employerRes = new ContractPrintEmployerViewModel()
|
||||||
|
{
|
||||||
|
WorkshopName = workshop!.WorkshopName,
|
||||||
|
Address =$"{workshop.State} - {workshop.City} - {workshop.Address}",
|
||||||
|
LegalType = x.Employer.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal,
|
||||||
|
LegalEmployer = x.Employer.IsLegal == "حقیقی"
|
||||||
|
? null
|
||||||
|
: new ContractPrintLegalEmployerViewModel()
|
||||||
|
{
|
||||||
|
NationalId = x.Employer.NationalId,
|
||||||
|
RegisterId = x.Employer.RegisterId,
|
||||||
|
CompanyName = x.Employer.LName,
|
||||||
|
},
|
||||||
|
RealEmployer = x.Employer.IsLegal == "حقیقی"
|
||||||
|
? new ContractPrintRealEmployerViewModel()
|
||||||
|
{
|
||||||
|
FullName = x.Employer.FullName,
|
||||||
|
IdNumber = x.Employer.IdNumber,
|
||||||
|
NationalCode = x.Employer.Nationalcode
|
||||||
|
}
|
||||||
|
: null,
|
||||||
|
WorkshopCode = workshop.InsuranceCode
|
||||||
|
|
||||||
|
};
|
||||||
|
var employeeRes = new ContractPrintEmployeeViewModel()
|
||||||
|
{
|
||||||
|
Address =$"{x.Employee.State} - {x.Employee.City} - {x.Employee.Address}" ,
|
||||||
|
FullName = x.Employee.FullName,
|
||||||
|
IdNumber = x.Employee.IdNumber,
|
||||||
|
NationalCode = x.Employee.NationalCode,
|
||||||
|
DateOfBirth = x.Employee.DateOfBirth.ToFarsi(),
|
||||||
|
FatherName = x.Employee.FatherName,
|
||||||
|
LevelOfEducation = x.Employee.LevelOfEducation
|
||||||
|
};
|
||||||
|
|
||||||
|
var typeOfContract = new ContractPrintTypeOfContractViewModel()
|
||||||
|
{
|
||||||
|
ContarctStart = x.ContarctStart.ToFarsi(),
|
||||||
|
ContractEnd = x.ContractEnd.ToFarsi(),
|
||||||
|
JobName = x.JobType,
|
||||||
|
ContractType = x.ContractType,
|
||||||
|
SetContractDate = x.SetContractDate.ToFarsi(),
|
||||||
|
WorkingHoursWeekly = WeeklyHourConvertor(x.WorkingHoursWeekly),
|
||||||
|
WorkshopAddress = [x.WorkshopAddress1, x.WorkshopAddress2],
|
||||||
|
};
|
||||||
|
ContractPrintFeesViewModel fees= new ContractPrintFeesViewModel()
|
||||||
|
{
|
||||||
|
DailyWage = x.DayliWage,
|
||||||
|
FamilyAllowance = x.FamilyAllowance,
|
||||||
|
HousingAllowance = x.HousingAllowance,
|
||||||
|
ConsumableItems = x.ConsumableItems,
|
||||||
|
};
|
||||||
|
return new ContractPrintViewModel()
|
||||||
|
{
|
||||||
|
Employer = employerRes,
|
||||||
|
Employee = employeeRes,
|
||||||
|
TypeOfContract = typeOfContract,
|
||||||
|
Fees = fees,
|
||||||
|
ContractNo = x.ContractNo,
|
||||||
|
ConditionAndDetials = exceptionWorkshops.Contains(x.WorkshopIds) ? "بر اساس ماده 190 قانون کار جمهوری اسلامی ایران ، پرسنل اقرار مینماید کلیه مبالغ پیش بینی شده در قانون کار را وفق قرارداد منعقده دریافت مینماید. این مبالغ قسمتی بصورت مستقیم از سوی کارفرما و قسمتی بر اساس شرایط کارگاه از محل درآمد حاصله از مشتری اخذ میگردد . با توجه به شرایط کارگاه کلیه مبالغ بصورت واریز به حساب و وجه نقد رایج کشور ، تواما به پرسنل پرداخت میگردد. امضا تصفیه حساب دارای مبالغ ، توسط پرسنل نشانگر تصفیه قطعی ایشان میباشد.": "",
|
||||||
|
|
||||||
|
};
|
||||||
|
}).ToList();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region NewChangeByHeydari
|
#region NewChangeByHeydari
|
||||||
|
|||||||
@@ -25,9 +25,11 @@ using Company.Domain.WorkshopAgg;
|
|||||||
using CompanyManagment.App.Contracts.Employer;
|
using CompanyManagment.App.Contracts.Employer;
|
||||||
using CompanyManagment.App.Contracts.InstitutionContract;
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
||||||
|
using CompanyManagment.App.Contracts.Law;
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||||
using CompanyManagment.App.Contracts.Workshop;
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
using CompanyManagment.App.Contracts.WorkshopPlan;
|
using CompanyManagment.App.Contracts.WorkshopPlan;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata;
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||||
@@ -48,6 +50,16 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
|||||||
private readonly IPlanPercentageRepository _planPercentageRepository;
|
private readonly IPlanPercentageRepository _planPercentageRepository;
|
||||||
private readonly ISmsService _smsService;
|
private readonly ISmsService _smsService;
|
||||||
|
|
||||||
|
private readonly InstitutionContratVerificationParty _firstParty = new()
|
||||||
|
{
|
||||||
|
Address = "رشت - خیابان حاجی آیاد - کوچه سپهدار - ساختمان داماش - واحد 17",
|
||||||
|
PhoneNumber = "09111485044",
|
||||||
|
CeoName = "سید حسن مصباح",
|
||||||
|
CompanyNameOrFullName = "نور داد مهر گستر کاسپین",
|
||||||
|
NationalCodeOrNationalId = "14009970584",
|
||||||
|
LegalType = LegalType.Legal
|
||||||
|
};
|
||||||
|
|
||||||
public InstitutionContractRepository(CompanyContext context, IEmployerRepository employerRepository,
|
public InstitutionContractRepository(CompanyContext context, IEmployerRepository employerRepository,
|
||||||
IWorkshopRepository workshopRepository, IMongoDatabase database,
|
IWorkshopRepository workshopRepository, IMongoDatabase database,
|
||||||
IPlanPercentageRepository planPercentageRepository, ISmsService smsService) : base(context)
|
IPlanPercentageRepository planPercentageRepository, ISmsService smsService) : base(context)
|
||||||
@@ -1799,15 +1811,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
|||||||
query.party.IsLegal == "حقیقی" ? query.party.Nationalcode : query.party.NationalId,
|
query.party.IsLegal == "حقیقی" ? query.party.Nationalcode : query.party.NationalId,
|
||||||
LegalType = query.party.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal,
|
LegalType = query.party.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal,
|
||||||
},
|
},
|
||||||
FirstParty = new InstitutionContratVerificationParty()
|
FirstParty =_firstParty
|
||||||
{
|
|
||||||
Address = "رشت - خیابان حاجی آیاد - کوچه سپهدار - ساختمان داماش - واحد 17",
|
|
||||||
PhoneNumber = "09111111111",
|
|
||||||
CeoName = "سید حسن مصباح",
|
|
||||||
CompanyNameOrFullName = "نور داد مهر گستر کاسپین",
|
|
||||||
NationalCodeOrNationalId = "1111111111",
|
|
||||||
LegalType = LegalType.Legal
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@@ -2619,10 +2623,12 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
|||||||
Id = x.id,
|
Id = x.id,
|
||||||
Text = x.WorkshopFullName
|
Text = x.WorkshopFullName
|
||||||
});
|
});
|
||||||
var employers = _context.Employers.Select(x => new InstitutionContractSelectListViewModel()
|
//کارفرما ها به غیر از آن هایی که به طرف حساب ---- وصل هستند
|
||||||
|
var employers = _context.Employers.Where(x=>x.ContractingPartyId != 30428)
|
||||||
|
.Select(x => new InstitutionContractSelectListViewModel()
|
||||||
{
|
{
|
||||||
Id = x.id,
|
Id = x.id,
|
||||||
Text = x.FName + " " + x.LName
|
Text = x.FullName
|
||||||
});
|
});
|
||||||
var representatives = _context.RepresentativeSet.Select(x => new InstitutionContractSelectListViewModel()
|
var representatives = _context.RepresentativeSet.Select(x => new InstitutionContractSelectListViewModel()
|
||||||
{
|
{
|
||||||
@@ -2655,6 +2661,113 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<InstitutionContractPrintViewModel>> PrintAllAsync(List<long> ids)
|
||||||
|
{
|
||||||
|
var query =_context.InstitutionContractSet
|
||||||
|
.Include(x=>x.WorkshopGroup)
|
||||||
|
.ThenInclude(x=>x.InitialWorkshops)
|
||||||
|
.Include(x=>x.WorkshopGroup)
|
||||||
|
.ThenInclude(x=>x.CurrentWorkshops)
|
||||||
|
.Where(x=>ids.Contains(x.id));
|
||||||
|
|
||||||
|
var contractingPartyIds = query.Select(x => x.ContractingPartyId).ToList();
|
||||||
|
var contractingParties = await _context.PersonalContractingParties
|
||||||
|
.Where(x => contractingPartyIds.Contains(x.id))
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var list = query.ToList();
|
||||||
|
|
||||||
|
if (list.Count == 0)
|
||||||
|
throw new NotFoundException("قرارداد مؤسسه یافت نشد");
|
||||||
|
|
||||||
|
var res = new List<InstitutionContractPrintViewModel>();
|
||||||
|
foreach (var institution in list)
|
||||||
|
{
|
||||||
|
var contractingParty = contractingParties.FirstOrDefault(x => x.id == institution.ContractingPartyId);
|
||||||
|
|
||||||
|
if (contractingParty == null)
|
||||||
|
{
|
||||||
|
throw new NotFoundException("طرف حساب یافت نشد");
|
||||||
|
}
|
||||||
|
|
||||||
|
var law = await _context.Laws
|
||||||
|
.FirstOrDefaultAsync(x => x.id == institution.LawId);
|
||||||
|
|
||||||
|
|
||||||
|
var secondParty = new InstitutionContratVerificationParty()
|
||||||
|
{
|
||||||
|
Address = contractingParty.Address,
|
||||||
|
PhoneNumber = contractingParty.Phone,
|
||||||
|
CeoName = contractingParty.IsLegal == "حقیقی"
|
||||||
|
? $"{contractingParty.FName} {contractingParty.LName}"
|
||||||
|
: $"{contractingParty.CeoFName} {contractingParty.CeoLName}",
|
||||||
|
CompanyNameOrFullName = contractingParty.IsLegal == "حقیقی"
|
||||||
|
? $"{contractingParty.FName} {contractingParty.LName}"
|
||||||
|
: contractingParty.LName,
|
||||||
|
NationalCodeOrNationalId =
|
||||||
|
contractingParty.IsLegal == "حقیقی" ? contractingParty.Nationalcode : contractingParty.NationalId,
|
||||||
|
LegalType = contractingParty.IsLegal == "حقیقی" ? LegalType.Real : LegalType.Legal,
|
||||||
|
};
|
||||||
|
|
||||||
|
var lawViewModel = new LawViewModel()
|
||||||
|
{
|
||||||
|
Id = law.id,
|
||||||
|
CreatedAt = law.CreationDate,
|
||||||
|
HeadTitle = law.HeadTitle,
|
||||||
|
IsActive = law.IsActive,
|
||||||
|
Items = law.Items.Select(x => new LawItemViewModel()
|
||||||
|
{
|
||||||
|
Details = x.Details,
|
||||||
|
Header = x.Header
|
||||||
|
}).ToList(),
|
||||||
|
Notifications = law.Notifications,
|
||||||
|
Title = law.Title,
|
||||||
|
Type = law.Type,
|
||||||
|
Version = law.Version
|
||||||
|
};
|
||||||
|
|
||||||
|
var item = new InstitutionContractPrintViewModel()
|
||||||
|
{
|
||||||
|
ContractStart = institution.ContractStartFa,
|
||||||
|
ContractEnd = institution.ContractEndFa,
|
||||||
|
ContractNo = institution.ContractNo,
|
||||||
|
CreationDate = institution.CreationDate.ToFarsi(),
|
||||||
|
FirstParty = _firstParty,
|
||||||
|
SecondParty = secondParty,
|
||||||
|
LawViewModel = lawViewModel,
|
||||||
|
Obligation = institution.Obligation.ToMoney(),
|
||||||
|
PaymentPrice = institution.TotalAmount.ToMoney(),
|
||||||
|
TotalPrice = (institution.TotalAmount - institution.ValueAddedTax).ToMoney(),
|
||||||
|
TaxPrice = institution.ValueAddedTax.ToMoney(),
|
||||||
|
VerifierFullName = institution.VerifierFullName,
|
||||||
|
VerifierPhoneNumber = institution.VerifierPhoneNumber,
|
||||||
|
VerifyCode = institution.VerifyCode,
|
||||||
|
VerifyDate = institution.VerifyCodeCreation.ToFarsi(),
|
||||||
|
VerifyTime = institution.VerifyCodeCreation.ToString("HH:mm:ss"),
|
||||||
|
Workshops = institution.WorkshopGroup.CurrentWorkshops
|
||||||
|
.Select(x => new GetInstitutionVerificationDetailsWorkshopsViewModel()
|
||||||
|
{
|
||||||
|
Name = x.WorkshopName,
|
||||||
|
PersonnelCount = x.PersonnelCount,
|
||||||
|
Services = new WorkshopServicesViewModel()
|
||||||
|
{
|
||||||
|
Contract = x.Services.Contract,
|
||||||
|
ContractInPerson = x.Services.ContractInPerson,
|
||||||
|
CustomizeCheckout = x.Services.CustomizeCheckout,
|
||||||
|
Insurance = x.Services.Insurance,
|
||||||
|
InsuranceInPerson = x.Services.InsuranceInPerson,
|
||||||
|
RollCall = x.Services.RollCall,
|
||||||
|
RollCallInPerson = x.Services.RollCallInPerson
|
||||||
|
},
|
||||||
|
Price = x.Price.ToMoney()
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
res.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private InstitutionContractExtensionPaymentResponse CalculateInPersonPayment(
|
private InstitutionContractExtensionPaymentResponse CalculateInPersonPayment(
|
||||||
InstitutionContractExtensionPlanDetail selectedPlan, double baseAmount, double tenPercent,
|
InstitutionContractExtensionPlanDetail selectedPlan, double baseAmount, double tenPercent,
|
||||||
|
|||||||
@@ -7,11 +7,14 @@ using System.Runtime.CompilerServices;
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
using _0_Framework.InfraStructure;
|
using _0_Framework.InfraStructure;
|
||||||
using AccountMangement.Infrastructure.EFCore;
|
using AccountMangement.Infrastructure.EFCore;
|
||||||
|
using Company.Domain.CheckoutAgg;
|
||||||
using Company.Domain.EmployeeAgg;
|
using Company.Domain.EmployeeAgg;
|
||||||
using Company.Domain.EmployeeChildrenAgg;
|
using Company.Domain.EmployeeChildrenAgg;
|
||||||
using Company.Domain.EmployeeInsurancListDataAgg;
|
using Company.Domain.EmployeeInsurancListDataAgg;
|
||||||
|
using Company.Domain.empolyerAgg;
|
||||||
using Company.Domain.InsuranceListAgg;
|
using Company.Domain.InsuranceListAgg;
|
||||||
using Company.Domain.InsuranceWorkshopAgg;
|
using Company.Domain.InsuranceWorkshopAgg;
|
||||||
using Company.Domain.InsuranceYearlySalaryAgg;
|
using Company.Domain.InsuranceYearlySalaryAgg;
|
||||||
@@ -132,6 +135,11 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
var id = insuranceListObj.id;
|
var id = insuranceListObj.id;
|
||||||
if (command.EmployeeInsurancListDataList != null && command.EmployeeInsurancListDataList.Count > 0)
|
if (command.EmployeeInsurancListDataList != null && command.EmployeeInsurancListDataList.Count > 0)
|
||||||
{
|
{
|
||||||
|
var farisMonthName = Tools.ToFarsiMonthByNumber(command.Month);
|
||||||
|
|
||||||
|
var checkouts = _context.CheckoutSet.Where(x =>
|
||||||
|
x.WorkshopId == command.WorkshopId && x.Year == command.Year && x.Month == farisMonthName &&
|
||||||
|
x.IsActiveString == "true");
|
||||||
foreach (var item in command.EmployeeInsurancListDataList)
|
foreach (var item in command.EmployeeInsurancListDataList)
|
||||||
{
|
{
|
||||||
if (item.EmployeeInsurancListDataId == 0)
|
if (item.EmployeeInsurancListDataId == 0)
|
||||||
@@ -158,6 +166,29 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
item.LeftWorkDate, item.JobId, item.IncludeStatus, item.BaseYears,
|
item.LeftWorkDate, item.JobId, item.IncludeStatus, item.BaseYears,
|
||||||
item.MarriedAllowance, item.OverTimePay, item.FamilyAllowance);
|
item.MarriedAllowance, item.OverTimePay, item.FamilyAllowance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (checkouts.Any())
|
||||||
|
{
|
||||||
|
var checkout = checkouts.FirstOrDefault(x => x.EmployeeId == item.EmployeeId);
|
||||||
|
if (checkout != null)
|
||||||
|
{
|
||||||
|
if (item.InsuranceShare.ToMoney() != checkout.InsuranceDeduction.ToMoney())
|
||||||
|
{
|
||||||
|
checkout.SetUpdateNeeded();
|
||||||
|
if (!_context.CheckoutWarningMessages.Any(x => x.CheckoutId == checkout.id && x.TypeOfCheckoutWarning != TypeOfCheckoutWarning.InsuranceEmployeeShare))
|
||||||
|
{
|
||||||
|
var createWarrning =
|
||||||
|
new CheckoutWarningMessage(
|
||||||
|
"مبلغ بیمه سهم کارگر با مبلغ محاسبه شده در لیست بیمه مغایرت دارد", checkout.id, TypeOfCheckoutWarning.InsuranceEmployeeShare);
|
||||||
|
_context.CheckoutWarningMessages.Add(createWarrning);
|
||||||
|
}
|
||||||
|
|
||||||
|
_context.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_employeeInsurancListDataRepository.SaveChanges();
|
_employeeInsurancListDataRepository.SaveChanges();
|
||||||
@@ -698,6 +729,11 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
var id = insuranceListObj.id;
|
var id = insuranceListObj.id;
|
||||||
if (command.EmployeeInsurancListDataList != null && command.EmployeeInsurancListDataList.Count > 0)
|
if (command.EmployeeInsurancListDataList != null && command.EmployeeInsurancListDataList.Count > 0)
|
||||||
{
|
{
|
||||||
|
var farisMonthName = Tools.ToFarsiMonthByNumber(command.Month);
|
||||||
|
|
||||||
|
var checkouts = _context.CheckoutSet.Where(x =>
|
||||||
|
x.WorkshopId == command.WorkshopId && x.Year == command.Year && x.Month == farisMonthName &&
|
||||||
|
x.IsActiveString == "true");
|
||||||
foreach (var item in command.EmployeeInsurancListDataList)
|
foreach (var item in command.EmployeeInsurancListDataList)
|
||||||
{
|
{
|
||||||
var employeeInsurancListData = new EmployeeInsurancListData(id,
|
var employeeInsurancListData = new EmployeeInsurancListData(id,
|
||||||
@@ -711,6 +747,28 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
item.LeftWorkDate, item.JobId, item.IncludeStatus, item.BaseYears, item.MarriedAllowance,
|
item.LeftWorkDate, item.JobId, item.IncludeStatus, item.BaseYears, item.MarriedAllowance,
|
||||||
item.OverTimePay, item.FamilyAllowance);
|
item.OverTimePay, item.FamilyAllowance);
|
||||||
_employeeInsurancListDataRepository.Create(employeeInsurancListData);
|
_employeeInsurancListDataRepository.Create(employeeInsurancListData);
|
||||||
|
if (checkouts.Any())
|
||||||
|
{
|
||||||
|
var checkout = checkouts.FirstOrDefault(x => x.EmployeeId == item.EmployeeId);
|
||||||
|
if (checkout != null)
|
||||||
|
{
|
||||||
|
if (item.InsuranceShare.ToMoney() != checkout.InsuranceDeduction.ToMoney())
|
||||||
|
{
|
||||||
|
checkout.SetUpdateNeeded();
|
||||||
|
if (!_context.CheckoutWarningMessages.Any(x => x.CheckoutId == checkout.id && x.TypeOfCheckoutWarning != TypeOfCheckoutWarning.InsuranceEmployeeShare))
|
||||||
|
{
|
||||||
|
var createWarrning =
|
||||||
|
new CheckoutWarningMessage(
|
||||||
|
"مبلغ بیمه سهم کارگر با مبلغ محاسبه شده در لیست بیمه مغایرت دارد", checkout.id, TypeOfCheckoutWarning.InsuranceEmployeeShare);
|
||||||
|
_context.CheckoutWarningMessages.Add(createWarrning);
|
||||||
|
}
|
||||||
|
|
||||||
|
_context.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_employeeInsurancListDataRepository.SaveChanges();
|
_employeeInsurancListDataRepository.SaveChanges();
|
||||||
@@ -1411,6 +1469,27 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<EmployeeInsurancListDataViewModel> EmployeeInsuranceDataBy(DateTime startDate, long workshopId)
|
||||||
|
{
|
||||||
|
var res = _context.InsuranceListSet
|
||||||
|
.Where(x => x.StartDate <= startDate && x.EndDate >= startDate &&
|
||||||
|
x.WorkshopId == workshopId)
|
||||||
|
.Join(_context.EmployeeInsurancListDataSet,
|
||||||
|
insuranceList => insuranceList.id,
|
||||||
|
employeeInsurancListData => employeeInsurancListData.InsuranceListId,
|
||||||
|
(insuranceList, employeeInsurancListData) => new EmployeeInsurancListDataViewModel
|
||||||
|
{
|
||||||
|
InsuranceListId = insuranceList.id,
|
||||||
|
EmployeeId = employeeInsurancListData.EmployeeId,
|
||||||
|
WorkingDays = employeeInsurancListData.WorkingDays,
|
||||||
|
BenefitsIncludedNonContinuous = employeeInsurancListData.BenefitsIncludedNonContinuous,
|
||||||
|
InsuranceShare = employeeInsurancListData.InsuranceShare,
|
||||||
|
});
|
||||||
|
|
||||||
|
return res.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<EmployeeDetailsForInsuranceListViewModel> GetEmployeeInsuranceDataForEdit(long insuranceListId,
|
public List<EmployeeDetailsForInsuranceListViewModel> GetEmployeeInsuranceDataForEdit(long insuranceListId,
|
||||||
DateTime startDate, DateTime endDate)
|
DateTime startDate, DateTime endDate)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -478,7 +478,8 @@ public class RollCallEmployeeRepository : RepositoryBase<long, RollCallEmployee>
|
|||||||
|
|
||||||
public RollCallEmployee GetBy(long employeeId, long workshopId)
|
public RollCallEmployee GetBy(long employeeId, long workshopId)
|
||||||
{
|
{
|
||||||
return _context.RollCallEmployees.Include(x => x.EmployeesStatus).FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId);
|
return _context.RollCallEmployees.Include(x => x.EmployeesStatus)
|
||||||
|
.FirstOrDefault(x => x.EmployeeId == employeeId && x.WorkshopId == workshopId);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -744,6 +744,12 @@ public class institutionContractController : AdminBaseController
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
[HttpGet("print/{id}")]
|
||||||
|
public async Task<ActionResult<InstitutionContractPrintViewModel>> PrintOne(long id)
|
||||||
|
{
|
||||||
|
var res =await _institutionContractApplication.PrintOneAsync(id);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ using ServiceHost.Hubs;
|
|||||||
using System.Diagnostics.Contracts;
|
using System.Diagnostics.Contracts;
|
||||||
using WorkFlow.Application.Contracts.WorkFlow;
|
using WorkFlow.Application.Contracts.WorkFlow;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using Company.Domain.LeftWorkInsuranceAgg;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
|
using Company.Domain.InsuranceListAgg;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceList;
|
||||||
|
using CompanyManagment.EFCore.Repository;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace ServiceHost.Areas.Admin.Pages.Company.Checkouts;
|
namespace ServiceHost.Areas.Admin.Pages.Company.Checkouts;
|
||||||
|
|
||||||
@@ -59,6 +65,9 @@ public class IndexModel : PageModel
|
|||||||
private readonly IYearlySalaryApplication _yearlySalaryApplication;
|
private readonly IYearlySalaryApplication _yearlySalaryApplication;
|
||||||
private readonly IYearlySalaryRepository _yearlySalaryRepository;
|
private readonly IYearlySalaryRepository _yearlySalaryRepository;
|
||||||
private readonly IWorkFlowApplication _workFlowApplication;
|
private readonly IWorkFlowApplication _workFlowApplication;
|
||||||
|
private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository;
|
||||||
|
private readonly IInsuranceListApplication _insuranceListApplication;
|
||||||
|
private readonly IInsuranceListRepository _insuranceListRepository;
|
||||||
|
|
||||||
|
|
||||||
public List<CheckoutViewModel> chekoutlist;
|
public List<CheckoutViewModel> chekoutlist;
|
||||||
@@ -100,7 +109,7 @@ public class IndexModel : PageModel
|
|||||||
ILeaveApplication leaveApplication, IHubContext<CheckoutHub> hubContext,
|
ILeaveApplication leaveApplication, IHubContext<CheckoutHub> hubContext,
|
||||||
IEmployeeComputeOptionsApplication employeeComputeOptionsApplication,
|
IEmployeeComputeOptionsApplication employeeComputeOptionsApplication,
|
||||||
IRollCallMandatoryApplication rollCallMandatoryApplication,
|
IRollCallMandatoryApplication rollCallMandatoryApplication,
|
||||||
IRollCallEmployeeStatusApplication rollCallEmployeeStatusApp, IWorkFlowApplication workFlowApplication)
|
IRollCallEmployeeStatusApplication rollCallEmployeeStatusApp, IWorkFlowApplication workFlowApplication, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IInsuranceListApplication insuranceListApplication, IInsuranceListRepository insuranceListRepository)
|
||||||
{
|
{
|
||||||
_contractApplication = contractApplication;
|
_contractApplication = contractApplication;
|
||||||
_workshopApplication = workshopApplication;
|
_workshopApplication = workshopApplication;
|
||||||
@@ -124,6 +133,9 @@ public class IndexModel : PageModel
|
|||||||
_rollCallMandatoryApplication = rollCallMandatoryApplication;
|
_rollCallMandatoryApplication = rollCallMandatoryApplication;
|
||||||
_rollCallEmployeeStatusApp = rollCallEmployeeStatusApp;
|
_rollCallEmployeeStatusApp = rollCallEmployeeStatusApp;
|
||||||
_workFlowApplication = workFlowApplication;
|
_workFlowApplication = workFlowApplication;
|
||||||
|
_leftWorkInsuranceRepository = leftWorkInsuranceRepository;
|
||||||
|
_insuranceListApplication = insuranceListApplication;
|
||||||
|
_insuranceListRepository = insuranceListRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Message { get; set; }
|
public string Message { get; set; }
|
||||||
@@ -165,7 +177,7 @@ public class IndexModel : PageModel
|
|||||||
|
|
||||||
var searchResult = await _checkoutApplication.SearchCheckoutOptimized(searchModel);
|
var searchResult = await _checkoutApplication.SearchCheckoutOptimized(searchModel);
|
||||||
|
|
||||||
var result = new MainViewModel();
|
var result = new CompanyManagment.App.Contracts.Checkout.MainViewModel();
|
||||||
result.IsSysManager = accountId is 2 or 3;
|
result.IsSysManager = accountId is 2 or 3;
|
||||||
result.MainList = searchResult;
|
result.MainList = searchResult;
|
||||||
if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0)
|
if (searchModel.WorkshopId != 0 || searchModel.EmployeeId != 0)
|
||||||
@@ -759,6 +771,31 @@ public class IndexModel : PageModel
|
|||||||
var maxNumber = Convert.ToDouble(ContractsId.Count());
|
var maxNumber = Convert.ToDouble(ContractsId.Count());
|
||||||
if (ContractsId.Count > 0)
|
if (ContractsId.Count > 0)
|
||||||
{
|
{
|
||||||
|
#region Insurance
|
||||||
|
var watch = new Stopwatch();
|
||||||
|
|
||||||
|
watch.Start();
|
||||||
|
var contractpData = _contractApplication.GetDetails(ContractsId[0]);
|
||||||
|
|
||||||
|
var startMonthFa = $"{ConvertYear}/{ConvertMonth.PadLeft(2, '0')}/01";
|
||||||
|
DateTime startDateGr = startMonthFa.ToGeorgianDateTime();
|
||||||
|
DateTime endDateGr = startMonthFa.FindeEndOfMonth().ToGeorgianDateTime();
|
||||||
|
int endOfMonth = Convert.ToInt32((startMonthFa.FindeEndOfMonth()).Substring(8, 2));
|
||||||
|
|
||||||
|
|
||||||
|
var insuranceListData =
|
||||||
|
_insuranceListRepository.EmployeeInsuranceDataBy(startDateGr, contractpData.WorkshopIds);
|
||||||
|
var yearlysaleries = _yearlySalaryApplication.GetInsuranceItems(startDateGr, endDateGr, ConvertYear);
|
||||||
|
|
||||||
|
var insuranceEmployeeData =
|
||||||
|
_leftWorkInsuranceRepository.GetEmployeeInsuranceLeftWorksAndInformation(contractpData.WorkshopIds, startDateGr,
|
||||||
|
endDateGr);
|
||||||
|
Console.WriteLine("checkout-test-timer" + watch.Elapsed);
|
||||||
|
watch.Stop();
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//int i = 0;
|
//int i = 0;
|
||||||
foreach (var item in ContractsId)
|
foreach (var item in ContractsId)
|
||||||
{
|
{
|
||||||
@@ -993,6 +1030,77 @@ public class IndexModel : PageModel
|
|||||||
familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract);
|
familyAllowanceDouble, marriedAllowanceDouble, workshop.IsOldContract);
|
||||||
|
|
||||||
|
|
||||||
|
#region Insurance
|
||||||
|
|
||||||
|
double insuranceShare = 0;
|
||||||
|
//اگر پرسنل داری شروع بکار بیمه بود
|
||||||
|
var insuranceEmployeeDataItem =
|
||||||
|
insuranceEmployeeData.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||||
|
|
||||||
|
//اگر لیست بیمه برای پرسنل ساخته شده بود
|
||||||
|
var insuranceListDataWithDetails =
|
||||||
|
insuranceListData.FirstOrDefault(x => x.EmployeeId == contract.EmployeeId);
|
||||||
|
if (insuranceListDataWithDetails != null)
|
||||||
|
{
|
||||||
|
insuranceShare = insuranceListDataWithDetails.InsuranceShare;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (insuranceEmployeeDataItem != null && insuranceEmployeeDataItem.StartWorkDateGr <= separation.ContractEndGr)
|
||||||
|
{
|
||||||
|
var workingDays = Tools.GetEmployeeInsuranceWorkingDays(insuranceEmployeeDataItem.StartWorkDateGr, separation.LeftWorkDate, startDateGr, endDateGr, insuranceEmployeeDataItem.EmployeeId);
|
||||||
|
var leftWorkFa = workingDays.hasLeftWorkInMonth ? separation.LeftWorkDate.ToFarsi() : "";
|
||||||
|
|
||||||
|
//به دست آوردن دستمزد روزانه با توجه به اینکه کارگاه مشاغل مقطوع است یا خیر
|
||||||
|
|
||||||
|
double dailyWage = 0;
|
||||||
|
if (workshop.FixedSalary)
|
||||||
|
{
|
||||||
|
var res = _insuranceListApplication.GetDailyWageFixedSalary(ConvertYear, workshop.Id, insuranceEmployeeDataItem.EmployeeId, startDateGr,
|
||||||
|
endDateGr, insuranceEmployeeDataItem.JobId, workshop.Population, workshop.InsuranceJobId);
|
||||||
|
dailyWage = res ?? 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var res = _insuranceListApplication.ComputeDailyWage(yearlysaleries.DayliWage, insuranceEmployeeDataItem.EmployeeId, workshop.Id, ConvertYear);
|
||||||
|
dailyWage = res;
|
||||||
|
}
|
||||||
|
|
||||||
|
//بدست آوردن پایه سنوات
|
||||||
|
var baseYears = _insuranceListRepository.GetEmployeeInsuranceBaseYear(insuranceEmployeeDataItem.EmployeeId, workshop.Id,
|
||||||
|
workingDays.countWorkingDays, startDateGr, endDateGr, workingDays.startWork, workingDays.endWork, workingDays.hasLeftWorkInMonth);
|
||||||
|
|
||||||
|
//جمع مزد روزانه و پایه سنوات
|
||||||
|
var dailyWagePlusBaseYears = dailyWage + baseYears.baseYear;
|
||||||
|
|
||||||
|
|
||||||
|
//دستمزد ماهانه با محاسبه پایه سنوات
|
||||||
|
var monthlySalary = _insuranceListApplication.GetRoundValue(dailyWagePlusBaseYears * workingDays.countWorkingDays);
|
||||||
|
|
||||||
|
//حق تاهل
|
||||||
|
var marriedAllowance = employee.MaritalStatus == "متاهل" ? yearlysaleries.MarriedAllowance : 0;
|
||||||
|
|
||||||
|
//محاسبه مزایای ماهانه
|
||||||
|
var monthlyBenefits = _insuranceListApplication.GetMonthlyBenefits(endOfMonth, yearlysaleries.ConsumableItems, yearlysaleries.HousingAllowance, marriedAllowance, workingDays.countWorkingDays, workshop.TypeOfInsuranceSend, insuranceEmployeeDataItem.JobId, insuranceEmployeeDataItem.EmployeeId, insuranceEmployeeDataItem.IncludeStatus);
|
||||||
|
if (workshop.InsuranceCheckoutOvertime)
|
||||||
|
{
|
||||||
|
|
||||||
|
monthlyBenefits = _insuranceListApplication.GetRoundValue(monthlyBenefits += overTimeWorking);
|
||||||
|
}
|
||||||
|
|
||||||
|
//محاسبه جمع مزایای مشمول و دستمزد ماهانه
|
||||||
|
var benefitsIncludedContinuous = monthlyBenefits + monthlySalary;
|
||||||
|
|
||||||
|
//محاسبه حق بیمه سهم بیمه شده
|
||||||
|
insuranceShare = (benefitsIncludedContinuous * 7) / 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
var command = new CreateCheckout
|
var command = new CreateCheckout
|
||||||
{
|
{
|
||||||
EmployeeFullName = employee.EmployeeFullName,
|
EmployeeFullName = employee.EmployeeFullName,
|
||||||
@@ -1098,7 +1206,11 @@ public class IndexModel : PageModel
|
|||||||
|
|
||||||
DailySalaryAffected = mandatoryCompute.DailySalaryAffected,
|
DailySalaryAffected = mandatoryCompute.DailySalaryAffected,
|
||||||
|
|
||||||
|
#region InsuranceShare
|
||||||
|
|
||||||
|
InsuranceDeduction = _insuranceListApplication.GetRoundValue(insuranceShare),
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,135 @@
|
|||||||
@{
|
@{
|
||||||
<style>
|
<style>
|
||||||
.btn-lime {
|
.btn-lime {
|
||||||
background-color: #84cc16;
|
background-color: #84cc16;
|
||||||
border: 1px solid #84cc16;
|
border: 1px solid #84cc16;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.fulltext {
|
||||||
|
opacity: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ellipsed {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow-x: clip;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date-box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltipfull-containerText {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
right: -2px;
|
||||||
|
top: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tooltip {
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 99;
|
||||||
|
color: #fff;
|
||||||
|
width: 220px;
|
||||||
|
display: block;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: 'IranSans';
|
||||||
|
padding: 5px 10px;
|
||||||
|
border-radius: 3px;
|
||||||
|
text-align: center;
|
||||||
|
/*text-shadow: 1px 1px 2px #111;*/
|
||||||
|
background: #e67e22;
|
||||||
|
border: 1px solid #e67e22;
|
||||||
|
box-shadow: 0 0 3px rgba(0,0,0,0.5);
|
||||||
|
-webkit-transition: all .2s ease-in-out;
|
||||||
|
-moz-transition: all .2s ease-in-out;
|
||||||
|
-o-transition: all .2s ease-in-out;
|
||||||
|
-ms-transition: all .2s ease-in-out;
|
||||||
|
transition: all .2s ease-in-out;
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
-moz-transform: scale(0);
|
||||||
|
-o-transform: scale(0);
|
||||||
|
-ms-transform: scale(0);
|
||||||
|
transform: scale(0);
|
||||||
|
position: absolute;
|
||||||
|
right: -50px;
|
||||||
|
bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip:before, .tooltip:after {
|
||||||
|
content: '';
|
||||||
|
border-left: 10px solid transparent;
|
||||||
|
border-right: 10px solid transparent;
|
||||||
|
border-top: 10px solid #e67e22;
|
||||||
|
position: absolute;
|
||||||
|
bottom: -10px;
|
||||||
|
left: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip-container:hover .tooltip, a:hover .tooltip {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
-moz-transform: scale(1);
|
||||||
|
-o-transform: scale(1);
|
||||||
|
-ms-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltipfull {
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 99;
|
||||||
|
color: #fff;
|
||||||
|
/* width: 180px;*/
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
font-family: 'IranSans';
|
||||||
|
padding: 5px 10px;
|
||||||
|
border-radius: 15px;
|
||||||
|
text-align: center;
|
||||||
|
/*text-shadow: 1px 1px 2px #111;*/
|
||||||
|
background: #950000;
|
||||||
|
border: 1px solid #950000;
|
||||||
|
box-shadow: 0 0 3px rgba(0,0,0,0.5);
|
||||||
|
-webkit-transition: all .2s ease-in-out;
|
||||||
|
-moz-transition: all .2s ease-in-out;
|
||||||
|
-o-transition: all .2s ease-in-out;
|
||||||
|
/* -ms-transition: all .2s ease-in-out;*/
|
||||||
|
transition: all .2s ease-in-out;
|
||||||
|
-webkit-transform: scale(0);
|
||||||
|
-moz-transform: scale(0);
|
||||||
|
-o-transform: scale(0);
|
||||||
|
-ms-transform: scale(0);
|
||||||
|
transform: scale(0);
|
||||||
|
position: absolute;
|
||||||
|
right: -2px;
|
||||||
|
bottom: 20px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltipfull:before, .tooltipfull:after {
|
||||||
|
content: '';
|
||||||
|
border-left: 10px solid transparent;
|
||||||
|
border-right: 10px solid transparent;
|
||||||
|
border-top: 10px solid #950000;
|
||||||
|
position: absolute;
|
||||||
|
bottom: -10px;
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltipfull-containerText:hover .tooltipfull, a:hover .tooltipfull {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: scale(1);
|
||||||
|
-moz-transform: scale(1);
|
||||||
|
-o-transform: scale(1);
|
||||||
|
-ms-transform: scale(1);
|
||||||
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -102,14 +229,41 @@
|
|||||||
<td class="code-td">
|
<td class="code-td">
|
||||||
<span class="ellipsed">
|
<span class="ellipsed">
|
||||||
@item.Month
|
@item.Month
|
||||||
|
@{
|
||||||
|
<span> </span>
|
||||||
|
if(item.IsUpdateNeeded){
|
||||||
|
<i style="color: #cb1c1c; font-size:17px !important" class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div class="tooltipfull-containerText">
|
<div class="tooltipfull-containerText">
|
||||||
<p class="fulltext">
|
@{
|
||||||
@item.Month
|
if (item.IsUpdateNeeded)
|
||||||
</p>
|
{
|
||||||
<span class="tooltipfull">
|
foreach (var warning in item.CheckoutWarningMessageList)
|
||||||
@item.Month
|
{
|
||||||
</span>
|
<p class="fulltext">
|
||||||
|
@warning.WarningMessage
|
||||||
|
</p>
|
||||||
|
<span class="tooltipfull" style="right: -103px;bottom: 20px;">
|
||||||
|
@warning.WarningMessage
|
||||||
|
</span>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<p class="fulltext">
|
||||||
|
@item.Month
|
||||||
|
</p>
|
||||||
|
<span class="tooltipfull">
|
||||||
|
@item.Month
|
||||||
|
</span>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="name-td">
|
<td class="name-td">
|
||||||
|
|||||||
@@ -176,7 +176,7 @@
|
|||||||
@* قراردادهای موسسه</a> *@
|
@* قراردادهای موسسه</a> *@
|
||||||
@* </li> *@
|
@* </li> *@
|
||||||
<li permission="308">
|
<li permission="308">
|
||||||
<a class="clik3" asp-area="AdminNew" asp-page="/Company/RollCall/Index">
|
<a class="clik3" href="https://admin@(AppSetting.Value.Domain)/rollcall">
|
||||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
@@ -238,7 +238,7 @@
|
|||||||
@* </a> *@
|
@* </a> *@
|
||||||
@* </li> *@
|
@* </li> *@
|
||||||
<li permission="308">
|
<li permission="308">
|
||||||
<a class="clik3" asp-area="AdminNew" asp-page="/Company/RollCall/Index">
|
<a class="clik3" href="https://admin@(AppSetting.Value.Domain)/rollcall">
|
||||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
39
ServiceHost/Areas/Client/Controllers/ContractController.cs
Normal file
39
ServiceHost/Areas/Client/Controllers/ContractController.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
using Company.Domain.ContractAgg;
|
||||||
|
using CompanyManagment.App.Contracts.Contract;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using ServiceHost.BaseControllers;
|
||||||
|
|
||||||
|
namespace ServiceHost.Areas.Client.Controllers;
|
||||||
|
|
||||||
|
public class ContractController:ClientBaseController
|
||||||
|
{
|
||||||
|
private readonly IContractApplication _contractApplication;
|
||||||
|
|
||||||
|
public ContractController(IContractApplication contractApplication)
|
||||||
|
{
|
||||||
|
_contractApplication = contractApplication;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public async Task<ActionResult<PagedResult<GetContractListForClientResponse>>> GetList(
|
||||||
|
GetContractListForClientRequest searchModel)
|
||||||
|
{
|
||||||
|
var res = await _contractApplication
|
||||||
|
.GetContractListForClient(searchModel);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
[HttpGet("print/{id}")]
|
||||||
|
public async Task<ActionResult<ContractPrintViewModel>> PrintOne(long id)
|
||||||
|
{
|
||||||
|
var res = await _contractApplication.PrintOneAsync(id);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
[HttpGet("print")]
|
||||||
|
public async Task<ActionResult<List<ContractPrintViewModel>>> PrintAll([FromQuery] List<long> ids)
|
||||||
|
{
|
||||||
|
var res = await _contractApplication.PrintAllAsync(ids);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,9 @@
|
|||||||
Layout = "Shared/_ClientLayout";
|
Layout = "Shared/_ClientLayout";
|
||||||
ViewData["Title"] = " - " + "فیش حقوقی";
|
ViewData["Title"] = " - " + "فیش حقوقی";
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
const string hasAmountConflictText = "توجه داشته باشید این فیش حقوقی دارای تغییرات اعمال نشده میباشد. جهت صدور فیش حقوقی استاندارد مجددا فیش را ایجاد کنید!";
|
||||||
|
const string needUpdateText = "جهت صدور فیش حقوقی استاندارد مجددا فیش را ایجاد کنید";
|
||||||
}
|
}
|
||||||
|
|
||||||
@section Styles {
|
@section Styles {
|
||||||
@@ -335,7 +338,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="Rtable-cell column-heading d-none d-lg-block width11"> </div>
|
<div class="Rtable-cell column-heading d-none d-lg-block width11"> </div>
|
||||||
<div class="Rtable-cell column-heading d-none d-lg-block width2" >شماره پرسنلی</div>
|
<div class="Rtable-cell column-heading d-none d-lg-block width2">شماره پرسنلی</div>
|
||||||
<div class="Rtable-cell column-heading d-none d-md-block width3">سال</div>
|
<div class="Rtable-cell column-heading d-none d-md-block width3">سال</div>
|
||||||
<div class="Rtable-cell column-heading d-none d-md-block width4">ماه</div>
|
<div class="Rtable-cell column-heading d-none d-md-block width4">ماه</div>
|
||||||
<div class="Rtable-cell column-heading d-none d-md-block width5">شماره قرارداد</div>
|
<div class="Rtable-cell column-heading d-none d-md-block width5">شماره قرارداد</div>
|
||||||
@@ -364,7 +367,10 @@
|
|||||||
<div class="Rtable-cell d-lg-block d-none width11">
|
<div class="Rtable-cell d-lg-block d-none width11">
|
||||||
<div class="Rtable-cell--heading"> </div>
|
<div class="Rtable-cell--heading"> </div>
|
||||||
<div class="Rtable-cell--content">
|
<div class="Rtable-cell--content">
|
||||||
@if (item.HasAmountConflict)
|
|
||||||
|
|
||||||
|
|
||||||
|
@if (item.IsUpdateNeeded || item.HasAmountConflict)
|
||||||
{
|
{
|
||||||
<svg xmlns="http://www.w3.org/2000/svg"
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
width="24" height="24" fill="red"
|
width="24" height="24" fill="red"
|
||||||
@@ -373,11 +379,30 @@
|
|||||||
style="cursor: pointer; margin-left: 10px;"
|
style="cursor: pointer; margin-left: 10px;"
|
||||||
data-bs-toggle="tooltip"
|
data-bs-toggle="tooltip"
|
||||||
data-bs-placement="top"
|
data-bs-placement="top"
|
||||||
title="توجه داشته باشید این فیش حقوقی دارای تغییرات اعمال نشده میباشد. جهت صدور فیش حقوقی استاندارد مجددا فیش را ایجاد کنید!">
|
title='@{
|
||||||
<path d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/>
|
var tooltipText = ""; int messCounter = 1;
|
||||||
<path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm.1-5.995a.905.905 0 0 1 1.8 0l-.35 3.5a.552.552 0 0 1-1.1 0l-.35-3.5z"/>
|
if (item.HasAmountConflict && !item.IsUpdateNeeded)
|
||||||
|
{
|
||||||
|
tooltipText += @hasAmountConflictText;
|
||||||
|
|
||||||
|
}else if (item.HasAmountConflict && item.IsUpdateNeeded)
|
||||||
|
{
|
||||||
|
foreach (var warning in item.CheckoutWarningMessageList) { tooltipText += " " + messCounter + " - " + warning.WarningMessage; messCounter++;}
|
||||||
|
|
||||||
|
|
||||||
|
tooltipText += " " + @needUpdateText; }
|
||||||
|
else if (!item.HasAmountConflict && item.IsUpdateNeeded)
|
||||||
|
{ foreach (var warning in item.CheckoutWarningMessageList) { tooltipText += " " + messCounter + " - " + warning.WarningMessage; messCounter++; }
|
||||||
|
tooltipText += " " + @needUpdateText;}
|
||||||
|
@Html.Raw(tooltipText)
|
||||||
|
|
||||||
|
}'>
|
||||||
|
<path d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z" />
|
||||||
|
<path d="M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm.1-5.995a.905.905 0 0 1 1.8 0l-.35 3.5a.552.552 0 0 1-1.1 0l-.35-3.5z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="Rtable-cell d-lg-block d-none width2">
|
<div class="Rtable-cell d-lg-block d-none width2">
|
||||||
|
|||||||
@@ -356,6 +356,7 @@ else
|
|||||||
app.UseExceptionHandler(options => { }); // این خط CustomExceptionHandler رو فعال میکنه
|
app.UseExceptionHandler(options => { }); // این خط CustomExceptionHandler رو فعال میکنه
|
||||||
|
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
|
app.UseWebSockets();
|
||||||
|
|
||||||
app.UseAuthentication();
|
app.UseAuthentication();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|||||||
@@ -66,8 +66,7 @@ $(document).ready(function () {
|
|||||||
let value = convertPersianNumbersToEnglish(element.val());
|
let value = convertPersianNumbersToEnglish(element.val());
|
||||||
element.val(value);
|
element.val(value);
|
||||||
});
|
});
|
||||||
|
new Cleave(this, {
|
||||||
new Cleave('.dateInput', {
|
|
||||||
delimiters: ['/', '/'],
|
delimiters: ['/', '/'],
|
||||||
blocks: [4, 2, 2],
|
blocks: [4, 2, 2],
|
||||||
numericOnly: true
|
numericOnly: true
|
||||||
@@ -79,6 +78,7 @@ $(document).ready(function () {
|
|||||||
// });
|
// });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
//******************** انتخاب همه ی چک باکس ها ********************
|
//******************** انتخاب همه ی چک باکس ها ********************
|
||||||
$(".checkAll").change(function () {
|
$(".checkAll").change(function () {
|
||||||
//let dataValYear = $('#year').val();
|
//let dataValYear = $('#year').val();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using Company.Domain.RollCallAgg.DomainService;
|
using Company.Domain.RollCallAgg.DomainService;
|
||||||
|
using Company.Domain.WorkshopAgg;
|
||||||
using CompanyManagment.App.Contracts.EmployeeDocuments;
|
using CompanyManagment.App.Contracts.EmployeeDocuments;
|
||||||
using WorkFlow.Application.Contracts.RollCallConfirmedAbsence;
|
using WorkFlow.Application.Contracts.RollCallConfirmedAbsence;
|
||||||
using WorkFlow.Application.Contracts.RollCallConfirmedWithoutLunchBreak;
|
using WorkFlow.Application.Contracts.RollCallConfirmedWithoutLunchBreak;
|
||||||
@@ -23,7 +24,9 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
private readonly IRollCallDomainService _rollCallDomainService;
|
private readonly IRollCallDomainService _rollCallDomainService;
|
||||||
private readonly IRollCallConfirmedWithoutLunchBreakRepository _rollCallConfirmedWithoutLunchBreakRepository;
|
private readonly IRollCallConfirmedWithoutLunchBreakRepository _rollCallConfirmedWithoutLunchBreakRepository;
|
||||||
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
|
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
|
||||||
public WorkFlowApplication(IRollCallConfirmedAbsenceRepository absenceRepository, IWorkFlowRollCallACL rollCallACL, IWorkFlowCheckoutACL checkoutACL, IWorkFlowCustomizedWorkshopSettingsACL customizedWorkshopSettingsACL, IRollCallConfirmedWithoutLunchBreakRepository rollCallConfirmedWithoutLunchBreakRepository, IRollCallDomainService rollCallDomainService, IEmployeeDocumentsApplication employeeDocumentsApplication)
|
private readonly IWorkshopRepository _workshopRepository;
|
||||||
|
|
||||||
|
public WorkFlowApplication(IRollCallConfirmedAbsenceRepository absenceRepository, IWorkFlowRollCallACL rollCallACL, IWorkFlowCheckoutACL checkoutACL, IWorkFlowCustomizedWorkshopSettingsACL customizedWorkshopSettingsACL, IRollCallConfirmedWithoutLunchBreakRepository rollCallConfirmedWithoutLunchBreakRepository, IRollCallDomainService rollCallDomainService, IEmployeeDocumentsApplication employeeDocumentsApplication, IWorkshopRepository workshopRepository)
|
||||||
{
|
{
|
||||||
_absenceRepository = absenceRepository;
|
_absenceRepository = absenceRepository;
|
||||||
_rollCallACL = rollCallACL;
|
_rollCallACL = rollCallACL;
|
||||||
@@ -32,6 +35,7 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
_rollCallConfirmedWithoutLunchBreakRepository = rollCallConfirmedWithoutLunchBreakRepository;
|
_rollCallConfirmedWithoutLunchBreakRepository = rollCallConfirmedWithoutLunchBreakRepository;
|
||||||
_rollCallDomainService = rollCallDomainService;
|
_rollCallDomainService = rollCallDomainService;
|
||||||
_employeeDocumentsApplication = employeeDocumentsApplication;
|
_employeeDocumentsApplication = employeeDocumentsApplication;
|
||||||
|
_workshopRepository = workshopRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<OperationResult> CreateRollCallConfirmedAbsence(CreateRollCallConfirmedAbsence command)
|
public async Task<OperationResult> CreateRollCallConfirmedAbsence(CreateRollCallConfirmedAbsence command)
|
||||||
@@ -416,10 +420,17 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<List<DailyRollCallWorkFlowViewModel>> GetUndefinedRollCalls(long workshopId)
|
public async Task<List<DailyRollCallWorkFlowViewModel>> GetUndefinedRollCalls(long workshopId)
|
||||||
{
|
{
|
||||||
|
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
|
|
||||||
DateTime.Now.Date.AddMonthsFa(-2, out var twoMonthsAgo);
|
DateTime.Now.Date.AddMonthsFa(-2, out var twoMonthsAgo);
|
||||||
|
|
||||||
|
//استثنا برای کارگاه پیتزا امیر برای برای نمایش ندادن کارپوشه قبل از 1 آبان 1404
|
||||||
|
if(workshopId == 367 && twoMonthsAgo< new DateTime(2025,10,23))
|
||||||
|
{
|
||||||
|
twoMonthsAgo = new DateTime(2025,10,23);
|
||||||
|
}
|
||||||
|
|
||||||
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
||||||
List<DailyRollCallWorkFlowViewModel> rollCalls = _rollCallACL.GetUndefinedRollCalls(workshopId, twoMonthsAgo, now.AddDays(-1).Date);
|
List<DailyRollCallWorkFlowViewModel> rollCalls = _rollCallACL.GetUndefinedRollCalls(workshopId, twoMonthsAgo, now.AddDays(-1).Date);
|
||||||
var activeEmployees = _rollCallACL.GetActiveWorkshopRollCallEmployees(workshopId, twoMonthsAgo, now);
|
var activeEmployees = _rollCallACL.GetActiveWorkshopRollCallEmployees(workshopId, twoMonthsAgo, now);
|
||||||
@@ -443,10 +454,17 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<List<DailyRollCallWorkFlowViewModel>> GetRollCallWorkFlowsCutByBgService(long workshopId)
|
public async Task<List<DailyRollCallWorkFlowViewModel>> GetRollCallWorkFlowsCutByBgService(long workshopId)
|
||||||
{
|
{
|
||||||
|
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
|
|
||||||
DateTime.Now.Date.AddMonthsFa(-2, out var twoMonthsAgo);
|
DateTime.Now.Date.AddMonthsFa(-2, out var twoMonthsAgo);
|
||||||
|
|
||||||
|
//استثنا برای کارگاه پیتزا امیر برای برای نمایش ندادن کارپوشه قبل از 1 آبان 1404
|
||||||
|
if(workshopId == 367 && twoMonthsAgo< new DateTime(2025,10,23))
|
||||||
|
{
|
||||||
|
twoMonthsAgo = new DateTime(2025,10,23);
|
||||||
|
}
|
||||||
|
|
||||||
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
||||||
var rollCalls = _rollCallACL.GetRollCallWorkFlowsCutByBgService(workshopId, twoMonthsAgo, now.AddDays(-1).Date);
|
var rollCalls = _rollCallACL.GetRollCallWorkFlowsCutByBgService(workshopId, twoMonthsAgo, now.AddDays(-1).Date);
|
||||||
var activeEmployees = _rollCallACL.GetActiveWorkshopRollCallEmployees(workshopId, twoMonthsAgo, now);
|
var activeEmployees = _rollCallACL.GetActiveWorkshopRollCallEmployees(workshopId, twoMonthsAgo, now);
|
||||||
@@ -468,6 +486,11 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
|
|
||||||
public async Task<int> CountCutByBgServiceLastMonth(long workshopId)
|
public async Task<int> CountCutByBgServiceLastMonth(long workshopId)
|
||||||
{
|
{
|
||||||
|
var workshop = _workshopRepository.Get(workshopId);
|
||||||
|
|
||||||
|
if (workshop == null || workshop.IsStaticCheckout)
|
||||||
|
return 0;
|
||||||
|
|
||||||
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
||||||
var now = lastMonthEnd;
|
var now = lastMonthEnd;
|
||||||
var twoMonthsAgo = ($"{lastMonthEnd.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
var twoMonthsAgo = ($"{lastMonthEnd.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
||||||
@@ -496,6 +519,10 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<int> CountAbsentRollCallLastMonth(long workshopId)
|
public async Task<int> CountAbsentRollCallLastMonth(long workshopId)
|
||||||
{
|
{
|
||||||
|
var workshop = _workshopRepository.Get(workshopId);
|
||||||
|
|
||||||
|
if (workshop == null || workshop.IsStaticCheckout)
|
||||||
|
return 0;
|
||||||
|
|
||||||
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
||||||
var now = lastMonthEnd;
|
var now = lastMonthEnd;
|
||||||
@@ -558,6 +585,11 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
|
|
||||||
public async Task<int> CountEmployeesWithoutLunchBreakLastMonth(long workshopId)
|
public async Task<int> CountEmployeesWithoutLunchBreakLastMonth(long workshopId)
|
||||||
{
|
{
|
||||||
|
var workshop = _workshopRepository.Get(workshopId);
|
||||||
|
|
||||||
|
if (workshop == null || workshop.IsStaticCheckout)
|
||||||
|
return 0;
|
||||||
|
|
||||||
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
||||||
var now = lastMonthEnd;
|
var now = lastMonthEnd;
|
||||||
var twoMonthsAgo = ($"{lastMonthEnd.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
var twoMonthsAgo = ($"{lastMonthEnd.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
||||||
@@ -596,6 +628,11 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
|
|
||||||
public async Task<int> CountUndefinedLastMonth(long workshopId)
|
public async Task<int> CountUndefinedLastMonth(long workshopId)
|
||||||
{
|
{
|
||||||
|
var workshop = _workshopRepository.Get(workshopId);
|
||||||
|
|
||||||
|
if (workshop == null || workshop.IsStaticCheckout)
|
||||||
|
return 0;
|
||||||
|
|
||||||
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
DateTime lastMonthEnd = ($"{DateTime.Now.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime().AddDays(-1);
|
||||||
var now = lastMonthEnd;
|
var now = lastMonthEnd;
|
||||||
var twoMonthsAgo = ($"{lastMonthEnd.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
var twoMonthsAgo = ($"{lastMonthEnd.ToFarsi().Substring(0, 8)}01").ToGeorgianDateTime();
|
||||||
@@ -628,8 +665,14 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
|
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
|
|
||||||
|
|
||||||
DateTime.Now.Date.AddMonthsFa(-2, out var twoMonthsAgo);
|
DateTime.Now.Date.AddMonthsFa(-2, out var twoMonthsAgo);
|
||||||
|
|
||||||
|
//استثنا برای کارگاه پیتزا امیر برای برای نمایش ندادن کارپوشه قبل از 1 آبان 1404
|
||||||
|
if(workshopId == 367 && twoMonthsAgo< new DateTime(2025,10,23))
|
||||||
|
{
|
||||||
|
twoMonthsAgo = new DateTime(2025,10,23);
|
||||||
|
}
|
||||||
|
|
||||||
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
||||||
|
|
||||||
@@ -689,10 +732,16 @@ public class WorkFlowApplication : IWorkFlowApplication
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<List<DailyRollCallConfirmedWithoutLunchBreakViewModel>> GetEmployeesWithoutLunchBreak(long workshopId)
|
public async Task<List<DailyRollCallConfirmedWithoutLunchBreakViewModel>> GetEmployeesWithoutLunchBreak(long workshopId)
|
||||||
{
|
{
|
||||||
|
|
||||||
var now = DateTime.Now.Date;
|
var now = DateTime.Now.Date;
|
||||||
|
|
||||||
now.AddMonthsFa(-2, out var twoMonthsAgo);
|
now.AddMonthsFa(-2, out var twoMonthsAgo);
|
||||||
|
|
||||||
|
//استثنا برای کارگاه پیتزا امیر برای برای نمایش ندادن کارپوشه قبل از 1 آبان 1404
|
||||||
|
if(workshopId == 367 && twoMonthsAgo< new DateTime(2025,10,23))
|
||||||
|
{
|
||||||
|
twoMonthsAgo = new DateTime(2025,10,23);
|
||||||
|
}
|
||||||
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
var lastCheckouts = _checkoutACL.GetLastCheckoutsByWorkshopIdForWorkFlow(workshopId, twoMonthsAgo, now);
|
||||||
var notSlicedRollCalls = _rollCallACL.GetNotSlicedRollCallsByWorkshopId(workshopId, twoMonthsAgo, now.AddDays(-1).Date);
|
var notSlicedRollCalls = _rollCallACL.GetNotSlicedRollCallsByWorkshopId(workshopId, twoMonthsAgo, now.AddDays(-1).Date);
|
||||||
var employeesWithoutBreakTime = _customizedWorkshopSettingsACL.GetEmployeesWithoutBreakTime(workshopId);
|
var employeesWithoutBreakTime = _customizedWorkshopSettingsACL.GetEmployeesWithoutBreakTime(workshopId);
|
||||||
|
|||||||
Reference in New Issue
Block a user