feat(bill delay):add delay date in update
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user