Merge branch 'Feature/institution-contract/refactor-creation' into Main

This commit is contained in:
2025-12-30 16:44:40 +03:30

View File

@@ -87,7 +87,9 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
ISmsResultRepository smsResultRepository, IFinancialTransactionRepository financialTransactionRepository, ISmsResultRepository smsResultRepository, IFinancialTransactionRepository financialTransactionRepository,
IFinancialStatmentRepository financialStatmentRepository, IHubContext<SendSmsHub> hubContext, IFinancialStatmentRepository financialStatmentRepository, IHubContext<SendSmsHub> hubContext,
ILogger<InstitutionContractRepository> logger, IUidService uidService, ILogger<InstitutionContractRepository> logger, IUidService uidService,
IContractingPartyTempRepository contractingPartyTempRepository, IPersonalContractingPartyRepository contractingPartyRepository, IRepresentativeRepository representativeRepository, IAccountApplication accountApplication) : base(context) IContractingPartyTempRepository contractingPartyTempRepository,
IPersonalContractingPartyRepository contractingPartyRepository,
IRepresentativeRepository representativeRepository, IAccountApplication accountApplication) : base(context)
{ {
_context = context; _context = context;
_employerRepository = employerRepository; _employerRepository = employerRepository;
@@ -5307,6 +5309,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
Gender = contractingParty.Gender, Gender = contractingParty.Gender,
PhoneNumber = contractingParty.Phone, PhoneNumber = contractingParty.Phone,
IsAuth = true, IsAuth = true,
BirthDateFa = contractingParty.DateOfBirth.ToFarsi()
}; };
result.RealParty = realParty; result.RealParty = realParty;
result.LegalParty = null; result.LegalParty = null;
@@ -5502,10 +5505,10 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
personalContractingParty.IdNumberSerial, realCommand.BirthDateFa, realCommand.Gender, personalContractingParty.IdNumberSerial, realCommand.BirthDateFa, realCommand.Gender,
realCommand.PhoneNumber); realCommand.PhoneNumber);
} }
contractingParty = personalContractingParty;
} }
contractingParty = personalContractingParty;
break; break;
} }
@@ -5520,7 +5523,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
throw new BadRequestException("دیتای درخواست شده نامعتبر است"); throw new BadRequestException("دیتای درخواست شده نامعتبر است");
} }
List<WorkshopTempViewModel> workshopDetails=[]; List<WorkshopTempViewModel> workshopDetails = [];
if (contractingParty != null) if (contractingParty != null)
{ {
var employerWorkshopIds = _context.Employers var employerWorkshopIds = _context.Employers
@@ -5559,18 +5562,17 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
RollCallInPerson = false, RollCallInPerson = false,
}; };
}).ToList(); }).ToList();
} }
creationTemp.SetContractingPartyContactInfo(request.Address, request.City, request.Province, creationTemp.SetContractingPartyContactInfo(request.Address, request.City, request.Province,
request.ContactInfos,request.RepresentativeId); request.ContactInfos, request.RepresentativeId);
await _institutionContractCreationTemp.ReplaceOneAsync( await _institutionContractCreationTemp.ReplaceOneAsync(
x => x.Id == creationTemp.Id, x => x.Id == creationTemp.Id,
creationTemp creationTemp
); );
var res = new InstitutionContractCreationWorkshopsResponse() var res = new InstitutionContractCreationWorkshopsResponse()
{ {
TotalAmount = workshopDetails.Sum(x => x.WorkshopServicesAmount).ToMoney(), TotalAmount = workshopDetails.Sum(x => x.WorkshopServicesAmount).ToMoney(),
@@ -5959,7 +5961,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
Monthly = monthlyPayment Monthly = monthlyPayment
}; };
} }
public async Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request) public async Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request)
{ {
@@ -5989,16 +5991,19 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
} }
else else
{ {
OperationResult<PersonalContractingParty> contractingPartyResult = institutionContractTemp.ContractingPartyLegalType switch OperationResult<PersonalContractingParty> contractingPartyResult =
{ institutionContractTemp.ContractingPartyLegalType switch
LegalType.Legal => await CreateLegalContractingPartyEntity(institutionContractTemp.LegalParty, institutionContractTemp.RepresentativeId, {
institutionContractTemp.Address, LegalType.Legal => await CreateLegalContractingPartyEntity(institutionContractTemp.LegalParty,
institutionContractTemp.City, institutionContractTemp.Province), institutionContractTemp.RepresentativeId,
LegalType.Real => await CreateRealContractingPartyEntity(institutionContractTemp.RealParty, institutionContractTemp.RepresentativeId, institutionContractTemp.Address,
institutionContractTemp.Address, institutionContractTemp.City, institutionContractTemp.Province),
institutionContractTemp.City, institutionContractTemp.Province), LegalType.Real => await CreateRealContractingPartyEntity(institutionContractTemp.RealParty,
_ => throw new BadRequestException("نوع طرف قرارداد مشخص نشده است") institutionContractTemp.RepresentativeId,
}; institutionContractTemp.Address,
institutionContractTemp.City, institutionContractTemp.Province),
_ => throw new BadRequestException("نوع طرف قرارداد مشخص نشده است")
};
if (!contractingPartyResult.IsSuccedded) if (!contractingPartyResult.IsSuccedded)
throw new BadRequestException(contractingPartyResult.Message); throw new BadRequestException(contractingPartyResult.Message);
contractingParty = contractingPartyResult.Data; contractingParty = contractingPartyResult.Data;
@@ -6021,10 +6026,11 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
var representative = _representativeRepository.Get(institutionContractTemp.RepresentativeId); var representative = _representativeRepository.Get(institutionContractTemp.RepresentativeId);
if (representative == null) if (representative == null)
return opration.Failed("معرف مورد نظر یافت نشد"); return opration.Failed("معرف مورد نظر یافت نشد");
if (_context.InstitutionContractSet.Any(x => if (_context.InstitutionContractSet.Any(x =>
x.ContractingPartyId == contractingPartyId && x.IsActiveString == "true")) x.ContractingPartyId == contractingPartyId && x.IsActiveString == "true"))
return opration.Failed("برای این طرف قرارداد قبلا قرارداد اصلی ایجاد شده است، شما میتوانید از تمدید استفاده کنید"); return opration.Failed(
"برای این طرف قرارداد قبلا قرارداد اصلی ایجاد شده است، شما میتوانید از تمدید استفاده کنید");
if (string.IsNullOrWhiteSpace(contractStart)) if (string.IsNullOrWhiteSpace(contractStart))
@@ -6048,7 +6054,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
if (dateMessages) if (dateMessages)
return opration.Failed(dateMaessageResult); return opration.Failed(dateMaessageResult);
var syear = contractStart.Substring(0, 4); var syear = contractStart.Substring(0, 4);
var smonth = contractStart.Substring(5, 2); var smonth = contractStart.Substring(5, 2);
var sday = contractStart.Substring(8, 2); var sday = contractStart.Substring(8, 2);
@@ -6060,7 +6066,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
var contractEndGr = selectedDuration.ContractEnd.ToGeorgianDateTime(); var contractEndGr = selectedDuration.ContractEnd.ToGeorgianDateTime();
var contractDateGr = contractStart.ToGeorgianDateTime(); var contractDateGr = contractStart.ToGeorgianDateTime();
if (institutionContractTemp.Address != null && institutionContractTemp.Province == null) if (institutionContractTemp.Address != null && institutionContractTemp.Province == null)
{ {
@@ -6102,7 +6108,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
var oneMonthPayment = selectedDuration.OneMonthPaymentDiscounted.MoneyToDouble(); var oneMonthPayment = selectedDuration.OneMonthPaymentDiscounted.MoneyToDouble();
var contractingPartyFullName = contractingParty.IsLegal=="حقیقی" var contractingPartyFullName = contractingParty.IsLegal == "حقیقی"
? contractingParty.FName + " " + contractingParty.LName ? contractingParty.FName + " " + contractingParty.LName
: contractingParty.LName; : contractingParty.LName;
@@ -6119,8 +6125,8 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
institutionContractTemp.Address, contractStartGr, institutionContractTemp.Address, contractStartGr,
contractStart, contractEndGr, selectedDuration.ContractEnd, contractStart, contractEndGr, selectedDuration.ContractEnd,
oneMonthPayment, selectedDuration.DailyCompenseation.MoneyToDouble(), oneMonthPayment, selectedDuration.DailyCompenseation.MoneyToDouble(),
selectedDuration.Obligation.MoneyToDouble(), totalAmount, selectedDuration.Obligation.MoneyToDouble(), totalAmount,
0, workshopsCount, employeeCount,null, 0, workshopsCount, employeeCount, null,
"NotOfficial", "JobRelation", hasValueAddedTax, "NotOfficial", "JobRelation", hasValueAddedTax,
payment.Tax.MoneyToDouble(), [], payment.Tax.MoneyToDouble(), [],
request.LawId, payment.DiscountPercetage, payment.DiscountedAmount.MoneyToDouble()); request.LawId, payment.DiscountPercetage, payment.DiscountedAmount.MoneyToDouble());
@@ -6199,6 +6205,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
_context.InstitutionContractContactInfos.Add(contactinfo); _context.InstitutionContractContactInfos.Add(contactinfo);
} }
} }
var userPass = contractingParty.IsLegal == "حقیقی" var userPass = contractingParty.IsLegal == "حقیقی"
? contractingParty.Nationalcode ? contractingParty.Nationalcode
: contractingParty.NationalId; : contractingParty.NationalId;
@@ -6225,8 +6232,8 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
return opration.Succcedded(); return opration.Succcedded();
} }
private async Task<OperationResult<PersonalContractingParty>> CreateLegalContractingPartyEntity( private async Task<OperationResult<PersonalContractingParty>> CreateLegalContractingPartyEntity(
InstitutionContractCreationTempLegalParty request, long representativeId, string address, string city, InstitutionContractCreationTempLegalParty request, long representativeId, string address, string city,
string state) string state)
{ {
var opration = new OperationResult<PersonalContractingParty>(); var opration = new OperationResult<PersonalContractingParty>();
@@ -6318,6 +6325,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
return operation.Succcedded(personalContractingParty); return operation.Succcedded(personalContractingParty);
} }
#endregion #endregion