Skip to content

POMXARK/stmts

Repository files navigation

docker-compose up -d
php bin/console doctrine:migrations:migrate

Встроенный сервер:

symfony server:start

Исправить форматирование:

php php-cs-fixer.phar fix
phpstan analyse
 ------------------ -------- -------- ------ -------------------------- 
  Name               Method   Scheme   Host   Path                      
 ------------------ -------- -------- ------ -------------------------- 
  _preview_error     ANY      ANY      ANY    /_error/{code}.{_format}  
  app_stmt_store     POST     ANY      ANY    /api/stmts                
  app_stmt_show      GET      ANY      ANY    /api/stmts/{id}           
  app_stmt_update    PUT      ANY      ANY    /api/stmts/{id}           
  app_stmt_index     GET      ANY      ANY    /api/stmts/               
  app_stmt_destroy   DELETE   ANY      ANY    /api/stmts/{id}           
 ------------------ -------- -------- ------ -------------------------- 

proc_apps

Сервис обработки заявок

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

Общие положения:

  • Данное тестовое задание не направлено на полноценную реализацию задачи, сколько на возможность продемонстрировать уровень понимая в таких вопросах, как: PHP, REST API, работа с СУБД, основы безопасности.
  • Предпочтительна реализация на Laravel (8+), Yii2 (последняя стабильная версия), Symfony 5+. В качестве СУБД можно использовать MySQL 5.7 или PostgreSQL актуальной стабильной версии

Общее описание:

  • Необходимо реализовать систему принятия и обработки заявок пользователей с сайта.
  • Любой пользователь может отправить данные по-публичному API, реализованному нами, оставив заявку с каким-то текстом.
  • Затем заявка рассматривается ответственным лицом и ей устанавливается статус Завершено.
  • Чтобы установить этот статус, ответственное лицо должно оставить комментарий.
  • Пользователь должен получить свой ответ по email.
  • При этом, ответственное лицо должно иметь возможность получить список заявок, отфильтровать их по статусу и по дате, а также иметь возможность ответить задающему вопрос через email.

Сущности:

Заявка:

  • id - Уникальный идентификатор
  • name - Имя пользователя - строка, обязательная
  • email - Email пользователя - строка, обязательная
  • status - Статус - enum(“Active”, “Resolved”)
  • message - Сообщение пользователя - текст, обязательный
  • comment - Ответ ответственного лица - текст, обязательный, если статус Resolved
  • created_at - Время создания заявки - timestamp или datetime
  • updated_at - Время ответа на заявку

Endpointы API: Методы API должны быть документированы каким-нибудь средством документации на ваш выбор:

  • GET /api/stmts/ - получение заявок ответственным лицом, с фильтрацией по статусу
  • PUT /api/stmts/{id}/ - ответ на конкретную задачу ответственным лицом
  • POST /api/stmts/ - отправка заявки пользователями системы
  1. Отправка заявки пользователями системы
curl --location 'http://127.0.0.1/api/stmts' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Ваше Имя",
    "email": "[email protected]", 
    "message": "Ваше сообщение",
    "status": "Active"  
}'
{
    "data": {
        "id": 1,
        "name": "Ваше Имя",
        "email": "[email protected]",
        "status": "Active",
        "message": "Ваше сообщение",
        "comment": null,
        "createdAt": "2025-05-12T08:10:19+00:00",
        "updatedAt": "2025-05-12T08:10:19+00:00"
    }
}
  1. Ответ на конкретную задачу ответственным лицом
curl --location --request PUT 'http://127.0.0.1/api/stmts/1' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Новое Имя",
    "email": "[email protected]",
    "message": "Новое сообщение",
    "comment": "Комментарий к заявке"
}'
{
    "data": {
        "id": 1,
        "name": "Новое Имя",
        "email": "[email protected]",
        "status": "Resolved",
        "message": "Новое сообщение",
        "comment": "Комментарий к заявке",
        "createdAt": "2025-05-12T08:08:43+00:00",
        "updatedAt": "2025-05-12T08:08:43+00:00"
    }
}

About

сервис обработки заявок

Topics

Resources

Stars

Watchers

Forks