WalkWeb / task

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Используя PHP 7.3 и Symfony 4 сделать следующее:

Задача:

  1. Разработать модель данных "Новости", содержащее следующие поля:

    Поле Описание
    id ID
    title Заголовок новости
    slug Ссылка на новость. Генерируется на основании title. Всегда уникален
    description Описание
    shortDescription краткое описание
    cratedAt дата создания. Дата ставится автоматом при создании новости
    updatedAt Дата обновления. Дата ставится при обновлении новости
    publishedAt Дата публикации. Дата приходит извне
    isActive Флаг активности новости
    isHide Флаг скрытости новости
    hits Количество просмотров новости
  2. Сделать миграцию.

  3. Используя подход REST сделать 2 контроллера.

    1. Контроллер для админки CRUD. Все данные отправляются в формате JSON.
      1. Create
      2. Update
      3. Delete
    2. Контроллер для фронтовой части.
      1. Получение списка новостей
        1. Фильтр isActive = true
        2. Фильтр isHide = false
        3. Фильтр publishedAt от сейчас и старше
        4. Сортировка по полю publishedAt от новых к старым.
        5. Количество новостей 20 штук на странице
        6. Текущая страница
      2. Получение новости по slug
        1. Фильтр isActive = true
        2. Фильтр isHide = false
        3. Фильтр publishedAt от сейчас и старше
  4. Сделать автоматическое создание sitemap для новостей

    1. В sitemap попадают только новости со следующими фильтрами
      1. Фильтр isActive = true
      2. Фильтр isHide = false
      3. Фильтр publishedAt от сейчас и старше
      4. Сортировка по полю publishedAt от новых к старым.

Замечания:

  1. При получении новости для фронтовой части, если новость стоит с параметром isActive = false отдаем 404 ошибку
  2. Если новость имеет следующий параметр isActive = true и isHide = true должен быть доступен по прямой ссылке, но не должен попадать в список новостей и в sitemap
  3. Если publishedAt больше чем сейчас должен отдавать 404 и не важно какие параметры установлены в isActive и isHide
  4. Генератор sitemap не должен влиять на работу системы. Он должен генерироваться в фоне.
  5. Обязательно использовать docker для разработки. В данном репозитории уже создана заготовка. Можно использовать ее, а можно сделать свою.

Контакты для связи:

telegram: @nazartsevEgor

About


Languages

Language:PHP 81.4%Language:Dockerfile 15.1%Language:HTML 3.5%