Позволяет пользователям делиться информацией об интересных событиях и находить компанию для участия в них
Возможность оставлять комментарии к событиям и модерировать их.
В приложение добавляется возможность для зарегистрированных пользователей оставлять комментарии к тем событиям, которые они посетили. У любого пользователя, вне зависимости от регистрации в приложении, появляется возможность просматривать комментарии других пользователей к конкретному событию. При поиске событий добавляется возможность сортировать результаты по количеству комментариев, которые оставлены к событиям. Публикация комментария осуществляется после проверки администратором. В случае, если администратор отклоняет публикацию комментария, он должен указать причину отказа и может оставить короткое сообщение с пояснением.
- Комментарии могут оставлять только зарегистрированные пользователи.
- Пользователь может оставить комментарий к событию, если ему была одобрена заявка на посещение этого события.
- Пользователь может прокомментировать конкретное событие только один раз.
- После создания комментарий попадает на этап модерации (PENDING), на котором администратор может его принять (APPROVE) или отклонить (REJECT).
- Пользователь может отредактировать свой комментарий, если тот не находится в статусе ожидания модерации (PENDING).
- Отредактированный комментарий должен снова проходить этап модерации.
- У пользователя есть возможность удалить свой комментарий.
- У администратора должна быть возможность постранично просматривать все комментарии с возможностью фильтрации по статусу комментария.
- У пользователя должна быть возможность просматривать все свои комментарии с возможностью постраничного вывода и сортировкой по дате создания комментария - от новых к старым.
- Любой пользователь (в т.ч. незарегистрированный) может осуществлять поиск событий, сортируя результат по количеству комментариев, оставленных к событиям.
- При просмотре подробной информации о событии необходимо выводить 5 самых свежих комментариев.
- Должна быть реализована возможность постраничного просмотра всех комментариев к конкретному событию.
- У событий могу отображаться только те комментарии, которые успешно прошли модерацию.
POST /users/{userId}/commentsДобавление комментария к событию (новый эндпоинт)
Request body
{
"eventId": 1,
"text": "Все было прекрасно!"
}Ограничения:
- длина сообщения не более 255 символов.
Responses
code 201
{
"id": 1,
"eventId": 1,
"authorId": 1,
"text": "Все было прекрасно!",
"status": "PENDING",
"createdOn": "2020-01-01 12:00:00"
}PATCH /users/{userId}/comments/{commentId}Изменение комментария к событию (новый эндпоинт)
Request body
{
"text": "Новый текст комментария."
}Ограничения:
- длина сообщения не более 255 символов;
- обновить можно только тот комментарий, который не находится в статусе PENDING.
Responses
code 200
{
"id": 1,
"eventId": 1,
"authorId": 1,
"text": "Новый текст комментария.",
"status": "PENDING",
"createdOn": "2020-01-01 12:00:00"
}DELETE /users/{userId}/comments/{commentId}Удаление комментария к событию (новый эндпоинт)
Responses
code 204
GET /users/{userId}/comments/{commentId}Получение конкретного комментария (новый эндпоинт)
Responses
code 200
{
"id": 1,
"eventId": 1,
"authorId": 1,
"text": "Текст комментария.",
"status": "APPROVE",
"createdOn": "2020-01-01 12:00:00"
}GET /users/{userId}/commentsПолучение всех комментариев пользователя с возможностью фильтрации (новый эндпоинт)
Parameters
| Name | Description |
|---|---|
| eventIds array<integer(int64)> (query) |
Перечисление ИД событий, для которых нужно показать комментарии |
| status enum[PENDING, APPROVE, REJECT] (query) |
Комментарии с каким статусом нужно показать |
| from integer(int32) (query) |
Количество элементов, которые нужно пропустить для формирования текущего набора Default value : 0 |
| size integer(int32) (query) |
Количество элементов в наборе Default value : 10 |
Responses
code 200
[
{
"id": 1,
"eventId": 1,
"authorId": 1,
"text": "Текст комментария.",
"status": "APPROVE",
"createdOn": "2020-01-01 12:00:00"
},
{
"id": 2,
"eventId": 2,
"authorId": 1,
"text": "Другой комментарий.",
"status": "REJECT",
"createdOn": "2020-01-02 12:00:00"
}
]GET /admin/commentsПросмотр комментариев администратором с возможностью фильтрации по статусу (новый эндпоинт)
Parameters
| Name | Description |
|---|---|
| status enum[PENDING, APPROVE, REJECT] (query) |
Комментарии с каким статусом нужно показать |
| from integer(int32) (query) |
Количество элементов, которые нужно пропустить для формирования текущего набора Default value : 0 |
| size integer(int32) (query) |
Количество элементов в наборе Default value : 10 |
Responses
code 200
[
{
"id": 1,
"eventId": 1,
"authorId": 1,
"text": "Текст комментария.",
"status": "APPROVE",
"createdOn": "2020-01-01 12:00:00"
},
{
"id": 2,
"eventId": 2,
"authorId": 1,
"text": "Другой комментарий.",
"status": "REJECT",
"createdOn": "2020-01-02 12:00:00"
}
]PATCH /admin/comments/{commentId}Отклонение или подтверждение комментария администратором (новый эндпоинт)
Request body
{
"action": "APPROVE"
}Responses
code 200
{
"id": 1,
"eventId": 1,
"authorId": 1,
"text": "Текст комментария.",
"status": "APPROVE",
"createdOn": "2020-01-01 12:00:00"
}GET /eventsПолучение событий с возможностью фильтрации (существующий эндпоинт)
Parameters
| Name | Description |
|---|---|
| sort string (query) |
Вариант сортировки: по дате события, по количеству просмотров, по количеству комментариев Available values : EVENT_DATE, VIEWS, COMMENTS |
Responses
Без изменений. По сути меняется только порядок сортировки, если был использован соответсвующий параметр в запросе.
GET /events/{id}Получение подробной информации об опубликованном событии по его идентификатору (существующий эндпоинт)
Parameters
Без изменений.
Responses
Добавляется возможность просматривать до 5 свежих комментариев события.
code 200
{
"annotation": "Эксклюзивность нашего шоу гарантирует привлечение максимальной зрительской аудитории",
"category": {
"id": 1,
"name": "Концерты"
},
"confirmedRequests": 5,
"createdOn": "2022-09-06 11:00:23",
"description": "Что получится, если соединить кукурузу и полёт? Создатели \"Шоу летающей кукурузы\" испытали эту идею на практике и воплотили в жизнь инновационный проект, предлагающий свежий взгляд на развлечения...",
"eventDate": "2024-12-31 15:10:05",
"id": 1,
"initiator": {
"id": 3,
"name": "Фёдоров Матвей"
},
"location": {
"lat": 55.754167,
"lon": 37.62
},
"paid": true,
"participantLimit": 10,
"publishedOn": "2022-09-06 15:10:05",
"requestModeration": true,
"state": "PUBLISHED",
"title": "Знаменитое шоу 'Летающая кукуруза'",
"views": 999,
"comments": [
{
"id": 1,
"author": "Иван Иванов",
"text": "Все было прекрасно!"
},
{
"id": 2,
"author": "Петр Петров",
"text": "Обязательно пойду еще раз."
}
]
}GET /events/{id}/commentsПолучение комментариев к событию (новый эндпоинт)
Parameters
| Name | Description |
|---|---|
| from integer(int32) (query) |
Количество элементов, которые нужно пропустить для формирования текущего набора Default value : 0 |
| size integer(int32) (query) |
Количество элементов в наборе Default value : 10 |
Responses
code 200
[
{
"id": 1,
"author": "Петр Петров",
"text": "Текст комментария.",
"createdOn": "2020-01-01 12:00:00"
},
{
"id": 2,
"author": "Иван Иванов",
"text": "Текст комментария.",
"createdOn": "2020-01-03 12:00:00"
}
]