From e1e8ad79b4b41b6a2513c31d226a9372e4a21eba Mon Sep 17 00:00:00 2001 From: "Guillaume G." Date: Fri, 18 Apr 2025 01:04:03 +0200 Subject: [PATCH] Implentation of get current firm --- .idea/misc.xml | 2 +- .idea/roleplay-contracts.iml | 2 +- api/rpk-api/firm/current_firm/__init__.py | 23 +++++++++++++++++++++-- api/rpk-api/firm/current_firm/routes.py | 6 +++++- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 264b142..6c59753 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/.idea/roleplay-contracts.iml b/.idea/roleplay-contracts.iml index 4ca2486..ba5db29 100644 --- a/.idea/roleplay-contracts.iml +++ b/.idea/roleplay-contracts.iml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/api/rpk-api/firm/current_firm/__init__.py b/api/rpk-api/firm/current_firm/__init__.py index a25b942..a52a44f 100644 --- a/api/rpk-api/firm/current_firm/__init__.py +++ b/api/rpk-api/firm/current_firm/__init__.py @@ -5,7 +5,7 @@ from pydantic import Field from firm.core.models import CrudDocument from firm.core.schemas import Writer, Reader -from firm.entity.schemas import EntityIndividualCreate, EntityCorporationCreate +from firm.entity.schemas import EntityIndividualCreate, EntityCorporationCreate, EntityRead class CurrentFirmModel(CrudDocument): @@ -34,7 +34,17 @@ class CurrentFirmModel(CrudDocument): class CurrentFirmSchemaRead(Reader): - pass + entity: EntityRead + partner: EntityRead + instance: str + firm: str + primary_color: str + secondary_color: str + + @classmethod + def from_model_and_entities(cls, model, entity, partner): + schema = cls(**model.model_dump(mode="json"), entity=entity, partner=partner) + return schema class CurrentFirmSchemaCreate(Writer): corporation: EntityCorporationCreate = Field(title="Informations sur la firme") @@ -51,3 +61,12 @@ class CurrentFirmSchemaUpdate(Writer): class Partner(CrudDocument): user_id: PydanticObjectId = Field() entity_id: PydanticObjectId = Field() + + @classmethod + async def get_by_user_id(cls, db, user_id): + document = await cls._get_collection(db).find_one({"user_id": str(user_id)}) + if not document: + return None + + document["id"] = document.pop("_id") + return cls.model_validate(document) diff --git a/api/rpk-api/firm/current_firm/routes.py b/api/rpk-api/firm/current_firm/routes.py index a9a13fa..b4a803d 100644 --- a/api/rpk-api/firm/current_firm/routes.py +++ b/api/rpk-api/firm/current_firm/routes.py @@ -3,13 +3,17 @@ from fastapi import APIRouter, Depends from firm.core.depends import get_authed_tenant_registry, get_uninitialized_registry from firm.current_firm import CurrentFirmModel, CurrentFirmSchemaRead, CurrentFirmSchemaCreate, CurrentFirmSchemaUpdate, Partner from firm.entity.models import Entity, Employee +from firm.entity.schemas import EntityRead current_firm_router = APIRouter() @current_firm_router.get("/", response_model=CurrentFirmSchemaRead, response_description=f"Current Firm records retrieved") async def read(reg=Depends(get_authed_tenant_registry)) -> CurrentFirmSchemaRead: document = await CurrentFirmModel.get_current(reg.db) - return CurrentFirmSchemaRead.from_model(document) + entity = await Entity.get(reg.db, document.entity_id) + partner = await Partner.get_by_user_id(reg.db, reg.user.id) + partner = await Entity.get(reg.db, partner.entity_id) + return CurrentFirmSchemaRead.from_model_and_entities(document, EntityRead.from_model(entity), EntityRead.from_model(partner)) @current_firm_router.post("/", response_description=f"Current Firm added to the database") async def create(schema: CurrentFirmSchemaCreate, reg=Depends(get_uninitialized_registry)) -> CurrentFirmSchemaRead: