Задание сделано на Laravel версия 9, так как я не сильно силен в CodeIgniter, на изучение пошло бы много времени, да и не нравится он мне:)
В итоге вышел новый сайт, с новым фронтом, базой, беком, но с функционалом который был описан в тз
Тут можно поклацать и посмотреть как работает https://frozeneon-test.vis-design.com.ua/
Склонировать с гита, создать файл .env с файла .env.example, развернуть бд с sql файл в корне сайта, заменить доступы к бд, запустить команды composer update, npm i, npm run dev
Php8, mysql 5.7+
БД : модификация бд под стандарты ларавеля(поменял названия полей и таблиц), простановка внешних ключей и индексов
так и не понял для чего таблица boosterpack_inf, как пустая была так и осталась
Front: Полностью переписал фронт с использованием VueJs2 и Vuex, базовую верстку не менял. Сделал отдельно бек и js отдельно, поделил на компоненты все приложение, сделал более читабельно, а то читать код когда все в одном файле еще и в перемешку с php кодом это очень сложно.
Back: Транзакции использовал для работы с балансом, остальное все стандартное, по best practices ларавеля.
1. select sum(amount) as sum, object_id, HOUR(created_at) AS hours, action from analytics where (action = 'buy_boosterpack' or action = 'add_likes') and created_at >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) group by HOUR(created_at) , object_id, action
2. select likes_balance, wallet_balance, wallet_total_withdrawn, sum(analytics.amount) from users left join analytics on users.id = analytics.user_id where users.id = 1 and action = 'add_likes' group by analytics.user_id