Compare commits
49 Commits
Feature/Ex
...
Feature/in
| Author | SHA1 | Date | |
|---|---|---|---|
| 147621de34 | |||
| d663857de1 | |||
| 9bbdff9bc6 | |||
| d11fdcf106 | |||
| 12318a6a51 | |||
| 836e721b6f | |||
| 8fca1f3a91 | |||
| 2feca1f7f8 | |||
| 4e9cecbb74 | |||
| 1d656a590f | |||
|
|
a33d7c019c | ||
|
|
d62b5ca155 | ||
|
|
18a4334d8a | ||
| 84416fe1f5 | |||
|
|
bd1c1fa814 | ||
|
|
8496b52013 | ||
|
|
5c1547dced | ||
|
|
c09321d89d | ||
| 219e64c0f7 | |||
| b42217ed94 | |||
| ad6f872145 | |||
| d22805892a | |||
| 4da496cab8 | |||
|
|
4b40580658 | ||
|
|
cddaf2f709 | ||
|
|
337cd40a4e | ||
|
|
a98300cacd | ||
|
|
daded35ab1 | ||
|
|
ba778bb519 | ||
|
|
54c67fe8f7 | ||
|
|
a638913172 | ||
|
|
69476f3f2d | ||
|
|
4bc65e500d | ||
| 07587d162f | |||
|
|
59bbb7aae6 | ||
|
|
89de3162de | ||
|
|
132c8ac5a4 | ||
| 8e5d4c312e | |||
| 4b39994de6 | |||
| 0dd2dc7c43 | |||
| 20c00893b6 | |||
| b0d174a575 | |||
| 293ea0f6f4 | |||
| 3ce4cf3966 | |||
| 0fbd5c9d3e | |||
| 8436f70aa0 | |||
| 9cf8447a83 | |||
| e124a4d5d9 | |||
| 7b9e7881c6 |
9
.github/workflows/dotnet-developPublish.yml
vendored
9
.github/workflows/dotnet-developPublish.yml
vendored
@@ -5,8 +5,6 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- Main
|
- Main
|
||||||
|
|
||||||
env:
|
|
||||||
DOTNET_ENVIRONMENT: Development
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-deploy:
|
build-and-deploy:
|
||||||
@@ -37,12 +35,11 @@ jobs:
|
|||||||
& "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" `
|
& "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" `
|
||||||
-verb:sync `
|
-verb:sync `
|
||||||
-source:contentPath="$publishFolder" `
|
-source:contentPath="$publishFolder" `
|
||||||
-dest:contentPath="dadmehrg",computerName="https://171.22.24.15:8172/msdeploy.axd?site=dadmehrg",userName="Administrator",password="R",authType="Basic" `
|
-dest:contentPath="dadmehrg",computerName="https://$env:SERVER_HOST:8172/msdeploy.axd?site=gozareshgir",userName="$env:DEPLOY_USER",password="$env:DEPLOY_PASSWORD",authType="Basic" `
|
||||||
-allowUntrusted `
|
-allowUntrusted `
|
||||||
-enableRule:AppOffline
|
-enableRule:AppOffline
|
||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
SERVER_HOST: your-server-ip-or-domain
|
SERVER_HOST: 171.22.24.15
|
||||||
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
||||||
DEPLOY_PASSWORD: ${{ secrets.DEPLOY_PASSWORD }}
|
DEPLOY_PASSWORD: ${{ secrets.DEPLOY_PASSWORD }}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public interface IAccountApplication
|
|||||||
OperationResult DeActive(long id);
|
OperationResult DeActive(long id);
|
||||||
OperationResult DirectLogin(long id);
|
OperationResult DirectLogin(long id);
|
||||||
|
|
||||||
AccountLeftWorkViewModel WorkshopList(long accountId);
|
// AccountLeftWorkViewModel WorkshopList(long accountId);
|
||||||
OperationResult SaveWorkshopAccount(
|
OperationResult SaveWorkshopAccount(
|
||||||
List<WorkshopAccountlistViewModel> workshopAccountList,
|
List<WorkshopAccountlistViewModel> workshopAccountList,
|
||||||
string startDate,
|
string startDate,
|
||||||
|
|||||||
@@ -745,25 +745,25 @@ public class AccountApplication : IAccountApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public AccountLeftWorkViewModel WorkshopList(long accountId)
|
// public AccountLeftWorkViewModel WorkshopList(long accountId)
|
||||||
{
|
// {
|
||||||
string fullname = this._accountRepository.GetById(accountId).Fullname;
|
// string fullname = this._accountRepository.GetById(accountId).Fullname;
|
||||||
List<WorkshopAccountlistViewModel> source = _accountLeftworkRepository.WorkshopList(accountId);
|
// List<WorkshopAccountlistViewModel> source = _accountLeftworkRepository.WorkshopList(accountId);
|
||||||
List<long> userWorkshopIds = source.Select(x => x.WorkshopId).ToList();
|
// List<long> userWorkshopIds = source.Select(x => x.WorkshopId).ToList();
|
||||||
List<WorkshopSelectList> allWorkshops = this._accountLeftworkRepository.GetAllWorkshops();
|
// List<WorkshopSelectList> allWorkshops = this._accountLeftworkRepository.GetAllWorkshops();
|
||||||
List<AccountViewModel> accountSelectList = this._accountRepository.GetAdminAccountSelectList();
|
// List<AccountViewModel> accountSelectList = this._accountRepository.GetAdminAccountSelectList();
|
||||||
(string StartWorkFa, string LeftWorkFa) byAccountId = this._accountLeftworkRepository.GetByAccountId(accountId);
|
// (string StartWorkFa, string LeftWorkFa) byAccountId = this._accountLeftworkRepository.GetByAccountId(accountId);
|
||||||
return new AccountLeftWorkViewModel()
|
// return new AccountLeftWorkViewModel()
|
||||||
{
|
// {
|
||||||
AccountId = accountId,
|
// AccountId = accountId,
|
||||||
AccountFullName = fullname,
|
// AccountFullName = fullname,
|
||||||
StartDateFa = byAccountId.StartWorkFa,
|
// StartDateFa = byAccountId.StartWorkFa,
|
||||||
LeftDateFa = byAccountId.LeftWorkFa,
|
// LeftDateFa = byAccountId.LeftWorkFa,
|
||||||
WorkshopAccountlist = source,
|
// WorkshopAccountlist = source,
|
||||||
WorkshopSelectList = new SelectList(allWorkshops.Where(x => !userWorkshopIds.Contains(x.Id)), "Id", "WorkshopFullName"),
|
// WorkshopSelectList = new SelectList(allWorkshops.Where(x => !userWorkshopIds.Contains(x.Id)), "Id", "WorkshopFullName"),
|
||||||
AccountSelectList = new SelectList(accountSelectList, "Id", "Fullname")
|
// AccountSelectList = new SelectList(accountSelectList, "Id", "Fullname")
|
||||||
};
|
// };
|
||||||
}
|
// }
|
||||||
|
|
||||||
public OperationResult SaveWorkshopAccount(
|
public OperationResult SaveWorkshopAccount(
|
||||||
List<WorkshopAccountlistViewModel> workshopAccountList,
|
List<WorkshopAccountlistViewModel> workshopAccountList,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ public interface IAccountLeftworkRepository : IRepository<long, AccountLeftWork>
|
|||||||
{
|
{
|
||||||
(string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId);
|
(string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId);
|
||||||
List<WorkshopAccountlistViewModel> WorkshopList(long accountId);
|
List<WorkshopAccountlistViewModel> WorkshopList(long accountId);
|
||||||
List<WorkshopSelectList> GetAllWorkshops();
|
// List<WorkshopSelectList> GetAllWorkshops();
|
||||||
|
|
||||||
OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId);
|
OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId);
|
||||||
|
|
||||||
|
|||||||
@@ -18,14 +18,13 @@ public class AccountLeftworkRepository : RepositoryBase<long, AccountLeftWork>,
|
|||||||
{
|
{
|
||||||
private readonly AccountContext _accountContext;
|
private readonly AccountContext _accountContext;
|
||||||
private readonly IWorkshopAccountRepository _workshopAccountRepository;
|
private readonly IWorkshopAccountRepository _workshopAccountRepository;
|
||||||
private readonly IWorkshopApplication _workshopApplication;
|
|
||||||
|
|
||||||
public AccountLeftworkRepository(AccountContext accountContext, IWorkshopAccountRepository workshopAccountRepository, IWorkshopApplication workshopApplication) : base(accountContext)
|
public AccountLeftworkRepository(AccountContext accountContext,
|
||||||
|
IWorkshopAccountRepository workshopAccountRepository) : base(accountContext)
|
||||||
{
|
{
|
||||||
_accountContext = accountContext;
|
_accountContext = accountContext;
|
||||||
_workshopAccountRepository = workshopAccountRepository;
|
_workshopAccountRepository = workshopAccountRepository;
|
||||||
_workshopApplication = workshopApplication;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public (string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId)
|
public (string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId)
|
||||||
{
|
{
|
||||||
@@ -58,14 +57,14 @@ public class AccountLeftworkRepository : RepositoryBase<long, AccountLeftWork>,
|
|||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<WorkshopSelectList> GetAllWorkshops()
|
// public List<WorkshopSelectList> GetAllWorkshops()
|
||||||
{
|
// {
|
||||||
return this._workshopApplication.GetWorkshopAll().Select(x => new WorkshopSelectList()
|
// return this._workshopApplication.GetWorkshopAll().Select(x => new WorkshopSelectList()
|
||||||
{
|
// {
|
||||||
Id = x.Id,
|
// Id = x.Id,
|
||||||
WorkshopFullName = x.WorkshopFullName
|
// WorkshopFullName = x.WorkshopFullName
|
||||||
}).ToList();
|
// }).ToList();
|
||||||
}
|
// }
|
||||||
|
|
||||||
public OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId)
|
public OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,11 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
Task<InstitutionContract> GetByPublicIdAsync(Guid id);
|
Task<InstitutionContract> GetByPublicIdAsync(Guid id);
|
||||||
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request,string contractStart = null);
|
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request,string contractStart = null);
|
||||||
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
||||||
|
|
||||||
|
#region Creation
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Extension
|
#region Extension
|
||||||
|
|
||||||
@@ -160,4 +164,11 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
|
|
||||||
Task<long> GetIdByInstallmentId(long installmentId);
|
Task<long> GetIdByInstallmentId(long installmentId);
|
||||||
Task<InstitutionContract> GetPreviousContract(long currentInstitutionContractId);
|
Task<InstitutionContract> GetPreviousContract(long currentInstitutionContractId);
|
||||||
|
Task<InstitutionContractCreationInquiryResult> CreationInquiry(InstitutionContractCreationInquiryRequest request);
|
||||||
|
Task<InstitutionContractCreationWorkshopsResponse> GetCreationWorkshops(InstitutionContractCreationWorkshopsRequest request);
|
||||||
|
Task<InstitutionContractCreationPlanResponse> GetCreationInstitutionPlan(InstitutionContractCreationPlanRequest request);
|
||||||
|
Task<InstitutionContractCreationPaymentResponse> GetCreationPaymentMethod(InstitutionContractCreationPaymentRequest request);
|
||||||
|
Task<InstitutionContractDiscountResponse> SetDiscountForCreation(InstitutionContractSetDiscountForCreationRequest request);
|
||||||
|
Task<InstitutionContractDiscountResponse> ResetDiscountForCreation(InstitutionContractResetDiscountForExtensionRequest request);
|
||||||
|
Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request);
|
||||||
}
|
}
|
||||||
@@ -23,6 +23,8 @@ public class InstitutionContractWorkshopGroup : EntityBase
|
|||||||
!InitialWorkshops.Cast<InstitutionContractWorkshopBase>()
|
!InitialWorkshops.Cast<InstitutionContractWorkshopBase>()
|
||||||
.SequenceEqual(CurrentWorkshops.Cast<InstitutionContractWorkshopBase>());
|
.SequenceEqual(CurrentWorkshops.Cast<InstitutionContractWorkshopBase>());
|
||||||
|
|
||||||
|
public bool IsInPersonContract => InitialWorkshops.Any(x => x.Services.ContractInPerson);
|
||||||
|
|
||||||
public InstitutionContractWorkshopGroup(long institutionContractId,
|
public InstitutionContractWorkshopGroup(long institutionContractId,
|
||||||
List<InstitutionContractWorkshopInitial> initialDetails)
|
List<InstitutionContractWorkshopInitial> initialDetails)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,340 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
||||||
|
using MongoDB.Bson;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
|
||||||
|
namespace Company.Domain.InstitutionContractCreationTempAgg;
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTemp
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationTemp()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid();
|
||||||
|
}
|
||||||
|
|
||||||
|
[BsonId] // Specifies this field as the _id in MongoDB
|
||||||
|
[BsonRepresentation(BsonType.String)] // Ensures the GUID is stored as a string
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع حقوقی طرف قرارداد (حقیقی یا حقوقی)
|
||||||
|
/// </summary>
|
||||||
|
public LegalType ContractingPartyLegalType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقیقی
|
||||||
|
/// </summary>
|
||||||
|
public InstitutionContractCreationTempRealParty RealParty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public InstitutionContractCreationTempLegalParty LegalParty { get; set; }
|
||||||
|
|
||||||
|
public string Address { get; set; }
|
||||||
|
public string City { get; set; }
|
||||||
|
public string Province { get; set; }
|
||||||
|
public List<EditContactInfo> ContactInfos { get; set; }
|
||||||
|
public long RepresentativeId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<InstitutionContractCreationTempWorkshop> Workshops { get; set; }
|
||||||
|
|
||||||
|
public InstitutionContractCreationPlanDetail OneMonth { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail ThreeMonths { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail SixMonths { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail TwelveMonths { get; set; }
|
||||||
|
public InstitutionContractPaymentMonthlyViewModel MonthlyPayment { get; set; }
|
||||||
|
public InstitutionContractPaymentOneTimeViewModel OneTimePayment { get; set; }
|
||||||
|
|
||||||
|
public bool HasContractInPerson { get; set; }
|
||||||
|
|
||||||
|
public InstitutionContractDuration? Duration { get; set; }
|
||||||
|
|
||||||
|
public void SetContractingPartyInfo(LegalType legalType,
|
||||||
|
InstitutionContractCreationTempRealParty realParty,
|
||||||
|
InstitutionContractCreationTempLegalParty legalParty)
|
||||||
|
{
|
||||||
|
ContractingPartyLegalType = legalType;
|
||||||
|
RealParty = realParty;
|
||||||
|
LegalParty = legalParty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetWorkshopsAndPlanAmounts(List<InstitutionContractCreationTempWorkshop> workshops,
|
||||||
|
InstitutionContractCreationPlanDetail oneMonth,
|
||||||
|
InstitutionContractCreationPlanDetail threeMonth, InstitutionContractCreationPlanDetail sixMonth,
|
||||||
|
InstitutionContractCreationPlanDetail twelveMonth, bool hasContractInPerson)
|
||||||
|
{
|
||||||
|
Workshops = workshops;
|
||||||
|
OneMonth = oneMonth;
|
||||||
|
ThreeMonths = threeMonth;
|
||||||
|
SixMonths = sixMonth;
|
||||||
|
TwelveMonths = twelveMonth;
|
||||||
|
HasContractInPerson = hasContractInPerson;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetAmountAndDuration(InstitutionContractDuration duration,InstitutionContractPaymentMonthlyViewModel monthly,
|
||||||
|
InstitutionContractPaymentOneTimeViewModel oneTime)
|
||||||
|
{
|
||||||
|
Duration = duration;
|
||||||
|
MonthlyPayment = monthly;
|
||||||
|
OneTimePayment = oneTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void SetContractingPartyContactInfo(string address, string city, string province, List<EditContactInfo> requestContactInfos,long representativeId)
|
||||||
|
{
|
||||||
|
Address = address;
|
||||||
|
City = city;
|
||||||
|
Province = province;
|
||||||
|
ContactInfos = requestContactInfos;
|
||||||
|
RepresentativeId = representativeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempLegalParty
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیدی طرف حساب در صورتی که از قبل ایجاد شده باشد
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string CompanyName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره ثبت
|
||||||
|
/// </summary>
|
||||||
|
public string RegisterId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه ملی شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string NationalId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره تلفن شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه موقت طرف قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public long ContractingPartyTempId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ تولد نماینده قانونی فارسی
|
||||||
|
/// </summary>
|
||||||
|
public string BirthDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string FName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام خانوادگی نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string LName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پدر نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string FatherName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره شناسنامه نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string IdNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت احراز هویت نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAuth { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سمت نماینده قانونی در شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string Position { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جنسیت نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public Gender Gender { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSeri { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSerial { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempRealParty
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیدی طرف حساب در صورتی که از قبل ایجاد شده باشد
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ تولد فارسی
|
||||||
|
/// </summary>
|
||||||
|
public string BirthDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره تلفن
|
||||||
|
/// </summary>
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت احراز هویت
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAuth { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام
|
||||||
|
/// </summary>
|
||||||
|
public string FName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام خانوادگی
|
||||||
|
/// </summary>
|
||||||
|
public string LName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پدر
|
||||||
|
/// </summary>
|
||||||
|
public string FatherName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره شناسنامه
|
||||||
|
/// </summary>
|
||||||
|
public string IdNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه موقت طرف قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public long ContractingPartyTempId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جنسیت
|
||||||
|
/// </summary>
|
||||||
|
public Gender Gender { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSeri { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSerial { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempPlan
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationTempPlan(string contractStart, string contractEnd,
|
||||||
|
string oneMonthPaymentDiscounted, string oneMonthDiscount, string oneMonthOriginalPayment,
|
||||||
|
string totalPayment, string dailyCompensation, string obligation)
|
||||||
|
{
|
||||||
|
ContractStart = contractStart;
|
||||||
|
ContractEnd = contractEnd;
|
||||||
|
OneMonthPaymentDiscounted = oneMonthPaymentDiscounted;
|
||||||
|
OneMonthDiscount = oneMonthDiscount;
|
||||||
|
OneMonthOriginalPayment = oneMonthOriginalPayment;
|
||||||
|
TotalPayment = totalPayment;
|
||||||
|
DailyCompensation = dailyCompensation;
|
||||||
|
Obligation = obligation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
public string OneMonthPaymentDiscounted { get; set; }
|
||||||
|
public string OneMonthDiscount { get; set; }
|
||||||
|
public string OneMonthOriginalPayment { get; set; }
|
||||||
|
public string TotalPayment { get; set; }
|
||||||
|
public string DailyCompensation { get; set; }
|
||||||
|
public string Obligation { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempWorkshop
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationTempWorkshop(string workshopName, int countPerson, bool contractAndCheckout, bool contractAndCheckoutInPerson,
|
||||||
|
bool insurance, bool insuranceInPerson,
|
||||||
|
bool rollCall,bool rollCallInPerson, bool customizeCheckout,double price,long workshopId)
|
||||||
|
{
|
||||||
|
WorkshopName = workshopName;
|
||||||
|
CountPerson = countPerson;
|
||||||
|
ContractAndCheckout = contractAndCheckout;
|
||||||
|
Insurance = insurance;
|
||||||
|
RollCall = rollCall;
|
||||||
|
CustomizeCheckout = customizeCheckout;
|
||||||
|
ContractAndCheckoutInPerson = contractAndCheckoutInPerson;
|
||||||
|
InsuranceInPerson = insuranceInPerson;
|
||||||
|
RollCallInPerson = rollCallInPerson;
|
||||||
|
Price = price;
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string WorkshopName { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تعداد پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public int CountPerson { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
#region ServiceSelection
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// قرارداد و تصفیه
|
||||||
|
/// </summary>
|
||||||
|
public bool ContractAndCheckout { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بیمه
|
||||||
|
/// </summary>
|
||||||
|
public bool Insurance { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حضورغباب
|
||||||
|
/// </summary>
|
||||||
|
public bool RollCall { get; private set; }
|
||||||
|
|
||||||
|
public bool RollCallInPerson { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فیش غیر رسمی
|
||||||
|
/// </summary>
|
||||||
|
public bool CustomizeCheckout { get;private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خدمات حضوری قرداد و تصفیه
|
||||||
|
/// </summary>
|
||||||
|
public bool ContractAndCheckoutInPerson { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خدمات حضوری بیمه
|
||||||
|
/// </summary>
|
||||||
|
public bool InsuranceInPerson { get; private set; }
|
||||||
|
|
||||||
|
public double Price{ get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -78,6 +78,7 @@ public interface IInsuranceListRepository:IRepository<long, InsuranceList>
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<List<InsuranceListViewModel>> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel);
|
Task<List<InsuranceListViewModel>> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel);
|
||||||
|
Task<InsuranceClientPrintViewModel> ClientPrintOne(long id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionPlan;
|
||||||
using CompanyManagment.App.Contracts.Leave;
|
using CompanyManagment.App.Contracts.Leave;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Company.Domain.LeaveAgg;
|
namespace Company.Domain.LeaveAgg;
|
||||||
|
|
||||||
@@ -10,7 +12,7 @@ public interface ILeaveRepository : IRepository<long, Leave>
|
|||||||
{
|
{
|
||||||
EditLeave GetDetails(long id);
|
EditLeave GetDetails(long id);
|
||||||
List<LeaveViewModel> search(LeaveSearchModel searchModel);
|
List<LeaveViewModel> search(LeaveSearchModel searchModel);
|
||||||
OperationResult RemoveLeave(long id);
|
Task<OperationResult> RemoveLeave(long id);
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
List<LeaveViewModel> GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime start, DateTime end);
|
List<LeaveViewModel> GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime start, DateTime end);
|
||||||
@@ -27,6 +29,8 @@ public interface ILeaveRepository : IRepository<long, Leave>
|
|||||||
List<LeaveMainViewModel> searchClient(LeaveSearchModel searchModel);
|
List<LeaveMainViewModel> searchClient(LeaveSearchModel searchModel);
|
||||||
LeavePrintViewModel PrintOne(long id);
|
LeavePrintViewModel PrintOne(long id);
|
||||||
List<LeavePrintViewModel> PrintAll(List<long> id);
|
List<LeavePrintViewModel> PrintAll(List<long> id);
|
||||||
|
|
||||||
|
Task<List<LeavePrintResponseViewModel>> PrintAllAsync(List<long> ids, long workshopId);
|
||||||
|
|
||||||
#region Vafa
|
#region Vafa
|
||||||
|
|
||||||
@@ -34,4 +38,27 @@ public interface ILeaveRepository : IRepository<long, Leave>
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
bool CheckIfValidToEdit(long id);
|
bool CheckIfValidToEdit(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست مرخصی ها در کلاینت
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagedResult<leaveListDto>> GetList(
|
||||||
|
LeaveListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست گروه بندی شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<GroupLeaveListDto>> GetGroupList(LeaveListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت لیستی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<LeaveListPrintDto> ListPrint(List<long> ids);
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -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,16 +47,101 @@ 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
|
|
||||||
|
/// <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);
|
||||||
|
|
||||||
#region NewChangeByHeydari
|
#endregion
|
||||||
|
|
||||||
OperationResult DeleteAllContarcts(List<long> ids);
|
#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);
|
||||||
List<ContractViweModel> SearchForMainContract(ContractSearchModel searchModel);
|
List<ContractViweModel> SearchForMainContract(ContractSearchModel searchModel);
|
||||||
|
|
||||||
#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; }
|
||||||
}
|
}
|
||||||
@@ -5,8 +5,10 @@ using System.Drawing;
|
|||||||
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.Application.Sms;
|
using _0_Framework.Application.Sms;
|
||||||
using CompanyManagment.App.Contracts.Checkout;
|
using CompanyManagment.App.Contracts.Checkout;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
||||||
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;
|
||||||
@@ -26,21 +28,21 @@ public interface IInstitutionContractApplication
|
|||||||
/// <param name="command">اطلاعات قرارداد جدید</param>
|
/// <param name="command">اطلاعات قرارداد جدید</param>
|
||||||
/// <returns>نتیجه عملیات</returns>
|
/// <returns>نتیجه عملیات</returns>
|
||||||
OperationResult Create(CreateInstitutionContract command);
|
OperationResult Create(CreateInstitutionContract command);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تمدید قرارداد موجود
|
/// تمدید قرارداد موجود
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="command">اطلاعات قرارداد برای تمدید</param>
|
/// <param name="command">اطلاعات قرارداد برای تمدید</param>
|
||||||
/// <returns>نتیجه عملیات</returns>
|
/// <returns>نتیجه عملیات</returns>
|
||||||
OperationResult Extension(CreateInstitutionContract command);
|
OperationResult Extension(CreateInstitutionContract command);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ویرایش قرارداد موجود
|
/// ویرایش قرارداد موجود
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="command">اطلاعات جدید قرارداد</param>
|
/// <param name="command">اطلاعات جدید قرارداد</param>
|
||||||
/// <returns>نتیجه عملیات</returns>
|
/// <returns>نتیجه عملیات</returns>
|
||||||
OperationResult Edit(EditInstitutionContract command);
|
OperationResult Edit(EditInstitutionContract command);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// دریافت جزئیات قرارداد برای ویرایش
|
/// دریافت جزئیات قرارداد برای ویرایش
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -54,7 +56,7 @@ public interface IInstitutionContractApplication
|
|||||||
/// <param name="searchModel">مدل جستجو</param>
|
/// <param name="searchModel">مدل جستجو</param>
|
||||||
/// <returns>لیست قراردادها</returns>
|
/// <returns>لیست قراردادها</returns>
|
||||||
List<InstitutionContractViewModel> Search(InstitutionContractSearchModel searchModel);
|
List<InstitutionContractViewModel> Search(InstitutionContractSearchModel searchModel);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// جستجوی جدید در قراردادها
|
/// جستجوی جدید در قراردادها
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -76,7 +78,7 @@ public interface IInstitutionContractApplication
|
|||||||
/// <param name="id">لیست شناسه قراردادها</param>
|
/// <param name="id">لیست شناسه قراردادها</param>
|
||||||
/// <returns>لیست قراردادها برای چاپ</returns>
|
/// <returns>لیست قراردادها برای چاپ</returns>
|
||||||
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
||||||
|
|
||||||
|
|
||||||
[Obsolete("استفاده نشود، از متد غیرهمزمان استفاده شود")]
|
[Obsolete("استفاده نشود، از متد غیرهمزمان استفاده شود")]
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -146,7 +148,7 @@ public interface IInstitutionContractApplication
|
|||||||
/// <param name="id">شناسه قرارداد</param>
|
/// <param name="id">شناسه قرارداد</param>
|
||||||
/// <returns>نتیجه عملیات</returns>
|
/// <returns>نتیجه عملیات</returns>
|
||||||
OperationResult UnSign(long id);
|
OperationResult UnSign(long id);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ایجاد حساب کاربری برای طرف قرارداد
|
/// ایجاد حساب کاربری برای طرف قرارداد
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -191,32 +193,56 @@ public interface IInstitutionContractApplication
|
|||||||
/// <param name="command"></param>
|
/// <param name="command"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<OperationResult> EditAsync(EditInstitutionContractRequest command);
|
Task<OperationResult> EditAsync(EditInstitutionContractRequest command);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
|
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
|
||||||
/// جهت نمایش در کارپوشه
|
/// جهت نمایش در کارپوشه
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<List<RegistrationWorkflowMainListViewModel>> RegistrationWorkflowMainList();
|
Task<List<RegistrationWorkflowMainListViewModel>> RegistrationWorkflowMainList();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// دریافت آیتم های کارپوشه ثبت نام
|
/// دریافت آیتم های کارپوشه ثبت نام
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="institutionContractId"></param>
|
/// <param name="institutionContractId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<List<RegistrationWorkflowItemsViewModel>> RegistrationWorkflowItems(long institutionContractId);
|
Task<List<RegistrationWorkflowItemsViewModel>> RegistrationWorkflowItems(long institutionContractId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
||||||
Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id);
|
Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id);
|
||||||
Task<OperationResult<string>> VerifyOtpAndMakeGateway(Guid publicId, string code, string callbackUrl);
|
Task<OperationResult<string>> VerifyOtpAndMakeGateway(Guid publicId, string code, string callbackUrl);
|
||||||
Task<InstitutionContractWorkshopDetailViewModel> GetWorkshopInitialDetails(long workshopDetailsId);
|
Task<InstitutionContractWorkshopDetailViewModel> GetWorkshopInitialDetails(long workshopDetailsId);
|
||||||
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
|
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
|
||||||
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
||||||
|
|
||||||
|
#region Creation
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تب ایجاد قرارداد مؤسسه - احراز هویت
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<InstitutionContractCreationInquiryResult> CreationInquiry(InstitutionContractCreationInquiryRequest request);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تب ایجاد قرارداد مؤسسه -مشخصات طرف قرارداد و انتخاب کارگاه ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<InstitutionContractCreationWorkshopsResponse> GetCreationWorkshops(
|
||||||
|
InstitutionContractCreationWorkshopsRequest request);
|
||||||
|
/// <summary>
|
||||||
|
/// تب ایجاد قرارداد مؤسسه - مالی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<InstitutionContractCreationPlanResponse> GetCreationInstitutionPlan(InstitutionContractCreationPlanRequest request);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Extension
|
#region Extension
|
||||||
|
|
||||||
Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId);
|
Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId);
|
||||||
@@ -229,25 +255,31 @@ public interface IInstitutionContractApplication
|
|||||||
|
|
||||||
Task<InstitutionContractExtensionPaymentResponse> GetExtensionPaymentMethod(
|
Task<InstitutionContractExtensionPaymentResponse> GetExtensionPaymentMethod(
|
||||||
InstitutionContractExtensionPaymentRequest request);
|
InstitutionContractExtensionPaymentRequest request);
|
||||||
|
|
||||||
Task<InstitutionContractDiscountResponse> SetDiscountForExtension(
|
Task<InstitutionContractDiscountResponse> SetDiscountForExtension(
|
||||||
InstitutionContractSetDiscountForExtensionRequest request);
|
InstitutionContractSetDiscountForExtensionRequest request);
|
||||||
|
|
||||||
Task<InstitutionContractDiscountResponse> ResetDiscountForExtension(
|
Task<InstitutionContractDiscountResponse> ResetDiscountForExtension(
|
||||||
InstitutionContractResetDiscountForExtensionRequest request);
|
InstitutionContractResetDiscountForExtensionRequest request);
|
||||||
|
|
||||||
|
|
||||||
Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
|
Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
|
||||||
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search,string selected);
|
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search, string selected);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Upgrade (Amendment)
|
#region Upgrade (Amendment)
|
||||||
|
|
||||||
Task<InstitutionContractAmendmentWorkshopsResponse> GetAmendmentWorkshops(long institutionContractId);
|
Task<InstitutionContractAmendmentWorkshopsResponse> GetAmendmentWorkshops(long institutionContractId);
|
||||||
Task<InsertAmendmentTempWorkshopResponse> InsertAmendmentTempWorkshops(InstitutionContractAmendmentTempWorkshopViewModel request);
|
|
||||||
|
Task<InsertAmendmentTempWorkshopResponse> InsertAmendmentTempWorkshops(
|
||||||
|
InstitutionContractAmendmentTempWorkshopViewModel request);
|
||||||
|
|
||||||
Task RemoveAmendmentWorkshops(Guid workshopTempId);
|
Task RemoveAmendmentWorkshops(Guid workshopTempId);
|
||||||
Task<InsitutionContractAmendmentPaymentResponse> GetAmendmentPaymentDetails(InsitutionContractAmendmentPaymentRequest request);
|
|
||||||
|
Task<InsitutionContractAmendmentPaymentResponse> GetAmendmentPaymentDetails(
|
||||||
|
InsitutionContractAmendmentPaymentRequest request);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<OperationResult> ResendVerifyLink(long institutionContractId);
|
Task<OperationResult> ResendVerifyLink(long institutionContractId);
|
||||||
@@ -259,8 +291,9 @@ public interface IInstitutionContractApplication
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<InstitutionContractPrintViewModel> PrintOneAsync(long id);
|
Task<InstitutionContractPrintViewModel> PrintOneAsync(long id);
|
||||||
|
|
||||||
Task<OperationResult> SetPendingWorkflow(long entityId,InstitutionContractSigningType signingType);
|
Task<OperationResult> SetPendingWorkflow(long entityId, InstitutionContractSigningType signingType);
|
||||||
Task<long> GetIdByInstallmentId(long installmentId);
|
Task<long> GetIdByInstallmentId(long installmentId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تایید قرارداد مالی به صورت دستی
|
/// تایید قرارداد مالی به صورت دستی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -268,4 +301,42 @@ public interface IInstitutionContractApplication
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<OperationResult> VerifyInstitutionContractManually(long institutionContractId);
|
Task<OperationResult> VerifyInstitutionContractManually(long institutionContractId);
|
||||||
|
|
||||||
|
Task<InstitutionContractCreationPaymentResponse> GetCreationPaymentMethod(InstitutionContractCreationPaymentRequest request);
|
||||||
|
Task<InstitutionContractDiscountResponse> SetDiscountForCreation(InstitutionContractSetDiscountForCreationRequest request);
|
||||||
|
Task<InstitutionContractDiscountResponse> ResetDiscountForCreation(InstitutionContractResetDiscountForExtensionRequest request);
|
||||||
|
Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CreationSetContractingPartyResponse
|
||||||
|
{
|
||||||
|
public long RepresentativeId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationWorkshopsResponse
|
||||||
|
{
|
||||||
|
public List<WorkshopTempViewModel> WorkshopTemps { get; set; }
|
||||||
|
public string TotalAmount { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationWorkshopsRequest
|
||||||
|
{
|
||||||
|
public Guid TempId { get; set; }
|
||||||
|
public string City { get; set; }
|
||||||
|
public string Province { get; set; }
|
||||||
|
public string Address { get; set; }
|
||||||
|
public List<EditContactInfo> ContactInfos { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقیقی
|
||||||
|
/// </summary>
|
||||||
|
public CreateInstitutionContractRealPartyRequest RealParty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public CreateInstitutionContractLegalPartyRequest LegalParty { get; set; }
|
||||||
|
|
||||||
|
public LegalType LegalType { get; set; }
|
||||||
|
|
||||||
|
public long RepresentativeId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
|
||||||
|
public class InstitutionContractCreationInquiryRequest
|
||||||
|
{
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
public string DateOfBirth { get; set; }
|
||||||
|
public string Mobile { get; set; }
|
||||||
|
public LegalType LegalType { get; set; }
|
||||||
|
}
|
||||||
@@ -3,6 +3,13 @@ using System;
|
|||||||
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
|
||||||
public class InstitutionContractExtensionCompleteRequest
|
public class InstitutionContractExtensionCompleteRequest
|
||||||
|
{
|
||||||
|
public Guid TemporaryId { get; set; }
|
||||||
|
public bool IsInstallment { get; set; }
|
||||||
|
public long LawId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationCompleteRequest
|
||||||
{
|
{
|
||||||
public Guid TemporaryId { get; set; }
|
public Guid TemporaryId { get; set; }
|
||||||
public bool IsInstallment { get; set; }
|
public bool IsInstallment { get; set; }
|
||||||
|
|||||||
@@ -24,4 +24,21 @@ public class InstitutionContractExtensionInquiryResult
|
|||||||
public string Province { get; set; }
|
public string Province { get; set; }
|
||||||
public List<EditContactInfo> ContactInfoViewModels { get; set; }
|
public List<EditContactInfo> ContactInfoViewModels { get; set; }
|
||||||
public long RepresentativeId { get; set; }
|
public long RepresentativeId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationInquiryResult
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقیقی
|
||||||
|
/// </summary>
|
||||||
|
public CreateInstitutionContractRealPartyRequest RealParty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public CreateInstitutionContractLegalPartyRequest LegalParty { get; set; }
|
||||||
|
|
||||||
|
public LegalType LegalType { get; set; }
|
||||||
|
|
||||||
|
public Guid TempId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,11 @@ using System;
|
|||||||
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
|
||||||
public class InstitutionContractExtensionPaymentRequest
|
public class InstitutionContractExtensionPaymentRequest
|
||||||
|
{
|
||||||
|
public InstitutionContractDuration Duration { get; set; }
|
||||||
|
public Guid TempId { get; set; }
|
||||||
|
}
|
||||||
|
public class InstitutionContractCreationPaymentRequest
|
||||||
{
|
{
|
||||||
public InstitutionContractDuration Duration { get; set; }
|
public InstitutionContractDuration Duration { get; set; }
|
||||||
public Guid TempId { get; set; }
|
public Guid TempId { get; set; }
|
||||||
|
|||||||
@@ -5,4 +5,11 @@ public class InstitutionContractExtensionPaymentResponse
|
|||||||
public InstitutionContractPaymentOneTimeViewModel OneTime { get; set; }
|
public InstitutionContractPaymentOneTimeViewModel OneTime { get; set; }
|
||||||
public InstitutionContractPaymentMonthlyViewModel Monthly { get; set; }
|
public InstitutionContractPaymentMonthlyViewModel Monthly { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationPaymentResponse
|
||||||
|
{
|
||||||
|
public InstitutionContractPaymentOneTimeViewModel OneTime { get; set; }
|
||||||
|
public InstitutionContractPaymentMonthlyViewModel Monthly { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,13 @@ using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
|||||||
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
|
||||||
public class InstitutionContractExtensionPlanRequest
|
public class InstitutionContractExtensionPlanRequest
|
||||||
|
{
|
||||||
|
public List<WorkshopTempViewModel> WorkshopTemps { get; set; }
|
||||||
|
public string TotalAmount { get; set; }
|
||||||
|
public Guid TempId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationPlanRequest
|
||||||
{
|
{
|
||||||
public List<WorkshopTempViewModel> WorkshopTemps { get; set; }
|
public List<WorkshopTempViewModel> WorkshopTemps { get; set; }
|
||||||
public string TotalAmount { get; set; }
|
public string TotalAmount { get; set; }
|
||||||
|
|||||||
@@ -7,7 +7,18 @@ public class InstitutionContractExtensionPlanResponse
|
|||||||
public InstitutionContractExtensionPlanDetail SixMonths { get; set; }
|
public InstitutionContractExtensionPlanDetail SixMonths { get; set; }
|
||||||
public InstitutionContractExtensionPlanDetail TwelveMonths { get; set; }
|
public InstitutionContractExtensionPlanDetail TwelveMonths { get; set; }
|
||||||
}
|
}
|
||||||
public class InstitutionContractExtensionPlanDetail
|
public class InstitutionContractExtensionPlanDetail:InstitutionContractCreationPlanDetail
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationPlanResponse
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationPlanDetail OneMonth { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail ThreeMonths { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail SixMonths { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail TwelveMonths { get; set; }
|
||||||
|
}
|
||||||
|
public class InstitutionContractCreationPlanDetail
|
||||||
{
|
{
|
||||||
public string ContractStart { get; set; }
|
public string ContractStart { get; set; }
|
||||||
public string ContractEnd { get; set; }
|
public string ContractEnd { get; set; }
|
||||||
|
|||||||
@@ -33,5 +33,5 @@ public class InstitutionContractPaymentOneTimeViewModel
|
|||||||
}
|
}
|
||||||
public class InstitutionContractPaymentMonthlyViewModel:InstitutionContractPaymentOneTimeViewModel
|
public class InstitutionContractPaymentMonthlyViewModel:InstitutionContractPaymentOneTimeViewModel
|
||||||
{
|
{
|
||||||
public List<MonthlyInstallment> Installments { get; set; }
|
public List<MonthlyInstallment> Installments { get; set; } = [];
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,11 @@ using System;
|
|||||||
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
|
||||||
public class InstitutionContractResetDiscountForExtensionRequest
|
public class InstitutionContractResetDiscountForExtensionRequest
|
||||||
|
{
|
||||||
|
public Guid TempId { get; set; }
|
||||||
|
public bool IsInstallment { get; set; }
|
||||||
|
}
|
||||||
|
public class InstitutionContractResetCreationForExtensionRequest
|
||||||
{
|
{
|
||||||
public Guid TempId { get; set; }
|
public Guid TempId { get; set; }
|
||||||
public bool IsInstallment { get; set; }
|
public bool IsInstallment { get; set; }
|
||||||
|
|||||||
@@ -3,6 +3,13 @@ using System;
|
|||||||
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
|
||||||
public class InstitutionContractSetDiscountForExtensionRequest
|
public class InstitutionContractSetDiscountForExtensionRequest
|
||||||
|
{
|
||||||
|
public Guid TempId { get; set; }
|
||||||
|
public int DiscountPercentage { get; set; }
|
||||||
|
public double TotalAmount { get; set; }
|
||||||
|
public bool IsInstallment { get; set; }
|
||||||
|
}
|
||||||
|
public class InstitutionContractSetDiscountForCreationRequest
|
||||||
{
|
{
|
||||||
public Guid TempId { get; set; }
|
public Guid TempId { get; set; }
|
||||||
public int DiscountPercentage { get; set; }
|
public int DiscountPercentage { get; set; }
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using CompanyManagment.App.Contracts.InsuranceList;
|
using CompanyManagment.App.Contracts.InsuranceList;
|
||||||
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
@@ -96,6 +97,94 @@ public interface IInsuranceListApplication
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<List<InsuranceListViewModel>> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel);
|
Task<List<InsuranceListViewModel>> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel);
|
||||||
|
Task<InsuranceClientPrintViewModel> ClientPrintOne(long id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InsuranceClientPrintViewModel
|
||||||
|
{
|
||||||
|
public string Month { get; set; }
|
||||||
|
public string Year { get; set; }
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
public string ListNo { get; set; }
|
||||||
|
public string AgreementNumber { get; set; }
|
||||||
|
public string WorkshopInsuranceCode { get; set; }
|
||||||
|
public string WorkshopEmployerName { get; set; }
|
||||||
|
public string WorkshopAddress { get; set; }
|
||||||
|
public List<InsuranceClientPrintItemsViewModel> Items { get; set; }
|
||||||
|
public string EmployerShare { get; set; }
|
||||||
|
public string InsuredShare { get; set; }
|
||||||
|
public string UnEmploymentInsurance { get; set; }
|
||||||
|
public string AllInsuredShare { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
public class InsuranceClientPrintItemsViewModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// شماره بیمه
|
||||||
|
/// </summary>
|
||||||
|
public string InsuranceCode { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// نام و نام خانوادگی
|
||||||
|
/// </summary>
|
||||||
|
public string FullName { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobName { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// شروع به کار
|
||||||
|
/// </summary>
|
||||||
|
public string StartWork { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// ترک کار
|
||||||
|
/// </summary>
|
||||||
|
public string LeftWork { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// روزهای کارکرد
|
||||||
|
/// </summary>
|
||||||
|
public string WorkingDays { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// دستمزد روزانه
|
||||||
|
/// </summary>
|
||||||
|
public string DailyWage { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// پایه سنوات روزانه
|
||||||
|
/// </summary>
|
||||||
|
public string BaseYears { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// دستمزد ماهانه
|
||||||
|
/// </summary>
|
||||||
|
public string MonthlySalary { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// مزایای ماهیانه مشمول
|
||||||
|
/// </summary>
|
||||||
|
public string MonthlyBenefits { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// حق تاهل
|
||||||
|
/// </summary>
|
||||||
|
public string MarriedAllowance { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// حقوق و مزایای ماهیانه مشمول
|
||||||
|
/// </summary>
|
||||||
|
public string BenefitsIncludedContinuous { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// حقوق و مزایای ماهیانه غیر مشمول
|
||||||
|
/// </summary>
|
||||||
|
public string BenefitsIncludedNonContinuous { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع مزایای ماهیانه مشمول و غیر مشمول
|
||||||
|
/// </summary>
|
||||||
|
public string IncludedAndNotIncluded { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// حق بیمه سهم بیمه شده
|
||||||
|
/// </summary>
|
||||||
|
public string InsuranceShare { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InsuranceClientSearchModel:PaginationRequest
|
public class InsuranceClientSearchModel:PaginationRequest
|
||||||
@@ -113,4 +202,11 @@ public class InsuranceClientListViewModel
|
|||||||
public int YearInt { get; set; }
|
public int YearInt { get; set; }
|
||||||
public string MonthName { get; set; }
|
public string MonthName { get; set; }
|
||||||
public int MonthInt { get; set; }
|
public int MonthInt { get; set; }
|
||||||
|
public int PersonnelCount { get; set; }
|
||||||
|
public int LeftWorkCount { get; set; }
|
||||||
|
public string AllInsuredShare { get; set; }
|
||||||
|
public string InsuredShare { get; set; }
|
||||||
|
public string EmployerShare { get; set; }
|
||||||
|
public string UnEmploymentInsurance { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class CheckIsInvalidLeaveDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیا تعطیل است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsHoliday { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فاقد/دارای اعتبار فیش غیر رسمی
|
||||||
|
/// </summary>
|
||||||
|
public bool CanCreateInvalid { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
78
CompanyManagment.App.Contracts/Leave/CreateLeaveDto.cs
Normal file
78
CompanyManagment.App.Contracts/Leave/CreateLeaveDto.cs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class CreateLeaveDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع مرخصی
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "این مقدار نمی تواند خالی باشد")]
|
||||||
|
public string StartLeave { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان مرخصی
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "این مقدار نمی تواند خالی باشد")]
|
||||||
|
public string EndLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مدت مرخص روزانه/ ساعتی
|
||||||
|
/// </summary>
|
||||||
|
public PaidLeaveType PaidLeaveType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی استحقاقی/استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public LeaveType LeaveType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعت شروع مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string StartHoures { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعت پایان مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string EndHours { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// موافقت / عدم موافقت کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAccepted { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// توضیحات
|
||||||
|
/// </summary>
|
||||||
|
public string Decription { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<CustomizeRotatingShiftsViewModel> RotatingShifts { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دارای اعتبار / فاقد اعتبار فیش غیررسمی
|
||||||
|
/// </summary>
|
||||||
|
public bool IsInvallid { get; set; }
|
||||||
|
public CustomizeRotatingShiftsViewModel SelectedShift { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
88
CompanyManagment.App.Contracts/Leave/GroupLeaveListDto.cs
Normal file
88
CompanyManagment.App.Contracts/Leave/GroupLeaveListDto.cs
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class GroupLeaveListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// سال مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string YearStr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string MonthStr { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// آیتم های هر گروه
|
||||||
|
/// </summary>
|
||||||
|
public List<LeaveListItemsDto> LeaveListItemsDto { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیتم های هر گروه
|
||||||
|
/// </summary>
|
||||||
|
public class LeaveListItemsDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی، استحقاقی/استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string StartLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string EndLeave { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// زمان مرخصی
|
||||||
|
/// بازه مرخصی ساعتی
|
||||||
|
/// </summary>
|
||||||
|
public string HourlyInterval { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدت مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveDuration { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// موافقت/عدم موافقت کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAccepted { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///آیا فاقد اعتبار است. فاقد اعتبار ها فقط برای فیش های غیررسمی مورد استفاده قرار میگیرند
|
||||||
|
/// </summary>
|
||||||
|
public bool IsInvalid { get; set; }
|
||||||
|
}
|
||||||
@@ -19,6 +19,7 @@ public interface ILeaveApplication
|
|||||||
GroupLeavePrintViewModel PrintPersonnelLeaveList(List<long> id);
|
GroupLeavePrintViewModel PrintPersonnelLeaveList(List<long> id);
|
||||||
|
|
||||||
OperationResult RemoveLeave(long id);
|
OperationResult RemoveLeave(long id);
|
||||||
|
Task<OperationResult> RemoveLeaveAsync(long id);
|
||||||
LeaveViewModel LeavOnChekout(DateTime starContract, DateTime endContract, long employeeId, long workshopId);
|
LeaveViewModel LeavOnChekout(DateTime starContract, DateTime endContract, long employeeId, long workshopId);
|
||||||
List<LeaveMainViewModel> searchClient(LeaveSearchModel search);
|
List<LeaveMainViewModel> searchClient(LeaveSearchModel search);
|
||||||
|
|
||||||
@@ -36,5 +37,117 @@ public interface ILeaveApplication
|
|||||||
TimeSpan GetEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string startFa, string endFa,
|
TimeSpan GetEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string startFa, string endFa,
|
||||||
string type);
|
string type);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست مرخصی ها در کلاینت
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagedResult<leaveListDto>> GetList(
|
||||||
|
LeaveListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست گروه بندی شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<GroupLeaveListDto>> GetGroupList(LeaveListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت مجکوع مرخصی پرسنل
|
||||||
|
/// اگر آی دی پرسنل، سال و ماه خالی نباشد
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="yearStr"></param>
|
||||||
|
/// <param name="monthStr"></param>
|
||||||
|
/// <param name="leaveType"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
TimeSpan SumOfEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string yearStr, string monthStr,
|
||||||
|
LeaveType leaveType);
|
||||||
|
|
||||||
|
Task<List<LeavePrintResponseViewModel>> PrintAllAsync(List<long> ids, long workshopId);
|
||||||
|
Task<LeavePrintResponseViewModel> PrintOneAsync(long id, long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که تاریخ وارد شده در شروع مرخصی تعطیل است یا خیر
|
||||||
|
/// دارای/فاقد اعتبار فیش غیررسمی را چک میکند
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startLeaveDate"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult<CheckIsInvalidLeaveDto>> CheckIsInvalidLeave(string startLeaveDate, long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد مرخصی از ای پی آی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> CreateLeave(CreateLeaveDto command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که آیا پرسنل حضور غیاب دارای شیفت گردشی دارد یا خیر
|
||||||
|
/// اگر داشت دریافت شیف گردشی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="startLeaveDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult<RotatingShiftDto>> HasRotatingShift(long workshopId, long employeeId, string startLeaveDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت لیستی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<LeaveListPrintDto> ListPrint(List<long> ids);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه مدت مرخصی ساعتی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startHours"></param>
|
||||||
|
/// <param name="endHours"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<string> GetHourlyLeaveDuration(string startHours, string endHours);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه مدت مرخصی روزانه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<string> GetDailyLeaveDuration(string startDate, string endDate);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LeavePrintResponseViewModel
|
||||||
|
{
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
public List<string> EmployerNames { get; set; }
|
||||||
|
public string PaidLeaveType { get; set; }
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
public LeavePrintHourlyResponseViewModel HourlyLeave { get; set; }
|
||||||
|
public LeavePrintDailyResponseViewModel DailyLeave { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LeavePrintDailyResponseViewModel
|
||||||
|
{
|
||||||
|
public string StartLeave { get; set; }
|
||||||
|
public string EndLeave { get; set; }
|
||||||
|
public string TotalDay { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LeavePrintHourlyResponseViewModel
|
||||||
|
{
|
||||||
|
public string LeaveDate { get; set; }
|
||||||
|
public string StartHour { get; set; }
|
||||||
|
public string EndHour { get; set; }
|
||||||
|
public string TotalHour { get; set; }
|
||||||
}
|
}
|
||||||
24
CompanyManagment.App.Contracts/Leave/LeaveListMultipleDto.cs
Normal file
24
CompanyManagment.App.Contracts/Leave/LeaveListMultipleDto.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class LeaveListMultipleDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// لیست گروهبندی شده بر اساس سال و ماه
|
||||||
|
/// اگر در جستجو پرسنل انتخاب شود
|
||||||
|
/// </summary>
|
||||||
|
public List<GroupLeaveListDto>? GroupLeaveListDto { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست نرمال PageResult
|
||||||
|
/// </summary>
|
||||||
|
public PagedResult<leaveListDto>? leaveListDto { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع مرخصی پرسنل
|
||||||
|
/// اگر پرسنل انتخاب شده باشد
|
||||||
|
/// </summary>
|
||||||
|
public string? SumOfEmployeeleaves { get; set; }
|
||||||
|
}
|
||||||
77
CompanyManagment.App.Contracts/Leave/LeaveListPrintDto.cs
Normal file
77
CompanyManagment.App.Contracts/Leave/LeaveListPrintDto.cs
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت لیستی
|
||||||
|
/// api
|
||||||
|
/// </summary>
|
||||||
|
public class LeaveListPrintDto
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع مرخصی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string? SumOfEmployeeleaves { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public List<LeavePrintListItemsDto> LeavePrintListItemsDto { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LeavePrintListItemsDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// سال مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string YearStr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string MonthStr { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی، استحقاقی/استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string StartLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string EndLeave { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// زمان مرخصی
|
||||||
|
/// بازه مرخصی ساعتی
|
||||||
|
/// </summary>
|
||||||
|
public string HourlyInterval { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدت مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveDuration { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// موافقت/عدم موافقت کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAccepted { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
45
CompanyManagment.App.Contracts/Leave/LeaveListSearchModel.cs
Normal file
45
CompanyManagment.App.Contracts/Leave/LeaveListSearchModel.cs
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class LeaveListSearchModel : PaginationRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی، استحقاقی/استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public LeaveType LeaveType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string YearStr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string MonthStr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///آیا فاقد اعتبار است. فاقد اعتبار ها فقط برای فیش های غیررسمی مورد استفاده قرار میگیرند
|
||||||
|
/// </summary>
|
||||||
|
public bool IsInvalid { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string StartLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string EndLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
}
|
||||||
18
CompanyManagment.App.Contracts/Leave/LeaveType.cs
Normal file
18
CompanyManagment.App.Contracts/Leave/LeaveType.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public enum LeaveType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// هر دو
|
||||||
|
/// </summary>
|
||||||
|
Both,
|
||||||
|
/// <summary>
|
||||||
|
/// مرخصی استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
SickLeave,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مرخصی استحقاقی
|
||||||
|
/// </summary>
|
||||||
|
PaidLeave
|
||||||
|
}
|
||||||
17
CompanyManagment.App.Contracts/Leave/PaidLeaveType.cs
Normal file
17
CompanyManagment.App.Contracts/Leave/PaidLeaveType.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مدت مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public enum PaidLeaveType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// روزانه
|
||||||
|
/// </summary>
|
||||||
|
Daily,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعتی
|
||||||
|
/// </summary>
|
||||||
|
Hourly,
|
||||||
|
}
|
||||||
17
CompanyManagment.App.Contracts/Leave/RotatingShiftDto.cs
Normal file
17
CompanyManagment.App.Contracts/Leave/RotatingShiftDto.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class RotatingShiftDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیا حضورغیاب به همراه گروهبندی گردشی دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasRollCall {get; set;}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست شیفت های گردشی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public List<CustomizeRotatingShiftsViewModel> RotatingShifts { get; set; }
|
||||||
|
}
|
||||||
84
CompanyManagment.App.Contracts/Leave/leaveListDto.cs
Normal file
84
CompanyManagment.App.Contracts/Leave/leaveListDto.cs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Leave;
|
||||||
|
|
||||||
|
public class leaveListDto
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string YearStr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string MonthStr { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی، استحقاقی/استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string StartLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string EndLeave { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// زمان مرخصی
|
||||||
|
/// بازه مرخصی ساعتی
|
||||||
|
/// </summary>
|
||||||
|
public string HourlyInterval { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدت مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveDuration { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// موافقت/عدم موافقت کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAccepted { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///آیا فاقد اعتبار است. فاقد اعتبار ها فقط برای فیش های غیررسمی مورد استفاده قرار میگیرند
|
||||||
|
/// </summary>
|
||||||
|
public bool IsInvalid { get; set; }
|
||||||
|
}
|
||||||
@@ -132,4 +132,5 @@ public interface IPersonalContractingPartyApp
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
Task<long> GetRepresentativeIdByNationalCode(string nationalCode);
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -1444,6 +1444,22 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
|||||||
return _institutionContractRepository.ResetDiscountCreate(request);
|
return _institutionContractRepository.ResetDiscountCreate(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<InstitutionContractCreationInquiryResult> CreationInquiry(InstitutionContractCreationInquiryRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.CreationInquiry(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<InstitutionContractCreationWorkshopsResponse> GetCreationWorkshops(InstitutionContractCreationWorkshopsRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.GetCreationWorkshops(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<InstitutionContractCreationPlanResponse> GetCreationInstitutionPlan(InstitutionContractCreationPlanRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.GetCreationInstitutionPlan(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId)
|
public async Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId)
|
||||||
{
|
{
|
||||||
return await _institutionContractRepository.GetExtensionInquiry(previousContractId);
|
return await _institutionContractRepository.GetExtensionInquiry(previousContractId);
|
||||||
@@ -1634,6 +1650,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
|||||||
if (institutionContract.VerificationStatus == InstitutionContractVerificationStatus.Verified)
|
if (institutionContract.VerificationStatus == InstitutionContractVerificationStatus.Verified)
|
||||||
return op.Failed("قرارداد مالی قبلا تایید شده است");
|
return op.Failed("قرارداد مالی قبلا تایید شده است");
|
||||||
|
|
||||||
|
if (!institutionContract.WorkshopGroup.IsInPersonContract)
|
||||||
|
{
|
||||||
|
return op.Failed("قرارداد مالی غیر حضوری نمی تواند به صورت دستی تایید شود");
|
||||||
|
}
|
||||||
|
|
||||||
var transaction = await _institutionContractRepository.BeginTransactionAsync();
|
var transaction = await _institutionContractRepository.BeginTransactionAsync();
|
||||||
await SetPendingWorkflow(institutionContractId,InstitutionContractSigningType.Physical);
|
await SetPendingWorkflow(institutionContractId,InstitutionContractSigningType.Physical);
|
||||||
|
|
||||||
@@ -1657,6 +1678,28 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
|||||||
return op.Succcedded();
|
return op.Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<InstitutionContractCreationPaymentResponse> GetCreationPaymentMethod(InstitutionContractCreationPaymentRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.GetCreationPaymentMethod(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<InstitutionContractDiscountResponse> SetDiscountForCreation(InstitutionContractSetDiscountForCreationRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.SetDiscountForCreation(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<InstitutionContractDiscountResponse> ResetDiscountForCreation(InstitutionContractResetDiscountForExtensionRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.ResetDiscountForCreation(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request)
|
||||||
|
{
|
||||||
|
return _institutionContractRepository.CreationComplete(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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,
|
||||||
string state)
|
string state)
|
||||||
|
|||||||
@@ -2381,5 +2381,10 @@ public class InsuranceListApplication : IInsuranceListApplication
|
|||||||
return await _insuranceListRepositpry.GetNotCreatedWorkshop(searchModel);
|
return await _insuranceListRepositpry.GetNotCreatedWorkshop(searchModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<InsuranceClientPrintViewModel> ClientPrintOne(long id)
|
||||||
|
{
|
||||||
|
return await _insuranceListRepositpry.ClientPrintOne(id);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,25 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
|
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg;
|
||||||
|
using Company.Domain.EmployeeAgg;
|
||||||
|
using Company.Domain.HolidayItemAgg;
|
||||||
|
using Company.Domain.LeaveAgg;
|
||||||
|
using Company.Domain.RollCallAgg;
|
||||||
|
using Company.Domain.RollCallServiceAgg;
|
||||||
|
using Company.Domain.WorkshopAgg;
|
||||||
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
||||||
|
using CompanyManagment.App.Contracts.HolidayItem;
|
||||||
|
using CompanyManagment.App.Contracts.Leave;
|
||||||
|
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
|
||||||
|
using CompanyManagment.App.Contracts.RollCallService;
|
||||||
|
using CompanyManagment.EFCore.Migrations;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using _0_Framework.Application;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
||||||
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg;
|
|
||||||
using Company.Domain.EmployeeAgg;
|
|
||||||
using Company.Domain.LeaveAgg;
|
|
||||||
using Company.Domain.RollCallAgg;
|
|
||||||
using Company.Domain.WorkshopAgg;
|
|
||||||
using CompanyManagment.App.Contracts.Leave;
|
|
||||||
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
|
|
||||||
|
|
||||||
namespace CompanyManagment.Application;
|
namespace CompanyManagment.Application;
|
||||||
|
|
||||||
@@ -23,9 +31,12 @@ public class LeaveApplication : ILeaveApplication
|
|||||||
private readonly IRollCallRepository _rollCallRepository;
|
private readonly IRollCallRepository _rollCallRepository;
|
||||||
private readonly ICustomizeWorkshopEmployeeSettingsRepository _employeeSettingsRepository;
|
private readonly ICustomizeWorkshopEmployeeSettingsRepository _employeeSettingsRepository;
|
||||||
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication;
|
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication;
|
||||||
|
private readonly IHolidayItemRepository _holidayItemRepository;
|
||||||
|
private readonly IRollCallServiceRepository _rollCallServiceRepository;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public LeaveApplication(ILeaveRepository leaveRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workshopRepository, IRollCallRepository rollCallRepository, ICustomizeWorkshopEmployeeSettingsRepository employeeSettingsRepository, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication)
|
public LeaveApplication(ILeaveRepository leaveRepository, IEmployeeRepository employeeRepository, IWorkshopRepository workshopRepository, IRollCallRepository rollCallRepository, ICustomizeWorkshopEmployeeSettingsRepository employeeSettingsRepository, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, IHolidayItemRepository holidayItemRepository, IRollCallServiceRepository rollCallServiceRepository)
|
||||||
{
|
{
|
||||||
_leaveRepository = leaveRepository;
|
_leaveRepository = leaveRepository;
|
||||||
_employeeRepository = employeeRepository;
|
_employeeRepository = employeeRepository;
|
||||||
@@ -33,6 +44,8 @@ public class LeaveApplication : ILeaveApplication
|
|||||||
_rollCallRepository = rollCallRepository;
|
_rollCallRepository = rollCallRepository;
|
||||||
_employeeSettingsRepository = employeeSettingsRepository;
|
_employeeSettingsRepository = employeeSettingsRepository;
|
||||||
_rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication;
|
_rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication;
|
||||||
|
_holidayItemRepository = holidayItemRepository;
|
||||||
|
_rollCallServiceRepository = rollCallServiceRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult Create(CreateLeave command)
|
public OperationResult Create(CreateLeave command)
|
||||||
@@ -237,7 +250,7 @@ public class LeaveApplication : ILeaveApplication
|
|||||||
|
|
||||||
var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName;
|
var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName;
|
||||||
var workshopName = _workshopRepository.GetDetails(command.WorkshopId).WorkshopName;
|
var workshopName = _workshopRepository.GetDetails(command.WorkshopId).WorkshopName;
|
||||||
var leave = new Leave(start, end, totalhourses, command.WorkshopId, command.EmployeeId
|
var leave = new Company.Domain.LeaveAgg.Leave(start, end, totalhourses, command.WorkshopId, command.EmployeeId
|
||||||
, command.PaidLeaveType, command.LeaveType, employeeFullName, workshopName, command.IsAccepted, command.Decription,
|
, command.PaidLeaveType, command.LeaveType, employeeFullName, workshopName, command.IsAccepted, command.Decription,
|
||||||
year, month, shiftDuration, hasShiftDuration,command.IsInvallid);
|
year, month, shiftDuration, hasShiftDuration,command.IsInvallid);
|
||||||
_leaveRepository.Create(leave);
|
_leaveRepository.Create(leave);
|
||||||
@@ -509,7 +522,12 @@ public class LeaveApplication : ILeaveApplication
|
|||||||
|
|
||||||
public OperationResult RemoveLeave(long id)
|
public OperationResult RemoveLeave(long id)
|
||||||
{
|
{
|
||||||
return _leaveRepository.RemoveLeave(id);
|
return _leaveRepository.RemoveLeave(id).GetAwaiter().GetResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<OperationResult> RemoveLeaveAsync(long id)
|
||||||
|
{
|
||||||
|
return await _leaveRepository.RemoveLeave(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LeaveViewModel LeavOnChekout(DateTime starContract, DateTime endContract, long employeeId, long workshopId)
|
public LeaveViewModel LeavOnChekout(DateTime starContract, DateTime endContract, long employeeId, long workshopId)
|
||||||
@@ -590,11 +608,435 @@ public class LeaveApplication : ILeaveApplication
|
|||||||
return leaveTotalTimeSpan;
|
return leaveTotalTimeSpan;
|
||||||
}
|
}
|
||||||
|
|
||||||
private TimeSpan CalculateTotalLeaveTimeSpan(List<LeavePrintViewModel> leaves)
|
|
||||||
|
|
||||||
|
private TimeSpan CalculateTotalLeaveTimeSpan(List<LeavePrintViewModel> leaves)
|
||||||
{
|
{
|
||||||
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType != "روزانه").Sum(x => (x.EndLeaveGr - x.StartLeaveGr).Ticks));
|
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType != "روزانه").Sum(x => (x.EndLeaveGr - x.StartLeaveGr).Ticks));
|
||||||
var dailyLeaveCount = leaves.Count(x => x.PaidLeaveType == "روزانه") * new TimeSpan(1, 0, 0, 0);
|
var dailyLeaveCount = leaves.Count(x => x.PaidLeaveType == "روزانه") * new TimeSpan(1, 0, 0, 0);
|
||||||
return timeSpanHourlyLeave + dailyLeaveCount;
|
return timeSpanHourlyLeave + dailyLeaveCount;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
public async Task<PagedResult<leaveListDto>> GetList(LeaveListSearchModel searchModel)
|
||||||
|
{
|
||||||
|
return await _leaveRepository.GetList(searchModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<GroupLeaveListDto>> GetGroupList(LeaveListSearchModel searchModel)
|
||||||
|
{
|
||||||
|
return await _leaveRepository.GetGroupList(searchModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimeSpan SumOfEmployeeLeaveTimeSpanInDates(long workshopId, long employeeId, string yearStr, string monthStr, LeaveType leaveType)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
var startFa = $"{yearStr}/{monthStr:00}/01";
|
||||||
|
var endFa = startFa.FindeEndOfMonth();
|
||||||
|
|
||||||
|
if (startFa.TryToGeorgianDateTime(out var start) == false || endFa.TryToGeorgianDateTime(out var end) == false)
|
||||||
|
return TimeSpan.Zero;
|
||||||
|
|
||||||
|
var leaveTotalTimeSpan = TimeSpan.Zero;
|
||||||
|
|
||||||
|
var leaves = _leaveRepository.GetByWorkshopIdEmployeeIdInDates(workshopId, employeeId, start, end);
|
||||||
|
//var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType != "روزانه").Sum(x => (x.EndLeaveGr - x.StartLeaveGr).Ticks));
|
||||||
|
//var dailyLeaveCount = leaves.Count(x => x.PaidLeaveType == "روزانه") * new TimeSpan(1, 0, 0, 0);
|
||||||
|
|
||||||
|
if (leaveType == LeaveType.PaidLeave)
|
||||||
|
{
|
||||||
|
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType == "ساعتی" && x.LeaveType == "استحقاقی")
|
||||||
|
.Sum(x => TimeOnly.Parse(x.LeaveHourses).Ticks));
|
||||||
|
var dailyLeaveTime = leaves.Where(x => x.PaidLeaveType == "روزانه" && x.LeaveType == "استحقاقی")
|
||||||
|
.Sum(x => Convert.ToInt32(x.LeaveHourses)) * TimeSpan.FromDays(1);
|
||||||
|
|
||||||
|
leaveTotalTimeSpan = timeSpanHourlyLeave + dailyLeaveTime;
|
||||||
|
}
|
||||||
|
else if (leaveType == LeaveType.SickLeave)
|
||||||
|
{
|
||||||
|
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType == "ساعتی" && x.LeaveType == "استعلاجی")
|
||||||
|
.Sum(x => TimeOnly.Parse(x.LeaveHourses).Ticks));
|
||||||
|
|
||||||
|
var dailyLeaveTime = leaves.Where(x => x.PaidLeaveType == "روزانه" && x.LeaveType == "استعلاجی")
|
||||||
|
.Sum(x => Convert.ToInt32(x.LeaveHourses)) * TimeSpan.FromDays(1);
|
||||||
|
|
||||||
|
leaveTotalTimeSpan = timeSpanHourlyLeave + dailyLeaveTime;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var timeSpanHourlyLeave = new TimeSpan(leaves.Where(x => x.PaidLeaveType == "ساعتی").Sum(x => TimeOnly.Parse(x.LeaveHourses).Ticks));
|
||||||
|
var dailyLeaveTime = leaves.Where(x => x.PaidLeaveType == "روزانه").Sum(x => Convert.ToInt32(x.LeaveHourses)) * TimeSpan.FromDays(1);
|
||||||
|
leaveTotalTimeSpan = timeSpanHourlyLeave + dailyLeaveTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return leaveTotalTimeSpan;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<LeavePrintResponseViewModel>> PrintAllAsync(List<long> ids,long workshopId)
|
||||||
|
{
|
||||||
|
return await _leaveRepository.PrintAllAsync(ids,workshopId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<LeavePrintResponseViewModel> PrintOneAsync(long id, long workshopId)
|
||||||
|
{
|
||||||
|
return (await _leaveRepository.PrintAllAsync([id],workshopId)).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<OperationResult<CheckIsInvalidLeaveDto>> CheckIsInvalidLeave(string startLeaveDate, long workshopId)
|
||||||
|
{
|
||||||
|
var op = new OperationResult<CheckIsInvalidLeaveDto>();
|
||||||
|
var result = new CheckIsInvalidLeaveDto();
|
||||||
|
if (startLeaveDate.TryToGeorgianDateTime(out var startLeaveDateGr) == false)
|
||||||
|
{
|
||||||
|
return op.Failed("تاریخ وارد شده صحیح نیست");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startLeaveDateGr.DayOfWeek == DayOfWeek.Friday || _holidayItemRepository.GetHoliday(startLeaveDateGr))
|
||||||
|
{
|
||||||
|
result.IsHoliday = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.IsHoliday)
|
||||||
|
{
|
||||||
|
var rollCallService = _rollCallServiceRepository.GetActiveServiceByWorkshopId(workshopId);
|
||||||
|
if (rollCallService != null)
|
||||||
|
{
|
||||||
|
result.CanCreateInvalid = rollCallService.HasCustomizeCheckoutService == "true";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return op.Succcedded(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<OperationResult> CreateLeave(CreateLeaveDto command)
|
||||||
|
{
|
||||||
|
TimeSpan shiftDuration = TimeSpan.Zero;
|
||||||
|
bool hasShiftDuration = false;
|
||||||
|
var startH = new TimeSpan();
|
||||||
|
var endH = new TimeSpan();
|
||||||
|
var op = new OperationResult();
|
||||||
|
if ((command.PaidLeaveType == PaidLeaveType.Daily && command.LeaveType == LeaveType.PaidLeave) || command.LeaveType == LeaveType.SickLeave)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(command.StartLeave))
|
||||||
|
{
|
||||||
|
return op.Failed("لطفا تاریخ شروع را وارد کنید");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrWhiteSpace(command.EndLeave))
|
||||||
|
{
|
||||||
|
return op.Failed("لطفا تاریخ پایان را وارد کنید");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (command.PaidLeaveType == PaidLeaveType.Hourly)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(command.StartLeave))
|
||||||
|
return op.Failed("لطفا تاریخ شروع را وارد کنید");
|
||||||
|
if (string.IsNullOrWhiteSpace(command.StartHoures) || string.IsNullOrWhiteSpace(command.EndHours))
|
||||||
|
return op.Failed("ساعت شروع و پایان نمیتواند خالی باشد");
|
||||||
|
|
||||||
|
string pattern = @"^([01]\d|2[0-3]):[0-5]\d$";
|
||||||
|
|
||||||
|
if (!Regex.IsMatch(command.StartHoures, pattern))
|
||||||
|
return op.Failed("لطفا ساعت شروع را به درستی وارد کنید");
|
||||||
|
|
||||||
|
if (!Regex.IsMatch(command.EndHours, pattern))
|
||||||
|
return op.Failed("لطفا ساعت پایان را به درستی وارد کنید");
|
||||||
|
|
||||||
|
startH = TimeSpan.Parse(command.StartHoures);
|
||||||
|
endH = TimeSpan.Parse(command.EndHours);
|
||||||
|
if (startH == endH)
|
||||||
|
return op.Failed("ساعت شروع و پایان نباید برابر باشد");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//if (command.LeaveType == LeaveType.SickLeave && string.IsNullOrWhiteSpace(command.StartLeave))
|
||||||
|
// return op.Failed("لطفا تاریخ شروع را وارد کنید");
|
||||||
|
//if (command.LeaveType == LeaveType.SickLeave && string.IsNullOrWhiteSpace(command.EndLeave))
|
||||||
|
// return op.Failed("لطفا تاریخ پایان را وارد کنید");
|
||||||
|
|
||||||
|
|
||||||
|
if (command.StartLeave.TryToGeorgianDateTime(out var start) == false)
|
||||||
|
{
|
||||||
|
return op.Failed("تاریخ شروع صحیح نیست");
|
||||||
|
}
|
||||||
|
|
||||||
|
var end = new DateTime();
|
||||||
|
if (command.PaidLeaveType == PaidLeaveType.Daily)
|
||||||
|
{
|
||||||
|
if (command.EndLeave.TryToGeorgianDateTime(out end) == false)
|
||||||
|
{
|
||||||
|
return op.Failed("تاریخ پایان صحیح نیست");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end = start;
|
||||||
|
|
||||||
|
|
||||||
|
var checkErr = _leaveRepository.CheckErrors(start, end, command.EmployeeId, command.WorkshopId, command.IsInvallid);
|
||||||
|
|
||||||
|
|
||||||
|
if (checkErr.HasChekout)
|
||||||
|
return op.Failed(checkErr.CheckoutErrMessage);
|
||||||
|
if (checkErr.HasNotContract)
|
||||||
|
return op.Failed(checkErr.ContractErrMessage);
|
||||||
|
if (checkErr.HasLeftWork)
|
||||||
|
return op.Failed(checkErr.LeftWorlErrMessage);
|
||||||
|
|
||||||
|
if (start > end)
|
||||||
|
return op.Failed("تارخ شروع از پایان بزرگتر است");
|
||||||
|
|
||||||
|
|
||||||
|
var totalhourses = "-";
|
||||||
|
if (command.LeaveType == LeaveType.PaidLeave && command.PaidLeaveType == PaidLeaveType.Hourly)
|
||||||
|
{
|
||||||
|
|
||||||
|
start = new DateTime(start.Year, start.Month, start.Day, startH.Hours, startH.Minutes, startH.Seconds);
|
||||||
|
end = new DateTime(start.Year, start.Month, start.Day, endH.Hours, endH.Minutes, endH.Seconds);
|
||||||
|
if (start > end)
|
||||||
|
end = end.AddDays(1);
|
||||||
|
|
||||||
|
var totalLeavHourses = (end - start);
|
||||||
|
var h = totalLeavHourses.Hours < 10 ? $"0{totalLeavHourses.Hours}" : $"{totalLeavHourses.Hours}";
|
||||||
|
var m = totalLeavHourses.Minutes < 10 ? $"0{totalLeavHourses.Minutes}" : $"{totalLeavHourses.Minutes}";
|
||||||
|
totalhourses = $"{h}:{m}";
|
||||||
|
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave <= start && x.EndLeave >= start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "ساعتی"))
|
||||||
|
return op.Failed("برای ساعت شروع سابقه مرخصی وجود دارد");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave <= end && x.EndLeave >= end && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "ساعتی"))
|
||||||
|
return op.Failed("برای ساعت پایان سابقه مرخصی وجود دارد");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave >= start && x.EndLeave <= end && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "ساعتی"))
|
||||||
|
return op.Failed("در بازه زمانی وارد شده مرخصی ثبت شده است");
|
||||||
|
|
||||||
|
var end24 = endH.Hours == 0 && endH.Minutes == 0 ? end.AddDays(-1) : end;
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
(x.StartLeave.Date == start.Date || x.EndLeave.Date == end24.Date) && (x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه")))
|
||||||
|
return op.Failed("در بازه زمانی وارد شده مرخصی ثبت شده است");
|
||||||
|
}
|
||||||
|
else if (command.LeaveType == LeaveType.PaidLeave && command.PaidLeaveType == PaidLeaveType.Daily)
|
||||||
|
{
|
||||||
|
var totalLeavHourses = (end - start).TotalDays + 1;
|
||||||
|
totalhourses = $"{(int)totalLeavHourses}";
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave <= start && x.EndLeave >= start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه"))
|
||||||
|
return op.Failed("برای تاریخ شروع سابقه مرخصی وجود دارد");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave <= end && x.EndLeave >= end && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه"))
|
||||||
|
return op.Failed("برای تاریخ پایان سابقه مرخصی وجود دارد");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave >= start && x.EndLeave <= end && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه"))
|
||||||
|
return op.Failed("در بازه زمانی وارد شده مرخصی ثبت شده است");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave.Date >= start.Date && x.StartLeave.Date <= end.Date && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "ساعتی"))
|
||||||
|
return op.Failed("دربازه تاریخ وارد شده مرخصی ساعتی ثبت شده است");
|
||||||
|
|
||||||
|
var employeeSettings = _employeeSettingsRepository.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(command.WorkshopId, command.EmployeeId);
|
||||||
|
|
||||||
|
var isActive = _rollCallEmployeeStatusApplication.IsActiveInPeriod(command.EmployeeId, command.WorkshopId, start, end);
|
||||||
|
var hasRollCall = isActive && employeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Rotating;
|
||||||
|
if (hasRollCall)
|
||||||
|
{
|
||||||
|
|
||||||
|
if ((end - start).TotalDays > 1 && employeeSettings.WorkshopShiftStatus != WorkshopShiftStatus.Regular)
|
||||||
|
{
|
||||||
|
return op.Failed("شما نمیتوانید بیشتر از یک روز مرخصی روزانه ثبت کنید");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (employeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Rotating &&
|
||||||
|
command.SelectedShift == null)
|
||||||
|
{
|
||||||
|
return op.Failed("لطفا شیفت پرسنل را انتخاب کنید");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command.SelectedShift != null)
|
||||||
|
{
|
||||||
|
var validShiftStart = TimeOnly.TryParse(command.SelectedShift.StartTime, out var shiftStart);
|
||||||
|
var validShiftEnd = TimeOnly.TryParse(command.SelectedShift.EndTime, out var shiftEnd);
|
||||||
|
|
||||||
|
if (validShiftStart == false && validShiftEnd == false)
|
||||||
|
{
|
||||||
|
return op.Failed("شیفت های انتخاب شده معتبر نمیباشد");
|
||||||
|
}
|
||||||
|
|
||||||
|
var shiftStartDateTime = new DateTime(new DateOnly(), shiftStart);
|
||||||
|
var shiftEndDateTime = new DateTime(new DateOnly(), shiftEnd);
|
||||||
|
if (shiftEndDateTime <= shiftStartDateTime)
|
||||||
|
shiftEndDateTime = shiftEndDateTime.AddDays(1);
|
||||||
|
shiftDuration = shiftEndDateTime - shiftStartDateTime;
|
||||||
|
hasShiftDuration = true;
|
||||||
|
}
|
||||||
|
else if (employeeSettings is { WorkshopShiftStatus: WorkshopShiftStatus.Irregular })
|
||||||
|
{
|
||||||
|
if ((end - start).TotalDays > 1)
|
||||||
|
{
|
||||||
|
return op.Failed("شما نمیتوانید بیشتر از یک روز مرخصی روزانه ثبت کنید");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isActive)
|
||||||
|
{
|
||||||
|
shiftDuration = employeeSettings.IrregularShift.WorkshopIrregularShifts switch
|
||||||
|
{
|
||||||
|
WorkshopIrregularShifts.TwelveThirtySix => TimeSpan.FromHours(12),
|
||||||
|
WorkshopIrregularShifts.TwelveTwentyFour => TimeSpan.FromHours(12),
|
||||||
|
WorkshopIrregularShifts.TwentyFourFortyEight => TimeSpan.FromHours(24),
|
||||||
|
WorkshopIrregularShifts.TwentyFourTwentyFour => TimeSpan.FromHours(24),
|
||||||
|
_ => new TimeSpan()
|
||||||
|
};
|
||||||
|
hasShiftDuration = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command.LeaveType == LeaveType.SickLeave)
|
||||||
|
{
|
||||||
|
var totalLeavHourses = (end - start).TotalDays + 1;
|
||||||
|
totalhourses = $"{(int)totalLeavHourses}";
|
||||||
|
command.PaidLeaveType = PaidLeaveType.Daily;
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave <= start && x.EndLeave >= start && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه"))
|
||||||
|
return op.Failed("برای تاریخ شروع سابقه مرخصی وجود دارد");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave <= end && x.EndLeave >= end && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه"))
|
||||||
|
return op.Failed("برای تاریخ پایان سابقه مرخصی وجود دارد");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave >= start && x.EndLeave <= end && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "روزانه"))
|
||||||
|
return op.Failed("در بازه زمانی وارد شده مرخصی ثبت شده است");
|
||||||
|
if (_leaveRepository.Exists(x =>
|
||||||
|
x.StartLeave.Date >= start.Date && x.StartLeave.Date <= end.Date && x.EmployeeId == command.EmployeeId && x.WorkshopId == command.WorkshopId && x.PaidLeaveType == "ساعتی"))
|
||||||
|
return op.Failed("دربازه تاریخ وارد شده مرخصی ساعتی ثبت شده است");
|
||||||
|
}
|
||||||
|
var year = Convert.ToInt32(command.StartLeave.Substring(0, 4));
|
||||||
|
var month = Convert.ToInt32(command.StartLeave.Substring(5, 2));
|
||||||
|
var paidLeaveType = command.PaidLeaveType == PaidLeaveType.Daily ? "روزانه" : "ساعتی";
|
||||||
|
var leaveType = command.LeaveType == LeaveType.PaidLeave ? "استحقاقی" : "استعلاجی";
|
||||||
|
var validation = ValidateNewLeaveWithExistingRollCalls(command.WorkshopId, command.EmployeeId, paidLeaveType, start, end);
|
||||||
|
if (validation.IsSuccedded == false)
|
||||||
|
return validation;
|
||||||
|
|
||||||
|
var employeeFullName = _employeeRepository.GetDetails(command.EmployeeId).EmployeeFullName;
|
||||||
|
var workshopName = _workshopRepository.GetDetails(command.WorkshopId).WorkshopName;
|
||||||
|
var leave = new Company.Domain.LeaveAgg.Leave(start, end, totalhourses, command.WorkshopId, command.EmployeeId
|
||||||
|
, paidLeaveType, leaveType, employeeFullName, workshopName, command.IsAccepted, command.Decription,
|
||||||
|
year, month, shiftDuration, hasShiftDuration, command.IsInvallid);
|
||||||
|
await _leaveRepository.CreateAsync(leave);
|
||||||
|
await _leaveRepository.SaveChangesAsync();
|
||||||
|
return op.Succcedded();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<OperationResult<RotatingShiftDto>> HasRotatingShift(long workshopId,long employeeId, string startLeaveDate)
|
||||||
|
{
|
||||||
|
var op = new OperationResult<RotatingShiftDto>();
|
||||||
|
var result = new RotatingShiftDto();
|
||||||
|
if (startLeaveDate.TryToGeorgianDateTime(out var startDateTimeGr) == false)
|
||||||
|
{
|
||||||
|
return op.Failed("تاریخ شروع صحیح نیست");
|
||||||
|
}
|
||||||
|
var employeeSettings = _employeeSettingsRepository.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(workshopId, employeeId);
|
||||||
|
//اگر گروه بندی نداشت
|
||||||
|
if (employeeSettings == null)
|
||||||
|
{
|
||||||
|
return op.Succcedded(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
var isActive = _rollCallEmployeeStatusApplication.IsActiveInPeriod(employeeId, workshopId, startDateTimeGr, startDateTimeGr);
|
||||||
|
|
||||||
|
result.HasRollCall = isActive && employeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Rotating;
|
||||||
|
result.RotatingShifts = employeeSettings.CustomizeRotatingShifts.Select(x =>
|
||||||
|
new CustomizeRotatingShiftsViewModel()
|
||||||
|
{
|
||||||
|
EndTime = x.EndTime.ToString("HH:mm"),
|
||||||
|
StartTime = x.StartTime.ToString("HH:mm")
|
||||||
|
}).ToList();
|
||||||
|
return op.Succcedded(result);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<LeaveListPrintDto> ListPrint(List<long> ids)
|
||||||
|
{
|
||||||
|
return await _leaveRepository.ListPrint(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<string> GetHourlyLeaveDuration(string startHours, string endHours)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(startHours) || string.IsNullOrWhiteSpace(endHours))
|
||||||
|
return "";
|
||||||
|
|
||||||
|
var start = new DateTime();
|
||||||
|
var end = new DateTime();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
start = Convert.ToDateTime(startHours);
|
||||||
|
end = Convert.ToDateTime(endHours);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (start > end || start == end)
|
||||||
|
{
|
||||||
|
end = end.AddDays(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var HourlyDate = (end - start);
|
||||||
|
var hours = (int)HourlyDate.TotalHours;
|
||||||
|
var minutes = HourlyDate.TotalMinutes % 60;
|
||||||
|
|
||||||
|
if (hours > 0 && minutes > 0)
|
||||||
|
{
|
||||||
|
return (hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه");
|
||||||
|
}
|
||||||
|
else if (hours > 0 && minutes == 0)
|
||||||
|
{
|
||||||
|
return (hours + " " + "ساعت ");
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (hours == 0 && minutes > 0)
|
||||||
|
{
|
||||||
|
return (minutes + " " + "دقیقه");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($"{hours}");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> GetDailyLeaveDuration(string startDate, string endDate)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(startDate) || string.IsNullOrWhiteSpace(endDate))
|
||||||
|
return "";
|
||||||
|
|
||||||
|
if (startDate.TryToGeorgianDateTime(out var start) == false || endDate.TryToGeorgianDateTime(out var end) == false)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (end >= start)
|
||||||
|
{
|
||||||
|
var daysSpan = (end - start).TotalDays + 1;
|
||||||
|
return $"{(int)daysSpan} روز";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "تاریخ پایان از تاریخ شروع کوچکتر است.";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -722,5 +722,11 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp
|
|||||||
return await _personalContractingPartyRepository.GetLegalDetails(id);
|
return await _personalContractingPartyRepository.GetLegalDetails(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<long> GetRepresentativeIdByNationalCode(string nationalCode)
|
||||||
|
{
|
||||||
|
var entity = await _personalContractingPartyRepository.GetByNationalCode(nationalCode);
|
||||||
|
return entity?.RepresentativeId??0;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -176,18 +176,20 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
if (item.InsuranceShare.ToMoney() != checkout.InsuranceDeduction.ToMoney())
|
if (item.InsuranceShare.ToMoney() != checkout.InsuranceDeduction.ToMoney())
|
||||||
{
|
{
|
||||||
checkout.SetUpdateNeeded();
|
checkout.SetUpdateNeeded();
|
||||||
if (!_context.CheckoutWarningMessages.Any(x => x.CheckoutId == checkout.id && x.TypeOfCheckoutWarning != TypeOfCheckoutWarning.InsuranceEmployeeShare))
|
if (!_context.CheckoutWarningMessages.Any(x =>
|
||||||
|
x.CheckoutId == checkout.id && x.TypeOfCheckoutWarning ==
|
||||||
|
TypeOfCheckoutWarning.InsuranceEmployeeShare))
|
||||||
{
|
{
|
||||||
var createWarrning =
|
var createWarrning =
|
||||||
new CheckoutWarningMessage(
|
new CheckoutWarningMessage(
|
||||||
"مبلغ بیمه سهم کارگر با مبلغ محاسبه شده در لیست بیمه مغایرت دارد", checkout.id, TypeOfCheckoutWarning.InsuranceEmployeeShare);
|
"مبلغ بیمه سهم کارگر با مبلغ محاسبه شده در لیست بیمه مغایرت دارد",
|
||||||
|
checkout.id, TypeOfCheckoutWarning.InsuranceEmployeeShare);
|
||||||
_context.CheckoutWarningMessages.Add(createWarrning);
|
_context.CheckoutWarningMessages.Add(createWarrning);
|
||||||
}
|
}
|
||||||
|
|
||||||
_context.SaveChanges();
|
_context.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +731,7 @@ 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 farisMonthName = Tools.ToFarsiMonthByNumber(command.Month);
|
||||||
|
|
||||||
var checkouts = _context.CheckoutSet.Where(x =>
|
var checkouts = _context.CheckoutSet.Where(x =>
|
||||||
x.WorkshopId == command.WorkshopId && x.Year == command.Year && x.Month == farisMonthName &&
|
x.WorkshopId == command.WorkshopId && x.Year == command.Year && x.Month == farisMonthName &&
|
||||||
@@ -759,16 +761,15 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
{
|
{
|
||||||
var createWarrning =
|
var createWarrning =
|
||||||
new CheckoutWarningMessage(
|
new CheckoutWarningMessage(
|
||||||
"مبلغ بیمه سهم کارگر با مبلغ محاسبه شده در لیست بیمه مغایرت دارد", checkout.id, TypeOfCheckoutWarning.InsuranceEmployeeShare);
|
"مبلغ بیمه سهم کارگر با مبلغ محاسبه شده در لیست بیمه مغایرت دارد",
|
||||||
|
checkout.id, TypeOfCheckoutWarning.InsuranceEmployeeShare);
|
||||||
_context.CheckoutWarningMessages.Add(createWarrning);
|
_context.CheckoutWarningMessages.Add(createWarrning);
|
||||||
}
|
}
|
||||||
|
|
||||||
_context.SaveChanges();
|
_context.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_employeeInsurancListDataRepository.SaveChanges();
|
_employeeInsurancListDataRepository.SaveChanges();
|
||||||
@@ -1777,46 +1778,76 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PagedResult<InsuranceClientListViewModel>> GetInsuranceClientList(InsuranceClientSearchModel searchModel)
|
public async Task<PagedResult<InsuranceClientListViewModel>> GetInsuranceClientList(
|
||||||
|
InsuranceClientSearchModel searchModel)
|
||||||
{
|
{
|
||||||
var workshopId = _authHelper.GetWorkshopId();
|
var workshopId = _authHelper.GetWorkshopId();
|
||||||
var query = _context.InsuranceListSet
|
var query = _context.InsuranceListSet
|
||||||
.Select(x => new InsuranceClientListViewModel
|
.Where(x => x.WorkshopId == workshopId);
|
||||||
{
|
|
||||||
Id = x.id,
|
|
||||||
WorkShopId = x.WorkshopId,
|
|
||||||
Year = x.Year,
|
|
||||||
YearInt = Convert.ToInt32(x.Year),
|
|
||||||
Month = x.Month,
|
|
||||||
MonthName = x.Month.ToFarsiMonthByNumber(),
|
|
||||||
MonthInt = Convert.ToInt32(x.Month),
|
|
||||||
}).Where(x => x.WorkShopId == workshopId);
|
|
||||||
|
|
||||||
|
|
||||||
if (searchModel.Year>0)
|
if (searchModel.Year > 0)
|
||||||
{
|
{
|
||||||
query = query.Where(x => x.YearInt == searchModel.Year);
|
query = query.Where(x => x.Year == searchModel.Year.ToString("0000"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchModel.Month > 0)
|
if (searchModel.Month > 0)
|
||||||
{
|
{
|
||||||
query = query.Where(x => x.MonthInt == searchModel.Month);
|
query = query.Where(x => x.Month == searchModel.Month.ToString("00"));
|
||||||
}
|
}
|
||||||
|
|
||||||
var res = new PagedResult<InsuranceClientListViewModel>
|
var res = new PagedResult<InsuranceClientListViewModel>
|
||||||
{
|
{
|
||||||
TotalCount = query.Count()
|
TotalCount = query.Count()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var list = (await query.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync());
|
||||||
|
|
||||||
|
var insuranceListIds = list.Select(x => x.id).ToList();
|
||||||
|
|
||||||
|
var employeeData = await _context.EmployeeInsurancListDataSet
|
||||||
|
.Where(x => insuranceListIds.Contains(x.InsuranceListId))
|
||||||
|
.GroupBy(x => x.InsuranceListId)
|
||||||
|
.Select(g => new
|
||||||
|
{
|
||||||
|
g.Key,
|
||||||
|
Count = g.Count(x=>x.LeftWorkDate != null)
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
query = searchModel.Sorting switch
|
query = searchModel.Sorting switch
|
||||||
{
|
{
|
||||||
"CreationDate-Max" => query.OrderByDescending(x => x.Id),
|
"CreationDate-Max" => query.OrderByDescending(x => x.id),
|
||||||
"CreationDate-Min" => query.OrderBy(x => x.Id),
|
"CreationDate-Min" => query.OrderBy(x => x.id),
|
||||||
"Month-Max" => query.OrderByDescending(x => x.MonthInt),
|
"Month-Max" => query.OrderByDescending(x => x.Month),
|
||||||
"Month-Min" => query.OrderBy(x => x.MonthInt),
|
"Month-Min" => query.OrderBy(x => x.Month),
|
||||||
"Year-Max" => query.OrderByDescending(x => x.YearInt),
|
"Year-Max" => query.OrderByDescending(x => x.Year),
|
||||||
"Year-Min" => query.OrderBy(x => x.YearInt),
|
"Year-Min" => query.OrderBy(x => x.Year),
|
||||||
_ => query.OrderByDescending(x => x.Id),
|
_ => query.OrderByDescending(x => x.id),
|
||||||
};
|
};
|
||||||
res.List =await query.ApplyPagination(searchModel.PageIndex,searchModel.PageSize).ToListAsync();
|
|
||||||
|
var resList = list
|
||||||
|
.Select(x => new InsuranceClientListViewModel
|
||||||
|
{
|
||||||
|
Id = x.id,
|
||||||
|
WorkShopId = x.WorkshopId,
|
||||||
|
Year = x.Year,
|
||||||
|
YearInt = Convert.ToInt32(x.Year),
|
||||||
|
Month = x.Month,
|
||||||
|
MonthName = x.Month.ToFarsiMonthByNumber(),
|
||||||
|
MonthInt = Convert.ToInt32(x.Month),
|
||||||
|
EmployerShare = x.EmployerShare.ToMoney(),
|
||||||
|
InsuredShare = x.InsuredShare.ToMoney(),
|
||||||
|
UnEmploymentInsurance = x.UnEmploymentInsurance.ToMoney(),
|
||||||
|
PersonnelCount = x.SumOfEmployees,
|
||||||
|
AllInsuredShare = (x.InsuredShare +
|
||||||
|
x.EmployerShare +
|
||||||
|
x.UnEmploymentInsurance).ToMoney(),
|
||||||
|
LeftWorkCount =employeeData.FirstOrDefault(e=>e.Key == x.id)?.Count ?? 0,
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
res.List = resList;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1882,10 +1913,10 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
query = query.Where(x => x.Month == searchModel.Month).OrderByDescending(x => x.WorkShopName)
|
query = query.Where(x => x.Month == searchModel.Month).OrderByDescending(x => x.WorkShopName)
|
||||||
.ThenByDescending(x => x.EmployerName).ThenByDescending(x => x.Year);
|
.ThenByDescending(x => x.EmployerName).ThenByDescending(x => x.Year);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(searchModel.Year) && searchModel.Year != "0")
|
if (!string.IsNullOrEmpty(searchModel.Year) && searchModel.Year != "0")
|
||||||
query = query.Where(x => x.Year == searchModel.Year).OrderByDescending(x => x.EmployerName)
|
query = query.Where(x => x.Year == searchModel.Year).OrderByDescending(x => x.EmployerName)
|
||||||
.ThenByDescending(x => x.WorkShopName).ThenByDescending(x => x.Month);
|
.ThenByDescending(x => x.WorkShopName).ThenByDescending(x => x.Month);
|
||||||
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(searchModel.WorkShopCode))
|
if (!string.IsNullOrEmpty(searchModel.WorkShopCode))
|
||||||
query = query.Where(x => x.WorkShopCode == searchModel.WorkShopCode).OrderByDescending(x => x.Year)
|
query = query.Where(x => x.WorkShopCode == searchModel.WorkShopCode).OrderByDescending(x => x.Year)
|
||||||
@@ -1965,6 +1996,77 @@ public class InsuranceListRepository : RepositoryBase<long, InsuranceList>, IIns
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<InsuranceClientPrintViewModel> ClientPrintOne(long id)
|
||||||
|
{
|
||||||
|
var insurance = await _context.InsuranceListSet.FirstOrDefaultAsync(x => x.id == id);
|
||||||
|
|
||||||
|
if (insurance == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var employeeInsurance = _context.EmployeeInsurancListDataSet
|
||||||
|
.Where(x => x.InsuranceListId == insurance.id);
|
||||||
|
|
||||||
|
var workshop = await _context.Workshops
|
||||||
|
.Include(x => x.InsuranceWorkshopInfo)
|
||||||
|
.FirstOrDefaultAsync(x => x.id == insurance.WorkshopId);
|
||||||
|
|
||||||
|
var employeeIds = await employeeInsurance
|
||||||
|
.Select(x => x.EmployeeId).ToListAsync();
|
||||||
|
|
||||||
|
var employees = await _context.Employees
|
||||||
|
.Where(x => employeeIds.Contains(x.id)).ToListAsync();
|
||||||
|
|
||||||
|
var jobIds = employeeInsurance.Select(x => x.JobId).ToList();
|
||||||
|
|
||||||
|
var jobs = await _context.Jobs
|
||||||
|
.Where(x => jobIds.Contains(x.id)).ToDictionaryAsync(x => x.id, x => x.JobName);
|
||||||
|
|
||||||
|
var employeeData = employeeInsurance.ToList().Select(x =>
|
||||||
|
{
|
||||||
|
var employee = employees.FirstOrDefault(e => e.id == x.EmployeeId);
|
||||||
|
return new InsuranceClientPrintItemsViewModel()
|
||||||
|
{
|
||||||
|
BaseYears = x.BaseYears.ToMoney(),
|
||||||
|
BenefitsIncludedContinuous = x.BenefitsIncludedContinuous.ToMoney(),
|
||||||
|
BenefitsIncludedNonContinuous = x.BenefitsIncludedNonContinuous.ToMoney(),
|
||||||
|
DailyWage = x.DailyWage.ToMoney(),
|
||||||
|
IncludedAndNotIncluded = (x.BenefitsIncludedNonContinuous + x.BenefitsIncludedContinuous).ToMoney(),
|
||||||
|
WorkingDays = x.WorkingDays.ToString(),
|
||||||
|
MarriedAllowance = x.MarriedAllowance.ToMoney(),
|
||||||
|
StartWork = x.StartWorkDate.ToFarsi(),
|
||||||
|
LeftWork = x.LeftWorkDate.ToFarsi(),
|
||||||
|
MonthlyBenefits = x.MonthlyBenefits.ToMoney(),
|
||||||
|
MonthlySalary = x.MonthlySalary.ToMoney(),
|
||||||
|
NationalCode = employee.NationalCode,
|
||||||
|
InsuranceCode = employee.InsuranceCode,
|
||||||
|
JobName = jobs.GetValueOrDefault(x.JobId, ""),
|
||||||
|
FullName = employee.FullName,
|
||||||
|
InsuranceShare = x.InsuranceShare.ToMoney(),
|
||||||
|
};
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
var result = new InsuranceClientPrintViewModel()
|
||||||
|
{
|
||||||
|
Items = employeeData.ToList(),
|
||||||
|
AllInsuredShare = (insurance.InsuredShare +
|
||||||
|
insurance.EmployerShare +
|
||||||
|
insurance.UnEmploymentInsurance).ToMoney(),
|
||||||
|
EmployerShare = insurance.EmployerShare.ToMoney(),
|
||||||
|
InsuredShare = insurance.InsuredShare.ToMoney(),
|
||||||
|
UnEmploymentInsurance = insurance.UnEmploymentInsurance.ToMoney(),
|
||||||
|
WorkshopName = workshop.InsuranceWorkshopInfo.WorkshopName,
|
||||||
|
WorkshopAddress = workshop.InsuranceWorkshopInfo.Address,
|
||||||
|
WorkshopEmployerName = workshop.InsuranceWorkshopInfo.EmployerName,
|
||||||
|
WorkshopInsuranceCode = workshop.InsuranceWorkshopInfo.InsuranceCode,
|
||||||
|
AgreementNumber = workshop.InsuranceWorkshopInfo.AgreementNumber,
|
||||||
|
ListNo = "01",
|
||||||
|
Month = insurance.Month,
|
||||||
|
Year = insurance.Year
|
||||||
|
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.InfraStructure;
|
using _0_Framework.InfraStructure;
|
||||||
using Company.Domain.LeaveAgg;
|
using Company.Domain.LeaveAgg;
|
||||||
using CompanyManagment.App.Contracts.Checkout;
|
using CompanyManagment.App.Contracts.Checkout;
|
||||||
using CompanyManagment.App.Contracts.Leave;
|
using CompanyManagment.App.Contracts.Leave;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
||||||
namespace CompanyManagment.EFCore.Repository;
|
namespace CompanyManagment.EFCore.Repository;
|
||||||
|
|
||||||
@@ -17,6 +19,7 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
|
|||||||
public LeaveRepository(CompanyContext context) : base(context)
|
public LeaveRepository(CompanyContext context) : base(context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditLeave GetDetails(long id)
|
public EditLeave GetDetails(long id)
|
||||||
@@ -290,6 +293,65 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<LeavePrintResponseViewModel>> PrintAllAsync(List<long> ids, long workshopId)
|
||||||
|
{
|
||||||
|
var leaves =await _context
|
||||||
|
.LeaveList.Where(x => ids.Contains(x.id) && x.WorkshopId == workshopId).ToListAsync();
|
||||||
|
|
||||||
|
var minLeave = leaves.Min(x => x.StartLeave);
|
||||||
|
var maxLeave = leaves.Max(x => x.EndLeave);
|
||||||
|
|
||||||
|
var employeeIds = leaves.Select(x => x.EmployeeId).Distinct().ToList();
|
||||||
|
|
||||||
|
var contracts = await _context.Contracts
|
||||||
|
.Where(x => x.WorkshopIds == workshopId && employeeIds.Contains(x.EmployeeId)
|
||||||
|
&& x.ContarctStart<= maxLeave && x.ContractEnd>= minLeave)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var employees = await _context
|
||||||
|
.Employees.Where(x=> employeeIds.Contains(x.id)).ToListAsync();
|
||||||
|
|
||||||
|
var employerNames = _context.WorkshopEmployers.Include(x=>x.Employer)
|
||||||
|
.Where(x=>x.WorkshopId == workshopId).Select(x=>x.Employer.FName+" "+x.Employer.LName).ToList();
|
||||||
|
|
||||||
|
var workshopName = _context.Workshops.FirstOrDefault(x => x.id == workshopId)?.WorkshopName;
|
||||||
|
|
||||||
|
var res = leaves.Select(leave =>
|
||||||
|
{
|
||||||
|
var employee = employees.FirstOrDefault(x => x.id == leave.EmployeeId);
|
||||||
|
return new LeavePrintResponseViewModel
|
||||||
|
{
|
||||||
|
FullName = employee?.FName + " " +
|
||||||
|
employee?.LName,
|
||||||
|
NationalCode = employee?.NationalCode,
|
||||||
|
WorkshopName = workshopName,
|
||||||
|
EmployerNames = employerNames,
|
||||||
|
PaidLeaveType = leave.PaidLeaveType,
|
||||||
|
ContractNo = contracts.FirstOrDefault(x =>
|
||||||
|
x.EmployeeId == leave.EmployeeId &&
|
||||||
|
x.ContarctStart <= leave.StartLeave &&
|
||||||
|
x.ContractEnd >= leave.EndLeave)?.ContractNo,
|
||||||
|
DailyLeave = leave.PaidLeaveType == "روزانه" ? new LeavePrintDailyResponseViewModel
|
||||||
|
{
|
||||||
|
StartLeave = leave.StartLeave.ToFarsi(),
|
||||||
|
EndLeave = leave.EndLeave.ToFarsi(),
|
||||||
|
TotalDay = leave.LeaveHourses
|
||||||
|
} : null,
|
||||||
|
|
||||||
|
HourlyLeave = leave.PaidLeaveType == "ساعتی" ?
|
||||||
|
new LeavePrintHourlyResponseViewModel
|
||||||
|
{
|
||||||
|
LeaveDate = leave.StartLeave.ToFarsi(),
|
||||||
|
StartHour = leave.StartLeave.ToString("HH:mm"),
|
||||||
|
EndHour = leave.EndLeave.ToString("HH:mm"),
|
||||||
|
TotalHour = TimeSpan.Parse(leave.LeaveHourses)
|
||||||
|
.TotalHours.ToString("F0")
|
||||||
|
} : null
|
||||||
|
};
|
||||||
|
}).ToList();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
#region Vafa
|
#region Vafa
|
||||||
|
|
||||||
public List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel)
|
public List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel)
|
||||||
@@ -371,15 +433,17 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult RemoveLeave(long id)
|
|
||||||
|
|
||||||
|
public async Task<OperationResult> RemoveLeave(long id)
|
||||||
{
|
{
|
||||||
var op = new OperationResult();
|
var op = new OperationResult();
|
||||||
var item = _context.LeaveList.FirstOrDefault(x => x.id == id);
|
var item = _context.LeaveList.FirstOrDefault(x => x.id == id);
|
||||||
if (item != null)
|
if (item != null)
|
||||||
{
|
{
|
||||||
var checkoutExist = _context.CheckoutSet
|
var checkoutExist =await _context.CheckoutSet
|
||||||
.Where(x => x.WorkshopId == item.WorkshopId && x.EmployeeId == item.EmployeeId)
|
.Where(x => x.WorkshopId == item.WorkshopId && x.EmployeeId == item.EmployeeId)
|
||||||
.Where(x => item.StartLeave <= x.ContractEnd).ToList();
|
.Where(x => item.StartLeave <= x.ContractEnd).ToListAsync();
|
||||||
if (checkoutExist.Count > 0)
|
if (checkoutExist.Count > 0)
|
||||||
{
|
{
|
||||||
return op.Failed("در بازه زمانی این مرخصی و یا بعد از آن فیش حقوقی وجود دارد");
|
return op.Failed("در بازه زمانی این مرخصی و یا بعد از آن فیش حقوقی وجود دارد");
|
||||||
@@ -536,4 +600,250 @@ public class LeaveRepository : RepositoryBase<long, Leave>, ILeaveRepository
|
|||||||
(starContract >= x.StartLeaveGr && starContract <= x.EndLeaveGr) ||
|
(starContract >= x.StartLeaveGr && starContract <= x.EndLeaveGr) ||
|
||||||
(endContract >= x.StartLeaveGr && endContract <= x.EndLeaveGr));
|
(endContract >= x.StartLeaveGr && endContract <= x.EndLeaveGr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
public async Task<PagedResult<leaveListDto>> GetList(LeaveListSearchModel searchModel)
|
||||||
|
{
|
||||||
|
var query = _context.LeaveList.Where(x => x.WorkshopId == searchModel.WorkshopId);
|
||||||
|
|
||||||
|
if (searchModel.EmployeeId != 0)
|
||||||
|
query = query.Where(x => x.EmployeeId == searchModel.EmployeeId);
|
||||||
|
|
||||||
|
if (searchModel.LeaveType == LeaveType.PaidLeave)
|
||||||
|
query = query.Where(x => x.LeaveType == "استحقاقی");
|
||||||
|
|
||||||
|
if (searchModel.LeaveType == LeaveType.SickLeave)
|
||||||
|
query = query.Where(x => x.LeaveType == "استعلاجی");
|
||||||
|
|
||||||
|
if (searchModel.IsInvalid)
|
||||||
|
{
|
||||||
|
query = query.IgnoreQueryFilters().Where(x => x.IsInvalid);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.StartLeave) && !string.IsNullOrWhiteSpace(searchModel.EndLeave))
|
||||||
|
{
|
||||||
|
var start = new DateTime();
|
||||||
|
var end = new DateTime();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
start = searchModel.StartLeave.ToGeorgianDateTime();
|
||||||
|
end = searchModel.EndLeave.ToGeorgianDateTime();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return new PagedResult<leaveListDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
query = query.Where(x => x.StartLeave >= start && x.EndLeave <= end);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrWhiteSpace(searchModel.YearStr) || !string.IsNullOrWhiteSpace(searchModel.MonthStr))
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.YearStr))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int year = Convert.ToInt32(searchModel.YearStr);
|
||||||
|
query = query.Where(x => x.Year == year);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return new PagedResult<leaveListDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.MonthStr))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int month = Convert.ToInt32(searchModel.MonthStr);
|
||||||
|
query = query.Where(x => x.Month == month);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return new PagedResult<leaveListDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
var count = await query.CountAsync();
|
||||||
|
query = query.OrderByDescending(x => x.CreationDate);
|
||||||
|
var queryPaginationFilter = await query.ApplyPagination(searchModel.PageIndex, searchModel.PageSize).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var leaveResult = queryPaginationFilter.Select(item => new leaveListDto()
|
||||||
|
{
|
||||||
|
Id = item.id,
|
||||||
|
EmployeeFullName = item.EmployeeFullName,
|
||||||
|
YearStr = $"{item.Year}",
|
||||||
|
MonthStr = item.Month.ToFarsiMonthByIntNumber(),
|
||||||
|
IsInvalid = item.IsInvalid,
|
||||||
|
LeaveType = item.LeaveType,
|
||||||
|
StartLeave = item.StartLeave.ToFarsi(),
|
||||||
|
EndLeave = item.EndLeave.ToFarsi(),
|
||||||
|
HourlyInterval = item.PaidLeaveType == "ساعتی" ? $"{item.StartLeave.TimeOfDay:hh\\:mm} الی {item.EndLeave.TimeOfDay:hh\\:mm}" : "-",
|
||||||
|
LeaveDuration = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType, item.LeaveHourses),
|
||||||
|
IsAccepted = item.IsAccepted,
|
||||||
|
WorkshopId = item.WorkshopId,
|
||||||
|
EmployeeId = item.EmployeeId,
|
||||||
|
|
||||||
|
}).ToList();
|
||||||
|
return new PagedResult<leaveListDto>()
|
||||||
|
{
|
||||||
|
TotalCount = count,
|
||||||
|
List = leaveResult
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<List<GroupLeaveListDto>> GetGroupList(LeaveListSearchModel searchModel)
|
||||||
|
{
|
||||||
|
var query = _context.LeaveList.Where(x => x.WorkshopId == searchModel.WorkshopId && x.EmployeeId == searchModel.EmployeeId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (searchModel.LeaveType == LeaveType.PaidLeave)
|
||||||
|
query = query.Where(x => x.LeaveType == "استحقاقی");
|
||||||
|
|
||||||
|
if (searchModel.LeaveType == LeaveType.SickLeave)
|
||||||
|
query = query.Where(x => x.LeaveType == "استعلاجی");
|
||||||
|
|
||||||
|
if (searchModel.IsInvalid)
|
||||||
|
{
|
||||||
|
query = query.IgnoreQueryFilters().Where(x => x.IsInvalid);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.StartLeave) && !string.IsNullOrWhiteSpace(searchModel.EndLeave))
|
||||||
|
{
|
||||||
|
var start = new DateTime();
|
||||||
|
var end = new DateTime();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
start = searchModel.StartLeave.ToGeorgianDateTime();
|
||||||
|
end = searchModel.EndLeave.ToGeorgianDateTime();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return new List<GroupLeaveListDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
query = query.Where(x => x.StartLeave >= start && x.EndLeave <= end);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrWhiteSpace(searchModel.YearStr) || !string.IsNullOrWhiteSpace(searchModel.MonthStr))
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.YearStr))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int year = Convert.ToInt32(searchModel.YearStr);
|
||||||
|
query = query.Where(x => x.Year == year);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return new List<GroupLeaveListDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.MonthStr))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int month = Convert.ToInt32(searchModel.MonthStr);
|
||||||
|
query = query.Where(x => x.Month == month);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return new List<GroupLeaveListDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var leaveList = await query.GroupBy(x => new { x.Year, x.Month })
|
||||||
|
.OrderByDescending(group => group.Key.Year)
|
||||||
|
.ThenByDescending(group => group.Key.Month)
|
||||||
|
.Select(group => new GroupLeaveListDto
|
||||||
|
{
|
||||||
|
YearStr = $"{group.Key.Year}",
|
||||||
|
MonthStr = group.Key.Month.ToFarsiMonthByIntNumber(),
|
||||||
|
LeaveListItemsDto = group.OrderByDescending(x=>x.StartLeave).Select(item => new LeaveListItemsDto
|
||||||
|
{
|
||||||
|
Id = item.id,
|
||||||
|
IsInvalid = item.IsInvalid,
|
||||||
|
LeaveType = item.LeaveType,
|
||||||
|
StartLeave = item.StartLeave.ToFarsi(),
|
||||||
|
EndLeave = item.EndLeave.ToFarsi(),
|
||||||
|
HourlyInterval = item.PaidLeaveType == "ساعتی" ? $"{item.StartLeave.TimeOfDay:hh\\:mm} الی {item.EndLeave.TimeOfDay:hh\\:mm}" : "-",
|
||||||
|
LeaveDuration = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType, item.LeaveHourses),
|
||||||
|
IsAccepted = item.IsAccepted,
|
||||||
|
WorkshopId = item.WorkshopId,
|
||||||
|
EmployeeId = item.EmployeeId,
|
||||||
|
}).ToList()
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
return leaveList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<LeaveListPrintDto> ListPrint(List<long> ids)
|
||||||
|
{
|
||||||
|
var result = new LeaveListPrintDto();
|
||||||
|
var timeSpanHourlyLeave = new TimeSpan();
|
||||||
|
var dailyLeaveTime = new TimeSpan();
|
||||||
|
if (ids.Any())
|
||||||
|
{
|
||||||
|
var query = _context.LeaveList.Where(x => ids.Contains(x.id)).OrderByDescending(x=>x.StartLeave).AsQueryable();
|
||||||
|
|
||||||
|
#region sumOfLeaves
|
||||||
|
|
||||||
|
var hourly = await query.Where(x => x.PaidLeaveType == "ساعتی").Select(x => x.LeaveHourses).ToListAsync();
|
||||||
|
var daily = await query.Where(x => x.PaidLeaveType == "روزانه").Select(x => x.LeaveHourses).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
if (hourly.Any())
|
||||||
|
timeSpanHourlyLeave = new TimeSpan(hourly.Sum(x => TimeOnly.Parse(x).Ticks));
|
||||||
|
if (daily.Any())
|
||||||
|
dailyLeaveTime = daily.Sum(x => Convert.ToInt32(x)) * TimeSpan.FromDays(1);
|
||||||
|
|
||||||
|
var sumOfLeaves = timeSpanHourlyLeave.Add(dailyLeaveTime);
|
||||||
|
|
||||||
|
result.SumOfEmployeeleaves = sumOfLeaves.ToFarsiDaysAndHoursAndMinutes();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
result.LeavePrintListItemsDto = await query.Select(item => new LeavePrintListItemsDto
|
||||||
|
{
|
||||||
|
YearStr = $"{item.Year}",
|
||||||
|
MonthStr = item.Month.ToFarsiMonthByIntNumber(),
|
||||||
|
StartLeave = item.StartLeave.ToFarsi(),
|
||||||
|
EndLeave = item.EndLeave.ToFarsi(),
|
||||||
|
LeaveType = item.LeaveType,
|
||||||
|
HourlyInterval = item.PaidLeaveType == "ساعتی" ? $"{item.StartLeave.TimeOfDay:hh\\:mm} الی {item.EndLeave.TimeOfDay:hh\\:mm}" : "-",
|
||||||
|
LeaveDuration = Tools.CalculateLeaveHoursAndDays(item.PaidLeaveType, item.LeaveHourses),
|
||||||
|
IsAccepted = item.IsAccepted,
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
result.EmployeeFullName = query.FirstOrDefault()!.EmployeeFullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -40,16 +40,15 @@ public class institutionContractController : AdminBaseController
|
|||||||
private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication;
|
private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication;
|
||||||
private readonly IPaymentGateway _paymentGateway;
|
private readonly IPaymentGateway _paymentGateway;
|
||||||
|
|
||||||
private static readonly ConcurrentDictionary<Guid, SemaphoreSlim> _locks
|
private static readonly ConcurrentDictionary<Guid, SemaphoreSlim> _locks
|
||||||
= new ConcurrentDictionary<Guid, SemaphoreSlim>();
|
= new ConcurrentDictionary<Guid, SemaphoreSlim>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public institutionContractController(IInstitutionContractApplication institutionContractApplication,
|
public institutionContractController(IInstitutionContractApplication institutionContractApplication,
|
||||||
IPersonalContractingPartyApp contractingPartyApplication, IContactInfoApplication contactInfoApplication,
|
IPersonalContractingPartyApp contractingPartyApplication, IContactInfoApplication contactInfoApplication,
|
||||||
IAccountApplication accountApplication, IEmployerApplication employerApplication,
|
IAccountApplication accountApplication, IEmployerApplication employerApplication,
|
||||||
IWorkshopApplication workshopApplication, ITemporaryClientRegistrationApplication temporaryClientRegistration,
|
IWorkshopApplication workshopApplication, ITemporaryClientRegistrationApplication temporaryClientRegistration,
|
||||||
ITemporaryClientRegistrationApplication clientRegistrationApplication,IHttpClientFactory httpClientFactory)
|
ITemporaryClientRegistrationApplication clientRegistrationApplication, IHttpClientFactory httpClientFactory)
|
||||||
{
|
{
|
||||||
_institutionContractApplication = institutionContractApplication;
|
_institutionContractApplication = institutionContractApplication;
|
||||||
_contractingPartyApplication = contractingPartyApplication;
|
_contractingPartyApplication = contractingPartyApplication;
|
||||||
@@ -72,12 +71,13 @@ public class institutionContractController : AdminBaseController
|
|||||||
{
|
{
|
||||||
return await _institutionContractApplication.GetList(searchModel);
|
return await _institutionContractApplication.GetList(searchModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("select-list")]
|
[HttpGet("select-list")]
|
||||||
public async Task<ActionResult<List<InstitutionContractSelectListViewModel>>> GetContractingPartySelectList(string search,string selected)
|
public async Task<ActionResult<List<InstitutionContractSelectListViewModel>>> GetContractingPartySelectList(
|
||||||
|
string search, string selected)
|
||||||
{
|
{
|
||||||
var result = await _institutionContractApplication
|
var result = await _institutionContractApplication
|
||||||
.GetInstitutionContractSelectList(search,selected);
|
.GetInstitutionContractSelectList(search, selected);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,9 +225,8 @@ public class institutionContractController : AdminBaseController
|
|||||||
{
|
{
|
||||||
_institutionContractApplication.RemoveContract(id);
|
_institutionContractApplication.RemoveContract(id);
|
||||||
return new OperationResult().Succcedded();
|
return new OperationResult().Succcedded();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("deActive/{id}")]
|
[HttpPost("deActive/{id}")]
|
||||||
public ActionResult<OperationResult> DeActive(long id, string balance)
|
public ActionResult<OperationResult> DeActive(long id, string balance)
|
||||||
{
|
{
|
||||||
@@ -349,7 +348,7 @@ public class institutionContractController : AdminBaseController
|
|||||||
|
|
||||||
[HttpPost("create/inquiry")]
|
[HttpPost("create/inquiry")]
|
||||||
public async Task<ActionResult<OperationResult<ContractingPartyTempViewModel>>> CreateInquiry(
|
public async Task<ActionResult<OperationResult<ContractingPartyTempViewModel>>> CreateInquiry(
|
||||||
[FromBody] CreateInquiryRequest request)
|
[FromBody] InstitutionContractCreationInquiryRequest request)
|
||||||
{
|
{
|
||||||
var res = await _temporaryClientRegistration.CreateContractingPartyTemp(request.NationalCode,
|
var res = await _temporaryClientRegistration.CreateContractingPartyTemp(request.NationalCode,
|
||||||
request.DateOfBirth,
|
request.DateOfBirth,
|
||||||
@@ -358,7 +357,8 @@ public class institutionContractController : AdminBaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("workshop-service-calculator")]
|
[HttpPost("workshop-service-calculator")]
|
||||||
public ActionResult<WorkshopServiceCalculatorResponse> WorkshopServiceCalculator([FromBody]CreateWorkshopTemp command)
|
public ActionResult<WorkshopServiceCalculatorResponse> WorkshopServiceCalculator(
|
||||||
|
[FromBody] CreateWorkshopTemp command)
|
||||||
{
|
{
|
||||||
var workshopTemp = new WorkshopTempViewModel
|
var workshopTemp = new WorkshopTempViewModel
|
||||||
{
|
{
|
||||||
@@ -373,7 +373,7 @@ public class institutionContractController : AdminBaseController
|
|||||||
};
|
};
|
||||||
|
|
||||||
var response = _temporaryClientRegistration.GetInstitutionPlanForWorkshop(workshopTemp);
|
var response = _temporaryClientRegistration.GetInstitutionPlanForWorkshop(workshopTemp);
|
||||||
|
|
||||||
var result = new WorkshopServiceCalculatorResponse
|
var result = new WorkshopServiceCalculatorResponse
|
||||||
{
|
{
|
||||||
TotalAmount = response.OnlineAndInPersonSumAmountStr
|
TotalAmount = response.OnlineAndInPersonSumAmountStr
|
||||||
@@ -385,7 +385,8 @@ public class institutionContractController : AdminBaseController
|
|||||||
public async Task<ActionResult<InstitutionPlanCalculatorResponse>> InstitutionPlanCalculator(
|
public async Task<ActionResult<InstitutionPlanCalculatorResponse>> InstitutionPlanCalculator(
|
||||||
[FromBody] InstitutionPlanCalculatorRequest request)
|
[FromBody] InstitutionPlanCalculatorRequest request)
|
||||||
{
|
{
|
||||||
var res = await _temporaryClientRegistration.GetTotalPaymentAndWorkshopList(request.TotalAmountMonth,duration: request.Duration,request.HasInPersonContract);
|
var res = await _temporaryClientRegistration.GetTotalPaymentAndWorkshopList(request.TotalAmountMonth,
|
||||||
|
duration: request.Duration, request.HasInPersonContract);
|
||||||
var result = new InstitutionPlanCalculatorResponse()
|
var result = new InstitutionPlanCalculatorResponse()
|
||||||
{
|
{
|
||||||
TotalAmountWithTax = res.OneTimeTotalPaymentStr,
|
TotalAmountWithTax = res.OneTimeTotalPaymentStr,
|
||||||
@@ -403,7 +404,6 @@ public class institutionContractController : AdminBaseController
|
|||||||
Obligation = res.OneTimeTotalPaymentStr,
|
Obligation = res.OneTimeTotalPaymentStr,
|
||||||
PaymentForOneMonth = res.SumOfWorkshopsPayment,
|
PaymentForOneMonth = res.SumOfWorkshopsPayment,
|
||||||
DiscountedAmountForOneMonth = res.DiscountedAmountForOneMonth
|
DiscountedAmountForOneMonth = res.DiscountedAmountForOneMonth
|
||||||
|
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -414,13 +414,13 @@ public class institutionContractController : AdminBaseController
|
|||||||
/// <param name="command"></param>
|
/// <param name="command"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<ActionResult<OperationResult>> Create([FromBody]CreateInstitutionContractRequest command)
|
public async Task<ActionResult<OperationResult>> Create([FromBody] CreateInstitutionContractRequest command)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.CreateAsync(command);
|
var res = await _institutionContractApplication.CreateAsync(command);
|
||||||
|
|
||||||
if(!res.IsSuccedded)
|
if (!res.IsSuccedded)
|
||||||
throw new BadRequestException(res.Message);
|
throw new BadRequestException(res.Message);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -448,22 +448,26 @@ public class institutionContractController : AdminBaseController
|
|||||||
|
|
||||||
if (operationResult.IsSuccedded)
|
if (operationResult.IsSuccedded)
|
||||||
transaction.Complete();
|
transaction.Complete();
|
||||||
|
|
||||||
return operationResult;
|
return operationResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("create/set-discount")]
|
[HttpPost("create/set-discount")]
|
||||||
public ActionResult<InstitutionContractDiscountResponse> SetDiscountForInstitutionContract([FromBody]InstitutionContractSetDiscountRequest request)
|
public ActionResult<InstitutionContractDiscountResponse> SetDiscountForInstitutionContract(
|
||||||
|
[FromBody] InstitutionContractSetDiscountRequest request)
|
||||||
{
|
{
|
||||||
var res = _institutionContractApplication.CalculateDiscount(request);
|
var res = _institutionContractApplication.CalculateDiscount(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("create/reset-discount")]
|
[HttpPost("create/reset-discount")]
|
||||||
public ActionResult<InstitutionContractDiscountResponse> ResetDiscountForCreate([FromBody]InstitutionContractResetDiscountForCreateRequest request)
|
public ActionResult<InstitutionContractDiscountResponse> ResetDiscountForCreate(
|
||||||
|
[FromBody] InstitutionContractResetDiscountForCreateRequest request)
|
||||||
{
|
{
|
||||||
var res = _institutionContractApplication.ResetDiscountCreate(request);
|
var res = _institutionContractApplication.ResetDiscountCreate(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -484,15 +488,15 @@ public class institutionContractController : AdminBaseController
|
|||||||
var paymentRedirectUrl = Url.Action("ProcessPayment", "institutionContract", null, Request.Scheme);
|
var paymentRedirectUrl = Url.Action("ProcessPayment", "institutionContract", null, Request.Scheme);
|
||||||
var callback = Url.Action("Verify", "General", null, Request.Scheme);
|
var callback = Url.Action("Verify", "General", null, Request.Scheme);
|
||||||
var res = await _institutionContractApplication.VerifyOtpAndMakeGateway(command.Id, command.Code, callback);
|
var res = await _institutionContractApplication.VerifyOtpAndMakeGateway(command.Id, command.Code, callback);
|
||||||
|
|
||||||
if (!res.IsSuccedded)
|
if (!res.IsSuccedded)
|
||||||
return new OperationResult<string>().Failed(res.Message);
|
return new OperationResult<string>().Failed(res.Message);
|
||||||
|
|
||||||
var payUrl = _paymentGateway.GetStartPayUrl(res.Data);
|
var payUrl = _paymentGateway.GetStartPayUrl(res.Data);
|
||||||
|
|
||||||
// URL کامل برای redirect شامل paymentUrl به عنوان query parameter
|
// URL کامل برای redirect شامل paymentUrl به عنوان query parameter
|
||||||
var redirectUrl = $"{paymentRedirectUrl}?paymentUrl={Uri.EscapeDataString(payUrl)}";
|
var redirectUrl = $"{paymentRedirectUrl}?paymentUrl={Uri.EscapeDataString(payUrl)}";
|
||||||
|
|
||||||
return new OperationResult<string>().Succcedded(redirectUrl);
|
return new OperationResult<string>().Succcedded(redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -504,13 +508,12 @@ public class institutionContractController : AdminBaseController
|
|||||||
{
|
{
|
||||||
return BadRequest("Payment URL is required");
|
return BadRequest("Payment URL is required");
|
||||||
}
|
}
|
||||||
|
|
||||||
// redirect به درگاه پرداخت
|
// redirect به درگاه پرداخت
|
||||||
return Redirect(paymentUrl);
|
return Redirect(paymentUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("/api/institutionContract/Verification/{id:guid}/send-otp")]
|
[HttpPost("/api/institutionContract/Verification/{id:guid}/send-otp")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<ActionResult<OperationResult<OtpResultViewModel>>> SendVerifyOtp(Guid id)
|
public async Task<ActionResult<OperationResult<OtpResultViewModel>>> SendVerifyOtp(Guid id)
|
||||||
@@ -528,97 +531,177 @@ public class institutionContractController : AdminBaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Create
|
||||||
|
|
||||||
|
[HttpPost("creation/inquiry")]
|
||||||
|
public async Task<ActionResult<InstitutionContractCreationInquiryResult>> CreationInquiry(
|
||||||
|
InstitutionContractCreationInquiryRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.CreationInquiry(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("creation/get-representative")]
|
||||||
|
public async Task<ActionResult<InstitutionContractCreationGetRepresentativeIdResponse>> GetRepresentatives(string nationalCode)
|
||||||
|
{
|
||||||
|
var res = await _contractingPartyApplication.GetRepresentativeIdByNationalCode(nationalCode);
|
||||||
|
return new InstitutionContractCreationGetRepresentativeIdResponse()
|
||||||
|
{
|
||||||
|
RepresentativeId = res
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("creation/workshops")]
|
||||||
|
public async Task<ActionResult<InstitutionContractCreationWorkshopsResponse>> CreationWorkshops(
|
||||||
|
[FromBody] InstitutionContractCreationWorkshopsRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.GetCreationWorkshops(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("creation/institution-plan")]
|
||||||
|
public async Task<ActionResult<InstitutionContractCreationPlanResponse>> CreationInstitutionPlan(
|
||||||
|
[FromBody] InstitutionContractCreationPlanRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.GetCreationInstitutionPlan(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("creation/payment-method")]
|
||||||
|
public async Task<ActionResult<InstitutionContractCreationPaymentResponse>> GetCreationPaymentMethod(
|
||||||
|
[FromBody] InstitutionContractCreationPaymentRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.GetCreationPaymentMethod(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("creation/set-discount")]
|
||||||
|
public async Task<ActionResult<InstitutionContractDiscountResponse>> SetDiscountForCreation(
|
||||||
|
[FromBody] InstitutionContractSetDiscountForCreationRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.SetDiscountForCreation(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("creation/reset-discount")]
|
||||||
|
public async Task<ActionResult<InstitutionContractDiscountResponse>> ResetDiscountForCreation(
|
||||||
|
[FromBody] InstitutionContractResetDiscountForExtensionRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.ResetDiscountForCreation(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("creation/complete")]
|
||||||
|
public async Task<ActionResult<OperationResult>> CreationComplete(
|
||||||
|
[FromBody] InstitutionContractExtensionCompleteRequest request)
|
||||||
|
{
|
||||||
|
var res = await _institutionContractApplication.CreationComplete(request);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
[HttpGet("extenstion/inquiry/{previousContractId}")]
|
[HttpGet("extenstion/inquiry/{previousContractId}")]
|
||||||
public async Task<ActionResult<InstitutionContractExtensionInquiryResult>> ExtensionInquiry(long previousContractId)
|
public async Task<ActionResult<InstitutionContractExtensionInquiryResult>> ExtensionInquiry(long previousContractId)
|
||||||
{
|
{
|
||||||
var res= await _institutionContractApplication.GetExtensionInquiry(previousContractId);
|
var res = await _institutionContractApplication.GetExtensionInquiry(previousContractId);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("extenstion/workshops")]
|
[HttpPost("extenstion/workshops")]
|
||||||
public async Task<ActionResult<InstitutionContractExtensionWorkshopsResponse>> ExtensionWorkshops([FromBody] InstitutionContractExtensionWorkshopsRequest request)
|
public async Task<ActionResult<InstitutionContractExtensionWorkshopsResponse>> ExtensionWorkshops(
|
||||||
|
[FromBody] InstitutionContractExtensionWorkshopsRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.GetExtensionWorkshops(request);
|
var res = await _institutionContractApplication.GetExtensionWorkshops(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("extenstion/institution-plan")]
|
[HttpPost("extenstion/institution-plan")]
|
||||||
public async Task<ActionResult<InstitutionContractExtensionPlanResponse>> ExtensionInstitutionPlan([FromBody]InstitutionContractExtensionPlanRequest request)
|
public async Task<ActionResult<InstitutionContractExtensionPlanResponse>> ExtensionInstitutionPlan(
|
||||||
|
[FromBody] InstitutionContractExtensionPlanRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.GetExtensionInstitutionPlan(request);
|
var res = await _institutionContractApplication.GetExtensionInstitutionPlan(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("extenstion/payment-method")]
|
[HttpPost("extenstion/payment-method")]
|
||||||
public async Task<ActionResult<InstitutionContractExtensionPaymentResponse>> GetExtensionPaymentMethod([FromBody]InstitutionContractExtensionPaymentRequest request)
|
public async Task<ActionResult<InstitutionContractExtensionPaymentResponse>> GetExtensionPaymentMethod(
|
||||||
|
[FromBody] InstitutionContractExtensionPaymentRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.GetExtensionPaymentMethod(request);
|
var res = await _institutionContractApplication.GetExtensionPaymentMethod(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("extension/set-discount")]
|
[HttpPost("extension/set-discount")]
|
||||||
public async Task<ActionResult<InstitutionContractDiscountResponse>> SetDiscountForExtension([FromBody]InstitutionContractSetDiscountForExtensionRequest request)
|
public async Task<ActionResult<InstitutionContractDiscountResponse>> SetDiscountForExtension(
|
||||||
|
[FromBody] InstitutionContractSetDiscountForExtensionRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.SetDiscountForExtension(request);
|
var res = await _institutionContractApplication.SetDiscountForExtension(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("extension/reset-discount")]
|
[HttpPost("extension/reset-discount")]
|
||||||
public async Task<ActionResult<InstitutionContractDiscountResponse>> ResetDiscountForExtension([FromBody]InstitutionContractResetDiscountForExtensionRequest request)
|
public async Task<ActionResult<InstitutionContractDiscountResponse>> ResetDiscountForExtension(
|
||||||
|
[FromBody] InstitutionContractResetDiscountForExtensionRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.ResetDiscountForExtension(request);
|
var res = await _institutionContractApplication.ResetDiscountForExtension(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("extenstion/complete")]
|
[HttpPost("extenstion/complete")]
|
||||||
public async Task<ActionResult<OperationResult>> ExtensionComplete([FromBody]InstitutionContractExtensionCompleteRequest request)
|
public async Task<ActionResult<OperationResult>> ExtensionComplete(
|
||||||
|
[FromBody] InstitutionContractExtensionCompleteRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.ExtensionComplete(request);
|
var res = await _institutionContractApplication.ExtensionComplete(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("amendment/workshops/{institutionContractId}")]
|
[HttpGet("amendment/workshops/{institutionContractId}")]
|
||||||
public async Task<ActionResult<InstitutionContractAmendmentWorkshopsResponse>> GetAmendmentWorkshops(long institutionContractId)
|
public async Task<ActionResult<InstitutionContractAmendmentWorkshopsResponse>> GetAmendmentWorkshops(
|
||||||
|
long institutionContractId)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.GetAmendmentWorkshops(institutionContractId);
|
var res = await _institutionContractApplication.GetAmendmentWorkshops(institutionContractId);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("resend-verify-link/{institutionContractId}")]
|
[HttpPost("resend-verify-link/{institutionContractId}")]
|
||||||
public async Task<OperationResult> ResendVerifyLink(long institutionContractId)
|
public async Task<OperationResult> ResendVerifyLink(long institutionContractId)
|
||||||
{
|
{
|
||||||
var res = await _institutionContractApplication.ResendVerifyLink(institutionContractId);
|
var res = await _institutionContractApplication.ResendVerifyLink(institutionContractId);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("amendment/insert-temp-workshops")]
|
[HttpPost("amendment/insert-temp-workshops")]
|
||||||
public async Task<ActionResult<InsertAmendmentTempWorkshopResponse>> InsertAmendmentTempWorkshops([FromBody]InstitutionContractAmendmentTempWorkshopViewModel request)
|
public async Task<ActionResult<InsertAmendmentTempWorkshopResponse>> InsertAmendmentTempWorkshops(
|
||||||
|
[FromBody] InstitutionContractAmendmentTempWorkshopViewModel request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.InsertAmendmentTempWorkshops(request);
|
var res = await _institutionContractApplication.InsertAmendmentTempWorkshops(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpDelete("amendment/remove-temp-workshops/{workshopTempId:guid}")]
|
[HttpDelete("amendment/remove-temp-workshops/{workshopTempId:guid}")]
|
||||||
public async Task<ActionResult> RemoveAmendmentWorkshops(Guid workshopTempId)
|
public async Task<ActionResult> RemoveAmendmentWorkshops(Guid workshopTempId)
|
||||||
{
|
{
|
||||||
await _institutionContractApplication.RemoveAmendmentWorkshops(workshopTempId);
|
await _institutionContractApplication.RemoveAmendmentWorkshops(workshopTempId);
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("amendment/payment-details")]
|
[HttpPost("amendment/payment-details")]
|
||||||
public async Task<ActionResult<InsitutionContractAmendmentPaymentResponse>> GetAmendmentPaymentDetails([FromBody]InsitutionContractAmendmentPaymentRequest request)
|
public async Task<ActionResult<InsitutionContractAmendmentPaymentResponse>> GetAmendmentPaymentDetails(
|
||||||
|
[FromBody] InsitutionContractAmendmentPaymentRequest request)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.GetAmendmentPaymentDetails(request);
|
var res = await _institutionContractApplication.GetAmendmentPaymentDetails(request);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpGet("edit-old/{id}")]
|
[HttpGet("edit-old/{id}")]
|
||||||
public ActionResult<EditInstitutionContract> GetEditOldDetails(long id)
|
public ActionResult<EditInstitutionContract> GetEditOldDetails(long id)
|
||||||
{
|
{
|
||||||
var representativList = new List<RepresentativeViewModel>();
|
var representativList = new List<RepresentativeViewModel>();
|
||||||
var contractingPartyList = new List<PersonalContractingPartyViewModel>();
|
var contractingPartyList = new List<PersonalContractingPartyViewModel>();
|
||||||
var res = _institutionContractApplication.GetDetails(id);
|
var res = _institutionContractApplication.GetDetails(id);
|
||||||
|
|
||||||
var representative = new RepresentativeViewModel
|
var representative = new RepresentativeViewModel
|
||||||
{
|
{
|
||||||
Id = res.RepresentativeId,
|
Id = res.RepresentativeId,
|
||||||
@@ -683,13 +766,14 @@ public class institutionContractController : AdminBaseController
|
|||||||
res.ContractAmountOAlone = res.ContractAmountString;
|
res.ContractAmountOAlone = res.ContractAmountString;
|
||||||
res.ValueAddedTaxStr = "0";
|
res.ValueAddedTaxStr = "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("edit-old")]
|
[HttpPost("edit-old")]
|
||||||
public ActionResult<OperationResult> EditOld([FromBody] EditInstitutionContract command)
|
public ActionResult<OperationResult> EditOld([FromBody] EditInstitutionContract command)
|
||||||
{
|
{
|
||||||
var op = new OperationResult();
|
var op = new OperationResult();
|
||||||
var phoneNumber = command.ContactInformationList.FirstOrDefault(x =>
|
var phoneNumber = command.ContactInformationList.FirstOrDefault(x =>
|
||||||
x.SendSmsString == "true" && x.Position == "طرف قرارداد" && x.PhoneType == "شماره همراه");
|
x.SendSmsString == "true" && x.Position == "طرف قرارداد" && x.PhoneType == "شماره همراه");
|
||||||
var conractingParty = _contractingPartyApplication.GetDetails(command.ContractingPartyId);
|
var conractingParty = _contractingPartyApplication.GetDetails(command.ContractingPartyId);
|
||||||
@@ -703,57 +787,58 @@ public class institutionContractController : AdminBaseController
|
|||||||
//if (string.IsNullOrWhiteSpace(command.HasValueAddedTax))
|
//if (string.IsNullOrWhiteSpace(command.HasValueAddedTax))
|
||||||
// command.HasValueAddedTax = "false";
|
// command.HasValueAddedTax = "false";
|
||||||
var result = _institutionContractApplication.Edit(command);
|
var result = _institutionContractApplication.Edit(command);
|
||||||
var contractingPartyId = _institutionContractApplication.GetDetails(result.SendId);
|
var contractingPartyId = _institutionContractApplication.GetDetails(result.SendId);
|
||||||
var counter = command.ContactInformationList.Count;
|
var counter = command.ContactInformationList.Count;
|
||||||
var getOldContarct = _institutionContractApplication.NewSearch(new InstitutionContractSearchModel()
|
var getOldContarct = _institutionContractApplication.NewSearch(new InstitutionContractSearchModel()
|
||||||
{ ContractingPartyId = contractingPartyId.ContractingPartyId, IsActiveString = "both" }).Where(x=>x.IsActiveString == "false" || x.IsActiveString == "blue").ToList();
|
{ ContractingPartyId = contractingPartyId.ContractingPartyId, IsActiveString = "both" })
|
||||||
if (result.IsSuccedded && counter > 0)
|
.Where(x => x.IsActiveString == "false" || x.IsActiveString == "blue").ToList();
|
||||||
{
|
if (result.IsSuccedded && counter > 0)
|
||||||
|
{
|
||||||
if (getOldContarct.Count > 0)
|
if (getOldContarct.Count > 0)
|
||||||
{
|
{
|
||||||
foreach (var item in getOldContarct)
|
foreach (var item in getOldContarct)
|
||||||
{
|
{
|
||||||
_contactInfoApplication.RemoveContactInfo(item.Id);
|
_contactInfoApplication.RemoveContactInfo(item.Id);
|
||||||
foreach (var phone in command.ContactInformationList)
|
foreach (var phone in command.ContactInformationList)
|
||||||
{
|
{
|
||||||
if (phone.PhoneNumber != null)
|
if (phone.PhoneNumber != null)
|
||||||
{
|
{
|
||||||
var contactinfo = new CreateContactInfo
|
var contactinfo = new CreateContactInfo
|
||||||
{
|
{
|
||||||
InstitutionContractId = item.Id,
|
InstitutionContractId = item.Id,
|
||||||
PhoneType = phone.PhoneType,
|
PhoneType = phone.PhoneType,
|
||||||
Position = phone.Position,
|
Position = phone.Position,
|
||||||
PhoneNumber = phone.PhoneNumber,
|
PhoneNumber = phone.PhoneNumber,
|
||||||
FnameLname = phone.FnameLname,
|
FnameLname = phone.FnameLname,
|
||||||
SendSms = phone.SendSmsString == "true" ? true : false
|
SendSms = phone.SendSmsString == "true" ? true : false
|
||||||
};
|
};
|
||||||
_contactInfoApplication.Create(contactinfo);
|
_contactInfoApplication.Create(contactinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_contactInfoApplication.RemoveContactInfo(command.Id);
|
|
||||||
foreach (var item in command.ContactInformationList)
|
|
||||||
{
|
|
||||||
if (item.PhoneNumber != null)
|
|
||||||
{
|
|
||||||
var contactinfo = new CreateContactInfo
|
|
||||||
{
|
|
||||||
InstitutionContractId = result.SendId,
|
|
||||||
PhoneType = item.PhoneType,
|
|
||||||
Position = item.Position,
|
|
||||||
PhoneNumber = item.PhoneNumber,
|
|
||||||
FnameLname = item.FnameLname,
|
|
||||||
SendSms = item.SendSmsString == "true" ? true : false
|
|
||||||
};
|
|
||||||
_contactInfoApplication.Create(contactinfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
Thread.Sleep(500);
|
_contactInfoApplication.RemoveContactInfo(command.Id);
|
||||||
}
|
foreach (var item in command.ContactInformationList)
|
||||||
|
{
|
||||||
|
if (item.PhoneNumber != null)
|
||||||
|
{
|
||||||
|
var contactinfo = new CreateContactInfo
|
||||||
|
{
|
||||||
|
InstitutionContractId = result.SendId,
|
||||||
|
PhoneType = item.PhoneType,
|
||||||
|
Position = item.Position,
|
||||||
|
PhoneNumber = item.PhoneNumber,
|
||||||
|
FnameLname = item.FnameLname,
|
||||||
|
SendSms = item.SendSmsString == "true" ? true : false
|
||||||
|
};
|
||||||
|
_contactInfoApplication.Create(contactinfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
Thread.Sleep(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//ساخت اکانت کلاینت
|
//ساخت اکانت کلاینت
|
||||||
@@ -763,7 +848,6 @@ public class institutionContractController : AdminBaseController
|
|||||||
var checkExistAccount = _accountApplication.CheckExistClientAccount(userPass);
|
var checkExistAccount = _accountApplication.CheckExistClientAccount(userPass);
|
||||||
if (!checkExistAccount)
|
if (!checkExistAccount)
|
||||||
{
|
{
|
||||||
|
|
||||||
var createAcc = new RegisterAccount
|
var createAcc = new RegisterAccount
|
||||||
{
|
{
|
||||||
Fullname = conractingParty.LName,
|
Fullname = conractingParty.LName,
|
||||||
@@ -774,69 +858,72 @@ public class institutionContractController : AdminBaseController
|
|||||||
};
|
};
|
||||||
var res = _accountApplication.RegisterClient(createAcc);
|
var res = _accountApplication.RegisterClient(createAcc);
|
||||||
if (res.IsSuccedded)
|
if (res.IsSuccedded)
|
||||||
_institutionContractApplication.CreateContractingPartyAccount(command.ContractingPartyId, res.SendId);
|
_institutionContractApplication.CreateContractingPartyAccount(command.ContractingPartyId,
|
||||||
|
res.SendId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Thread.Sleep(500);
|
//Thread.Sleep(500);
|
||||||
//for (int i = 0; i <= counter - 1; i++)
|
//for (int i = 0; i <= counter - 1; i++)
|
||||||
//{
|
//{
|
||||||
// if (command.ContactInformationList[i].PhoneNumber != null)
|
// if (command.ContactInformationList[i].PhoneNumber != null)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// var contactinfo = new CreateContactInfo()
|
// var contactinfo = new CreateContactInfo()
|
||||||
// {
|
// {
|
||||||
// InstitutionContractId = result.SendId,
|
// InstitutionContractId = result.SendId,
|
||||||
// PhoneType = command.ContactInformationList[i].PhoneType,
|
// PhoneType = command.ContactInformationList[i].PhoneType,
|
||||||
// Position = command.ContactInformationList[i].Position,
|
// Position = command.ContactInformationList[i].Position,
|
||||||
// PhoneNumber = command.ContactInformationList[i].PhoneNumber,
|
// PhoneNumber = command.ContactInformationList[i].PhoneNumber,
|
||||||
// FnameLname = command.ContactInformationList[i].FnameLname,
|
// FnameLname = command.ContactInformationList[i].FnameLname,
|
||||||
// SendSms = command.ContactInformationList[i].SendSmsString == "true" ? true : false
|
// SendSms = command.ContactInformationList[i].SendSmsString == "true" ? true : false
|
||||||
// };
|
// };
|
||||||
// _contactInfoApplication.Create(contactinfo);
|
// _contactInfoApplication.Create(contactinfo);
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// Thread.Sleep(500);
|
// Thread.Sleep(500);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("print/{id}")]
|
[HttpGet("print/{id}")]
|
||||||
public async Task<ActionResult<InstitutionContractPrintViewModel>> PrintOne(long id)
|
public async Task<ActionResult<InstitutionContractPrintViewModel>> PrintOne(long id)
|
||||||
{
|
{
|
||||||
var res =await _institutionContractApplication.PrintOneAsync(id);
|
var res = await _institutionContractApplication.PrintOneAsync(id);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("mannual-verify/{id}")]
|
[HttpPost("mannual-verify/{id}")]
|
||||||
public async Task<ActionResult<OperationResult>> VerifyInstitutionContractManually(long id)
|
public async Task<ActionResult<OperationResult>> VerifyInstitutionContractManually(long id)
|
||||||
{
|
{
|
||||||
var res= await _institutionContractApplication.VerifyInstitutionContractManually(id);
|
var res = await _institutionContractApplication.VerifyInstitutionContractManually(id);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("excel-download")]
|
[HttpGet("excel-download")]
|
||||||
public async Task<IActionResult> ExcelDownload()
|
public async Task<IActionResult> ExcelDownload()
|
||||||
{
|
{
|
||||||
|
|
||||||
var searchModel = new InstitutionContractListSearchModel();
|
var searchModel = new InstitutionContractListSearchModel();
|
||||||
|
|
||||||
var dataVm=new List<InstitutionContractExcelViewModel>();
|
var dataVm = new List<InstitutionContractExcelViewModel>();
|
||||||
|
|
||||||
foreach (var name in typeof(InstitutionContractListStatus).GetEnumNames())
|
foreach (var name in typeof(InstitutionContractListStatus).GetEnumNames())
|
||||||
{
|
{
|
||||||
var @enum = Enum.Parse<InstitutionContractListStatus>(name);
|
var @enum = Enum.Parse<InstitutionContractListStatus>(name);
|
||||||
searchModel.Status = @enum;
|
searchModel.Status = @enum;
|
||||||
searchModel.PageSize = 99999;
|
searchModel.PageSize = 99999;
|
||||||
var data =( await(_institutionContractApplication.GetList(searchModel))).List;
|
var data = (await (_institutionContractApplication.GetList(searchModel))).List;
|
||||||
dataVm.Add(new InstitutionContractExcelViewModel(){Tab = @enum, GetInstitutionContractListItemsViewModels = data});
|
dataVm.Add(new InstitutionContractExcelViewModel()
|
||||||
|
{ Tab = @enum, GetInstitutionContractListItemsViewModels = data });
|
||||||
}
|
}
|
||||||
|
|
||||||
searchModel.Status = null;
|
searchModel.Status = null;
|
||||||
|
|
||||||
var nullData = ( await(_institutionContractApplication.GetList(searchModel))).List;
|
var nullData = (await (_institutionContractApplication.GetList(searchModel))).List;
|
||||||
dataVm.Add(new InstitutionContractExcelViewModel(){Tab = null, GetInstitutionContractListItemsViewModels = nullData});
|
dataVm.Add(new InstitutionContractExcelViewModel()
|
||||||
|
{ Tab = null, GetInstitutionContractListItemsViewModels = nullData });
|
||||||
|
|
||||||
var bytes = InstitutionContractExcelGenerator.GenerateExcel(dataVm);
|
var bytes = InstitutionContractExcelGenerator.GenerateExcel(dataVm);
|
||||||
return File(bytes,
|
return File(bytes,
|
||||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||||
@@ -844,6 +931,10 @@ public class institutionContractController : AdminBaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationGetRepresentativeIdResponse
|
||||||
|
{
|
||||||
|
public long RepresentativeId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class VerifyOtpRequest
|
public class VerifyOtpRequest
|
||||||
{
|
{
|
||||||
@@ -882,16 +973,11 @@ public class WorkshopServiceCalculatorResponse
|
|||||||
public string TotalAmount { get; set; }
|
public string TotalAmount { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public record InstitutionPlanCalculatorRequest(double TotalAmountMonth,bool HasInPersonContract,
|
public record InstitutionPlanCalculatorRequest(
|
||||||
|
double TotalAmountMonth,
|
||||||
|
bool HasInPersonContract,
|
||||||
InstitutionContractDuration Duration = InstitutionContractDuration.TwelveMonths);
|
InstitutionContractDuration Duration = InstitutionContractDuration.TwelveMonths);
|
||||||
|
|
||||||
public class CreateInquiryRequest
|
|
||||||
{
|
|
||||||
public string NationalCode { get; set; }
|
|
||||||
public string DateOfBirth { get; set; }
|
|
||||||
public string Mobile { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class VerifyCodeRequest
|
public class VerifyCodeRequest
|
||||||
{
|
{
|
||||||
public long ContractingPartyId { get; set; }
|
public long ContractingPartyId { get; set; }
|
||||||
|
|||||||
@@ -268,10 +268,10 @@
|
|||||||
href="#showmodal=@Url.Page("./Index", "Edit", new { Id = item.Id })">
|
href="#showmodal=@Url.Page("./Index", "Edit", new { Id = item.Id })">
|
||||||
<i class="fa fa-edit faSize"></i>
|
<i class="fa fa-edit faSize"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-success pull-right m-rl-5 red"
|
@* <a class="btn btn-success pull-right m-rl-5 red" *@
|
||||||
href="#showmodal=@Url.Page("./Index", "AccountWorkshop", new { item.Id })">
|
@* href="#showmodal=@Url.Page("./Index", "AccountWorkshop", new { item.Id })"> *@
|
||||||
<i class="fa fa-edit faSize"></i>
|
@* <i class="fa fa-edit faSize"></i> *@
|
||||||
</a>
|
@* </a> *@
|
||||||
@if (item.IsActiveString == "true" && item.Role != "مدیر سیستم")
|
@if (item.IsActiveString == "true" && item.Role != "مدیر سیستم")
|
||||||
{
|
{
|
||||||
<a onclick="deActive(@item.Id,'@item.Fullname')" class="btn btn-danger pull-right m-rl-5 red"> <i class="fa faSize fa-trash"></i></a>
|
<a onclick="deActive(@item.Id,'@item.Fullname')" class="btn btn-danger pull-right m-rl-5 red"> <i class="fa faSize fa-trash"></i></a>
|
||||||
|
|||||||
@@ -316,14 +316,14 @@ public class IndexModel : PageModel
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult OnGetAccountWorkshop(long id)
|
// public IActionResult OnGetAccountWorkshop(long id)
|
||||||
{
|
// {
|
||||||
var res = _accountApplication.WorkshopList(id);
|
// var res = _accountApplication.WorkshopList(id);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
return Partial("AccountLeftWork", res);
|
// return Partial("AccountLeftWork", res);
|
||||||
}
|
// }
|
||||||
|
|
||||||
public IActionResult OnPostCreateAccountLeftWork(
|
public IActionResult OnPostCreateAccountLeftWork(
|
||||||
List<WorkshopAccountlistViewModel> workshopAccountlistViewModel,
|
List<WorkshopAccountlistViewModel> workshopAccountlistViewModel,
|
||||||
|
|||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,4 +19,15 @@ public class InsuranceController:ClientBaseController
|
|||||||
var insurances =await _insuranceListApplication.GetInsuranceClientList(searchModel);
|
var insurances =await _insuranceListApplication.GetInsuranceClientList(searchModel);
|
||||||
return Ok(insurances);
|
return Ok(insurances);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("print-one")]
|
||||||
|
public async Task<ActionResult<InsuranceClientPrintViewModel>> ClientPrintList(long id)
|
||||||
|
{
|
||||||
|
InsuranceClientPrintViewModel res = await _insuranceListApplication.ClientPrintOne(id);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InsuranceClientViewModel
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
172
ServiceHost/Areas/Client/Controllers/LeaveController.cs
Normal file
172
ServiceHost/Areas/Client/Controllers/LeaveController.cs
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
using Company.Domain.EmployeeAgg;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionPlan;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceList;
|
||||||
|
using CompanyManagment.App.Contracts.Leave;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using ServiceHost.BaseControllers;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
|
namespace ServiceHost.Areas.Client.Controllers;
|
||||||
|
|
||||||
|
public class LeaveController : ClientBaseController
|
||||||
|
{
|
||||||
|
private readonly ILeaveApplication _leaveApplication;
|
||||||
|
private long _workshopId;
|
||||||
|
public LeaveController(ILeaveApplication leaveApplication, IAuthHelper authHelper)
|
||||||
|
{
|
||||||
|
_leaveApplication = leaveApplication;
|
||||||
|
_workshopId = authHelper.GetWorkshopId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست مرخصی ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetLeaveList")]
|
||||||
|
public async Task<ActionResult<LeaveListMultipleDto>> GetLeaveList(LeaveListSearchModel searchModel)
|
||||||
|
{
|
||||||
|
var result = new LeaveListMultipleDto();
|
||||||
|
searchModel.WorkshopId = _workshopId;
|
||||||
|
if (searchModel.EmployeeId > 0)
|
||||||
|
{
|
||||||
|
//لیست گروه بندی شده
|
||||||
|
result.GroupLeaveListDto = await _leaveApplication.GetGroupList(searchModel);
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchModel.YearStr) && !string.IsNullOrWhiteSpace(searchModel.MonthStr))
|
||||||
|
{
|
||||||
|
TimeSpan timeSpan = _leaveApplication.SumOfEmployeeLeaveTimeSpanInDates(_workshopId, searchModel.EmployeeId, searchModel.YearStr, searchModel.MonthStr, searchModel.LeaveType);
|
||||||
|
//مجموع مرخصی پرسنل
|
||||||
|
result.SumOfEmployeeleaves = timeSpan.ToFarsiDaysAndHoursAndMinutes();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
|
//لیست نرمال PageResult
|
||||||
|
result.leaveListDto = await _leaveApplication.GetList(searchModel);
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// چک کردن تاریخ شروع مرخصی
|
||||||
|
///// </summary>
|
||||||
|
///// <param name="startLeaveDate"></param>
|
||||||
|
///// <returns></returns>
|
||||||
|
//[HttpGet("CheckIsInvalidLeave")]
|
||||||
|
//public async Task<OperationResult<CheckIsInvalidLeaveDto>> CheckIsInvalidLeave(string startLeaveDate)
|
||||||
|
//{
|
||||||
|
// return await _leaveApplication.CheckIsInvalidLeave(startLeaveDate, _workshopId);
|
||||||
|
//}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد مرخصی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("CreateLeave")]
|
||||||
|
public async Task<ActionResult<OperationResult>> CreateLeave([FromBody] CreateLeaveDto command)
|
||||||
|
{
|
||||||
|
command.WorkshopId = _workshopId;
|
||||||
|
|
||||||
|
var result = await _leaveApplication.CreateLeave(command);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت شیفت گردشی اگر داشت
|
||||||
|
/// در مودال ایجاد
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startLeaveDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetRotatingShift")]
|
||||||
|
public async Task<OperationResult<RotatingShiftDto>> GetRotatingShift(long employeeId, string startLeaveDate)
|
||||||
|
{
|
||||||
|
|
||||||
|
return await _leaveApplication.HasRotatingShift(_workshopId, employeeId, startLeaveDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه مدت مرخصی ساعتی
|
||||||
|
/// در مودال ایجاد
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startHours"></param>
|
||||||
|
/// <param name="endHours"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetHourlyLeaveDuration")]
|
||||||
|
public async Task<ActionResult<string>> GetHourlyLeaveDuration(string startHours, string endHours)
|
||||||
|
{
|
||||||
|
var result =await _leaveApplication.GetHourlyLeaveDuration(startHours, endHours);
|
||||||
|
return Ok(new { LeaveDuration = result });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه مدت مرخصی روزانه
|
||||||
|
/// در مودال ایجاد
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetDailyLeaveDuration")]
|
||||||
|
public async Task<ActionResult<string>> GetDailyLeaveDuration(string startDate, string endDate)
|
||||||
|
{
|
||||||
|
var result = await _leaveApplication.GetDailyLeaveDuration(startDate, endDate);
|
||||||
|
return Ok(new { LeaveDuration = result });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت تکی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("print/{id}")]
|
||||||
|
public async Task<ActionResult<LeavePrintResponseViewModel>> PrintOneAsync(long id)
|
||||||
|
{
|
||||||
|
var leavePrint = await _leaveApplication.PrintOneAsync(id, _workshopId);
|
||||||
|
return leavePrint;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت گروهی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("print")]
|
||||||
|
public async Task<ActionResult<List<LeavePrintResponseViewModel>>> PrintAllAsync([FromQuery] List<long> ids, LeaveListSearchModel searchModel)
|
||||||
|
{
|
||||||
|
var leavePrints = await _leaveApplication.PrintAllAsync(ids, _workshopId);
|
||||||
|
return Ok(leavePrints);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت لیستی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("ListPrint")]
|
||||||
|
public async Task<ActionResult<LeaveListPrintDto>> ListPrint([FromQuery] List<long> ids)
|
||||||
|
{
|
||||||
|
var leavePrints = await _leaveApplication.ListPrint(ids);
|
||||||
|
return Ok(leavePrints);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حذف مرخصی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpDelete("RemoveLeave/{id}")]
|
||||||
|
public async Task<ActionResult<object>> RemoveLeaveAsync(long id)
|
||||||
|
{
|
||||||
|
var op =await _leaveApplication.RemoveLeaveAsync(id);
|
||||||
|
return Ok(new
|
||||||
|
{
|
||||||
|
isSuccedded = op.IsSuccedded,
|
||||||
|
message = op.Message,
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -91,9 +91,9 @@
|
|||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="submenu">
|
<ul class="submenu">
|
||||||
<li Permission="@SubAccountPermissionHelper.ContractListPermissionCode"><a class="selectLi" asp-page="/Company/Contracts/Index"><span>لیست قرارداد</span></a></li>
|
<li Permission="@SubAccountPermissionHelper.ContractListPermissionCode"><a class="selectLi" href="https://client@(AppSetting.Value.Domain)/contract-list"><span>لیست قرارداد</span></a></li>
|
||||||
<li Permission="@SubAccountPermissionHelper.CheckoutListPermissionCode"><a class="selectLi" asp-page="/Company/Checkouts/Index"><span>لیست فیش حقوقی</span></a></li>
|
<li Permission="@SubAccountPermissionHelper.CheckoutListPermissionCode"><a class="selectLi" asp-page="/Company/Checkouts/Index"><span>لیست فیش حقوقی</span></a></li>
|
||||||
<li Permission="@SubAccountPermissionHelper.InsuranceListPermissionCode"><a class="selectLi" asp-page="/Company/InsuranceList/Index"><span>لیست بیمه</span></a></li>
|
<li Permission="@SubAccountPermissionHelper.InsuranceListPermissionCode"><a class="selectLi" href="https://client@(AppSetting.Value.Domain)/insurance-list"><span>لیست بیمه</span></a></li>
|
||||||
<li Permission="@SubAccountPermissionHelper.PersonnelStatusIndividualReportPermissionCode"><a class="selectLi disable" @*onclick="AjaxUrlContentModal('@Url.Page("/Company/Employees/Index", "ContractCheckoutStatus")');"*@><span>گزارش وضعیت انفرادی پرسنل</span></a></li>
|
<li Permission="@SubAccountPermissionHelper.PersonnelStatusIndividualReportPermissionCode"><a class="selectLi disable" @*onclick="AjaxUrlContentModal('@Url.Page("/Company/Employees/Index", "ContractCheckoutStatus")');"*@><span>گزارش وضعیت انفرادی پرسنل</span></a></li>
|
||||||
<li Permission="@SubAccountPermissionHelper.PersonnelStatusGroupReportPermissionCode"><a class="selectLi disable" @*onclick="AjaxUrlContentModal('@Url.Page("/Company/Workshop/Index", "ContractCheckoutYearlyStatus")');"*@><span>گزارش وضعیت گروهی پرسنل</span></a></li>
|
<li Permission="@SubAccountPermissionHelper.PersonnelStatusGroupReportPermissionCode"><a class="selectLi disable" @*onclick="AjaxUrlContentModal('@Url.Page("/Company/Workshop/Index", "ContractCheckoutYearlyStatus")');"*@><span>گزارش وضعیت گروهی پرسنل</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -415,7 +415,6 @@ if (app.Environment.IsDevelopment())
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//Create Http Pipeline
|
//Create Http Pipeline
|
||||||
|
|
||||||
#region Create Http Pipeline
|
#region Create Http Pipeline
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
},
|
},
|
||||||
"ServiceHost": {
|
"ServiceHost": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"launchBrowser": false,
|
"launchBrowser": true,
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
|
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
|
||||||
|
|||||||
Reference in New Issue
Block a user