from django.urls import reverse_lazy
from django.views.generic import TemplateView, ListView, UpdateView, CreateView, DeleteView
from myproject.models import Funcionario
from myproject.website.forms import InsereFuncionarioForm

from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from django.shortcuts import render


# PÁGINA PRINCIPAL
# ----------------------------------------------
class IndexTemplateView(TemplateView):
    template_name = "website/index.html"


# LISTA DE FUNCIONÁRIOS
# ----------------------------------------------

class FuncionarioListView(ListView):
    template_name = "website/lista.html"
    model = Funcionario
    context_object_name = "funcionarios"


# CADASTRAMENTO DE FUNCIONÁRIOS
# ----------------------------------------------

class FuncionarioCreateView(CreateView):
    template_name = "website/cria.html"
    model = Funcionario
    form_class = InsereFuncionarioForm
    success_url = reverse_lazy("website:lista_funcionarios")


# ATUALIZAÇÃO DE FUNCIONÁRIOS
# ----------------------------------------------

class FuncionarioUpdateView(UpdateView):
    template_name = "website/atualiza.html"
    model = Funcionario
    fields = '__all__'
    context_object_name = 'funcionario'
    success_url = reverse_lazy("website:lista_funcionarios")


# EXCLUSÃO DE FUNCIONÁRIOS
# ----------------------------------------------

class FuncionarioDeleteView(DeleteView):
    template_name = "website/exclui.html"
    model = Funcionario
    fields = '__all__'
    context_object_name = 'funcionario'
    success_url = reverse_lazy("website:lista_funcionarios")



# PAGINAÇÃO DE FUNCIONÁRIOS
# ----------------------------------------------
def listing(request):
    funcionarios_list = Funcionario.objetos.all()
    paginator = Paginator(funcionarios_list, 2) # Exibe dois funcionários por página
    page = request.GET.get('page')
    funcionarios = paginator.get_page(page)
    return render(request, 'website/lista2.html', {'funcionarios': funcionarios})
