
# !page: admin_register
# !latest updated: 09Jul2021

from flask import render_template, request, session, redirect, url_for, flash, Blueprint
from modules.database_modules import db_connect
from functions.date_time_functions import upload_time
from htmlmin.minify import html_minify


admin_upload_tarot_result = Blueprint("admin_upload_tarot_result", __name__, static_folder="static",
                                      template_folder="templates")


@admin_upload_tarot_result.route("/", methods=['GET'])
def tarotResultMenu():
    if 'innerSession' in session:
        return html_minify(render_template('admin_upload_tarot_menu.html'))
    return redirect(url_for('admin_login.adminLogin'))


@admin_upload_tarot_result.route("/card-menu", methods=['GET'])
def tarotResultCardMenu():
    if 'innerSession' in session:
        con = db_connect()
        cur = con.cursor(dictionary=True, buffered=True)
        # cardInfo = []
        cur.execute('select id, card_name_eng, img_path from tarot_card')
        cardData = cur.fetchall()
        return html_minify(render_template('admin_upload_tarot_result.html',
                                           cardData=cardData,
                                           title='ဟောစာတမ်း data ထည့်ရန်', typeColor='dark'))
    return redirect(url_for('admin_login.adminLogin'))


@admin_upload_tarot_result.route("/data-insert", methods=['GET'])
def tarotResultCardInsert():
    if 'innerSession' in session:
        con = db_connect()
        cur = con.cursor(buffered=True)
        cardID = request.args.get('cardID')
        cardData = []
        cur.execute('SELECT * FROM tarot_question_category')
        questionData = cur.fetchall()
        cur.execute(
            'select card_name_eng from tarot_card where id=%s', (cardID,))
        cardName = cur.fetchone()[0]
        for qd in questionData:
            cur.execute(
                'select result_mm,result_eng from tarot_result where card_id=%s and question_id=%s', (cardID, qd[0]))
            cardResult = cur.fetchone()
            if cardResult != None:
                tempArray = (qd[0], qd[1], cardResult[0], cardResult[1])
            else:
                tempArray = (qd[0], qd[1], '', '')
            cardData.append(tempArray)

        return html_minify(render_template('admin_upload_tarot_insert.html', title='ဟောစာတမ်း data ထည့်ရန်', cardID=cardID, cardName=cardName, cData=cardData))
    return redirect(url_for('admin_login.adminLogin'))


# @admin_upload_tarot_result.route("/overall", methods=['GET'])
# def tarotResultMenuUploadOverAll():
#     if 'innerSession' in session:
#         con = db_connect()
#         cur = con.cursor()
#         cardInfo = []
#         cur.execute('select id, card_name_eng, img_path from tarot_card')
#         cardData = cur.fetchall()
#         cur.execute(
#             'select card_id, question_id, result_mm, result_eng from tarot_result')
#         cardResult = cur.fetchall()
#         for cd in cardData:
#             tempArray = (cd[0], cd[1], cd[2], None, None)
#             for cr in cardResult:
#                 if cd[0] == cr[0] and cr[1] == 1:
#                     tempArray = (cd[0], cd[1], cd[2], cr[2], cr[3])
#                     break
#
#             cardInfo.append(tempArray)
#         return render_template('admin_upload_tarot_result.html',
#                                cardData=cardInfo, questionType=1,
#                                title='ယေဘုယဟောစာတမ်း data ထည့်ရန်', typeColor='primary')
#     return redirect(url_for('admin_login.adminLogin'))


# @admin_upload_tarot_result.route("/business", methods=['GET'])
# def tarotResultMenuUploadBusiness():
#     if 'innerSession' in session:
#         con = db_connect()
#         cur = con.cursor()
#         cur.execute('select id, card_name_eng, img_path from tarot_card')
#         cardData = cur.fetchall()
#         cur.execute(
#             'select card_id, question_id, result_mm, result_eng from tarot_result')
#         cardResult = cur.fetchall()
#         cardInfo = []
#         for cd in cardData:
#             tempArray = (cd[0], cd[1], cd[2], None, None)
#             for cr in cardResult:
#                 if cd[0] == cr[0] and cr[1] == 2:
#                     tempArray = (cd[0], cd[1], cd[2], cr[2], cr[3])
#                     break
#
#             cardInfo.append(tempArray)
#         return render_template('admin_upload_tarot_result.html',
#                                cardData=cardInfo, questionType=2,
#                                title='စီးပွားရေး သီးသန့် ဟောစာတမ်း data ထည့်ရန်', typeColor='warning', cardResult=cardResult)
#     return redirect(url_for('admin_login.adminLogin'))


# @admin_upload_tarot_result.route("/love", methods=['GET'])
# def tarotResultMenuUploadLove():
#     if 'innerSession' in session:
#         con = db_connect()
#         cur = con.cursor()
#         cur.execute('select id, card_name_eng, img_path from tarot_card')
#         cardData = cur.fetchall()
#         cur.execute(
#             'select card_id, question_id, result_mm, result_eng from tarot_result')
#         cardResult = cur.fetchall()
#         cardInfo = []
#         for cd in cardData:
#             tempArray = (cd[0], cd[1], cd[2], None, None)
#             for cr in cardResult:
#                 if cd[0] == cr[0] and cr[1] == 3:
#                     tempArray = (cd[0], cd[1], cd[2], cr[2], cr[3])
#                     break
#
#             cardInfo.append(tempArray)
#         return render_template('admin_upload_tarot_result.html',
#                                cardData=cardInfo, questionType=3,
#                                title='အချစ်ရေး သီးသန့် ဟောစာတမ်း data ထည့်ရန်', typeColor='secondary', cardResult=cardResult)
#     return redirect(url_for('admin_login.adminLogin'))


