from django.shortcuts import render, redirect
from cms.business import loginBusiness, menuBusiness, inputCheckListBusiness, adminBusiness


def login(request):
    """ログイン"""
    if request.method == 'POST':
        err_msg = loginBusiness.do_login(
            request,
            request.POST.getlist("syainId")[0],
            request.POST.getlist("password")[0])
        if err_msg is None:
            return redirect('cms:menu')
        else:
            return render(
                request,
                'cms/login.html',
                {'title': 'ログイン',
                 'danger_message': err_msg})
    else:
        return render(
            request,
            'cms/login.html',
            {'title': 'ログイン'})


def menu(request):
    # ログインチェック
    if check_login(request) == 1:
        return render(
            request,
            'cms/login.html',
            {'title': 'ログイン',
             'danger_message': "ログアウトされました。"})

    """メニュー"""
    result = menuBusiness.init_proc(request.session.get('userId', None))
    return render(request,
        'cms/menu.html',
        {'menu_list': result,
         'title': "メニュー"})


def input_check_list(request, check_kbn):
    check_period = ""
    if request.session.get('adminFlg', None) is not None:
        check_period = request.session.get('procDate', None)

    # ログインチェック
    if check_login(request) == 1:
        return render(
            request,
            'cms/login.html',
            {'title': 'ログイン',
             'danger_message': "ログアウトされました。"})

    success = False
    msg = None
    check_result = None

    if request.method == "POST":
        if len(request.POST.getlist("checkPeriod")) == 0:
            """チェックリストの更新"""
            check_result = request.POST.getlist("checkResult")
            msg = inputCheckListBusiness.regist_check_list(
                check_kbn
                , check_result
                , request.POST.getlist("procDate")[0]
                , request.session.get('userId', None))
            check_period = request.POST.getlist("procDate")[0]
            if msg is None:
                success = True
        else:
            check_period = request.POST.getlist("checkPeriod")[0]

    """チェックリストの表示"""
    result = inputCheckListBusiness.init_proc(
        check_kbn
        , check_period
        , request.session.get('userId', None)
        , check_result)

    params = {
        'check_period_list': result[0],
        'check_list': result[1],
        'answer_list': result[2],
        'check_nm': result[3],
        'hosoku_list': result[4],
        'proc_date': result[5],
        'disabled': result[6],
        'title': result[3]["name"],
        'admin_flg': request.session.get('adminFlg', None),
    }

    if request.session.get('adminFlg', None) is not None:
        params["disabled"] = 'disabled'
        request.session.clear()
        request.session["checkKbn"] = check_kbn
        request.session["procDate"] = result[5]

    if success:
        params["success_message"] = "登録が完了しました。"

    if msg is not None:
        params["danger_message"] = msg

    return render(request,
                  'cms/inputCheckList.html',
                  params)


def admin(request):
    check_kbn = 0
    check_period = ""
    msg = None

    if request.session.get('checkKbn', None) is not None:
        check_kbn = request.session.get('checkKbn', None)
        check_period = request.session.get('procDate', None)

    if request.method == 'POST':
        if len(request.POST.getlist("admin_flg")) != 0:
            request.session["adminFlg"] = request.POST.getlist("admin_flg")[0]
            request.session["procDate"] = request.POST.getlist("proc_date")[0]
            request.session["userId"] = request.POST.getlist("user_id")[0]
            return redirect('cms:input_check_list', request.POST.getlist("check_kbn")[0])

        check_kbn = request.POST.getlist("checkKbn")[0]
        proc_date = request.POST.getlist("procDate")
        if len(proc_date) == 0:
            if check_kbn == request.POST.getlist("befCheckKbn")[0]:
                check_period = request.POST.getlist("checkPeriod")[0]

        else:
            msg = adminBusiness.regist_kakutei_flg(check_kbn, proc_date[0])
            check_period = proc_date[0]

    result = adminBusiness.init_proc(check_kbn, check_period)

    params = {
        'check_list_kbn': result[0],
        'check_period_list': result[1],
        'user_check_result_list': result[2],
        'check_kbn': result[3],
        'proc_date': result[4],
        'row_answer_list': result[5],
        'kakutei_flg': result[6],
        'title': "管理者画面",
        'width_table': 225 + 90 * len(result[5])
    }

    request.session.clear()

    if msg is not None:
        params["success_message"] = msg

    return render(request,
                  'cms/admin.html',
                  params)


def check_login(request):
    if request.session.get('userId', None) is None:
        return 1

    return 0
