Compare commits

...

49 Commits

Author SHA1 Message Date
147621de34 feat: update institution contract creation to retrieve representatives and set contracting party info 2025-12-30 20:53:44 +03:30
d663857de1 feat: add contracting party response class and update endpoints for institution contract creation 2025-12-30 19:51:28 +03:30
9bbdff9bc6 fix bug InstitutionContractRepository.cs 2025-12-30 16:44:02 +03:30
d11fdcf106 feat: enhance institution contract creation with representative retrieval and code formatting improvements 2025-12-30 14:25:11 +03:30
12318a6a51 refactor: comment out unused methods and clean up repository interfaces 2025-12-30 11:37:33 +03:30
836e721b6f feat: refactor institution contract creation classes and endpoints 2025-12-30 10:38:07 +03:30
8fca1f3a91 feat: add institution contract creation inquiry functionality 2025-12-29 22:19:16 +03:30
2feca1f7f8 add creation 2025-12-29 19:31:18 +03:30
4e9cecbb74 Merge branch 'Feature/Excel/instiutition-contract' 2025-12-29 17:21:58 +03:30
1d656a590f Merge remote-tracking branch 'origin/master' 2025-12-29 16:26:08 +03:30
SamSys
a33d7c019c launchsettnig 2025-12-29 15:08:53 +03:30
SamSys
d62b5ca155 Merge branch 'master' of https://github.com/samsyntax24/OriginalGozareshgir 2025-12-29 14:37:47 +03:30
SamSys
18a4334d8a change WarningMessage on InsuranceList Edit 2025-12-29 14:36:03 +03:30
84416fe1f5 feat: add validation for in-person contract approval and suppress documentation warnings 2025-12-29 13:29:32 +03:30
Mahan Chamani
bd1c1fa814 Refactor deployment script to use env variables
Updated deployment configuration to use environment variables for server host and credentials.
2025-12-29 12:22:10 +03:30
Mahan Chamani
8496b52013 Change deployment target from master to Main
Updated deployment configuration with new server details.
2025-12-29 11:17:59 +03:30
Mahan Chamani
5c1547dced Update dotnet-developPublish.yml 2025-12-29 09:51:06 +03:30
Mahan Chamani
c09321d89d Update dotnet-developPublish.yml 2025-12-29 09:50:40 +03:30
219e64c0f7 add menu 2025-12-29 09:35:33 +03:30
b42217ed94 Merge branch 'Feature/Excel/instiutiton-contract' 2025-12-28 19:31:14 +03:30
ad6f872145 fix: update contract and insurance list links to use dynamic domain 2025-12-28 18:31:13 +03:30
d22805892a Merge branch 'Feature/Insurance/client-api'
# Conflicts:
#	CompanyManagment.EFCore/Repository/InsuranceListRepository.cs
2025-12-28 18:25:14 +03:30
4da496cab8 Merge branch 'Feature/contracts/api' 2025-12-28 13:08:56 +03:30
SamSys
4b40580658 Merge branch 'master' into Feature/ClientLeavePageApi 2025-12-27 19:16:39 +03:30
SamSys
cddaf2f709 changes 2025-12-27 16:58:36 +03:30
SamSys
337cd40a4e LeaveDuration daily and hourly on create modal completed 2025-12-27 16:51:08 +03:30
SamSys
a98300cacd GetHourlyLeaveDuration 2025-12-27 15:49:39 +03:30
SamSys
daded35ab1 Merge branch 'master' into Feature/ClientLeavePageApi 2025-12-27 14:06:29 +03:30
SamSys
ba778bb519 LeaveListPrint 2025-12-27 14:06:10 +03:30
SamSys
54c67fe8f7 add ListPrint 2025-12-27 12:06:02 +03:30
SamSys
a638913172 create levave api and get rotating shift api 2025-12-25 16:16:50 +03:30
SamSys
69476f3f2d add multiple get list for leaveController 2025-12-24 12:53:06 +03:30
SamSys
4bc65e500d Merge branch 'Feature/ClientLeavePageApi' of https://github.com/samsyntax24/OriginalGozareshgir into Feature/ClientLeavePageApi 2025-12-24 11:53:15 +03:30
07587d162f add: implement PrintAllAsync and PrintOneAsync methods for leave printing functionality 2025-12-24 11:17:53 +03:30
SamSys
59bbb7aae6 ini leave groupList 2025-12-23 18:15:48 +03:30
SamSys
89de3162de GetLewvList Api 2025-12-23 17:03:54 +03:30
SamSys
132c8ac5a4 init 2025-12-23 15:10:17 +03:30
8e5d4c312e fix: correct spelling of 'Month' and enhance insurance client list retrieval with additional properties 2025-12-21 11:03:23 +03:30
4b39994de6 feat: add API endpoint for printing multiple contracts 2025-12-20 15:50:34 +03:30
0dd2dc7c43 add workshopCode on client contract print 2025-12-20 15:21:34 +03:30
20c00893b6 feat: add API endpoint for printing contract details and enhance contract print logic 2025-12-20 14:23:23 +03:30
b0d174a575 feat: implement contract printing methods and view models 2025-12-20 13:04:30 +03:30
293ea0f6f4 feat: enhance insurance client print model with additional properties and update related logic 2025-12-20 10:13:13 +03:30
3ce4cf3966 add insurance print api for client 2025-12-18 13:34:31 +03:30
0fbd5c9d3e Add print methods and ContractPrintViewModel class
Updated the `IContractApplication` interface:
- Added `PrintOneAsync(long id)` and `PrintAllAsync(List<long> ids)` methods.
- Corrected formatting of `DeleteAllContarcts(List<long> ids)`.
- Grouped changes under the `NewChangeByHeydari` region.

