from .models import *
from django.template.loader import render_to_string

def get_cur_user_subscribe(user):

    user_subscribe = None
    try:
        user_subscribe = SubscribeForUser.objects.get(user=user)
    except Exception as e:
        pass

    return user_subscribe


def get_subsribes_w_options():
    all_options = SubscribeOption.objects.filter(enable=True)
    subscribes = Subscribe.objects.filter(enable=True)
    for subscribe in subscribes:
        subscribe_options_ids = subscribe.options.values_list('id', flat=True)
        subscribe.disabled_options = all_options.exclude(id__in=subscribe_options_ids)

    return subscribes, all_options


def get_profile_subscribe_page_content_html(request):

    try:

        # data = json.loads(request.body)
        # all_options = SubscribeOption.objects.filter(enable=True)
        subscribes, all_options = get_subsribes_w_options()

        subscribe_for_user = SubscribeForUser.objects.filter(user=request.user)
        if not subscribe_for_user:
            tpl_name = 'blocks/profile/b_subscribe_variants.html'
        else:
            tpl_name = 'blocks/profile/b_subscribe_current.html'
            subscribe_for_user = subscribe_for_user[0]
            subscribe_options_ids = subscribe_for_user.subscribe.options.values_list('id', flat=True)
            subscribe_for_user.subscribe.disabled_options = all_options.exclude(id__in=subscribe_options_ids)

        # subscribes = Subscribe.objects.filter(enable=True)
        # for subscribe in subscribes:
        #     subscribe_options_ids = subscribe.options.values_list('id', flat=True)
        #     subscribe.disabled_options = all_options.exclude(id__in=subscribe_options_ids)

        Dict = {
            'subscribe_for_user': subscribe_for_user,
            'subscribes': subscribes
        }

        html = render_to_string(tpl_name, Dict, request=request)
        return html

    except Exception as e:
        msg = f'show_cur_subscribe_ajax Error = {str(e)}'
        return msg