<?php

declare(strict_types=1);

namespace {{ tree.getFullNameSpaceOfFile(file, entity, action) }};

{% for dependency in dependencyzz %}
use {{ dependency }};{% endfor %}

class {{ helper.getClassName(file, entity, action) }}
{
    function create({{ helper.getClassName(helper.findFile('Model'), entity, action) }} $Item): {{ helper.getClassName(helper.findFile('Model'), entity, action) }}
    {
        $exist = {{ helper.getClassName(helper.findFile('Model'), entity, action) }}::query()
            ->where('UserId', $Item->UserId)
            ->exists();
        if ($exist) {
            throw new DuplicatedException();
        }

        $Item->save();
        $Item->refresh();

        event(new {{ action + entity.name }}Event($Item));

        return $Item;
    }

    function make(
        int $UserId,
{% for column in columnzz %}
        {{ helper.makeColumnType(column) }} ${{ column.name }},{% endfor %}
    ): {{ helper.getClassName(helper.findFile('Model'), entity, action) }}
    {
        $Item = new {{ helper.getClassName(helper.findFile('Model'), entity, action) }}();
        $Item->UserId = $UserId;

{% for column in columnzz %}
        $Item->{{ column.name }} = ${{ column.name }};{% endfor %}

        return $Item;
    }

}