Introduced the `ContractPrintViewModel` class (currently empty).

Implemented `PrintOneAsync` and `PrintAllAsync` in `ContractApplication` with `NotImplementedException`.

These changes prepare the codebase for contract printing functionality.
2025-11-11 19:29:51 +03:30
8436f70aa0 Refactor and enhance contract handling logic
- Added `DailyWage`, `AvgWorkingHour`, and `FamilyAllowance` properties to `GetContractListForClientResponse`.
- Refactored `WorkingHoursWeekly` conversion logic by introducing a reusable `WeeklyHourConvertor` method in `ContractRepository`.
- Updated query result mapping to include new properties and utilize `WeeklyHourConvertor` for `AvgWorkingHour`.
- Improved code readability and maintainability by centralizing repetitive logic.
2025-11-11 19:26:45 +03:30
9cf8447a83 feat: add API for retrieving paginated contract list for client with filtering options 2025-11-03 17:49:51 +03:30
e124a4d5d9 feat: implement method to retrieve paginated contract list for client with filtering options 2025-11-03 17:43:50 +03:30
7b9e7881c6 feat: add commented-out method for retrieving contract list for client 2025-11-03 14:45:41 +03:30
58 changed files with 4499 additions and 514 deletions

View File

@@ -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 }}

View File

@@ -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,

View File

@@ -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,

View File

@@ -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);

View File

@@ -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)
{ {

View File

@@ -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
}
}

View File

@@ -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);
} }

View File

@@ -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)
{ {

View File

@@ -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
}

View File

@@ -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);
} }

View File

@@ -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);
} }

View File

@@ -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>

View File

@@ -0,0 +1,12 @@
namespace CompanyManagment.App.Contracts.Contract;
public enum ContractListOrderType
{
ByContractCreationDate,
BySignedContract,
ByUnSignedContract,
ByPersonnelCode,
ByPersonnelCodeDescending,
ByContractStartDate,
ByContractStartDateDescending
}

View File

@@ -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; }
}

View File

@@ -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; }
}

View File

@@ -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; }
} }

View File

@@ -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; }
} }

View File

@@ -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; }
}

View File

@@ -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; }

View File

@@ -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; }
} }

View File

@@ -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; }

View File

@@ -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; }
} }

View File

@@ -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; }

View File

@@ -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; }

View File

@@ -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; } = [];
} }

View File

@@ -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; }

View File

@@ -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; }

View File

@@ -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; }
} }

View File

@@ -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; }
}

View 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; }
}

View 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; }
}

View File

@@ -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; }
} }

View 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; }
}

View 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; }
}

View 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; }
}

View File

@@ -0,0 +1,18 @@
namespace CompanyManagment.App.Contracts.Leave;
public enum LeaveType
{
/// <summary>
/// هر دو
/// </summary>
Both,
/// <summary>
/// مرخصی استعلاجی
/// </summary>
SickLeave,
/// <summary>
/// مرخصی استحقاقی
/// </summary>
PaidLeave
}

View File

@@ -0,0 +1,17 @@
namespace CompanyManagment.App.Contracts.Leave;
/// <summary>
/// نوع مدت مرخصی
/// </summary>
public enum PaidLeaveType
{
/// <summary>
/// روزانه
/// </summary>
Daily,
/// <summary>
/// ساعتی
/// </summary>
Hourly,
}

View 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; }
}

View 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; }
}

View File

@@ -132,4 +132,5 @@ public interface IPersonalContractingPartyApp
#endregion #endregion
Task<long> GetRepresentativeIdByNationalCode(string nationalCode);
} }

View File

@@ -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

View File

@@ -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)

View File

@@ -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
} }

View File

@@ -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 "تاریخ پایان از تاریخ شروع کوچکتر است.";
}
}
} }

View File

@@ -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
} }

View File

@@ -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

View File

@@ -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>

View File

@@ -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
} }

View File

@@ -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; }

View File

@@ -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>

View File

@@ -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,

View 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;
}
}

View File

@@ -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
{
} }

View 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,
});
}
}

View File

@@ -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>

View File

@@ -415,7 +415,6 @@ if (app.Environment.IsDevelopment())
} }
#endregion #endregion
//Create Http Pipeline //Create Http Pipeline
#region Create Http Pipeline #region Create Http Pipeline

View File

@@ -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"