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


class SubCategoriesView(LoginRequiredMixin, View):

    def get(self, request):
        sub_categories = Sub_Categories.objects.all()
        categories = Categories.objects.all()
        return render(request, 'sub-categories.html', {'sub_categories' : sub_categories, 'categories' : categories})
        
    
    def post(self, request):
        try:
            sub_category = Sub_Categories() 
            sub_category.name = request.POST.get('name')
            sub_category.status = int(request.POST.get('status'))
            sub_category.category_id = request.POST.get('category')
            sub_category.save()
            messages.success(request, "Category added successfully.")
            return redirect('adminSubCategories')
        except Exception as e:
            print(e)
            
            

class SubCategoryViews(LoginRequiredMixin, View):

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


    def post(self, request, id):
        try:
            sub_category = Sub_Categories.objects.get(id = id)
            sub_category.name = request.POST.get('name')
            sub_category.status = int(request.POST.get('status'))
            sub_category.category_id = request.POST.get('category')
            sub_category.save()
            messages.success(request, "Sub Category added successfully.")
            return redirect('adminSubCategories')
        except Sub_Categories.DoesNotExist:
            messages.error(request, "Sub Category doesn't exists.")
            return redirect('adminSubCategories')
        except Exception as e:
            messages.error(request, "Something went wrong. Please try again later.")
            return redirect('adminSubCategories')