Files
sakhteman/app/models/project.py
T
2024-02-15 23:05:57 +03:30

103 lines
6.4 KiB
Python

import datetime
import uuid
import pydantic
from pydantic import Field
from typing import Optional, List
from core.models.base import BaseModel
class Budget(pydantic.BaseModel):
year:str=Field("سال بودجه")
amount:int=Field("مبلغ بودجه")
class BaseMonitor(pydantic.BaseModel):
type:int = Field(description="""
1.عالیه
2.کارگاهی
3. عالیه-کارگاهی
""")
date_delivery_land:Optional[datetime.datetime] =Field(description=" تاریخ تحویل زمین")
date_building_permit:Optional[datetime.datetime] = Field(description=" تاریخ صدور پروانه ساختمانی")
date_expire_permit:Optional[datetime.datetime] = Field(description="تاریخ پایان اعتبار پروانه ساختمانی")
address:Optional[str] = Field(description="آدرس پروژه")
budget:Optional[List[Budget]]
class AddTFPercent(pydantic.BaseModel):
amount:int = Field(description="مبلغ")
percent:int = Field(description="درصد")
date:datetime.datetime = Field(description="تاریخ ابلاغ")
class Adding(pydantic.BaseModel):
row:int = Field(description="ردیف")
amount:int = Field(description="مبلغ")
date:datetime.datetime = Field(description="تاریخ الحاقیه")
class DetailMonitor(pydantic.BaseModel):
type:int = Field(description="""
1.فهرست بهایی
2.سرجمع
3.سایر
""")
date_create_project:datetime.datetime = Field(description="تاریخ شروع پروژه")
first_time:int = Field(description="مدت اولیه پیمان")
extend_time:int = Field(description="میزان تمدید پیمان")
date_estimate_complete :datetime.datetime = Field(description="تاریخ پیش بینی اتمام")
first_amount:int = Field(description="مبلغ اولیه پیمان")
base_amount_year:str = Field(description="فهرست بهای پایه")
add_25_percent:Optional[List[AddTFPercent]] = Field(description="افزایش تا 25 درصد پیمان")
adding:Optional[List[Adding]] = Field(description="الحاقیه")
class AgentMonitor(pydantic.BaseModel):
workshop_consultant:str = Field(description=" نام مشاور نظارت کارگاهی")
designer:str = Field(description="نام مشاور طراح")
designer_phone:str = Field(description="شماره تماس مشاور طراح")
constractor:str = Field(description=" نام پیمانکار")
constractor_phone:str = Field(description="شماره تماس پیمانکار")
supervisor:str = Field(description="نام سرناظر")
supervisor_phone:str = Field(description=" شماره تماس سر ناظر")
supervisor_building:str = Field(description="نام ناظر ابنیه")
supervisor_building_phone:str = Field(description=" شماره تماس ابنیه")
supervisor_mechanic:str = Field(description="نام ناظر مکانیک")
supervisor_mechanic_phone:str = Field(description=" شماره تماس مکانیک")
supervisor_electricity:str = Field(description=" نام ناظر برق")
supervisor_electricity_phone:str = Field(description=" شماره تماس ناظر برق")
project_manager:str = Field(description=" نام مدیر پروژه")
project_manager_phone:str = Field(description="شماره تماس مدیر پروژه")
supervisor_workshop:str = Field(description=" نام سرپرست کارگاه")
supervisor_workshop_phone:str = Field(description="شماره تماس سرپرست کارگاه")
class StatusBranch(pydantic.BaseModel):
electricity:bool = Field(description="برق")
water:bool = Field(description="آب")
wastewater:bool = Field(description="فاضلاب")
gas:bool = Field(description="گاز")
phone:bool = Field(description="تلفن و فیبر نوری")
class Monitor(pydantic.BaseModel):
code: Optional[str] = Field(description='کد در این فیلد قرار می گیرد')
base_information:Optional[BaseMonitor] = Field(description="اطلاعات پایه")
detail:Optional[DetailMonitor] = Field(description="مشخصات پیمان")
agent:Optional[AgentMonitor] = Field(description="عوامل پروژه")
status_branch:Optional[StatusBranch] = Field(description="وضعیت انشعابات")
class Design(pydantic.BaseModel):
code: Optional[str] = Field(description='کد در این فیلد قرار می گیرد')
title: str = Field(description='عنوان در این فیلد قرار می گیرد')
state: str = Field(description='استان در این فیلد قرار می گیرد')
city: str = Field(description='شهر در این فیلد قرار می گیرد')
nature_id: int = Field(description='کد شناسایی ماهبت در این فیلد قرار می گیرد')
nature: str = Field(description='ماهبت در این فیلد قرار می گیرد')
type_id: int = Field(description='کد شناسایی نوع پروژه در این فیلد قرار می گیرد')
type: str = Field(description='نوع پروژه در این فیلد قرار می گیرد')
budget_id: int = Field(description='کد شناسایی دسته بودچه در این فیلد قرار می گیرد')
budget: str = Field(description='دسته بودجه در این فیلد قرار می گیرد')
date_send: datetime.datetime = Field(description='تاریخ ابالغ/ارجاع')
letter: str = Field(description='شماره نامه')
land_area:Optional[str] = Field(description="مساحت زمین")
building_infrastructure:Optional[str] = Field(description="زیربنای ساختمان")
site_area:Optional[str] = Field(description="مساحت محوطه")
designer:Optional[List[str]] = Field(description="نام طراح")
status_agreement:Optional[str] = Field(description="وضعیت موافقتنامه")
description:Optional[str] = Field(description="توضیحات")
class ProjectModel(BaseModel):
id: Optional[uuid.UUID] = Field(alias='_id')
user_id: int = Field(description='کد شناسایی کاربر در این فیلد قرار می گیرد')
sts: int = Field(description='وضعیت در این فیلد قرار می گیرد')
counter: Optional[int] = Field(description='شمارنده در این فیلد قرار می گیرد')
monitor:Optional[Monitor] = Field(description="فیلدهای نظارت")
design:Design = Field(description='فیلدهای طراحی')