https://github.com/madd88/symfony_cbr
https://github.com/madd88/symfony_cbr
symfony4
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/madd88/symfony_cbr
- Owner: madd88
- Created: 2020-05-31T14:35:05.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T07:40:27.000Z (over 2 years ago)
- Last Synced: 2025-02-08T17:31:18.302Z (4 months ago)
- Topics: symfony4
- Language: PHP
- Size: 521 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
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
```