Files
sakhteman/app/repositories/contract.py
T

69 lines
2.6 KiB
Python

import uuid
from pymongo import ReturnDocument
from app.config import TaskEnv
from app.models.contract import ContractModel, AddendumModel, ExtensionModel
from core.repositories.base import BaseRepository
from core.service.mongo_db import use_collection
from core.utils import get_time
class ContractRepository(BaseRepository):
def __init__(self):
super().__init__(collection=TaskEnv.CLN_CONTRACT, model=ContractModel)
async def create_add(self,_id:uuid.UUID,_inp:AddendumModel):
_inp.id = uuid.uuid4()
_inp.created_at = get_time()
_inp.updated_at = get_time()
contract = await use_collection(TaskEnv.CLN_CONTRACT).find_one_and_update(
{"_id":_id},
{"$push":{"addendum":_inp.dict()}},return_document=ReturnDocument.AFTER
)
return contract
async def update_add(self,_id:uuid.UUID,_inp:AddendumModel):
_inp.updated_at = get_time()
result = await use_collection(TaskEnv.CLN_CONTRACT).find_one_and_update(
{"_id": _id,'addendum.id':_inp.id},
{
"$set":{
'addendum.$.number':_inp.number,
'addendum.$.amount':_inp.amount,
'addendum.$.description':_inp.description,
'addendum.$.end_date':_inp.end_date,
'addendum.$.updated_at':_inp.updated_at,
}
},return_document=ReturnDocument.AFTER)
return result
async def create_extension(self, _id: uuid.UUID, _inp:ExtensionModel):
_inp.id = uuid.uuid4()
_inp.created_at = get_time()
_inp.updated_at = get_time()
contract = await use_collection(TaskEnv.CLN_CONTRACT).find_one_and_update(
{"_id": _id},
{"$push": {"extension": _inp.dict()}}, return_document=ReturnDocument.AFTER
)
return contract
async def update_extention(self, _id: uuid.UUID, _inp:ExtensionModel):
_inp.updated_at = get_time()
result = await use_collection(TaskEnv.CLN_CONTRACT).find_one_and_update(
{"_id": _id,'extension.id':_inp.id},
{
"$set":{
'extension.$.updated_at':_inp.updated_at,
'extension.$.day_to_end':_inp.day_to_end,
'extension.$.description':_inp.description,
'extension.$.status':_inp.status
}
},return_document=ReturnDocument.AFTER)
return result
async def get_list(self,project_id:uuid.UUID):
contract = await use_collection(TaskEnv.CLN_CONTRACT).find(
{"project_id": project_id}
).to_list(None)
return contract