Source code for q2_cores.FiservCleartouch.core

import logging
from typing import Optional
from uuid import uuid4

from q2_sdk.hq.models.hq_credentials import HqCredentials
from q2_sdk.models.cores.base_core import BaseCore
from q2_sdk.models.cores.models.core_user import CoreUser
from .mappers.demographic_info_mapper import DemographicInfoMapper
from .queries.demographic_info_query import DemographicInfoQuery
from .mappers.initial_search_mapper import InitialSearchMapper
from .queries.initial_search_query import InitialSearchQuery


[docs] class Core(BaseCore): CONFIG_FILE_NAME = "FiservCleartouch_Core" OPTIONAL_CONFIGURATIONS = { "POPULATE_MOBILE_PHONE_FROM_MAIN_PHONE": False, } def __init__( self, logger: logging.Logger, core_user: CoreUser, hq_credentials: Optional[HqCredentials] = None, **kwargs, ): super().__init__(logger, core_user, hq_credentials=hq_credentials, **kwargs) self.tran_code = None
[docs] async def build_demographic_info( self, ) -> DemographicInfoMapper: """ Builds a core request using the customer's permanent ID to retrieve demographic information. :return: :py:class:`DemographicInfoMapper` object """ initial_mapper = await self.build_initial_search() customer_perm_id = await initial_mapper.execute() request_dict = { "customer_perm_id": customer_perm_id, "request_id": str(uuid4()), } demographic_info_query = DemographicInfoQuery( logger=self.logger, request_dict=request_dict ) populate_mobile_phone_from_main_phone = getattr( self.config, "populate_mobile_phone_from_main_phone", False ) return DemographicInfoMapper( [demographic_info_query], hq_credentials=self.hq_credentials, zone_context=self.core_user, populate_mobile_phone_from_main_phone=populate_mobile_phone_from_main_phone, )