<?php

namespace App\Console;

use A7kz\Platform\Commands\InstallCommand;
use A7kz\Platform\Helpers\Facade\Helper;
use App\Install\Seed;

class PipiCarInstallCommands extends InstallCommand
{
    protected $signature = 'pipicar:install {--install} {--upgrade} {--apps}';
    protected $description = 'CRM Аренды автомобилей';
    protected $module_name = 'pipicar';
    protected $module_version = '1.0.0';

    protected $storage = 'pipicar_crm';

    private array $packages = [];
    public function __construct()
    {
        parent::__construct();

//        Upgrade::Roles();

        $this->packages = [
            'main', // Главная страница
            'address', // Главная страница
            'auto_brands', // Бренд авто
            'auto_bodywork', // Кузов авто
            'auto_colors', // Цвета авто
            'auto_types', // Типы авто
            'auto_equipment', // Комплектация авто
            'brand_models', // Модель авто
            'auto_classes', // Класс авто
            'auto_tariffs', // Тарифы авто
            'owner_contracts', // Договор Владельца
            'owners', // Владелец авто
            'auto', // авто
            'applications', //Заявки
            'pipi_users', // Добавление логики для пользователей
            'auto_calendar', // Добавление логики для пользователей
            'faq' // FAQ
        ];
    }

    public function packages(): void
    {
        foreach ($this->packages as $package){
            $this->package($package);
        }
    }

    /**
     * @throws \Exception
     */
    public function migrate(){}
    public function seeds(): void
    {
        Seed::init();
    }

    public function apps(): void
    {
        Seed::init();
        foreach ($this->packages as $package){
            $this->package_update($package);
        }
    }

    public function upgrade(): void
    {
        $module = Helper::install()->module($this->module_name);
        if(!is_null($module) && !$module->lock_version) {
            switch ($module->module_version) {
                default:
                    $this->update_info($module, $this->module_version, 'Обновление');
                    break;
            }
        }
    }
}
