Skip to content

Dasein-hub/testcase-first-assigment

 
 

Repository files navigation

Задание 1 - Обработка курсов валют Национального Банка Республики Казахстан

Необходимо реализовать сервис со следующим функционалом на языке PHP (не ниже версии 7.4) c использованием фреймворка (Yii2, Laravel - на выбор). В качестве базы данных должна использоваться MySQL.

В базе данных testcase_db должна быть таблица currency c колонками:

  1. id — первичный ключ;
  2. name — название валюты;
  3. rate — курс валюты к тенге;
  4. date — дата получения курса.

Задача 1 - Загрузка данных из первоисточника

Должна быть консольная команда (с возможностью запуска через cron) для обновления данных в таблице currency. Данные по курсам валют можно взять отсюда: https://nationalbank.kz/rss/rates_all.xml?switch=russian

Задача 2 - Реализация REST API сервисов

Необходимо реализовать 2 REST API метода:

  • GET /currencies — должен возвращать список курсов валют с возможностью пагинации на текущую дату (в качестве опционального параметра может быть передана произвольная дата в виде параметра date);
  • GET /currency/ — должен возвращать курс валюты для переданного кода валюты (name) на текущую дату (в качестве опционального параметра может быть передана произвольная дата в виде параметра date).

Для возвращаемых результатов должны возвращаться корректные статусы HTTP-ответов:

  • 200 — данные найдены;
  • 401 — токен не предоставлен;
  • 403 — предоставлен некорректный токен;
  • 404 — данные (на текущую дату) не найдены.

API должно быть защищено bearer авторизацией. Токен авторизации может быть жестко зашит в саму систему.

Описание логики выполненного задания

Пользователь может получить список или один из элементов списка курса валют, которые автоматически обновляют в каждую минуту.

Описание структуры выполненного задания

Проект состоит из 1-ой миграции, 1-ой модели, 1-ой контроллера и 1-ой пользовательской команды.

В миграции прописаны поля таблицы currencies, соответствующие заданию.

В модели прописаны поля из миграции в массив fillables, также создан статический метод для получения списка курса валют с ссылки в нужном формате.

В контроллере прописаны два метода, работа которых соответствует требованиям задания.

В пользовательской команде реализовано обновление курсов валют, путём полного удаления старых записей и заполнения таблицы новыми, используя метод класса Currency.

About

Первое задание

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 82.3%
  • Blade 16.5%
  • Other 1.2%