fix(router): [worldpayvantiv] dispute validations and statuses (#8862)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
AkshayaFoiger
2025-08-07 13:29:28 +05:30
committed by GitHub
parent 4a8eea9aa5
commit 1b2a98ce38
4 changed files with 147 additions and 40 deletions

View File

@ -276,8 +276,10 @@ pub async fn accept_dispute(
core_utils::validate_profile_id_from_auth_layer(profile_id, &dispute)?;
let dispute_id = dispute.dispute_id.clone();
common_utils::fp_utils::when(
!(dispute.dispute_stage == storage_enums::DisputeStage::Dispute
&& dispute.dispute_status == storage_enums::DisputeStatus::DisputeOpened),
!core_utils::should_proceed_with_accept_dispute(
dispute.dispute_stage,
dispute.dispute_status,
),
|| {
metrics::ACCEPT_DISPUTE_STATUS_VALIDATION_FAILURE_METRIC.add(1, &[]);
Err(errors::ApiErrorResponse::DisputeStatusValidationFailed {

View File

@ -929,6 +929,9 @@ pub fn validate_dispute_status(
DisputeStatus::DisputeChallenged
| DisputeStatus::DisputeWon
| DisputeStatus::DisputeLost
| DisputeStatus::DisputeAccepted
| DisputeStatus::DisputeCancelled
| DisputeStatus::DisputeExpired
),
DisputeStatus::DisputeWon => matches!(dispute_status, DisputeStatus::DisputeWon),
DisputeStatus::DisputeLost => matches!(dispute_status, DisputeStatus::DisputeLost),
@ -2614,12 +2617,27 @@ pub fn should_proceed_with_submit_evidence(
dispute_stage: DisputeStage,
dispute_status: DisputeStatus,
) -> bool {
matches!(dispute_stage, DisputeStage::DisputeReversal)
|| matches!(
dispute_status,
DisputeStatus::DisputeExpired
| DisputeStatus::DisputeCancelled
| DisputeStatus::DisputeWon
| DisputeStatus::DisputeLost,
)
matches!(
dispute_stage,
DisputeStage::PreDispute
| DisputeStage::Dispute
| DisputeStage::PreArbitration
| DisputeStage::Arbitration
) && matches!(
dispute_status,
DisputeStatus::DisputeOpened | DisputeStatus::DisputeChallenged
)
}
pub fn should_proceed_with_accept_dispute(
dispute_stage: DisputeStage,
dispute_status: DisputeStatus,
) -> bool {
matches!(
dispute_stage,
DisputeStage::PreDispute | DisputeStage::Dispute | DisputeStage::PreArbitration
) && matches!(
dispute_status,
DisputeStatus::DisputeChallenged | DisputeStatus::DisputeOpened
)
}