Source code for q2_cores.Symitar.models.extended_demographic

from dataclasses import dataclass
from datetime import datetime, date
from typing import Optional

from q2_sdk.models.demographic import Address


[docs] class AccountStatus: ACTIVE = "Active" CLOSED = "Closed"
[docs] class RecordType: DOMESTIC = "Domestic" INTERNATIONAL = "International"
[docs] @dataclass class AddressRec(Address): address_1: Optional[str] address_2: Optional[str] city: Optional[str] state: Optional[str] zipcode: Optional[str] address_type: Optional[str] country: Optional[str] country_code: Optional[str] def __post_init__(self): super().__init__( address_1=self.address_1, address_2=self.address_2, city=self.city, state=self.state, zipcode=self.zipcode, ) self.address_type = ( RecordType.INTERNATIONAL if self.address_type == "01" else RecordType.DOMESTIC )
[docs] @dataclass class Other: home_phone: str mobile_phone: Optional[str] work_phone: Optional[str] work_phone_extension: Optional[str] phone_type: str alternative_email: Optional[str] email: str def __post_init__(self): self.phone_type = ( RecordType.INTERNATIONAL if self.phone_type == "01" else RecordType.DOMESTIC )
[docs] @dataclass class Account: memo_mode: str account_type: str account_number: str account_close_date: str def __post_init__(self): self.account_status = get_account_status(self.account_close_date)
[docs] @dataclass class DemographicInfoExt: full_name: str first_name: str last_name: str middle_name: Optional[str] mothers_maiden_name: Optional[str] date_of_birth: str ssn: str is_primary: str primary_cif: str account_type: str account_close_date: str drivers_license: str core_specific: dict address_records: AddressRec other_records: Other def __post_init__(self): self.is_primary = True if int(self.is_primary) == 0 else False self.other_info = self.other_records
[docs] def get_account_status(account_close_date): account_status = None if [int(s) for s, n in enumerate(account_close_date) if n.isdigit()]: close_date_obj = datetime.strptime(account_close_date, "%m/%d/%Y").date() if close_date_obj < date.today(): account_status = AccountStatus.CLOSED if account_status != "Closed": account_status = AccountStatus.ACTIVE return account_status