"""
Application models for Centralize
Models for insurance applications (create, update, terminate).
"""
from datetime import date
from typing import List, Optional
from ace.centralize.models.base import ModelBase
from ace.centralize.models.policy import (
CreatePolicyObject,
UpdatePolicyObject,
TerminateCoverageObject,
)
[docs]
class CreateApplicationObject(ModelBase):
[docs]
def __init__(
self,
application_type_id: int,
application_number: Optional[str] = None,
approved_date: Optional[date] = None,
cash_with_application_amount: Optional[float] = None,
declined_date: Optional[date] = None,
delivery_method_id: Optional[int] = None,
effective_date: Optional[date] = None,
interview_type_id: Optional[int] = None,
is_calculated_in_production: Optional[bool] = None,
is_delivered: Optional[bool] = None,
is_replacement: Optional[bool] = None,
issue_date: Optional[date] = None,
reference_number: Optional[str] = None,
signed_date: Optional[date] = None,
signed_jurisdiction_id: Optional[int] = None,
submission_type_id: Optional[int] = None,
submitted_date: Optional[date] = None,
sub_status_id: Optional[int] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
policy: Optional[CreatePolicyObject] = None,
):
self.applicationTypeId = application_type_id
if application_number:
self.applicationNumber = application_number
if approved_date:
self.approvedDate = approved_date
if cash_with_application_amount:
self.cashWithApplicationAmount = cash_with_application_amount
if declined_date:
self.declinedDate = declined_date
if delivery_method_id:
self.deliveryMethodId = delivery_method_id
if effective_date:
self.effectiveDate = effective_date
if interview_type_id:
self.interviewTypeId = interview_type_id
if is_calculated_in_production:
self.isCalculatedInProduction = is_calculated_in_production
if is_delivered:
self.isDelivered = is_delivered
if is_replacement:
self.isReplacement = is_replacement
if issue_date:
self.issueDate = issue_date
if reference_number:
self.referenceNumber = reference_number
if signed_date:
self.signedDate = signed_date
if signed_jurisdiction_id:
self.signedJurisdictionId = signed_jurisdiction_id
if submission_type_id:
self.submissionTypeId = submission_type_id
if submitted_date:
self.submittedDate = submitted_date
if sub_status_id:
self.subStatusId = sub_status_id
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if policy:
self.policy = policy
[docs]
class UpdateApplicationObject(ModelBase):
[docs]
def __init__(
self,
application_id: int = 0,
application_number: Optional[str] = None,
application_type_id: Optional[int] = None,
approved_date: Optional[date] = None,
cash_with_application_amount: Optional[float] = None,
declined_date: Optional[date] = None,
delivery_method_id: Optional[int] = None,
effective_date: Optional[date] = None,
interview_type_id: Optional[int] = None,
is_calculated_in_production: Optional[bool] = None,
is_delivered: Optional[bool] = None,
is_replacement: Optional[bool] = None,
issued_date: Optional[date] = None,
reference_number: Optional[str] = None,
signed_date: Optional[date] = None,
signed_jurisdiction_id: Optional[int] = None,
status_id: Optional[int] = None,
sub_status_id: Optional[int] = None,
submission_type_id: Optional[int] = None,
submitted_date: Optional[date] = None,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
policy: Optional[UpdatePolicyObject] = None,
):
self.id = application_id
if application_number:
self.applicationNumber = application_number
if application_type_id:
self.applicationTypeId = application_type_id
if approved_date:
self.approvedDate = approved_date
if cash_with_application_amount:
self.cashWithApplicationAmount = cash_with_application_amount
if declined_date:
self.declinedDate = declined_date
if delivery_method_id:
self.deliveryMethodId = delivery_method_id
if effective_date:
self.effectiveDate = effective_date
if interview_type_id:
self.interviewTypeId = interview_type_id
if is_calculated_in_production:
self.isCalculatedInProduction = is_calculated_in_production
if is_delivered:
self.isDelivered = is_delivered
if is_replacement:
self.isReplacement = is_replacement
if issued_date:
self.issuedDate = issued_date
if reference_number:
self.referenceNumber = reference_number
if signed_date:
self.signedDate = signed_date
if signed_jurisdiction_id:
self.signedJurisdictionId = signed_jurisdiction_id
if status_id:
self.statusId = status_id
if sub_status_id:
self.subStatusId = sub_status_id
if submission_type_id:
self.submissionTypeId = submission_type_id
if submitted_date:
self.submittedDate = submitted_date
if termination_date:
self.terminationDate = termination_date
if termination_reason_id:
self.terminationReasonId = termination_reason_id
if policy:
self.policy = policy
[docs]
class TerminateApplicationObject(ModelBase):
[docs]
def __init__(
self,
termination_date: Optional[date] = None,
termination_reason_id: Optional[int] = None,
application_id: int = 0,
coverages: Optional[List[TerminateCoverageObject]] = None,
signed_date: Optional[date] = None,
declined_date: Optional[date] = None
):
self.id = application_id
self.terminationDate = termination_date
self.terminationReasonId = termination_reason_id
self.declinedDate = declined_date
if signed_date:
self.signedDate = signed_date
self.policy = {
"id": application_id,
"terminationDate": termination_date,
"terminationReasonId": termination_reason_id,
"coveragesToUpdate": coverages
}