Skip to content

alex-buraykin/PickPoint.TestTask

Repository files navigation

Тестовое задание PickPoint

Реализовать REST API, с помощью которого регистрировать, отслеживать и управлять заказом, а также получать информацию о постамате. Предполагается, что данное API будет реализовано для интеграции с интернет-магазинами, которые, в свою очередь, будут предоставлять сервис по управлению заказом со своего сайта.

Центральная сущность – заказ. Заказ обладает следующими характеристиками:

  • Номер заказа (int)
  • Статус заказа (int)
  • Состав заказа: массив товаров (string[])
  • Стоимость заказа (decimal)
  • Номер постамата доставки (string)
  • Номер телефона получателя (string)
  • ФИО получателя (string)

Возможные значения статусов заказа:

  • Зарегистрирован = 1
  • Принят на складе = 2
  • Выдан курьеру = 3
  • Доставлен в постамат = 4
  • Доставлен получателю = 5
  • Отменен = 6

Методы по заказу, которые необходимо реализовать:

  • Создание заказа
  • Изменение заказа
  • Получение информации по заказу
  • Отмена заказа

Второй сущностью является постамат. Постамат характеризуется следующими свойствами:

  • Номер (string)
  • Адрес постамата (string)
  • Статус постамата (bool, Рабочий = true, иначе закрыт)

Методы по постамату, которые необходимо реализовать:

  • Получение списка рабочих постаматов, отсортированных по номеру в алфавитном порядке
  • Получение информации о постамате

Требования:

Реализовать операции: создание заказа, получение информации о заказе (tracking), обновление информации о заказе, отмена заказа, получение списка постаматов и информации о постамате.

  • За хранилище заказов и постаматов можно взять любое хранилище, НО, плюсом будет:
    • реализация CodeFirst на Entity Framework Core (MS SQL/Postgree)
    • реализация с помощью NoSql DB на выбор.
  • В случае, если заказ не существует, сообщать код ответа: «не найден».
  • Поля статус заказа и номер постамата неизменяемые.
  • В заказ может попадать не более 10 товаров. Если товаров больше, выдавать код ответа «ошибка запроса».
  • В случае, если указан номер постамата, формат которого некорректен, выдавать ошибку запроса. Формат номера постамата: «XXXX-XXX», где X – это цифра.
  • В случае, если постамат не существует, сообщать код ответа: «не найден».
  • Формат номера телефона должен удовлетворять маске «+7XXX-XXX-XX-XX», где вместо X должны стоять цифры. Если номер не соответствует формату, выдавать код ответа «ошибка запроса».
  • Если идет попытка создать заказ на закрытый постамат – запрещать регистрировать заказ с кодом ошибки «запрещено».

Язык реализации: C#, формат запросов/ответов: JSON, протокол обмена: HTTP. Желательно выложить код в виде публичного проекта на ресурсе GitHub.

About

Тестовое задание PickPoint

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages