from django.shortcuts import render, get_object_or_404
from django.db.models import F
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.http import Http404
from django.urls import reverse

from .models import Item, Bag, Player

# Create your views here.
def index_items(request):
    all_items_list = Item.objects.order_by("-pub_date")
    #template = loader.get_template("items/index.html")

    #dictionary containing all database objects specified above
    context = { "all_items_list": all_items_list, }

    #render() is een shortcut
    return render(request, "items/index_items.html", context)


    #return HttpResponse(template.render(context, request))

    ##previous versions
    #output = ", ".join([i.item_name for i in all_items_list])
    #return HttpResponse(output)
    #return HttpResponse("Hello, world. You're at the items index.")

def index_bag(request):
    all_items_list_new = Bag.objects.all()

    context_new = { "all_items_list_new": all_items_list_new, }

    return render(request, "items/index_bag.html", context_new)

def detail_bag_item(request, bag_id):
    try:
        bagitem = Bag.objects.get(pk=bag_id)
    except Bag.DoesNotExist:
        raise Http404("BagItem does not exist")

    # try:
    #     iteminfo = Item.objects.get(pk=item)
    return render(request, "items/detail_bag_item.html", {"bagitem":bagitem})

def addremove(request, item_id):
    item = get_object_or_404(Item, pk=item_id)
    try:
        selected_choice = item
        #value = request.POST.get('submit')
    except (KeyError, Item.DoesNotExist):
        return render(
                        request
                        , "items/detail.html"
                        , { "item": item,
                           "error_message": "You didn't select a choice",
                           },
                      )
    else:
        if 'Add' in request.POST:
            selected_choice.item_count = F("item_count") + 1
        elif 'Remove' in request.POST:
            selected_choice.item_count = F("item_count") - 1
        #selected_choice.item_count = F("item_count") + 1 #value
        selected_choice.save()
        return HttpResponseRedirect(reverse("items:detail", args=(item.id,)))


    #return render(request, "items/addremove.html", {"item":item})

def detail_item(request, item_id):
    try:
        item = Item.objects.get(pk=item_id)
    except Item.DoesNotExist:
        #er is een shortcut voor 404; in dit geval niet nuttig omdat er extra argumenten voor een 404 zijn ivm geheimhouden items
        #question = get_object_or_404(Question, pk=question_id)
        raise Http404("Item does not exist")

    #render() is een shortcut
    return render(request, "items/detail_item.html", {"item":item})


    #return HttpResponse("You're looking at item %s." % item_id)


def results(request, item_id):
    item = get_object_or_404(Item, pk=item_id)
    return render(request, "items/results.html", {"item": item})

def index_all(request):

    return render(request, "items/index_all.html")

def index_players(request):
    all_players_list = Player.objects.all()

    context_new = { "all_players_list": all_players_list, }

    return render(request, "items/index_players.html", context_new)



def detail_player(request, player_id):
    try:
        player = Player.objects.get(pk=player_id)
    except Player.DoesNotExist:

        raise Http404("Player does not exist")

    return render(request, "items/detail_player.html", {"player":player})
