"""Logic for Payment Entity Payoneer Programs.""" from typing import Type from owsresponse import response from abacus_account import models from abacus_account.constants.constants import DEFAULT_PAGE_LIMIT from abacus_account.constants.constants import DEFAULT_PAGE_OFFSET from abacus_account.schemas.payment_entity_payoneer_program import \ PaymentEntityPayoneerProgramListSchema from abacus_account.schemas.payment_entity_payoneer_program import \ PaymentEntityPayoneerProgramSchema from abacus_account.utils.format_error import validation_error from abacus_account.utils.request import validate_pagination_params payment_entity_payoneer_program_schema = PaymentEntityPayoneerProgramSchema() def get_by_payment_entity_id(reference_payment_entity_id): """Get payment_entity_payoneer_program by reference_payment_entity_id.""" items = models.PaymentEntityPayoneerProgram.get_by_payment_entity_id( reference_payment_entity_id ) count = len(items) payment_entity_payoneer_program_list = payment_entity_payoneer_program_schema.dump( items, many=True) return response.Response({ 'items': payment_entity_payoneer_program_list, 'total_count': count }) def get_payment_entity_payoneer_programs( request_params: dict ) -> Type[response.Response]: """Get all payment_entity_payoneer_program's. Arg: request_params (dict)(Optional): dict of query string passed to the url - limit(int): the size of page - offset(int): the page number Returns: A List of payoneer programs """ try: limit = request_params.get('limit', DEFAULT_PAGE_LIMIT) offset = request_params.get('offset', DEFAULT_PAGE_OFFSET) pagination_params = validate_pagination_params(limit, offset) items, total_count = \ models.ReferencePaymentEntity.get_payment_entity_payoneer_programs( **pagination_params ) message = dict( items=PaymentEntityPayoneerProgramListSchema(many=True).dump(items), total_count=total_count ) except Exception as e: return validation_error(str(e)) return response.Response(message=message, status=200)