import datetime import uuid from typing import Optional, Literal, List import pydantic from pydantic import Field from core.models.base import BaseModel class CreateDesignProgress(pydantic.BaseModel): project_id: uuid.UUID = Field(description='کد شناسایی پروژه در این فیلد ذخیره می شود') type: Literal[1, 2, 3, 4, 5, 6, 7] = Field(description=""" 1. تکمیل مدارک و مستندات .2 فاز صفر .3 فاز یک .4 طراحی شبکه و دوربین و برق اضطراری .5 فاز دو .6 متر برآورد .7 اسناد مناقصه """) parent_id: Optional[uuid.UUID] = Field(description='زیر مجموعه کدام نوع اصلی است') sub_type: Optional[Literal[1, 2, 3, 4, 5, 6, 7]] = Field(description=""" 1. برنامه فیزیکی 2. گزارش فاز صفر کلیه رشته ها 3. آلترناتیک لکه گذاری جا نمایی در سایت 4. آلترناتیک لکه گذاری معماری طبقات 5. فاز یک معماری 6.تائید دانشگاه علوم پزشکی 7.گزارش های کلیه رشته ها """) class UpdateDesignProgress(pydantic.BaseModel): complete_at: Optional[datetime.datetime] = Field(description='تاریخ تکمیل مدارک') class DesignProgressModel(BaseModel,CreateDesignProgress): id: Optional[uuid.UUID] = Field(alias='_id') start_at: Optional[datetime.datetime] = Field(description='تاریخ اولین درخواست در این فیلد قرار می گیرد') complete_at: Optional[datetime.datetime] = Field(description='تاریخ تکمیل مدارک') user_complete: Optional[int] = Field(description='کاربری که اطلاعات را تکمیل می کند در این فیلد قرار می گیرد') class SubRecord(pydantic.BaseModel): date_at: datetime.datetime = Field(description='تاریخ در این فیلد ذخیره می شود') number: Optional[str] = Field(description='شماره نامه در این فیلد ذخیره می شود') description: Optional[str] = Field(description='توضیحات در این فیلد ذخیره می شود') class Record(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') title: str = Field(description='عنوان در این فیلد قرار میگیرد') send: SubRecord = Field(description='اطلاعات ارسال در این فیلد ذخیره می شود') receive: Optional[SubRecord] = Field(description='اطلاعات دریافت در این فیلد ذخیره می شود') class RecordModel(Record): design_progress_id: uuid.UUID = Field(description='کد شناسایی فیلد پیشرفت طراحی در این فیلد قرار می گیرد') # class CreateDesignProgress(DesignProgressModel): # records:Optional[List[Record]]=Field(description='لیست رکوردها د این فیلد قرار میگیرد') class GetRecord(pydantic.BaseModel): project_id:uuid.UUID = Field(description='کد شناسایی پروژ') type:Literal[1, 2, 3, 4, 5, 6, 7] = Field(description='نوع') sub_type:Optional[Literal[1, 2, 3, 4, 5, 6, 7]]