<?php

namespace DummyNamespace;

use App\Http\Controllers\Controller;
use App\Actions\DummyModelCreateAction;
use App\Actions\DummyModelReadAction;
use App\Actions\DummyModelUpdateAction;
use App\Actions\DummyModelDeleteAction;
use App\Http\Requests\DummyModelStoreRequest;
use App\Http\Requests\DummyModelUpdateRequest;
use App\Http\Requests\DummyModelDeleteRequest;
use Illuminate\Http\Request;

class DummyClass extends Controller
{
    protected $createAction;
    protected $readAction;
    protected $updateAction;
    protected $deleteAction;

    public function __construct(
        DummyModelCreateAction $createAction,
        DummyModelReadAction $readAction,
        DummyModelUpdateAction $updateAction,
        DummyModelDeleteAction $deleteAction
    ) {
        $this->createAction = $createAction;
        $this->readAction = $readAction;
        $this->updateAction = $updateAction;
        $this->deleteAction = $deleteAction;
    }

    public function index()
    {
        $data = $this->readAction->handle(request());
        return view('DummyModel.index', compact('data'));
    }

    public function create()
    {
        return view('DummyModel.create');
    }

    public function store(DummyModelStoreRequest $request)
    {
        $this->createAction->handle($request);
        return redirect()->route('DummyModel.index');
    }

    public function show($id)
    {
        $data = $this->readAction->handle($id);
        return view('DummyModel.show', compact('data'));
    }

    public function edit($id)
    {
        $data = $this->readAction->handle($id);
        return view('DummyModel.edit', compact('data'));
    }

    public function update(DummyModelUpdateRequest $request, $id)
    {
        $this->updateAction->handle($request, $id);
        return redirect()->route('DummyModel.index');
    }

    public function destroy(DummyModelDeleteRequest $request, $id)
    {
        $this->deleteAction->handle($request, $id);
        return redirect()->route('DummyModel.index');
    }
}
