<?php
/**
 * Created by PhpStorm.
 * User: mac
 * Date: 9/11/18
 * Time: 9:54 AM
 */

namespace _namespace_\Http\Controllers\API;

use App\Http\Controllers\Controller;
use _namespace_\Http\Requests\_class_CreateRequest;
use _namespace_\Http\Requests\_class_UpdateRequest;
use _namespace_\Http\Resources\_class_Resource;
use _namespace_\Http\Services\_class_Service;
use Illuminate\Http\Request;
use Modularization\MultiInheritance\ControllersTrait;

class _class_ApiController  extends Controller
{
    use ControllersTrait;
    private $service;

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

    public function index(Request $request)
    {
        $input = $request->all();
        $data = $this->service->index($input);
        return new _class_Resource($data);
    }

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

    public function store(_class_CreateRequest $request)
    {
        $input = $request->all();
        $_var_ = $this->service->store($input);
        return new _class_Resource($_var_);
    }

    public function show($id)
    {
        $_var_ = $this->service->show($id);
        return new _class_Resource($_var_);
    }

    public function edit($id)
    {
        $_var_ = $this->service->edit($id);
        return new _class_Resource($_var_);
    }

    public function update(_class_UpdateRequest $request, $id)
    {
        $input = $request->all();
        $data = $this->service->update($input, $id);
        return new _class_Resource($data);
    }

    public function destroy($id)
    {
        $data = $this->service->destroy($id);
        return new _class_Resource($data);
    }
}
