Last active
June 25, 2021 17:02
-
-
Save PreyeaRegmi/7344fc4d8f085da7901aba7dca686697 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Usecase Implementation | |
class ValidateBillingAndShippingAddressUseCase extends UseCase< | |
BillingAndShippingAddressValidationRequest, | |
BillingAndShippingAddressValidationResponse> { | |
final AddressRespository _addressRespository; | |
ValidateBillingAndShippingAddressUseCase(this._addressRespository); | |
@override | |
Stream<BillingAndShippingAddressValidationResponse> buildUseCase( | |
BillingAndShippingAddressValidationRequest param) { | |
return _addressRespository.validate(param).asStream(); | |
} | |
} | |
//Usecase Implementation | |
class PostShippingAndValidationBillingShippingAddress extends UseCase< | |
PostShippingAndValidationAddressRequest, | |
BillingAndShippingAddressValidationResponse> { | |
final PostShippingInfoUseCase _postShippingInfoUseCase; | |
final ValidateBillingAndShippingAddressUseCase | |
_billingAndShippingAddressUseCase; | |
PostShippingAndValidationBillingShippingAddress( | |
this._postShippingInfoUseCase, this._billingAndShippingAddressUseCase); | |
@override | |
Stream<BillingAndShippingAddressValidationResponse> buildUseCase( | |
PostShippingAndValidationAddressRequest param) { | |
return _postShippingInfoUseCase | |
.buildUseCase(param._shippingInfoRequest) | |
.flatMap((shippingResponse) => _billingAndShippingAddressUseCase | |
.buildUseCase(param._addressValidationRequest)); | |
} | |
} | |
//Usecase invocation from presentation layer | |
PostShippingAndValidationBillingShippingAddress( | |
PostShippingInfoUseCase(MockedShippingInfoRepository()), | |
ValidateBillingAndShippingAddressUseCase( | |
MockedAddressValidationRepository())) | |
.execute( | |
PostShippingAndValidationAddressRequest(ShippingInfoRequest(), | |
BillingAndShippingAddressValidationRequest()), | |
(result) { | |
//TODO Display result | |
}, | |
(errorMessage) { | |
//TODO Display error | |
}); | |
//Usecase Implementation | |
class PostBillingShippingInfoAndValidateAddressUseCase extends UseCase< | |
BillingShippingInfoRequest, BillingAndShippingAddressValidationResponse> { | |
final PostBillingInfoUseCase _billingInfoUseCase; | |
final PostShippingInfoUseCase _shippingInfoUseCase; | |
final ValidateBillingAndShippingAddressUseCase | |
_billingAndShippingAddressValidationUseCase; | |
PostBillingShippingInfoAndValidateAddressUseCase( | |
this._billingInfoUseCase, | |
this._shippingInfoUseCase, | |
this._billingAndShippingAddressValidationUseCase, | |
); | |
@override | |
Stream<BillingAndShippingAddressValidationResponse> buildUseCase( | |
BillingShippingInfoRequest param) { | |
return Rx.zip2( | |
_billingInfoUseCase.buildUseCase(param.billingInfoRequest), | |
_shippingInfoUseCase.buildUseCase(param.shippingInfoRequest), | |
(BillingInfoResponse billingResult, | |
ShippingInfoResponse shippingResult) => | |
BillingShippinInfoResponse.from(billingResult, shippingResult)) | |
.flatMap((billingShippingResult) => | |
_billingAndShippingAddressValidationUseCase | |
.buildUseCase(BillingAndShippingAddressValidationRequest())); | |
} | |
} | |
//Usecase invocation from presentation layer | |
PostBillingShippingInfoAndValidateAddressUseCase( | |
PostBillingAndShippingInfoUseCase( | |
PostBillingInfoUseCase(MockedBillingInfoRepository()), | |
PostShippingInfoUseCase(MockedShippingInfoRepository())), | |
ValidateBillingAndShippingAddressUseCase( | |
MockedAddressValidationRepository())) | |
.execute( | |
BillingShippingInfoRequest( | |
BillingInfoRequest(), ShippingInfoRequest()), (result) { | |
//TODO Display result | |
}, (errorMessage) { | |
//TODO Display error | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment