# ============================================
# Import Libraries and Models
# ============================================
from django.shortcuts import render, get_object_or_404, HttpResponseRedirect
from django.http import HttpResponse, JsonResponse
from django.conf import settings
from django.utils import timezone
from django.db.models import Max, F, Q
from django.db.models.functions import Cast
from django.db import connection
from django.template.loader import get_template
from django.templatetags.static import static
from datetime import datetime
from dateutil.parser import parse as parse_date
import json
import hashlib
import os
import base64
from io import BytesIO
from xhtml2pdf import pisa
from num2words import num2words
from django.contrib.staticfiles import finders

# Import common utilities and models
from common.models import *
from common.utils import *
from masters.models import *
from masters.forms import *
from privilege.models import *
from scheme.models import *
from scheme.forms import *
from supplier.models import supplier_table
from store.models import *


def price_list_report(request):
    
    if 'user_id' in request.session:
        user_type = request.session.get('user_type')
        if user_type == 'stores':
            cmpy = select_row(company_table, {'id': 1})
            category = selectList(category_table, order_by='name')
            sub_category = selectList(sub_category_table, order_by='name')
            uom = selectList(uom_table, order_by='name')
            variant = selectList(variant_table, order_by='name')
            model = selectList(model_table, order_by='name')
            tax = selectList(tax_table, order_by='name')
            brand = selectList(brand_table, order_by='name')
            color = selectList(color_table, order_by='name')

            return render(request, 'price_list.html', {
                'company': cmpy,
                'category': category,
                'sub_category': sub_category,
                'uom': uom,
                'brand': brand,
                'tax': tax,
                'variant': variant,
                'model': model,
                'color': color
            })
        else:
            return HttpResponseRedirect("/")
    else:
        return HttpResponseRedirect("/")


from material.models import *
from reports.report_utils import get_imei_stock_summary_data

def ajax_price_list_view(request):
    branch_id = request.session.get('branch_id')
    is_ho     = request.session.get('is_ho')
    role_id   = request.session.get('role_id')

    # ✅ Permission check
    has_access, error_message = check_user_access(role_id, 'imei_list', "read")
    if not has_access:
        return JsonResponse({
            'message': 'permission',
            'error_message': 'You do not have permission to view the IMEI Stock details'
        })

    # Filters
    filters = {
        'subcategory': request.POST.get('subcategory'),
        'brand_id': request.POST.get('brand_id'),
        'model_id': request.POST.get('model_id'),
        'variant_id': request.POST.get('variant_id'),
        'color_id': request.POST.get('color_id'),
        'stock': request.POST.get('stock'),
        'branch_id': request.POST.get('branch_id')
    }

    available_qty, formatted = get_imei_stock_summary_data(branch_id, is_ho, filters, include_schemes=True)

    return JsonResponse({
        'data': formatted,
        'is_ho': is_ho,
        'available_qty': available_qty
    })
