67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
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)
|