111 lines
4.9 KiB
Python
111 lines
4.9 KiB
Python
from datetime import date, datetime
|
|
|
|
import luthor.schemas.case as schemas
|
|
import luthor.schemas.cause_list as cl_schemas
|
|
|
|
from fastapi import APIRouter, Depends, Request, Security
|
|
from luthor.models.hearing import Hearing
|
|
from sqlalchemy.orm import Session
|
|
|
|
from ..core.security import get_current_active_user as get_user
|
|
from ..db.session import SessionLocal
|
|
from ..models.case import Case
|
|
from ..schemas.user_token import UserToken
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
# Dependency
|
|
def get_db():
|
|
try:
|
|
db = SessionLocal()
|
|
yield db
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
@router.get("", response_model=cl_schemas.CauseList)
|
|
def report_blank(
|
|
request: Request,
|
|
s: str = None,
|
|
f: str = None,
|
|
db: Session = Depends(get_db),
|
|
user: UserToken = Security(get_user, scopes=["cases"]),
|
|
) -> cl_schemas.CauseList:
|
|
s = date.today() if s is None else datetime.strptime(s, "%d-%b-%Y").date()
|
|
f = date.today() if f is None else datetime.strptime(f, "%d-%b-%Y").date()
|
|
return cl_schemas.CauseList(
|
|
startDate=s,
|
|
finishDate=f,
|
|
cases=[
|
|
case_info(item)
|
|
for item in db.query(Case)
|
|
.join(Case.hearings)
|
|
.filter(Hearing.next_hearing_date >= s, Hearing.next_hearing_date <= f)
|
|
.order_by(Hearing.next_hearing_date)
|
|
.all()
|
|
],
|
|
)
|
|
|
|
|
|
def case_info(item: Case) -> schemas.Case:
|
|
return schemas.Case(
|
|
id=item.id,
|
|
caseSource=schemas.CaseSourceLink(
|
|
id=item.case_source.id, name=item.case_source.name, prefix=item.case_source.prefix
|
|
),
|
|
officeFileNumber=item.office_file_number if item.office_file_number is not None else "",
|
|
courtCaseNumber=item.court_case_number if item.court_case_number is not None else "",
|
|
year=item.year,
|
|
title=item.title if item.title is not None else "",
|
|
docketNumber=item.docket_number if item.docket_number is not None else "",
|
|
receiptDate=item.receipt_date,
|
|
limitation_date=item.limitation_date,
|
|
filingDate=item.filing_date,
|
|
appearOnBehalfOf=item.appear_on_behalf_of if item.appear_on_behalf_of is not None else "",
|
|
questionOfLaw=item.question_of_law if item.question_of_law is not None else "",
|
|
aorName=item.aor_name if item.aor_name is not None else "",
|
|
opposingCouncilAor=item.opposing_council_aor if item.opposing_council_aor is not None else "",
|
|
opposingCouncilDetail=item.opposing_council_detail if item.opposing_council_detail is not None else "",
|
|
lowerCourtCaseNumber=item.lower_court_case_number if item.lower_court_case_number is not None else "",
|
|
dateOfImpugnedJudgement=item.date_of_impugned_judgement,
|
|
briefDescription=item.brief_description if item.brief_description is not None else "",
|
|
remarks=item.remarks if item.remarks is not None else "",
|
|
slpCounter=item.slp_counter if item.slp_counter is not None else "",
|
|
contactDetail=item.contact_detail if item.contact_detail is not None else "",
|
|
caseConnectedWith=item.case_connected_with if item.case_connected_with is not None else "",
|
|
bunchCases=item.bunch_cases if item.bunch_cases is not None else "",
|
|
court=schemas.CourtLink(id=item.court.id, name=item.court.name) if item.court is not None else None,
|
|
department=schemas.DepartmentLink(id=item.department.id, name=item.department.name)
|
|
if item.department is not None
|
|
else None,
|
|
office=schemas.OfficeLink(id=item.office.id, name=item.office.name) if item.office is not None else None,
|
|
caseType=schemas.CaseTypeLink(id=item.case_type.id, name=item.case_type.name)
|
|
if item.case_type is not None
|
|
else None,
|
|
act=schemas.ActLink(id=item.act.id, name=item.act.name) if item.act is not None else None,
|
|
nature=schemas.NatureLink(id=item.nature.id, name=item.nature.name) if item.nature is not None else None,
|
|
officeStatus=schemas.OfficeStatusLink(id=item.office_status.id, name=item.office_status.name)
|
|
if item.office_status is not None
|
|
else None,
|
|
courtStatus=schemas.CourtStatusLink(id=item.court_status.id, name=item.court_status.name)
|
|
if item.court_status is not None
|
|
else None,
|
|
hearings=[
|
|
schemas.Hearing(
|
|
id=h.id,
|
|
courtNumber=h.court_number if h.court_number is not None else "",
|
|
itemNumber=h.item_number if h.item_number is not None else "",
|
|
bench=h.bench if h.bench is not None else "",
|
|
proceedings=h.proceedings if h.proceedings is not None else "",
|
|
complianceDate=h.compliance_date,
|
|
nextHearingDate=h.next_hearing_date,
|
|
courtStatus=schemas.CourtStatusLink(id=h.court_status.id, name=h.court_status.name)
|
|
if h.court_status is not None
|
|
else None,
|
|
)
|
|
for h in item.hearings
|
|
],
|
|
)
|