feat(bill delay):add delay date in update
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
|
import datetime
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from app.config import TaskEnv
|
from app.config import TaskEnv
|
||||||
from app.models.bill_delay import BillDelayModel
|
from app.models.bill_delay import BillDelayModel
|
||||||
|
from app.models.project import ProjectModel
|
||||||
from core.repositories.base import BaseRepository
|
from core.repositories.base import BaseRepository
|
||||||
from core.service.mongo_db import use_collection
|
from core.service.mongo_db import use_collection
|
||||||
|
|
||||||
@@ -61,16 +63,22 @@ class BillDelayRepository(BaseRepository):
|
|||||||
async def create(self, coding: BillDelayModel):
|
async def create(self, coding: BillDelayModel):
|
||||||
coding = self.create_sum(coding)
|
coding = self.create_sum(coding)
|
||||||
delay = await super().create(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
|
return delay
|
||||||
async def update(self, _id: UUID, update: BillDelayModel):
|
async def update(self, _id: UUID, update: BillDelayModel):
|
||||||
old = await self.get(_id)
|
old = await self.get(_id)
|
||||||
old_model = BillDelayModel(**old)
|
old_model = BillDelayModel(**old)
|
||||||
update = self.create_sum(update)
|
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
|
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},
|
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)
|
return await super().update(_id, update)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user