<?php

namespace Shm\ShmIntegrations\TBankNominal\TBankCollections;

use Shm\Collection\Collection;
use Shm\Shm;
use Shm\ShmTypes\StructureType;
use Shm\ShmUtils\MaterialIcons;

class TNominalBankDetails extends Collection
{

    public static function editableFields(): array
    {
        return [
            "bik" => Shm::string()->title("БИК")->inAdmin()->editable(),
            "kpp" => Shm::string()->title("КПП")->inAdmin()->editable(),
            "inn" => Shm::string()->title("ИНН")->inAdmin()->editable(),
            "name" => Shm::string()->title("ФИО получателя ИП или Юр.лицо")->inAdmin()->editable(),
            "bankName" => Shm::string()->title("Наименование банка")->inAdmin()->editable(),
            "accountNumber" => Shm::string()->title("Номер счета")->inAdmin()->editable(),
            "corrAccountNumber" => Shm::string()->title("Корреспондентский счет")->inAdmin()->editable(),
        ];
    }

    public static function validateBankDetails($bankDetails): void
    {
        if (!$bankDetails['bik']) {
            Shm::error("БИК не может быть пустым");
        }
        if (!$bankDetails['kpp']) {
            Shm::error("КПП не может быть пустым");
        }
        if (!$bankDetails['inn']) {
            Shm::error("ИНН не может быть пустым");
        }
        if (!$bankDetails['name']) {
            Shm::error("ФИО получателя ИП или Юр.лицо не может быть пустым");
        }
    }

    public function schema(): StructureType
    {
        $schema = Shm::structure([

            'status' => Shm::enum([
                "draft" => "Черновик",
                "pending" => "Ожидает проверки",
                "approved" => "Одобрен",
                "rejected" => "Отклонен",
            ])->title("Статус")->default("draft")->inAdmin(),

            //  "type" => Shm::static("PAYMENT_DETAILS")->title("Тип")->inAdmin()->editable(),
            // "isDefault" => Shm::boolean()->title("Основной")->inAdmin()->editable(),
            ...self::editableFields(),

            'owner' => Shm::ID(),
            'ownerCollection' => Shm::string(),
        ]);

        $schema->icon(MaterialIcons::AccountCashOutline());
        $schema->title("Банковские реквизиты");
        $schema->canCreate()->canUpdate()->canDelete();


        return $schema;
    }
}