Refactor discount calculation and response models for institution contracts

- Replace InstitutionContractExtensionPaymentResponse with InstitutionContractDiscountResponse in discount-related methods and endpoints
- Update request and response models to include OneMonthAmount, Obligation, and improved discount fields
- Adjust method signatures and controller actions to use new response types
- Refactor discount calculation logic to support new structure and ensure correct plan updates for both installment and one-time payments
- Improve naming consistency for discount percentage fields
This commit is contained in:
2025-11-29 20:07:29 +03:30
parent 40dd90074b
commit d2f0ed46ae
6 changed files with 253 additions and 54 deletions

View File

@@ -87,7 +87,7 @@ public class CreateInstitutionContractRequest
/// <summary>
/// مبلغ کل قرارداد
/// </summary>
public double TotalAmount { get; set; }
public double PaymentAmount { get; set; }
/// <summary>
/// آیا قرارداد اقساطی است؟

View File

@@ -215,8 +215,8 @@ public interface IInstitutionContractApplication
Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id);
Task<OperationResult<string>> VerifyOtpAndMakeGateway(Guid publicId, string code, string callbackUrl);
Task<InstitutionContractWorkshopDetailViewModel> GetWorkshopInitialDetails(long workshopDetailsId);
InstitutionContractExtensionPaymentResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
InstitutionContractExtensionPaymentResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
#region Extension
@@ -231,9 +231,10 @@ public interface IInstitutionContractApplication
Task<InstitutionContractExtensionPaymentResponse> GetExtensionPaymentMethod(
InstitutionContractExtensionPaymentRequest request);
Task<InstitutionContractExtensionPaymentResponse> SetDiscountForExtension(
InstitutionContractSetDiscountForExtensionRequest request);
Task<ActionResult<InstitutionContractExtensionPaymentResponse>> ResetDiscountForExtension(InstitutionContractResetDiscountForExtensionRequest request);
Task<InstitutionContractDiscountResponse> SetDiscountForExtension(
InstitutionContractSetDiscountForExtensionRequest request);
Task<InstitutionContractDiscountResponse> ResetDiscountForExtension(
InstitutionContractResetDiscountForExtensionRequest request);
Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
@@ -264,12 +265,48 @@ public interface IInstitutionContractApplication
}
public class InstitutionContractDiscountResponse
{
public InstitutionContractDiscountOneTimeViewModel OneTime { get; set; }
public InstitutionContractDiscountMonthlyViewModel Monthly { get; set; }
}
public class InstitutionContractDiscountMonthlyViewModel:InstitutionContractDiscountOneTimeViewModel
{
public List<MonthlyInstallment> Installments { get; set; }
}
public class InstitutionContractDiscountOneTimeViewModel
{
/// <summary>
/// مجموع مبالغ
/// </summary>
public string TotalAmount { get; set; }
/// <summary>
/// ارزش افزوده
/// </summary>
public string Tax { get; set; }
/// <summary>
/// مبلغ قابل پرداخت
/// </summary>
public string PaymentAmount { get; set; }
public string DiscountedAmount { get; set; }
public int DiscountPercetage { get; set; }
public string Obligation { get; set; }
public string OneMonthAmount { get; set; }
}
public class InstitutionContractResetDiscountForCreateRequest
{
public int Percentage { get; set; }
public int DiscountPercentage { get; set; }
public double TotalAmount { get; set; }
public bool IsInstallment { get; set; }
public InstitutionContractDuration Duration { get; set; }
public double OneMonthAmount { get; set; }
}
public class InstitutionContractSetDiscountForExtensionRequest
@@ -291,6 +328,7 @@ public class InstitutionContractSetDiscountRequest
public int DiscountPercentage { get; set; }
public double TotalAmount { get; set; }
public InstitutionContractDuration Duration { get; set; }
public double OneMonthAmount { get; set; }
public bool IsInstallment { get; set; }
}