refactor(api_models): enhance accepted countries/currencies types (#807)

This commit is contained in:
ItsMeShashank
2023-03-28 17:01:02 +05:30
committed by GitHub
parent 97b95f0e4d
commit f9ef3135af
4 changed files with 69 additions and 78 deletions

View File

@ -1238,28 +1238,29 @@ fn filter_pm_country_based(
match (accepted_countries, req_country_list) {
(None, None) => (None, None, true),
(None, Some(ref r)) => (
Some(admin::AcceptedCountries {
accept_type: "enable_only".to_owned(),
list: Some(r.to_vec()),
}),
Some(admin::AcceptedCountries::EnableOnly(r.to_vec())),
Some(r.to_vec()),
true,
),
(Some(l), None) => (Some(l.to_owned()), None, true),
(Some(l), Some(ref r)) => {
let list = if l.accept_type == "enable_only" {
filter_accepted_enum_based(&l.list, &Some(r.to_owned()))
} else {
filter_disabled_enum_based(&l.list, &Some(r.to_owned()))
let updated = match l {
admin::AcceptedCountries::EnableOnly(acc) => {
filter_accepted_enum_based(&Some(acc.clone()), &Some(r.to_owned()))
.map(admin::AcceptedCountries::EnableOnly)
}
admin::AcceptedCountries::DisableOnly(den) => {
filter_disabled_enum_based(&Some(den.clone()), &Some(r.to_owned()))
.map(admin::AcceptedCountries::DisableOnly)
}
admin::AcceptedCountries::AllAccepted => {
Some(admin::AcceptedCountries::AllAccepted)
}
};
(
Some(admin::AcceptedCountries {
accept_type: l.accept_type.to_owned(),
list,
}),
Some(r.to_vec()),
true,
)
(updated, Some(r.to_vec()), true)
}
}
}
@ -1275,28 +1276,29 @@ fn filter_pm_currencies_based(
match (accepted_currency, req_currency_list) {
(None, None) => (None, None, true),
(None, Some(ref r)) => (
Some(admin::AcceptedCurrencies {
accept_type: "enable_only".to_owned(),
list: Some(r.to_vec()),
}),
Some(admin::AcceptedCurrencies::EnableOnly(r.to_vec())),
Some(r.to_vec()),
true,
),
(Some(l), None) => (Some(l.to_owned()), None, true),
(Some(l), Some(ref r)) => {
let list = if l.accept_type == "enable_only" {
filter_accepted_enum_based(&l.list, &Some(r.to_owned()))
} else {
filter_disabled_enum_based(&l.list, &Some(r.to_owned()))
let updated = match l {
admin::AcceptedCurrencies::EnableOnly(acc) => {
filter_accepted_enum_based(&Some(acc.clone()), &Some(r.to_owned()))
.map(admin::AcceptedCurrencies::EnableOnly)
}
admin::AcceptedCurrencies::DisableOnly(den) => {
filter_disabled_enum_based(&Some(den.clone()), &Some(r.to_owned()))
.map(admin::AcceptedCurrencies::DisableOnly)
}
admin::AcceptedCurrencies::AllAccepted => {
Some(admin::AcceptedCurrencies::AllAccepted)
}
};
(
Some(admin::AcceptedCurrencies {
accept_type: l.accept_type.to_owned(),
list,
}),
Some(r.to_vec()),
true,
)
(updated, Some(r.to_vec()), true)
}
}
}
@ -1385,16 +1387,10 @@ async fn filter_payment_country_based(
) -> errors::CustomResult<bool, errors::ApiErrorResponse> {
Ok(address.map_or(true, |address| {
address.country.as_ref().map_or(true, |country| {
pm.accepted_countries.as_ref().map_or(true, |ac| {
if ac.accept_type == "enable_only" {
ac.list
.as_ref()
.map_or(false, |enable_countries| enable_countries.contains(country))
} else {
ac.list.as_ref().map_or(true, |disable_countries| {
!disable_countries.contains(country)
})
}
pm.accepted_countries.as_ref().map_or(true, |ac| match ac {
admin::AcceptedCountries::EnableOnly(acc) => acc.contains(country),
admin::AcceptedCountries::DisableOnly(den) => !den.contains(country),
admin::AcceptedCountries::AllAccepted => true,
})
})
}))
@ -1405,16 +1401,10 @@ fn filter_payment_currency_based(
pm: &RequestPaymentMethodTypes,
) -> bool {
payment_intent.currency.map_or(true, |currency| {
pm.accepted_currencies.as_ref().map_or(true, |ac| {
if ac.accept_type == "enable_only" {
ac.list.as_ref().map_or(false, |enable_currencies| {
enable_currencies.contains(&currency.foreign_into())
})
} else {
ac.list.as_ref().map_or(true, |disable_currencies| {
!disable_currencies.contains(&currency.foreign_into())
})
}
pm.accepted_currencies.as_ref().map_or(true, |ac| match ac {
admin::AcceptedCurrencies::EnableOnly(acc) => acc.contains(&currency.foreign_into()),
admin::AcceptedCurrencies::DisableOnly(den) => !den.contains(&currency.foreign_into()),
admin::AcceptedCurrencies::AllAccepted => true,
})
})
}