An open API service indexing awesome lists of open source software.

https://github.com/madd88/symfony_cbr


https://github.com/madd88/symfony_cbr

symfony4

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# Тестовое задание
## Часть 1
Используя открытые методы (XML_daily и XML_dynamic) Центробанка РФ (http://www.cbr.ru/development/SXML/) создать и заполнить Базу Данных.
БД заполняем данными минимум за 30 дней начиная с текущего дня.\
В БД должна быть таблица currency c обязательными колонками:\
valuteID - идентификатор валюты, который возвращает метод (пример: R01010)\
numCode - числовой код валюты (пример: 036)\
сharCode - буквенный код валюты (пример: AUD)\
name - имя валюты (пример: Австралийский доллар)\
value - значение курса (пример: 43,9538)\
date - дата публикации курса (может быть в UNIX-формате или ISO 8601)\

## Часть 2
2.1. Реализовать REST API метод, который вернет курс(ы) валюты для переданного valueID за указанный период date (from&to) используя данные из таблицы currency. Параметры передаем методом GET.

2.2. Реализовать веб страницу, на которой размещается таблица со списком валют и данными по этим валютам за указанную в поле/селекторе дату.
Оформление страницы не имеет значения, но любая попытка стилизации (в том числе с использованием фреймворков) будет плюсом .

# Стэк
PHP 7.3 (Symfony 4), MySQL 5.7, Twig, ReactJS, Bootstrap

# Установка
Клонируем репозиторий
```
git clone https://github.com/madd88/symfony_cbr
```
Прописываем доступ к базе данных в файле конфигурации **.env**
```
DATABASE_URL=mysql://user:[email protected]:3306/cbr
```
Запускаем
```
yarn install
composer install
```
Выполняем Миграцию
```
php bin/console doctrine:migrations:migrate
```
Заполняем базу данных
```
php bin/console currency:upload [num days]
```
Доступен один параметр - количество дней в диапазоне от 30 до 120. Поумолчанию 30 дней.\
Запускаем encore
```
yarn run encore production
```
Готово!

# Принцип работы

## Заполнение БД
Для заполнения БД данными создана комманда **currency:upload**, которая находится в:
```
src/Command/CurrencyUploadCommand.php
```
Для начала вызывается http://www.cbr.ru/scripts/XML_daily.asp. Там мы получаем необходимые данные по валютам.\
Далее вызывается http://www.cbr.ru/scripts/XML_dynamic.asp с периодом для каждой полученной ранее валюты.
И все это сохраняется в БД

## REST API метод
Находится он по адресу
```
http://your-domain.com/api/v1/currency?from=20.05.2020&to=01.06.2020&valuteID=R01775
```
и принимает 3 параметра - from, to, valuteID. Если не указать valuteID, то выведется список всех курсов валют за указанный период.\
Сам контроллер находится
```
src/Controller/Rest/v1/CurrencyController.php
```

## Веб страница с курсами валют
Располагается страница на главной странице. При нажатии кнопки *Найти* опрашивается REST API метод, описанный раннее.\
Шаблоны можно посмотреть здесь:
```
public/assets/js
```