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

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


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


@admin_promo_manage.route('/')
def promoCodePage():
    if 'innerSession' in session:
        con = db_connect()
        cur = con.cursor(dictionary=True, buffered=True)
        cur.execute('select * from product_promo')
        promoData = cur.fetchall()
        return html_minify(render_template('admin_product_promo.html', title='Promo Code Management', promoData=promoData))
    return redirect(url_for('admin_login.adminLogin'))


@admin_promo_manage.route('/upload', methods=['POST'])
def promoCodeUpload():
    if 'innerSession' in session:
        con = db_connect()
        cur = con.cursor(dictionary=True, buffered=True)
        startDate = request.form['startDate']
        endDate = request.form['endDate']
        promoCode = request.form['promoCode']
        des = request.form['des']
        dtype = request.form['dtype']
        amount = request.form['amount']
        if dtype == '0':
            cur.execute('insert into product_promo (type,amount,code,start_date,expire_date,`desc`) values (%s,%s,%s,%s,%s,%s)',
                        (dtype, amount, promoCode, startDate, endDate, des))
        else:
            cur.execute('insert into product_promo (type, percentage, code, start_date, expire_date, `desc` ) values (%s,%s,%s,%s,%s,%s)',
                        (dtype, amount, promoCode, startDate, endDate, des))
        con.commit()
        con.disconnect()
        flash('Item successfully uploaded', 'success')
        return jsonify({"message": 'successfully uploaded', 'status': 'success'}), 200
    return jsonify({'message': 'unauthorized access', 'status': 'failed'}), 403


@admin_promo_manage.route('/edit', methods=['POST'])
def promoCodeEdit():
    if 'innerSession' in session:
        con = db_connect()
        cur = con.cursor(dictionary=True, buffered=True)
        endDate = request.form['endDate']
        des = request.form['description']
        dtype = request.form['dtype']
        amount = request.form['amount']
        pStatus = request.form['pStatus']
        vid = request.form['id']

        if dtype == '0':
            cur.execute('update product_promo set expire_date=%s, amount=%s, `desc`=%s, public_status=%s where id=%s',
                        (endDate, amount, des, pStatus, vid))
        else:
            cur.execute('update product_promo set expire_date=%s, percentage=%s, `desc`=%s, public_status=%s where id=%s',
                        (endDate, amount, des, pStatus, vid))
        con.commit()
        con.disconnect()
        flash('Item successfully updated', 'success')
        return jsonify({"message": 'successfully updated', 'status': 'success'}), 200
    return jsonify({'message': 'unauthorized access', 'status': 'failed'}), 403


@admin_promo_manage.route('/delete', methods=['POST'])
def promoCodeDelete():
    if 'innerSession' in session:
        con = db_connect()
        cur = con.cursor(dictionary=True, buffered=True)
        vid = request.form['id']
        cur.execute('delete from product_promo where id=%s', (vid,))
        con.commit()
        con.disconnect()
        flash('Item successfully deleted', 'success')
        return jsonify({"message": 'successfully deleted', 'status': 'success'}), 200
    return jsonify({'message': 'unauthorized access', 'status': 'failed'}), 403
# *************************************************************************************************************************************************
