from django.shortcuts import render, redirect
from django.views import View
from django.contrib import messages
from django.http import HttpResponse, JsonResponse
from .models import Banners
from .forms import BannerForm
from rest_framework import status
from django.contrib.auth.mixins import LoginRequiredMixin

# Create your views here.

class BannersViews(LoginRequiredMixin, View):
    
    def get(self, request):
        banners = Banners.objects.all()
        return render(request, "banners.html", {'banners' : banners})


    def post(self, request):
        form = BannerForm(request.POST)
        if form.is_valid():
            if request.FILES:
                banner = Banners()
                banner.status = form.cleaned_data['status']
                banner.image = request.FILES['image']
                banner.save()
                messages.success(request, "Banner added successfully.")
                return redirect('adminBanners')
            else:
                messages.error(request, "Image is required.")
                return redirect('adminBanners')
        else:
            messages.error(request, "Something went wrong. Please try again later.")
            return redirect('adminBanners')
        
        


class BannerViews(LoginRequiredMixin, View):

    def get(self, request, id):
        try:
            banner = Banners.objects.get(id = id)
            banner.image.delete()
            banner.delete()
            messages.success(request, "Banner deleted successfully.")
            return redirect('adminBanners')
        except Banners.DoesNotExist:
            messages.error(request, "Cast type doesn't exist.")
            return redirect('adminBanners')


    def post(self, request, id):
        form = BannerForm(request.POST)
        if form.is_valid():
            try:
                banner = Banners.objects.get(id = id)
                banner.status = form.cleaned_data['status']
                if request.FILES:
                    banner.image.delete()
                    banner.image = request.FILES['image']
                banner.save()
                messages.success(request, "Banner added successfully.")
                return redirect('adminBanners')
            except Banners.DoesNotExist:
                messages.error(request, "Banner doesn't exists.")
                return redirect('adminBanners')
        else:
            messages.error(request, "Something went wrong. Please try again later.")
            return redirect('adminBanners')
        
        
    