<?php

namespace App\Modules\CardOrder;

use App\Modules\Core\ModulePackage;
use App\Modules\Core\ModulePackageType;
use App\Modules\Makeable;
use App\Modules\ModuleContract;

class CardOrderModule implements ModuleContract
{
    use Makeable;

    /**
     * Module is enabled
     */
    protected bool $enabled = true;

    /**
     * Check if is module enabled
     */
    public function isEnabled(): bool
    {
        return $this->enabled;
    }

    /**
     * Disable module
     */
    public function disable(): void
    {
        $this->enabled = false;
    }

    /**
     * Enable module
     */
    public function enable(): void
    {
        $this->enabled = true;
    }

    /**
     * Check if module has a filament resource
     */
    public function hasFilamentResource(): bool
    {
        return false;
    }

    /**
     * Get module composer requirements
     */
    public function getComposerRequirements(): array
    {
        return [
            new ModulePackage(
                type: ModulePackageType::MODULE,
                name: 'Branch',
                message: 'This module is used for branches.',
            ),
            new ModulePackage(
                type: ModulePackageType::MODULE,
                name: 'OrderStatus',
                message: 'Supports orders.',
            ),
            new ModulePackage(
                type: ModulePackageType::MODULE,
                name: 'OnlinePayment',
                message: 'Is online payable.',
            ),
        ];
    }

    /**
     * Get module composer suggestions
     */
    public function getComposerSuggestions(): array
    {
        return [];
    }
}
