refactor: rename InstitutionContractStatus to InstitutionContractListStatus and update related properties

This commit is contained in:
MahanCh
2025-08-18 10:40:17 +03:30
parent 204355acd6
commit 2a315ff7ae
11 changed files with 60 additions and 82 deletions

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using _0_Framework.Domain;
using Company.Domain.InstitutionContractContactInfoAgg;
using CompanyManagment.App.Contracts.InstitutionContract;
namespace Company.Domain.InstitutionContractAgg;
@@ -83,6 +84,8 @@ public class InstitutionContract : EntityBase
public string HasValueAddedTax { get; set; }
public double ValueAddedTax { get; set; }
public InstitutionContractStatus I { get; private set; }
public List<InstitutionContractContactInfo> ContactInfoList { get; set; }
public InstitutionContract()
@@ -148,4 +151,17 @@ public class InstitutionContract : EntityBase
{
this.Signature = "0";
}
}
public enum InstitutionContractStatus
{
/// <summary>
/// ناتمام - قرارداد هنوز تکمیل نشده و نیاز به انجام کارهای بیشتر دارد
/// </summary>
Incomplete = 0,
/// <summary>
/// تکمیل شده - قرارداد به طور کامل انجام شده و نهایی شده است
/// </summary>
Completed = 1
}

View File

@@ -77,7 +77,7 @@ public class GetInstitutionContractListItemsViewModel
/// <summary>
/// وضعیت قرارداد
/// </summary>
public InstitutionContractStatus Status { get; set; }
public InstitutionContractListStatus ListStatus { get; set; }
/// <summary>
/// آیا منقضی شده است

View File

@@ -95,6 +95,11 @@ public interface IInstitutionContractApplication
/// <returns></returns>
Task<OperationResult> ExtensionَAsync(CreateInstitutionContractRequest command);
/// <summary>
/// ایجاد قرارداد جدید بر اساس منطق ثبتنام
/// </summary>
Task<OperationResult> CreateAsync(ExtenstionInstitutionContractRequest command);
#endregion
}
@@ -124,7 +129,7 @@ public class GetInstitutionContractListStatsViewModel
public class InstitutionContractStatusCount
{
public InstitutionContractStatus Status { get; set; }
public InstitutionContractListStatus ListStatus { get; set; }
public int Count { get; set; }
}
public class ExtenstionInstitutionContractRequest:EditInstitutionContractRequest

View File

@@ -42,7 +42,7 @@ public class InstitutionContractListSearchModel :PaginationRequest
/// <summary>
/// تب
/// </summary>
public InstitutionContractStatus? Status { get; set; }
public InstitutionContractListStatus? Status { get; set; }
/// <summary>
/// فعال / غیرفعال

View File

@@ -1,6 +1,6 @@
namespace CompanyManagment.App.Contracts.InstitutionContract;
public enum InstitutionContractStatus
public enum InstitutionContractListStatus
{
Active,
Deactive,

View File

@@ -17,7 +17,6 @@ public class CreateWorkshopTemp
/// </summary>
public long ContractingPartyTempId { get; set; }
#region ServiceSelection
/// <summary>

View File

@@ -119,12 +119,7 @@ public interface ITemporaryClientRegistrationApplication
/// <returns></returns>
Task<List<RegistrationWorkflowMainList>> RegistrationWorkflowMainList();
/// <summary>
/// ایجاد قرارداد مالی برای طرف حساب
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
Task<OperationResult> CreateInstitutionContractTemp(CreateInstitutionContractTempRequest command);
/// <summary>
/// ارسال لینک تایید قوانین و مقررات به طرف حساب
@@ -134,16 +129,3 @@ public interface ITemporaryClientRegistrationApplication
Task<OperationResult> SendAgreementLink(long contractingPartyTempId);
}
public class CreateInstitutionContractTempRequest
{
public long ContractingPartyTempId { get; set; }
public string State { get; set; }
public string City { get; set; }
public string Address { get; set; }
public List<WorkshopTempViewModel> Workshops { get; set; }
public string PeriodModel { get; set; }
public string PaymentModel { get; set; }
public double TotalPayment { get; set; }
public double ValueAddedTax { get; set; }
public string ContractStartFa { get; set; }
}

View File

@@ -1248,6 +1248,11 @@ public class InstitutionContractApplication : IInstitutionContractApplication
return opration.Succcedded(createContract.id);
}
public Task<OperationResult> CreateAsync(ExtenstionInstitutionContractRequest command)
{
throw new NotImplementedException();
}
}
#region CustomViewModels

View File

