/
Kostyable
/
callmaster
Обзор
Документация
Войти
/
Kostyable
/
callmaster
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/controllers/order_controller.py
57 строк
3 KB
Kostyable
feat: implement mvc model
29 окт 2024, 17:52
29 окт 2024, 17:52
0ad77c5
Код
Авторство
О чём код?
from fastapi import HTTPException from app.database.crud import create_order, update_order_status, get_orders_by_client_id, get_orders_by_specialist_id from app.models.main import OrderStatusEnum, SpecializationEnum def create_new_order_controller(order_data): if order_data['specialization'] not in SpecializationEnum.__members__.values(): raise HTTPException(status_code=400, detail="Неверная специализация") order_data['status'] = OrderStatusEnum.pending.value order_id = create_order(order_data) if order_id is None: raise HTTPException(status_code=500, detail="Ошибка создания заявки") return order_id def update_order_status_controller(order_id, status): try: status_enum = OrderStatusEnum(status) except ValueError: raise HTTPException(status_code=400, detail="Некорректный статус") if status_enum == OrderStatusEnum.in_progress: return accept_order_controller(order_id) elif status_enum == OrderStatusEnum.canceled: return cancel_order_controller(order_id) elif status_enum == OrderStatusEnum.completed: return complete_order_controller(order_id) else: raise HTTPException(status_code=400, detail="Некорректный статус для обновления") def accept_order_controller(order_id): success = update_order_status(order_id, OrderStatusEnum.in_progress.value) if not success: raise HTTPException(status_code=500, detail="Ошибка принятия заявки в работу") return {"message": "Заявка успешно принята в работу"} def cancel_order_controller(order_id): success = update_order_status(order_id, OrderStatusEnum.canceled.value) if not success: raise HTTPException(status_code=500, detail="Ошибка отмены заявки") return {"message": "Заявка успешно отменена"} def complete_order_controller(order_id): success = update_order_status(order_id, OrderStatusEnum.completed.value) if not success: raise HTTPException(status_code=500, detail="Ошибка завершения заявки") return {"message": "Заявка успешно завершена"} def get_client_orders_controller(client_id): orders = get_orders_by_client_id(client_id) if not orders: raise HTTPException(status_code=404, detail="Заявки не найдены") return orders def get_specialist_orders_controller(specialist_id): orders = get_orders_by_specialist_id(specialist_id) if not orders: raise HTTPException(status_code=404, detail="Заявки не найдены") return orders