Тестовое задание
Установить advanced шаблон Yii2 фреймворка, в backend-приложении реализовать следующий закрытый функционал (доступ в backend-приложение должен производиться только по паролю, сложного разделения прав не требуется):
Написать класс/объект Apple с хранением яблок в БД MySql следуя ООП парадигме.
Функции
- упасть
- съесть ($percent - процент откушенной части)
- удалить (когда полностью съедено)
Переменные
- цвет (устанавливается при создании объекта случайным)
- дата появления (устанавливается при создании объекта случайным unixTmeStamp)
- дата падения (устанавливается при падении объекта с дерева)
- статус (на дереве / упало)
- сколько съели (%)
- другие необходимые переменные, для определения состояния.
Состояния
- висит на дереве
- упало/лежит на земле
- гнилое яблоко
Условия Пока висит на дереве - испортиться не может. Когда висит на дереве - съесть не получится. После лежания 5 часов - портится. Когда испорчено - съесть не получится. Когда съедено - удаляется из массива яблок.
Пример результирующего скрипта: $apple = new Apple('green');
echo $apple->color; // green
$apple->eat(50); // Бросить исключение - Съесть нельзя, яблоко на дереве echo $apple->size; // 1 - decimal
$apple->fallToGround(); // упасть на землю $apple->eat(25); // откусить четверть яблока echo $apple->size; // 0,75
На странице в приложении должны быть отображены все яблоки, которые на этой же странице можно сгенерировать в случайном кол-ве соответствующей кнопкой. Рядом с каждым яблоком должны быть реализованы кнопки или формы соответствующие функциям (упасть, съесть процент…) в задании. Задача не имеет каких-либо ограничений и требований. Все подходы к ее решению определяют способность выбора правильного алгоритма при проектировании системы и умение предусмотреть любые возможности развития алгоритма. Задание должно быть выложено в репозиторий на gitHub, с сохранением истории коммитов. Креативность только приветствуется.
- Клонирование проекта
git clone https://github.com/seddikur/apple.git - Запуск Docker
docker compose up -d - для вывода списка запущенных служб
docker-compose logs -f - Переход в контейнер
docker-compose exec -it backend bash - Запуск установки расширений yii2
composer install - Инициализация yii2
php init
настройка соединения bd common/config main-local.php
'db' => [
'class' => \yii\db\Connection::class,
'dsn' => 'mysql:host=mysql;dbname=yii',
'username' => 'root',
'password' => 'secret',
'charset' => 'utf8',
],
- Запуск миграций
php yii migrate - Запуск скрипта для создания пользователей
php yii user/create-users
Скрипт создаст: Пользователя с ролью админ (логин / пароль): admin / 12345 Пользователей с ролью менеджер (логин / пароль): manager1 / 12345 , manager2 / 12345 Пользователей с ролью юзер (логин / пароль): user1 / 12345 , user2 / 12345
Страница проекта локально : http://localhost/admin/site/login