@@ -912,32 +912,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
return await _institutionContractTempRepository.GetAllCompletedRegistration();
}
public async Task<OperationResult> CreateInstitutionContractTemp(CreateInstitutionContractTempRequest command)
{
var contractingPartyId = command.ContractingPartyTempId;
await using var transaction = await _contractingPartyTempRepository.BeginTransactionAsync();
var updateAddressRes = await UpdateAddress(contractingPartyId, command.State, command.City, command.Address);
if (!updateAddressRes.IsSuccedded)
return updateAddressRes;
var createWorkshopRes = await CreateOrUpdateWorkshopTemp(command.Workshops, contractingPartyId);
if (!createWorkshopRes.IsSuccedded)
return createWorkshopRes;
var createInstitution = await CreateOrUpdateInstitutionContractTemp(contractingPartyId, command.PeriodModel,
command.PaymentModel,
command.TotalPayment, command.ValueAddedTax, command.ContractStartFa.ToGeorgianDateTime());
if (!createInstitution.IsSuccedded)
return createInstitution;
var payOffRes = await PayOffCompleted(contractingPartyId);
if (!payOffRes.IsSuccedded)
return payOffRes;
await transaction.CommitAsync();
return new OperationResult().Succcedded();
}
public async Task<OperationResult> SendAgreementLink(long contractingPartyTempId)
{
var op = new OperationResult();

View File

@@ -1113,24 +1113,24 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
{
switch (searchModel.Status)
{
case InstitutionContractStatus.DeactiveWithDebt:
case InstitutionContractListStatus.DeactiveWithDebt:
joinedQuery = joinedQuery.Where(x => x.contract.IsActiveString == "blue");
break;
case InstitutionContractStatus.PendingForRenewal:
case InstitutionContractListStatus.PendingForRenewal:
joinedQuery = joinedQuery.Where(x =>
x.contract.ContractEndGr >= now && x.contract.ContractEndGr <= endThisMontGr);
break;
case InstitutionContractStatus.Block:
case InstitutionContractListStatus.Block:
joinedQuery = joinedQuery.Where(x => x.contractingParty.IsBlock == "true");
break;
case InstitutionContractStatus.Free:
case InstitutionContractListStatus.Free:
joinedQuery = joinedQuery.Where(x => x.contract.ContractAmount == 0);
break;
case InstitutionContractStatus.WithoutWorkshop:
case InstitutionContractListStatus.WithoutWorkshop:
joinedQuery = joinedQuery.Where(x => !x.contractingParty.Employers
.SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).Any());
break;
case InstitutionContractStatus.Active:
case InstitutionContractListStatus.Active:
joinedQuery = joinedQuery.Where(x =>
x.contract.IsActiveString != "blue" && // Not DeactiveWithDebt
!(x.contract.ContractEndGr >= now &&
@@ -1205,7 +1205,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
.Where(l => workshops.Select(w => w.id).Contains(l.id))
.Count(l => l.StartWorkDate <= DateTime.Now && l.LeftWorkDate >= DateTime.Now),
EmployerNames = employers.Select(e => e.FullName).ToList(),
Status = status.status,
ListStatus = status.status,
IsExpired = status.isExpiered
};
}).ToList()
@@ -1325,24 +1325,24 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
{
switch (searchModel.Status)
{
case InstitutionContractStatus.DeactiveWithDebt:
case InstitutionContractListStatus.DeactiveWithDebt:
joinedQuery = joinedQuery.Where(x => x.contract.IsActiveString == "blue");
break;
case InstitutionContractStatus.PendingForRenewal:
case InstitutionContractListStatus.PendingForRenewal:
joinedQuery = joinedQuery.Where(x =>
x.contract.ContractEndGr >= now && x.contract.ContractEndGr <= endThisMontGr);
break;
case InstitutionContractStatus.Block:
case InstitutionContractListStatus.Block:
joinedQuery = joinedQuery.Where(x => x.contractingParty.IsBlock == "true");
break;
case InstitutionContractStatus.Free:
case InstitutionContractListStatus.Free:
joinedQuery = joinedQuery.Where(x => x.contract.ContractAmount == 0);
break;
case InstitutionContractStatus.WithoutWorkshop:
case InstitutionContractListStatus.WithoutWorkshop:
joinedQuery = joinedQuery.Where(x => !x.contractingParty.Employers
.SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).Any());
break;
case InstitutionContractStatus.Active:
case InstitutionContractListStatus.Active:
joinedQuery = joinedQuery.Where(x =>
x.contract.IsActiveString != "blue" && // Not DeactiveWithDebt
!(x.contract.ContractEndGr >= now &&
@@ -1368,12 +1368,12 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
.SelectMany(x => x.FinancialTransactionList)
.SumAsync(x => x.Deptor - x.Creditor);
var counts = new List<InstitutionContractStatusCount>();
foreach (var name in typeof(InstitutionContractStatus).GetEnumNames())
foreach (var name in typeof(InstitutionContractListStatus).GetEnumNames())
{
var @enum = Enum.Parse<InstitutionContractStatus>(name);
var @enum = Enum.Parse<InstitutionContractListStatus>(name);
searchModel.Status = @enum;
var count = (await GetList(searchModel)).TotalCount;
counts.Add(new (){Status = @enum, Count = count });
counts.Add(new (){ListStatus = @enum, Count = count });
}
var res = new GetInstitutionContractListStatsViewModel()
@@ -1385,7 +1385,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
return res;
}
private (InstitutionContractStatus status, bool isExpiered) SetContractStatus(InstitutionContract contract,
private (InstitutionContractListStatus status, bool isExpiered) SetContractStatus(InstitutionContract contract,
PersonalContractingParty contractingParty,
FinancialStatment financialStatment)
{
@@ -1393,23 +1393,23 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
var nowFa = now.ToFarsi();
var endFa = nowFa.FindeEndOfMonth();
var endThisMontGr = endFa.ToGeorgianDateTime();
InstitutionContractStatus status = InstitutionContractStatus.Active;
InstitutionContractListStatus listStatus = InstitutionContractListStatus.Active;
bool isExpier = false;
if (contract.ContractEndGr < now)
{
status = InstitutionContractStatus.Deactive;
listStatus = InstitutionContractListStatus.Deactive;
isExpier = true;
}
if (contract.ContractEndGr >= now && contract.ContractEndGr <= endThisMontGr)
{
status = InstitutionContractStatus.PendingForRenewal;
listStatus = InstitutionContractListStatus.PendingForRenewal;
isExpier = true;
}
if (contract.ContractAmount == 0)
{
status = InstitutionContractStatus.Free;
listStatus = InstitutionContractListStatus.Free;
if ((contract.ContractEndGr >= now && contract.ContractEndGr <= endThisMontGr) ||
(contract.ContractEndGr < now))
{
@@ -1419,7 +1419,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
if (contract.IsActiveString == "blue")
{
status = InstitutionContractStatus.DeactiveWithDebt;
listStatus = InstitutionContractListStatus.DeactiveWithDebt;
isExpier = true;
}
@@ -1428,15 +1428,15 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
if (workshops.Count == 0)
{
status = InstitutionContractStatus.Free;
listStatus = InstitutionContractListStatus.Free;
}
if (contractingParty.IsBlock == "true")
{
status = InstitutionContractStatus.Block;
listStatus = InstitutionContractListStatus.Block;
}
return (status, isExpier);
return (listStatus, isExpier);
}
#endregion

View File

@@ -588,7 +588,6 @@ public class institutionContractController : AdminBaseController
{
WorkshopName = command.WorkshopName,
CountPerson = command.CountPerson,
ContractingPartyTempId = command.ContractingPartyTempId,
ContractAndCheckout = command.ContractAndCheckout,
Insurance = command.Insurance,
RollCall = command.RollCall,
@@ -604,7 +603,7 @@ public class institutionContractController : AdminBaseController
public async Task<ActionResult<ReviewAndPaymentViewModel>> InstitutionPlanCalculator(
[FromBody] InstitutionPlanCalculatorRequest request)
{
var res = await _temporaryClientRegistration.GetTotalPaymentAndWorkshopList(request.ContractingPartyTempId,
var res = await _temporaryClientRegistration.GetTotalPaymentAndWorkshopList(0,
request.workshopList, request.PeriodModel, request.PaymentModel, request.ContractStartType);
return res;
}
@@ -615,9 +614,9 @@ public class institutionContractController : AdminBaseController
/// <param name="command"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult<OperationResult>> Create([FromBody] CreateInstitutionContractTempRequest command)
public async Task<ActionResult<OperationResult>> Create()
{
return await _temporaryClientRegistration.CreateInstitutionContractTemp(command);
throw new NotImplementedException();
}
/// <summary>
@@ -649,9 +648,7 @@ public class institutionContractController : AdminBaseController
}
}
public record InstitutionPlanCalculatorRequest(
long ContractingPartyTempId,
List<WorkshopTempViewModel> workshopList,
public record InstitutionPlanCalculatorRequest(List<WorkshopTempViewModel> workshopList,
string PeriodModel = "12",
string PaymentModel = "OneTime",
string ContractStartType = "currentMonth");