fc / apps /core /dto /cases.py
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
3.25 kB
"""Module for cases."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from apps.cases.models import Case, CaseParty, CaseTemplateBinding
@dataclass
class CaseDTO:
id: int
name: str
current_stage: str | None = None
contract_id: int | None = None
status: str = "active"
case_type: str | None = None
cause_of_action: str | None = None
target_amount: str | None = None
is_archived: bool = False
start_date: str | None = None
effective_date: str | None = None
case_number: str | None = None
@classmethod
def from_model(cls, case: Case) -> CaseDTO:
return cls(
id=case.id,
name=case.name,
current_stage=case.current_stage,
contract_id=case.contract_id,
status=case.status,
case_type=case.case_type,
cause_of_action=case.cause_of_action,
target_amount=str(case.target_amount) if case.target_amount is not None else None,
is_archived=case.is_archived,
start_date=str(case.start_date) if case.start_date else None,
effective_date=str(case.effective_date) if case.effective_date else None,
)
@dataclass
class CaseSearchResultDTO:
id: int
name: str
case_numbers: list[str] = field(default_factory=list)
parties: list[str] = field(default_factory=list)
created_at: str | None = None
@dataclass
class CaseTemplateBindingDTO:
id: int
case_id: int
template_id: int
template_name: str
template_function_code: str | None = None
binding_source: str = "manual"
created_at: str | None = None
@classmethod
def from_model(cls, binding: CaseTemplateBinding) -> CaseTemplateBindingDTO:
return cls(
id=binding.id,
case_id=binding.case_id,
template_id=binding.template_id,
template_name=binding.template.name if binding.template else "",
template_function_code=None,
binding_source=binding.binding_source,
created_at=str(binding.created_at) if binding.created_at else None,
)
@dataclass
class CasePartyDTO:
id: int
case_id: int
client_id: int
client_name: str
client_type: str
legal_status: str
id_number: str | None = None
address: str | None = None
phone: str | None = None
legal_representative: str | None = None
is_our_client: bool = False
@classmethod
def from_model(cls, party: CaseParty) -> CasePartyDTO:
client = party.client
return cls(
id=party.id,
case_id=party.case_id,
client_id=party.client_id,
client_name=client.name if client else "",
client_type=client.client_type if client else "natural",
legal_status=party.legal_status or "",
id_number=client.id_number if client else None,
address=client.address if client else None,
phone=client.phone if client else None,
legal_representative=client.legal_representative if client else None,
is_our_client=client.is_our_client if client else False,
)