From 841107313f6005c66c6b98df08d1b10f14e2b261 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Sat, 23 Mar 2024 13:14:19 +0330 Subject: [PATCH] feat:add program audit --- app/models/program_audit.py | 7 ++++++- app/repositories/program_audit.py | 14 ++++++++++++-- app/urls/program_audit.py | 7 ++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/models/program_audit.py b/app/models/program_audit.py index 35cb935..f125a8d 100644 --- a/app/models/program_audit.py +++ b/app/models/program_audit.py @@ -1,6 +1,7 @@ import uuid from typing import Optional +import pydantic from pydantic import Field from core.models.base import BaseModel @@ -28,4 +29,8 @@ class ProgramModel(BaseModel): y:Optional[int] = Field(description="مجموع مبلغ کاهش یافته طی دستور کار های قبلی ") y_div_a:Optional[int] = Field(description="A/Y یک عدد درصدی") w:Optional[int] = Field(description="مجموع مابه التفاوت طی دستور کار های قبلی") - w_div_a:Optional[int] = Field(description="A/W یک عدد درصدی") \ No newline at end of file + w_div_a:Optional[int] = Field(description="A/W یک عدد درصدی") + +class CheckLast(pydantic.BaseModel): + project_id: uuid.UUID = Field(description='کد شناسایی پروژ') + audit_program_id: uuid.UUID = Field(description='کد شناسایی دستور کار') \ No newline at end of file diff --git a/app/repositories/program_audit.py b/app/repositories/program_audit.py index 240efd0..eff2c25 100644 --- a/app/repositories/program_audit.py +++ b/app/repositories/program_audit.py @@ -1,8 +1,18 @@ +from fastapi import HTTPException + from app.config import TaskEnv -from app.models.program_audit import ProgramModel +from app.models.program_audit import ProgramModel, CheckLast from core.repositories.base import BaseRepository +from core.service.mongo_db import use_collection class ProgramRepository(BaseRepository): def __init__(self): - super().__init__(collection=TaskEnv.CLN_AUDIT_PROGRAM,model=ProgramModel) \ No newline at end of file + super().__init__(collection=TaskEnv.CLN_AUDIT_PROGRAM,model=ProgramModel) + + async def is_last(self,_inp:CheckLast): + last = await use_collection(TaskEnv.CLN_AUDIT_PROGRAM).find({"project_id":_inp.project_id}).sort('$natural', -1).to_list(1) + if last[0]["_id"] == _inp.audit_program_id: + return True + else: + raise HTTPException(status_code=422,detail='it is not last record') diff --git a/app/urls/program_audit.py b/app/urls/program_audit.py index bbcbddb..2062cb9 100644 --- a/app/urls/program_audit.py +++ b/app/urls/program_audit.py @@ -2,7 +2,7 @@ from uuid import UUID from fastapi import Body -from app.models.program_audit import ProgramModel +from app.models.program_audit import ProgramModel, CheckLast from app.repositories.program_audit import ProgramRepository from core.app import app from core.utils.router import generate_router, shrink @@ -19,6 +19,11 @@ repo = ProgramRepository() def create(coding: ThisModel = Body(...)): pass +@router.post('/last', response_model=ThisModel, tags=_tag_base) +@shrink(repo.is_last) +def is_last(coding: CheckLast = Body(...)): + pass + @router.put('/{_id}', response_model=ThisModel, tags=_tag_base) @shrink(repo.update) def update(_id: UUID, coding: ThisModel = Body(...)):