На экране выведена большая красная кнопка [Розыгрыш]. При нажатии на кнопку, на backend оправляется запрос к функции. Функция отправляет запрос в базу данных PostgreSQL[1].
На стороне SQL-сервера PostgreSQL[1], по запросу "SELECT * FROM tickets order by random() limit 120" запускается случайный выбор 120 билетов из всего списка участников. Логику работы рандомайзера можно посмотреть в открытом репозитории по ссылке: https://github.com/postgres/postgres.
Каждому заказу, попадающему под условия акций, выдавался электронный билет. Каждый билет имеет код и информацию об участнике, которому он принадлежит (ФИО, Телефон, ШПИ).
После получения случайного списка билетов, каждому билету присваивается порядковый номер от 1 до 120. Данный номер соответствует номеру приза из списка призов так же от 1 до 120, где:
Номера от 1 до 100 - это Сертификат на 1000 рублей;
Номера от 101 до 111 - это Сертификат на 4000 рублей;
Номера от 112 до 116 - это Смартфон;
Номера от 117 до 119 - это Планшет;
Номер 120 - это Суперприз телевизор.
После того, как присваивание призов завершилось, на frontend часть приложения возвращается структура данных со всеми 120 выигрышными билетами с указанием конкретного выигранного приза.
Frontend часть приложения после получения данных о розыгрыше выводит 2 таблицы: