<?php

namespace App\Http\Controllers;

use App\Http\Requests\ProdutoRequest;
use App\Repositories\CategoriaRepository;
use App\Repositories\ProdutoRepository;

class ProdutoController extends Controller
{
    protected $produtoRepository;
    protected $categoriaRepository;

    public function __construct(ProdutoRepository $produtoRepository, CategoriaRepository $categoriaRepository){
        $this->categoriaRepository = $categoriaRepository;
        $this->produtoRepository = $produtoRepository;
    }

    public function getIndex() {
        $produtos = $this->produtoRepository->all();
        return view('produto.index', compact('produtos'));
    }

    public function getCreate() {
        $produtos = $this->produtoRepository->all();
        $categorias = $this->categoriaRepository->lists('id', 'nome');

        return view('produto.create', compact('produtos', 'categorias'));
    }

    public function postCreate(ProdutoRequest $request)
    {
        $produto = $this->produtoRepository->create($request->all());

        if($produto) {
            return redirect()->route('produto.index');
        }

        return redirect()->back();
    }

    public function getEdit($id) {
        $produto = $this->produtoRepository->find($id);

        if(is_null($produto)) {
            return redirect()->back();
        }

        $categorias = $this->categoriaRepository->lists('id', 'nome');

        return view('produto.edit', compact('produto', 'categorias'));
    }

    public function getDelete($id) {
        $produto = $this->produtoRepository->delete($id);

        if(is_null($produto)) {
            return redirect()->back();
        }

        return redirect()->route('produto.index');
    }
}
