feat(bill delay):add delay date in update

This commit is contained in:
shahzeydyfah
2025-06-06 22:30:26 +03:30
parent 3d3d06866c
commit 8af8191b55
+11 -3
View File
@@ -1,7 +1,9 @@
import datetime
from uuid import UUID
from app.config import TaskEnv
from app.models.bill_delay import BillDelayModel
from app.models.project import ProjectModel
from core.repositories.base import BaseRepository
from core.service.mongo_db import use_collection
@@ -61,16 +63,22 @@ class BillDelayRepository(BaseRepository):
async def create(self, coding: BillDelayModel):
coding = self.create_sum(coding)
delay = await super().create(coding)
await use_collection(TaskEnv.CLN_PROJECT).update_one({"_id": coding.project_id}, {"$inc": {"all_delay_day":coding.total_day}})
project = await use_collection(TaskEnv.CLN_PROJECT).find_one({"_id": coding.project_id})
project_model = ProjectModel(**project)
date_delay = project_model.date_delay + datetime.timedelta(days=coding.total_day)
await use_collection(TaskEnv.CLN_PROJECT).update_one({"_id": coding.project_id}, {"$inc": {"all_delay_day":coding.total_day},"$set":{"date_delay":date_delay}})
return delay
async def update(self, _id: UUID, update: BillDelayModel):
old = await self.get(_id)
old_model = BillDelayModel(**old)
update = self.create_sum(update)
if old_model.total_day:
project = await use_collection(TaskEnv.CLN_PROJECT).find_one({"_id": update.project_id})
project_model = ProjectModel(**project)
if old_model.total_day != update.total_day:
diff = update.total_day - old_model.total_day
date_delay = project_model.date_delay + datetime.timedelta(days=diff)
await use_collection(TaskEnv.CLN_PROJECT).update_one({"_id": update.project_id},
{"$inc": {"all_delay_day": diff}})
{"$inc": {"all_delay_day": diff},"$set":{"date_delay":date_delay}})
return await super().update(_id, update)