Source code for q2_cores.CorePro.queries.update_demographic_info_query

import logging

from q2_sdk.models.demographic import DemographicInfo
from q2_cores.CorePro.queries.base_query import CoreProBaseQuery
from q2_cores.CorePro.queries import mock_responses
from q2_cores.CorePro.translation_maps import ADDRESS_MAP_REVERSE, PHONE_MAP_REVERSE


[docs] class UpdateDemographicInfoQuery(CoreProBaseQuery): """POST /customer/update""" def __init__( self, logger: logging.Logger, customer_id: int, demographic_info: DemographicInfo, ): url_path = "/customer/update" body = self._build_body(customer_id, demographic_info) super().__init__(logger, url_path, "POST", body=body)
[docs] def mock_response(self): return mock_responses.mock_update_demographic_info_response()
def _build_body(self, customer_id: int, demographic_info: DemographicInfo): demo = demographic_info email = None dl_number = None dl_state = None if demo.emails: email = demo.emails[0] phones = [ { "phoneType": PHONE_MAP_REVERSE[x.type], "number": x.area_code + x.phone_number, } for x in demo.phones ] addresses = [ { "addressType": ADDRESS_MAP_REVERSE[x.address_type], "addressLine1": x.address_1, "addressLine2": x.address_2, "city": x.city, "state": x.state, "postalCode": x.zipcode, "country": "US", "isActive": True, } for x in demo.addresses ] if demo.driver_license: dl_number = demo.driver_license.dl_number dl_state = demo.driver_license.state body = { "customerId": customer_id, "firstName": demo.first_name, "middleName": demo.middle_name, "lastName": demo.last_name, "birthDate": demo.dob, "taxId": demo.social_security_number, "driversLicenseNumber": dl_number, "driversLicenseState": dl_state, "emailAddress": email, "phones": phones, "addresses": addresses, } return body