# @admin_upload_tarot_result.route("/education", methods=['GET'])
# def tarotResultMenuUploadEducation():
#     if 'innerSession' in session:
#         con = db_connect()
#         cur = con.cursor()
#         cur.execute('select id, card_name_eng, img_path from tarot_card')
#         cardData = cur.fetchall()
#         cur.execute(
#             'select card_id, question_id, result_mm, result_eng from tarot_result')
#         cardResult = cur.fetchall()
#         cardInfo = []
#         for cd in cardData:
#             tempArray = (cd[0], cd[1], cd[2], None, None)
#             for cr in cardResult:
#                 if cd[0] == cr[0] and cr[1] == 4:
#                     tempArray = (cd[0], cd[1], cd[2], cr[2], cr[3])
#                     break
#
#             cardInfo.append(tempArray)
#         return render_template('admin_upload_tarot_result.html',
#                                cardData=cardInfo, questionType=4,
#                                title='ပညာရေး သီးသန့် ဟောစာတမ်း data ထည့်ရန်', typeColor='danger', cardResult=cardResult)
#     return redirect(url_for('admin_login.adminLogin'))


@admin_upload_tarot_result.route("/upload-card-data", methods=['POST'])
def tarotResultUpload():
    if 'innerSession' in session and request.method == 'POST':
        con = db_connect()
        cur = con.cursor()
        card_id = request.form['card_id']
        result_mm_1 = request.form['result_mm_1']
        result_eng_1 = request.form['result_eng_1']
        result_mm_2 = request.form['result_mm_2']
        result_eng_2 = request.form['result_eng_2']
        result_mm_3 = request.form['result_mm_3']
        result_eng_3 = request.form['result_eng_3']
        result_mm_4 = request.form['result_mm_4']
        result_eng_4 = request.form['result_eng_4']
        result_mm_5 = request.form['result_mm_5']
        result_eng_5 = request.form['result_eng_5']

        datetime = upload_time()
        cur.execute(
            'select * from tarot_result where card_id=%s and question_id=%s', (card_id, 1))
        dataExist1 = cur.fetchone()
        cur.execute(
            'select * from tarot_result where card_id=%s and question_id=%s', (card_id, 2))
        dataExist2 = cur.fetchone()
        cur.execute(
            'select * from tarot_result where card_id=%s and question_id=%s', (card_id, 3))
        dataExist3 = cur.fetchone()
        cur.execute(
            'select * from tarot_result where card_id=%s and question_id=%s', (card_id, 4))
        dataExist4 = cur.fetchone()
        cur.execute(
            'select * from tarot_result where card_id=%s and question_id=%s', (card_id, 5))
        dataExist5 = cur.fetchone()
        if dataExist1 != None:
            cur.execute('update tarot_result set result_mm=%s, result_eng=%s, datetime=%s where card_id=%s and question_id=%s',
                        (result_mm_1, result_eng_1, datetime, card_id, 1))
            con.commit()
        else:
            cur.execute(
                'insert into tarot_result (card_id, question_id, result_mm, result_eng, datetime) values (%s,%s,%s,%s,%s)', (card_id, 1, result_mm_1, result_eng_1, datetime))
            con.commit()

        if dataExist2 != None:
            cur.execute('update tarot_result set result_mm=%s, result_eng=%s, datetime=%s where card_id=%s and question_id=%s',
                        (result_mm_2, result_eng_2, datetime, card_id, 2))
            con.commit()
        else:
            cur.execute(
                'insert into tarot_result (card_id, question_id, result_mm, result_eng, datetime) values (%s,%s,%s,%s,%s)', (card_id, 2, result_mm_2, result_eng_2, datetime))
            con.commit()

        if dataExist3 != None:
            cur.execute('update tarot_result set result_mm=%s, result_eng=%s, datetime=%s where card_id=%s and question_id=%s',
                        (result_mm_3, result_eng_3, datetime, card_id, 3))
            con.commit()
        else:
            cur.execute(
                'insert into tarot_result (card_id, question_id, result_mm, result_eng, datetime) values (%s,%s,%s,%s,%s)', (card_id, 3, result_mm_3, result_eng_3, datetime))
            con.commit()

        if dataExist4 != None:
            cur.execute('update tarot_result set result_mm=%s, result_eng=%s, datetime=%s where card_id=%s and question_id=%s',
                        (result_mm_4, result_eng_4, datetime, card_id, 4))
            con.commit()
        else:
            cur.execute(
                'insert into tarot_result (card_id, question_id, result_mm, result_eng, datetime) values (%s,%s,%s,%s,%s)', (card_id, 4, result_mm_4, result_eng_4, datetime))
            con.commit()

        if dataExist5 != None:
            cur.execute('update tarot_result set result_mm=%s, result_eng=%s, datetime=%s where card_id=%s and question_id=%s',
                        (result_mm_5, result_eng_5, datetime, card_id, 5))
            con.commit()
        else:
            cur.execute(
                'insert into tarot_result (card_id, question_id, result_mm, result_eng, datetime) values (%s,%s,%s,%s,%s)', (card_id, 5, result_mm_5, result_eng_5, datetime))
            con.commit()
        flash('Process Successful', 'success')
        con.disconnect()
        return redirect(url_for('admin_upload_tarot_result.tarotResultCardInsert', cardID=card_id))
    return redirect(url_for('admin_login.adminLogin'))

# *************************************************************************************************************************************************
