OrderDeferController class

Введение

  1. Описание: Контроллер OrderDeferController предоставляет конечную точку API по переносу/отмене заказа.
  2. Маршруты: Обрабатываeтся POST-запрос по маршруту /order/defer.

Формат запроса

Тело запроса: JSON-объект, содержащий данные заказа, описан в классе OrderDeferDto.

  {
    "orderId": 943129,
    "driverRefuseReasonId": 12,
    "plannedDateDuration": 360,
    "rescheduledPlannedDate": "2024-11-15",
    "lat": 0.0,
    "lng": 0.0,
    "isRecalled": true
  }

Валидация и преобразование данных

  1. Валидация ввода: Производится валидация полей: rescheduledPlannedDate, driverRefuseReasonId

Основная логика

  1. Получение заказа: Контроллер получает данные заказа по orderId.
  2. Проверка причины отказа: Проверяется текущая причина отказа (driverRefuseReasonId) с данными из таблицы refuse_reason, а именно с причиной REPROGRAMACION.
    1. Получается текущий счётчик переносов заказа (rescheduleCount).
    2. Если кол переносов меньше 4, то тогда назначаем статус RescheduleOnDelivering. Иначе назначаем Recall и обнуляем счётчик rescheduleCount.
  3. Если условие из пункта 2 не выполняется: Если флаг isRecalled равен true, устанавливается статус Refuse. В противном случае - назначается статус RescheduleOnDelivering.

Взаимодействие с микросервисами

  1. Hasura: Получение и обновление данных по заказу.
## Ответы сервера
  1. Успешный перенос/отмена заказа: Возвращается статус 200 OK
        {
          "updated": true
        }
      
  2. Ошибки обработки:
    1. Некорректные json данные. Ожидаемый статус - 400 badRequest.
    2. Внутренние ошибки. Ожидаемый статус - 500 internalServerError.
Annotations
  • @Routes(prefix: '/')

Constructors

OrderDeferController()

Properties

hashCode → int
The hash code for this object.
no setterinherited
orderRepository → OrderRepository
final
router → Router
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

handler(Request request) → Future<JsonResponse<void>>
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited