Skip to content

Files

Latest commit

Polina Janochkinainstallero
Polina Janochkina
and
May 1, 2019
3b3563e · May 1, 2019

History

History
62 lines (37 loc) · 3.7 KB

job_advertisement_site.md

File metadata and controls

62 lines (37 loc) · 3.7 KB

Ruby + JSON RESTful API: приложение с объявлениями о работе

Сделать приложение на Ruby с JSON RESTful API.

Требования:

  • Пользователь оставляет объявление (announcement) о работе, а другие пользователи могут на это объявление откликаться (response) с ценой («я могу за столько-то»).

  • Автор объявления может отменить (cancel) его. В этом случае все отклики должны быть автоматически отклонены (declined).

  • Автор может принять (accept) один из откликов, тогда другие отклики должны быть отклонены (declined), а объявление стать закрытым (closed).

  • На закрытое или отмененное объявление нельзя оставлять отклики.

  • Пользователь оставивший отклик может сам свой отклик отменить (cancel). В этом случае статус отклика должен быть cancelled, а не declined.

  • Также в API должны быть методы для получения своего объявления со всеми откликами и получения списка всех активных объявлений (без откликов).

Сущности

  • Announcement (id, user_id, description, status), description — текст, не более 1000 символов;

  • Response (id, announcement_id, user_id, price, status), price - int, цена в рублях, от 100 до 10000;

  • User (id).

Статусы объявления

  • active - активно, можно откликаться;
  • cancelled - отменено автором;
  • closed - закрыто (есть принятый отклик).

Статусы отклика на объявление

  • pending - новый отклик;
  • cancelled - отменен автором отклика;
  • declined - отменен автором объявления (или автоматически, если объявление закрыто или отменено);
  • accepted - принято автором объявления.

Ограничения

  • откликаться можно только на активное объявление;
  • если автор объявления отклонил чей-то отклик, то повторно откликаться нельзя;
  • если автор отклика отменил свой отклик, то он может повторно откликнуться на это же объявление.

Аутентификация

В API вместо полноценной аутентификации, можно передавать user_id в заголовках запроса.

Также можно сделать эндпоинт для создания пользователя для тестов: POST/users, который будет создавать нового пользователя и возвращать его id.

Тесты

Обязательны.

Время на выполнение задания

Перед тем, как выполнять задание, оцените время на выполнение (без учета времени на настройку проекта). Напишите в README проекта оценку и фактическое время выполнения. Только честно :)