From 7a5111a83cb7fc0ceb86d2d9793e4740ea48672b Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Thu, 11 Apr 2024 20:38:37 +0330 Subject: [PATCH] feat:add bill delay --- app/config/__init__.py | 1 + app/models/bill_delay.py | 42 ++++++++++++++++++++++++++++++++++ app/repositories/bill_delay.py | 8 +++++++ app/urls/__init__.py | 1 + app/urls/bill_delay.py | 37 ++++++++++++++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 app/models/bill_delay.py create mode 100644 app/repositories/bill_delay.py create mode 100644 app/urls/bill_delay.py diff --git a/app/config/__init__.py b/app/config/__init__.py index 01de642..ac8027a 100644 --- a/app/config/__init__.py +++ b/app/config/__init__.py @@ -4,3 +4,4 @@ class TaskEnv: CLN_AUDIT_PRICE = 'audit_price' CLN_AUDIT_FACTOR = 'audit_factor' CLN_AUDIT_PROGRAM = 'audit_program' + CLN_BILL_DELAY = 'bill_delay' diff --git a/app/models/bill_delay.py b/app/models/bill_delay.py new file mode 100644 index 0000000..0a5ccf6 --- /dev/null +++ b/app/models/bill_delay.py @@ -0,0 +1,42 @@ +import uuid +from datetime import datetime +from typing import Optional + +import pydantic +from pydantic import Field + +from core.models.base import BaseModel + +class Financial(pydantic.BaseModel): + status:Optional[int] = Field(description="صورت وضعیت") + prepayment:Optional[int] = Field(description=" پیش پرداخت") + modification:Optional[int] = Field(description="تعدیل") + good_job:Optional[int] = Field(description="حسن انجام کار") + +class ForceMajor(pydantic.BaseModel): + force_event:Optional[int] = Field(description="حوادث قهری") + material:Optional[int] = Field(description="محدودیت ورود مصالح") + rules:Optional[int] = Field(description="وضع قوانین جدید") + define_indicators:Optional[int] = Field(description="تاخیرات در اعالم شاخص های قطعی") + +class Technical(pydantic.BaseModel): + map_technical:Optional[int] = Field(description="تغییر نقشه و مشخصات فنی") + permit:Optional[int] = Field(description="تاخیرات در تحویل کارگاه معارض زمین یا اخذ پروانه") + purchase:Optional[int] = Field(description="تاخیر در خرید کارفرمایی") + suspense:Optional[int] = Field(description="تعلیق پیمان ماده 49") + +class BillDelayModel(BaseModel): + id: Optional[uuid.UUID] = Field(alias='_id') + project_id: uuid.UUID = Field(description='کد شناسایی پروژ') + financial:Optional[Financial] = Field(description='مسائل مالی') + force_major:Optional[ForceMajor] = Field(description='فورس ماژور') + technical:Optional[Technical] = Field(description='فنی و قراردادی') + extra_new_work:Optional[int] = Field(description='کارهای اضافی جدید') + other:Optional[int] = Field(description='سایر') + illegal:Optional[int] = Field(description='غیر مجاز') + date_present_bill = Optional[datetime] = Field(description='تاریخ ارائه لایحه') + date_consider_bill = Optional[datetime] = Field(description='تاریخ رسیدگی لایحه') + date_submission_bill = Optional[datetime] = Field(description='تاریخ ابلاغ لایحه') + description: Optional[str] = Field(description='توضیحات') + end_at = Optional[datetime] = Field(description='تاریخ خاتمه پیمان') + diff --git a/app/repositories/bill_delay.py b/app/repositories/bill_delay.py new file mode 100644 index 0000000..30f71e5 --- /dev/null +++ b/app/repositories/bill_delay.py @@ -0,0 +1,8 @@ +from app.config import TaskEnv +from app.models.bill_delay import BillDelayModel +from core.repositories.base import BaseRepository + + +class BillDelayRepository(BaseRepository): + def __init__(self): + super().__init__(collection=TaskEnv.CLN_BILL_DELAY, model=BillDelayModel) diff --git a/app/urls/__init__.py b/app/urls/__init__.py index c39e1c2..7641888 100644 --- a/app/urls/__init__.py +++ b/app/urls/__init__.py @@ -6,3 +6,4 @@ from .parliament_audit import * from .price_audit import * from .factor_audit import * from .program_audit import * +from .bill_delay import * diff --git a/app/urls/bill_delay.py b/app/urls/bill_delay.py new file mode 100644 index 0000000..0870f8d --- /dev/null +++ b/app/urls/bill_delay.py @@ -0,0 +1,37 @@ +from uuid import UUID + +from fastapi import Body + +from app.models.bill_delay import BillDelayModel +from app.repositories.bill_delay import BillDelayRepository +from core.app import app +from core.utils.router import generate_router, shrink +from core.utils.table_engine import TableEngineExport, TableEngineRequestType + +ThisModel = BillDelayModel +router_base_url = 'delay' +_tag_base = [router_base_url] +router = generate_router(router_base_url, auth_dependencies=False, version='v2') +repo = BillDelayRepository() + +@router.post('/create', response_model=ThisModel, tags=_tag_base) +@shrink(repo.create) +def create(coding: ThisModel = Body(...)): + pass + +@router.put('/{_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.update) +def update(_id: UUID, coding: ThisModel = Body(...)): + pass + +@router.get('/{_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.get) +def get(_id: UUID): + pass + +@router.post('', response_model=TableEngineExport[ThisModel], tags=_tag_base) +@shrink(repo.fetch) +def fetch(body: TableEngineRequestType = Body(...)): + pass + +app.include_router(router) \ No newline at end of file