<?php

namespace {
    {

        namespace}}

use;
use;
use;
use;
use;
use;
use;

{
    rootNamespace }}Repository\Base\BaseRepository;
{
    rootNamespace }}Events\{
    {
        name}
}\{
    {
        name}
}CreateEvent;
{
    rootNamespace }}Events\{
    {
        name}
}\{
    {
        name}
}DeleteEvent;
{
    rootNamespace }}Events\{
    {
        name}
}\{
    {
        name}
}UpdateEvent;
{
    rootNamespace }}Http\Resources\{
    {
        name}
}\{
    {
        name}
}Collection;
{
    rootNamespace }}Http\Resources\{
    {
        name}
}\{
    {
        name}
}Resource;
{
    rootNamespace }}Models\{
    {
        name}
}

/**
 * Class  {{ class }}
 * @package DummyNamespace
 * @property-read BaseRepository
 * @see BaseRepository
 * @mixin BaseRepository
 */
class
{
{
class
}} extends BaseRepository  implements {
    {
        class }
}interface
{
    public function __construct({
        {
            name}
    } $model)
{
parent::__construct($model);
}

    /**
     * @param $all
     * @return {{name}}Collection|mixed
     */
    public function collectionModel($all)
{
    return new {
    {
    name
    }}Collection($all);
    }

    /**
     * @param {{name}} $model
     * @return {{name}}Resource|{{name}}
     */
    public function resourceModel($model)
{
    return new {
    {
    name
    }}Resource($model);
    }

    /**
     * @param {{name}} $model
     */
    protected function eventCreate($model)
{
    event(new  {
    {
    name
    }}CreatedEvent($model))
    }

    /**
     * @param {{name}} $model
     */
    protected function eventUpdate($model)
{
    event(new {
    {
    name
    }}UpdatedEvent($model))
    }

    /**
     * @param {{name}} $model
     */
    protected function eventDelete($model)
{
    event(new {
    {
    name
    }}DeletedEvent($model))
    }

}
