<?php

namespace App\Services\History\Detector;

use App\Models\Enums\CustomFieldGroup;
use App\Services\History\Converter\ContainerConverter;
use App\Services\History\Converter\CustomFieldSelectConverter;
use App\Services\History\Converter\EmailConverter;
use App\Services\History\Converter\ModelEnumConverter;
use App\Services\History\Converter\NamingRuleConverter;
use App\Services\History\Converter\WhitelistConverter;

class ContainerDetector extends DetectorAbstract
{
    public static function fields(): array
    {
        return [
            'library_id',
            'naming_rule_id',
            'task_type',
            'doc_stage',
            'acl',
            'whitelist',
            'description',
            'mailto',
            'email_subject',
        ];
    }

    public static function diffFields(): array
    {
        return [
            'description',
        ];
    }

    public static function arrayFields(): array
    {
        return [
            'mailto',
        ];
    }

    public static function converters(): array
    {
        return [
            "whitelist" => new WhitelistConverter(),
            "acl" => new ModelEnumConverter("container.acl"),
            "doc_stage" => new CustomFieldSelectConverter(CustomFieldGroup::CONTAINER->value, "doc_stage"),
            "doc_type" => new CustomFieldSelectConverter(CustomFieldGroup::CONTAINER->value, "doc_type"),
            "naming_rule_id" => new NamingRuleConverter(),
            "library_id" => new ContainerConverter(),
            "mailto" => new EmailConverter(),
        ];
    }
}