From 8af8191b5531ef9a93fca2f9c8d112ac6141d955 Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Fri, 6 Jun 2025 22:30:26 +0330 Subject: [PATCH] feat(bill delay):add delay date in update --- app/repositories/bill_delay.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/repositories/bill_delay.py b/app/repositories/bill_delay.py index c875b91..48f9311 100644 --- a/app/repositories/bill_delay.py +++ b/app/repositories/bill_delay.py @@ -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)