first commit
This commit is contained in:
66
app/api/v1/deal/summaries.py
Normal file
66
app/api/v1/deal/summaries.py
Normal file
@ -0,0 +1,66 @@
|
||||
from time import time
|
||||
|
||||
from fastapi import APIRouter
|
||||
from starlette.requests import Request
|
||||
|
||||
from app import mongo
|
||||
from app.utils.response_util import response
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("", tags=[""])
|
||||
async def get(full: bool):
|
||||
start_time = time()
|
||||
|
||||
return response({
|
||||
"summaries": await mongo.get_all_summaries(full)
|
||||
}, start_time=start_time)
|
||||
|
||||
|
||||
@router.post("/reorder", tags=[""])
|
||||
async def reorder(params: dict, request: Request):
|
||||
start_time = time()
|
||||
|
||||
deal_id = params["dealId"]
|
||||
status_id = params["statusId"]
|
||||
index = params["index"]
|
||||
comment = params["comment"]
|
||||
|
||||
deal = await mongo.deals_collection.find_one({"id": deal_id}, {"_id": False})
|
||||
if not deal:
|
||||
return response({"message": "Сделка не найдена", "ok": False}, start_time=start_time)
|
||||
|
||||
update_fields = {
|
||||
"statusId": status_id,
|
||||
"index": index
|
||||
}
|
||||
|
||||
new_status = await mongo.statuses_collection.find_one({"id": status_id}, {"_id": False})
|
||||
if new_status and new_status.get("name") == "Завершено":
|
||||
update_fields["completedAt"] = mongo.created_at()
|
||||
|
||||
old_status_id = deal.get("statusId")
|
||||
await mongo.deals_collection.update_one(
|
||||
{"id": deal_id},
|
||||
{"$set": update_fields}
|
||||
)
|
||||
|
||||
if old_status_id != status_id:
|
||||
new_entry = {
|
||||
"changedAt": mongo.created_at(),
|
||||
"fromStatusId": old_status_id,
|
||||
"toStatusId": status_id,
|
||||
"userId": request.state.user["id"],
|
||||
"comment": comment
|
||||
}
|
||||
|
||||
await mongo.deals_collection.update_one(
|
||||
{"id": deal_id},
|
||||
{"$push": {"statusHistory": new_entry}}
|
||||
)
|
||||
|
||||
return response({
|
||||
"ok": True,
|
||||
"summaries": await mongo.get_all_summaries(False)
|
||||
}, start_time=start_time)
|
||||
Reference in New Issue
Block a user