"""
SYNCRO VIEWS
TV Series

"""

from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponse
from django.template import loader
from lazysolutions.helpers import web as web_helpers
from syncro.helpers import synchronkarteihelper, synchronkarteivalidators, speakerserieslinkhelper, serieshelper, \
    userserieslinkhelper


@login_required(login_url='/accounts/login/')
def add_series(request):
    if request.method == 'POST':
        url = request.POST.get('add_url')
        if synchronkarteivalidators.check_url_is_synchronkartei_tvseries(url) is True:
            html_content = web_helpers.collect_website_html(url)
            if synchronkarteihelper.read_series(html_content, url, request.user, False):
                print("[TVSERIES][add_series] added series")
            else:
                print("[TVSERIES][add_series] FAILED!")
        else:
            print("[TVSERIES][add_series] FAILED!")

        return HttpResponseRedirect("/syncro")
    else:
        print("[TVSERIES][add_series] can not add series: wrong method %s" % str(request.method))
        return HttpResponseRedirect("/syncro")


@login_required(login_url='/accounts/login/')
def get_series(request, uid):
    try:
        if request.method == 'GET':
            context = {
                "serie": serieshelper.get_series_by_uid(uid),
                "roles": speakerserieslinkhelper.get_series_links(uid)
            }
            template = loader.get_template('syncro_frontend/series.html')
            return HttpResponse(template.render(context, request))
        else:
            print("[TVSERIES][get_series] wrong method %s" % str(request.method))
            return HttpResponseRedirect("/syncro")
    except Exception as e:
        print(str(e))
        return HttpResponseRedirect("/syncro")


@login_required(login_url='/accounts/login/')
def series_overview(request):
    try:
        if request.method == 'GET':
            context = {
                "series": serieshelper.get_series_objects(),
                "links": userserieslinkhelper.get_my_series_links(request.user),
                "checkedseries": userserieslinkhelper.get_checkedseries_uids_as_list(request.user)
            }
            template = loader.get_template('syncro_frontend/series_overview.html')
            return HttpResponse(template.render(context, request))
        else:
            print("[TVSERIES][series_overview] wrong method %s" % str(request.method))
            return HttpResponseRedirect("/syncro")
    except Exception as e:
        print(str(e))
        return HttpResponseRedirect("/syncro")


@login_required(login_url='/accounts/login/')
def add_user_series(request):
    if request.method == 'POST':
        if userserieslinkhelper.create_link(serieshelper.get_series_by_uid(request.POST.get('uid')), request.user) is True:
            return HttpResponse('success', status=200)
        else:
            return HttpResponse('failed', status=500)
    else:
        print("[TVSERIES][add_series] can not add series: wrong method %s" % str(request.method))
        return HttpResponseRedirect("/syncro")


@login_required(login_url='/accounts/login/')
def remove_user_series(request):
    if request.method == 'POST':
        if userserieslinkhelper.remove_link_by_series(request.POST.get('uid'), request.user) is True:
            return HttpResponse('success', status=200)
        else:
            return HttpResponse('failed', status=500)
    else:
        print("[TVSERIES][add_series] can not add series: wrong method %s" % str(request.method))
        return HttpResponseRedirect("/syncro")


# END
