<?php

namespace _namespace_Http\Controllers;


use App\Http\Controllers\Controller;
use _namespace_Http\Requests\API\_class_CreateRequest;
use _namespace_Http\Requests\API\_class_UpdateRequest;
use _namespace_Http\Services\API\_class_Service;
use Illuminate\Http\Request;

class _class_Controller extends Controller
{
    private $service;

    public function __construct(_class_Service $service)
    {
        $this->service = $service;
    }

    public function index(Request $request)
    {
        $input = $request->all();
        $data['_vars_'] = $this->service->index($input);
        if ($request->ajax()) {
            return view('_view_.table', $data)->render();
        }
        return view('_view_.index', $data);
    }

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

    public function store(_class_CreateRequest $request)
    {
        $input = $request->all();
        $this->service->store($input);
        session()->flash('success', 'create success');
        return redirect()->route('_route_.index');
    }

    public function show($id)
    {
        $_var_ = $this->service->show($id);
        if (empty($_var_)) {
            session()->flash('error', 'not found');
            return back();
        }
        return view('_view_.show', compact('_var_'));
    }

    public function edit($id)
    {
        $_var_ = $this->service->edit($id);
        if (empty($_var_)) {
            session()->flash('error', 'not found');
            return back();
        }
        return view('_view_.update', compact('_var_'));
    }

    public function update(_class_UpdateRequest $request, $id)
    {
        $input = $request->all();
        $_var_ = $this->service->update($input, $id);
        if (empty($_var_)) {
            session()->flash('error', 'not found');
            return back();
        }
        session()->flash('success', 'update success');
        return redirect()->route('_route_.index');
    }

    public function destroy($id)
    {
        $_var_ = $this->service->destroy($id);
        if (empty($_var_)) {
            session()->flash('error', 'not found');
        }
        session()->flash('success', 'delete success');
        return back();
    }
}
