from django.shortcuts import render, redirect
from django.views import View
from django.contrib import messages
from .models import Categories
from django_resized import ResizedImageField
from django.contrib.auth.mixins import LoginRequiredMixin

class CategoriesView(LoginRequiredMixin, View):

    def get(self, request):
        if request.user.is_authenticated:
            categories = Categories.objects.all()
            return render(request, 'categories.html', {'categories' : categories})
        else:
            messages.error(request, "you have to login first.")
            return redirect('adminLogin')
        
    
    def post(self, request):
        if request.user.is_authenticated:
            category = Categories() 
            category.name = request.POST.get('name')
            category.status = int(request.POST.get('status'))
            if request.FILES:
                category.image = request.FILES['image']
                category.save()
                messages.success(request, "Category added successfully.")
                return redirect('adminCategories')
            else:
                messages.error(request, "Image is required.")
                return redirect('adminCategories')
        else:
             messages.error("you have to login first.")
             return redirect('adminLogin')
        



class CategoryViews(LoginRequiredMixin, View):

    def get(self, request, id):
        try:
            category = Categories.objects.get(id = id)
            category.image.delete()
            category.delete()
            messages.success(request, "Category deleted successfully.")
            return redirect('adminCategories')
        except Categories.DoesNotExist:
            messages.error(request, "Category doesn't exist.")
            return redirect('adminCategories')
        except Exception as e:
            messages.error(request, "Something went wrong. Please try again later.")
            return redirect('adminCategories')


    def post(self, request, id):
        try:
            category = Categories.objects.get(id = id)
            category.name = request.POST.get('name')
            category.status = int(request.POST.get('status'))
            if request.FILES:
                category.image.delete()
                category.image = request.FILES['image']
            category.save()
            messages.success(request, "Category added successfully.")
            return redirect('adminCategories')
        except Categories.DoesNotExist:
            messages.error(request, "Category doesn't exists.")
            return redirect('adminCategories')
        except Exception as e:
            messages.error(request, "Something went wrong. Please try again later.")
            return redirect('adminCategories')