from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.template import loader
from django.contrib.auth.decorators import login_required
from allauth.socialaccount.models import SocialAccount
from .utils import check_sniper_body as checker
import json
from .models import cs2snipe_queries
from .models import cs2snipe_found
from .models import cs2snipe_users
import pika


def index(request, context={}):
    if request.user.is_authenticated:
        return redirect("user")
    template = loader.get_template("home.html")
    return HttpResponse(template.render(request=request, context=context))

@login_required
def user(request, context={}):
    steamid = SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid
    template = loader.get_template("user.html")
    return HttpResponse(template.render(request=request, context=context))
    #return HttpResponse(SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid)

@login_required
def sniper(request, context={}):
    template = loader.get_template("sniper.html")
    return HttpResponse(template.render(request=request))

@login_required
def results(request, context={}):
    if request.method == "POST":
        steamid = SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid
        if checker.validateBody(body=json.loads(request.body), steamid=steamid) is True:
            print("JA GEHT EH")
            return redirect("queries")
        else:
            return HttpResponse("you fucked up")

@login_required
def queries(request, context={}):
    steamid = SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid
    user_queries = cs2snipe_queries.objects.all().filter(steamid=steamid).order_by("pub_date")
    context = {"queries": user_queries}

    template = loader.get_template("queries.html")
    return HttpResponse(template.render(request=request, context=context))

@login_required
def found_specific(request, num):
    template = loader.get_template("found.html")
    steamid = SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid
    query_results = cs2snipe_found.objects.filter(foundskins_id_id=num, steamid=steamid)

    if not query_results:
        query_status = cs2snipe_queries.objects.get(pk=num)
        query_status.query_status
        if query_status.query_status == "Working...":
            context = {"not_yet": True}
            return HttpResponse(template.render(request=request, context=context))

    context = {"query_results": query_results}
    return HttpResponse(template.render(request=request, context=context))

@login_required
def pay(request, context={}):
    return HttpResponse("a")

@login_required
def faq(request):
    template = loader.get_template("faq.html")
    return HttpResponse(template.render(request=request))

@login_required
def roadmap(request):
    template = loader.get_template("roadmap.html")
    return HttpResponse(template.render(request=request))

@login_required
def costs(request):
    template = loader.get_template("costs.html")
    return HttpResponse(template.render(request=request))

@login_required
def donate(request):
    template = loader.get_template("donate.html")
    return HttpResponse(template.render(request=request))

@login_required
def liveCounter(request, id):
    steamid = SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid
    query_results = cs2snipe_found.objects.filter(foundskins_id_id=id, steamid=steamid).count()
    if int(query_results) == 1:
        queries_working = str(query_results) + " matching skin found, but still working."
    else:
        queries_working = str(query_results) + " matching skins found, but still working."
    
    return HttpResponse(queries_working)

@login_required
def liveStatus(request, id):
    steamid = SocialAccount.objects.filter(user=request.user, provider="steam")[0].uid
    query_results = cs2snipe_queries.objects.filter(id=id, steamid=steamid).first()
    
    if query_results.query_status == "Working...":
        return HttpResponse(query_results.query_status)
    else:
        res = HttpResponse("Done")
        res.headers["HX-Location"] = "/queries"
        return res