Skip to content

🐳 C# + MS SQL Server + EntityFramework + Docker + nginx + WebApi + ReactJS

Notifications You must be signed in to change notification settings

aamenkov/CashMachine

Repository files navigation

Репозиторий для тестового задания 🐣

На данный момент полностью реализована backend-часть проекта. (web-interface api + nginx + docker + entityframework) Клиент с использованием react-а находится в доработке.


Условие. Задание C#:

К реализации самой страницы никаких требований нет - можно делать на свое усмотрение.

На странице необходимо иметь возможность настроить следующее:

  • количество кассет (от 1 до 8)
  • номинал для каждой кассеты (100, 200, 500, 1000, 2000, 5000 руб)
  • настойка кассеты (сколько в ней осталось купюр)
  • статус кассеты (исправна/неисправна)

На этой же страничке необходимо предусмотреть возможность ввода произвольной суммы в рублях без копеек.
Далее, по кнопке, необходимо вычислить можно ли выдать клиенту указанную сумму купюрами, находящимися в кассетах.
Если да, вывести сколько купюр из какой кассеты потребуется. Также вывести время, которое потребовалось на вычисление в миллисекундах.


To RUN:

  • Модифицировать appsettings.json для корректного использования БД.
  • Открыть в VS (>Средства >Диспетчер пакетов NuGet >Консоль)
  add-migration {MigrationName}
  update-database
  • Запустить DockerCompose
  • Запустить CashMachineWebApp
  • Открыть localhost

Идея частной сети с использованием Docker. (На данный момент, в клиенте проставлена прямая ссылка на API)

После запуска docker compose создается частная сеть для контейнеров.
Контейнеры в ней могут обращаться по имени сервиса и порту. Для каждого был выделен внешний порт (5000 и 5001).

  1. Пользователь обращается к домашней странице, в нашем случае это localhost и 80й порт по умолчанию.
  2. 80й порт прослушивает контейнер, проваливаемся в него и попадаем на веб-сервер. Он видит обращение, которое происходит на стартовый url и перенаправляет на контейнер client:3000. (react всегда на 3000м)
  3. От клиента получает страницу и отправляет обратно пользователю.
  4. На странице, когда нажали на кнопку, выполняется запрос на указанный url, например, GET: "api/users", обращение снова происходит на localhost, 80й порт, проваливаемся опять в контейнер к веб-серверу.
  5. Веб-сервер видит, что url начинается с api и перенаправляет на контейнер backend с портом 80, получает от него данные и так же отдает пользователю
  6. Клиент, получив данные от сервера, перерисовывает страницу.

About

🐳 C# + MS SQL Server + EntityFramework + Docker + nginx + WebApi + ReactJS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published