mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +08:00 
			
		
		
		
	refactor(api_models): enhance accepted countries/currencies types (#807)
This commit is contained in:
		| @ -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(¤cy.foreign_into()) | ||||
|                 }) | ||||
|             } else { | ||||
|                 ac.list.as_ref().map_or(true, |disable_currencies| { | ||||
|                     !disable_currencies.contains(¤cy.foreign_into()) | ||||
|                 }) | ||||
|             } | ||||
|         pm.accepted_currencies.as_ref().map_or(true, |ac| match ac { | ||||
|             admin::AcceptedCurrencies::EnableOnly(acc) => acc.contains(¤cy.foreign_into()), | ||||
|             admin::AcceptedCurrencies::DisableOnly(den) => !den.contains(¤cy.foreign_into()), | ||||
|             admin::AcceptedCurrencies::AllAccepted => true, | ||||
|         }) | ||||
|     }) | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 ItsMeShashank
					ItsMeShashank