from django.shortcuts import render, get_object_or_404
from rest_framework.decorators import api_view
from rest_framework.response import Response
from blog.models import BlogPost
from analytics.models import BlogView, CTAEvent
from datetime import timedelta
from django.utils import timezone
from django.db.models import F
from adverts.models import *


# Create your views here.
@api_view(['POST'])
def track_views(request, slug):
    blog = get_object_or_404(BlogPost, slug=slug)
    visitor_id = request.data.get('visitor_id')

    view, created = BlogView.objects.get_or_create(
        blog=blog,
        visitor_id=visitor_id
    )

    if created:
        BlogPost.objects.filter(id=blog.id).update(view_count=F("view_count") + 1)

    return Response({'success':True})


@api_view(["POST"])
def track_cta(request):

    CTAEvent.objects.create(
        visitor_id=request.data.get("visitor_id"),
        blog_id=request.data.get("blog_id"),
        event_type=request.data.get("event_type")
    )

    return Response({
        "success": True
    })

@api_view(["POST"])
def track_banner_impression(request):

    existing = BannerEvent.objects.filter(
        banner_id=request.data["banner_id"],
        visitor_id=request.data["visitor_id"],
        event_type="impression",
        created_at__gte=timezone.now() - timedelta(minutes=30)
    ).exists()

    if not existing:
        BannerEvent.objects.create(
            banner_id=request.data["banner_id"],
            visitor_id=request.data["visitor_id"],
            blog_id=request.data.get("blog_id"),
            event_type="impression"
        )

    return Response({"success": True})

@api_view(["POST"])
def track_banner_click(request):
    BannerEvent.objects.create(
        banner_id=request.data.get("banner_id"),
        visitor_id=request.data.get("visitor_id"),
        blog_id=request.data.get("blog_id"),
        event_type="click"
    )

    return Response({"success": True})




