From ccd99c51841ce57145660ced2ce7e55a06ddcacb Mon Sep 17 00:00:00 2001 From: mahan Date: Sat, 11 Oct 2025 11:08:31 +0330 Subject: [PATCH] feat: enhance extension inquiry with detailed response and validation improvements --- .../IInstitutionContractApplication.cs | 24 +++++++------ ...titutionContractExtensionInquiryRequest.cs | 9 +++++ .../InstitutionContractApplication.cs | 36 +++++++++++++------ 3 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractExtensionInquiryRequest.cs diff --git a/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs b/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs index 22e4d654..e91e5492 100644 --- a/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs +++ b/CompanyManagment.App.Contracts/InstitutionContract/IInstitutionContractApplication.cs @@ -222,20 +222,24 @@ public interface IInstitutionContractApplication Task ExtensionComplete(InstitutionContractExtensionCompleteRequest request); - Task ExtensionInquiry(InstitutionContractExtensionInquiryRequest command); -} - -public class InstitutionContractExtensionInquiryRequest -{ - public long ContractingPartyId { get; set; } - public string NationalCode { get; set; } - public string BirthDate { get; set; } - public string Mobile { get; set; } + Task ExtensionInquiry(InstitutionContractExtensionInquiryRequest command); } public class InstitutionContractExtensionInquiryResponse { - + public long Id { get; set; } + public string FName { get; set; } + public string LName { get; set; } + public string DateOfBirthFa { get; set; } + public string FatherName { get; set; } + public string IdNumberSerial { get; set; } + public string IdNumber { get; set; } + public string Address { get; set; } + public string Phone { get; set; } + public string City { get; set; } + public string State { get; set; } + public long RepresentativeId { get; set; } + public string NationalCode { get; set; } } public class InstitutionContractExtensionCompleteRequest diff --git a/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractExtensionInquiryRequest.cs b/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractExtensionInquiryRequest.cs new file mode 100644 index 00000000..89578139 --- /dev/null +++ b/CompanyManagment.App.Contracts/InstitutionContract/InstitutionContractExtensionInquiryRequest.cs @@ -0,0 +1,9 @@ +namespace CompanyManagment.App.Contracts.InstitutionContract; + +public class InstitutionContractExtensionInquiryRequest +{ + public long ContractingPartyId { get; set; } + public string NationalCode { get; set; } + public string BirthDate { get; set; } + public string Mobile { get; set; } +} \ No newline at end of file diff --git a/CompanyManagment.Application/InstitutionContractApplication.cs b/CompanyManagment.Application/InstitutionContractApplication.cs index 0f78f321..8e68bc8e 100644 --- a/CompanyManagment.Application/InstitutionContractApplication.cs +++ b/CompanyManagment.Application/InstitutionContractApplication.cs @@ -1302,33 +1302,33 @@ public class InstitutionContractApplication : IInstitutionContractApplication return await _institutionContractRepository.ExtensionComplete(request); } - public async Task ExtensionInquiry(InstitutionContractExtensionInquiryRequest command) + public async Task ExtensionInquiry(InstitutionContractExtensionInquiryRequest command) { var op = new OperationResult(); #region Validations if (string.IsNullOrWhiteSpace(command.NationalCode) || string.IsNullOrWhiteSpace(command.BirthDate) || string.IsNullOrWhiteSpace(command.Mobile)) - return op.Failed("هیچ یک از فیلد ها نمیتواند خالی باشد"); + throw new BadRequestException("هیچ یک از فیلد ها نمیتواند خالی باشد"); if (command.NationalCode.NationalCodeValid() != "valid") - return op.Failed("کد ملی نا معتبر است"); + throw new BadRequestException("کد ملی نا معتبر است"); if (!command.BirthDate.TryToGeorgianDateTime(out var dateOfBirthGr)) - return op.Failed("تاریخ تولد نا معتبر است"); + throw new BadRequestException("تاریخ تولد نا معتبر است"); if (!command.Mobile.IsMobileValid()) - return op.Failed("شماره همراه نا معتبر است"); + throw new BadRequestException("شماره همراه نا معتبر است"); #endregion var contractingParty = _contractingPartyRepository.Get(command.ContractingPartyId); if (contractingParty == null) - return op.Failed("طرف حسابی یافت نشد"); + throw new BadRequestException("طرف حسابی یافت نشد"); // بررسی اینکه آیا طرف حساب قبلا احراز هویت شده یا نه if (contractingParty.IsAuthenticated) - return op.Failed("طرف حساب قبلا احراز هویت شده است"); + throw new BadRequestException("طرف حساب قبلا احراز هویت شده است"); @@ -1343,9 +1343,9 @@ public class InstitutionContractApplication : IInstitutionContractApplication // چک کردن مطابقت شماره همراه و کد ملی var isMachMobilAndNationalCode = await _uidService.IsMachPhoneWithNationalCode(command.NationalCode, command.Mobile); if (isMachMobilAndNationalCode == null) - return op.Failed("خطا در سرویس احراز هویت"); + throw new BadRequestException("خطا در سرویس احراز هویت"); if (!isMachMobilAndNationalCode.IsMatched) - return op.Failed("شماره همراه وارد شده با کد ملی مطابقت ندارد"); + throw new BadRequestException("شماره همراه وارد شده با کد ملی مطابقت ندارد"); // دریافت اطلاعات احراز هویت var apiResponse = await _uidService.GetPersonalInfo(command.NationalCode, command.BirthDate); @@ -1357,7 +1357,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication throw new InternalServerException("سیستم احراز هویت در دسترس نمی باشد"); if (apiResponse.ResponseContext.Status.Code != 0) - return op.Failed($"{apiResponse.ResponseContext.Status.Message}"); + throw new BadRequestException($"{apiResponse.ResponseContext.Status.Message}"); var idNumber = apiResponse.IdentificationInformation.ShenasnamehNumber == "0" ? apiResponse.IdentificationInformation.NationalId @@ -1389,7 +1389,21 @@ public class InstitutionContractApplication : IInstitutionContractApplication // ذخیره تغییرات await _contractingPartyRepository.SaveChangesAsync(); - return op.Succcedded(); + var result = new InstitutionContractExtensionInquiryResponse(); + result.Id = contractingParty.id; + result.FName = contractingParty.FName; + result.LName = contractingParty.LName; + result.DateOfBirthFa = command.BirthDate; + result.FatherName = contractingParty.FatherName; + result.IdNumberSerial = contractingParty.IdNumberSerial; + result.IdNumber = idNumber; + result.Address = contractingParty.Address; + result.Phone = contractingParty.Phone; + result.City = contractingParty.City; + result.State = contractingParty.State; + result.RepresentativeId = contractingParty.RepresentativeId; + result.NationalCode = contractingParty.Nationalcode; + return result; } private async Task> CreateLegalContractingPartyEntity(