<?php

namespace $NAMESPACE_API_CONTROLLER$;

use $NAMESPACE_API_REQUEST$\Create$MODEL_NAME$APIRequest;
use $NAMESPACE_API_REQUEST$\Update$MODEL_NAME$APIRequest;
use $NAMESPACE_MODEL$\$MODEL_NAME$;
use Illuminate\Http\Request;
use $NAMESPACE_APP$\Http\Controllers\AppBaseController;
use $NAMESPACE_API_RESOURCE$\$MODEL_NAME$Resource;
use Response;

$DOC_CONTROLLER$
class $MODEL_NAME$APIController extends AppBaseController
{
    $DOC_INDEX$
    public function index(Request $request)
    {
        $query = $MODEL_NAME$::query();

        if ($request->get('skip')) {
            $query->skip($request->get('skip'));
        }
        if ($request->get('limit')) {
            $query->limit($request->get('limit'));
        }

        $$MODEL_NAME_PLURAL_CAMEL$ = $query->get();

        return $this->sendResponse($MODEL_NAME$Resource::collection($$MODEL_NAME_PLURAL_CAMEL$), '$MODEL_NAME_PLURAL_HUMAN$ retrieved successfully');
    }

    $DOC_STORE$
    public function store(Create$MODEL_NAME$APIRequest $request)
    {
        $input = $request->all();

        /** @var $MODEL_NAME$ $$MODEL_NAME_CAMEL$ */
        $$MODEL_NAME_CAMEL$ = $MODEL_NAME$::create($input);

        return $this->sendResponse(new $MODEL_NAME$Resource($$MODEL_NAME_CAMEL$), '$MODEL_NAME_HUMAN$ saved successfully');
    }

    $DOC_SHOW$
    public function show($id)
    {
        /** @var $MODEL_NAME$ $$MODEL_NAME_CAMEL$ */
        $$MODEL_NAME_CAMEL$ = $MODEL_NAME$::find($id);

        if (empty($$MODEL_NAME_CAMEL$)) {
            return $this->sendError('$MODEL_NAME_HUMAN$ not found');
        }

        return $this->sendResponse(new $MODEL_NAME$Resource($$MODEL_NAME_CAMEL$), '$MODEL_NAME_HUMAN$ retrieved successfully');
    }

    $DOC_UPDATE$
    public function update($id, Update$MODEL_NAME$APIRequest $request)
    {
        /** @var $MODEL_NAME$ $$MODEL_NAME_CAMEL$ */
        $$MODEL_NAME_CAMEL$ = $MODEL_NAME$::find($id);

        if (empty($$MODEL_NAME_CAMEL$)) {
            return $this->sendError('$MODEL_NAME_HUMAN$ not found');
        }

        $$MODEL_NAME_CAMEL$->fill($request->all());
        $$MODEL_NAME_CAMEL$->save();

        return $this->sendResponse(new $MODEL_NAME$Resource($$MODEL_NAME_CAMEL$), '$MODEL_NAME$ updated successfully');
    }

    $DOC_DESTROY$
    public function destroy($id)
    {
        /** @var $MODEL_NAME$ $$MODEL_NAME_CAMEL$ */
        $$MODEL_NAME_CAMEL$ = $MODEL_NAME$::find($id);

        if (empty($$MODEL_NAME_CAMEL$)) {
            return $this->sendError('$MODEL_NAME_HUMAN$ not found');
        }

        $$MODEL_NAME_CAMEL$->delete();

        return $this->sendSuccess('$MODEL_NAME_HUMAN$ deleted successfully');
    }
}
