<?php namespace $MODULE_NAMESPACE$;

use $NAMESPACE$\Http\Requests;
use $REQUEST_NAMESPACE$\Create$MODEL_NAME$Request;
use $REPO_NAMESPACE$\$MODEL_NAME$Repository;
use $NAMESPACE$\Generator\Controller\AppBaseController;
use Response;
use Flash;

class $MODEL_NAME$Controller extends AppBaseController
{
	private $$MODEL_NAME_CAMEL$Repository;

	/**
     * Create a new $$MODEL_NAME_CAMEL$Repo instance.
     *
     * @param $commandData Mitul\Generator\CommandData
     * 
     */
	function __construct($MODEL_NAME$Repository $$MODEL_NAME_CAMEL$Repo)
	{
		$this->$MODEL_NAME_CAMEL$Repository = $$MODEL_NAME_CAMEL$Repo;
	}

	/**
	 * Display a listing of the $MODEL_NAME$.
	 *
	 * @return Response
	 */
	public function index()
	{
		$$MODEL_NAME_PLURAL_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->latest();
        // modulo::Modelo.index
		return view('$MODULE_NAME$::$MODEL_NAME$.admin.index')->with('$MODEL_NAME_PLURAL_CAMEL$', $$MODEL_NAME_PLURAL_CAMEL$);
	}

	/**
	 * Show the form for creating a new $MODEL_NAME$.
	 *
	 * @return Response
	 */
	public function create()
	{
		$SELECT_ID_CONTENT$
		
		return view('$MODULE_NAME$::$MODEL_NAME$.admin.create'$SELECT_ID_VIEW$);
	}

	/**
	 * Store a newly created $MODEL_NAME$ in storage.
	 *
	 * @param Create$MODEL_NAME$Request $request
	 *
	 * @return Response
	 */
	public function store(Create$MODEL_NAME$Request $request)
	{
        $input = $request->all();

        // For checkbox field type. Change 'sex' for your field name.
        // $input['sex'] = implode(",", $input['sex']);

		$$MODEL_NAME_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->store($input);

		Flash::message('$MODEL_NAME$ saved successfully.');

		return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
	}

	/**
	 * Display the specified $MODEL_NAME$.
	 *
	 * @param  int $id
	 *
	 * @return Response
	 */
	public function show($id)
	{
		$$MODEL_NAME_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->find$MODEL_NAME$ById($id);

		if(empty($$MODEL_NAME_CAMEL$))
		{
			Flash::error('$MODEL_NAME$ not found');
			return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
		}

		return view('$MODULE_NAME$::$MODEL_NAME$.public.show')->with('$MODEL_NAME_CAMEL$', $$MODEL_NAME_CAMEL$);
	}

	/**
	 * Show the form for editing the specified $MODEL_NAME$.
	 *
	 * @param  int  $id
	 * @return Response
	 */
	public function edit($id)
	{
		$$MODEL_NAME_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->find$MODEL_NAME$ById($id);

		$SELECT_ID_CONTENT$
		// For checkbox field type. Change 'sex' for your field name.
		// $$MODEL_NAME_CAMEL$["sex"] = explode(",", $$MODEL_NAME_CAMEL$['sex']);

		if(empty($$MODEL_NAME_CAMEL$))
		{
			Flash::error('$MODEL_NAME$ not found');
			return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
		}

		return view('$MODULE_NAME$::$MODEL_NAME$.admin.edit')->with('$MODEL_NAME_CAMEL$', $$MODEL_NAME_CAMEL$ $SELECT_ID_VIEW$);
	}

	/**
	 * Update the specified $MODEL_NAME$ in storage.
	 *
	 * @param  int    $id
	 * @param Create$MODEL_NAME$Request $request
	 *
	 * @return Response
	 */
	public function update($id, Create$MODEL_NAME$Request $request)
	{
		$$MODEL_NAME_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->find$MODEL_NAME$ById($id);

		if(empty($$MODEL_NAME_CAMEL$))
		{
			Flash::error('$MODEL_NAME$ not found');
			return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
		}

		// For checkbox field type. Change 'sex' for your field name.
		// $request['sex'] = implode(",", $request->sex);
		
		$$MODEL_NAME_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->update($$MODEL_NAME_CAMEL$, $request->all());

		Flash::message('$MODEL_NAME$ updated successfully.');

		return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
	}

	/**
	 * Remove the specified $MODEL_NAME$ from storage.
	 *
	 * @param  int $id
	 *
	 * @return Response
	 */
	public function destroy($id)
	{
		$$MODEL_NAME_CAMEL$ = $this->$MODEL_NAME_CAMEL$Repository->find$MODEL_NAME$ById($id);

		if(empty($$MODEL_NAME_CAMEL$))
		{
			Flash::error('$MODEL_NAME$ not found');
			return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
		}

		$$MODEL_NAME_CAMEL$->delete();

		Flash::message('$MODEL_NAME$ deleted successfully.');

		return redirect(route('admin.$MODEL_NAME_PLURAL_CAMEL$.index'));
	}

}
