﻿  #!C:\Python\Python311\python.exe
# -*- coding: utf-8 -*-
# registration.py
# from datetime import datetime
import datetime
import json
import random
from flask import Flask, jsonify, render_template
from flask import make_response
from flask import request
from flask import abort
from werkzeug.routing import BaseConverter

from . import app 
from .handlers.cl_man_regist  import  cl_man_regist

from .handlers.cl_man_req  import  cl_man_req
from utils.consts import clC

try:
    from man_db.MDB import  clMDB

except Exception as inst:
    print("registration import      Exception")
    m = type(inst)
    print(type(inst))  # the exception type
    print(inst.args)  # arguments stored in .args
    print(inst)  # __str__ allows args to be printed directly,
DEBUG_SAIT = False
DEBUG_SAIT = True#d++
v_clMDB = clMDB()



DEBUG_SAIT = False
DEBUG_SAIT = True


@app.route('/registration/check_reg_useremail/', methods=['GET'])  # 28-10-20236:51
def check_reg_useremail():  # 16-09-202312:59
    print("check_reg_useremail args")
    print(str(request.args))
       
    if 'useremail' in request.args:
        clC.ID_lang= v_clMDB.get_id_lang(0, clC.ID_lang)
        useremail = request.args.get('useremail')  
        # {"id": ,"id_telegram": }
        ans = cl_man_regist.check_key_sec(request.args.get('key_sec'))
        ans["id_telegram"] = int(ans["id_telegram"])
        is_key_sec = ans["id_telegram"] 
        if ans["id_telegram"] > 0:
            cl_man_regist.send_message(ans["id_telegram"], clC.g("mess_RegistrationStarted"))
        else: 
            cl_man_regist.send_message(ans['id_telegram_self'], clC.g("mes_session_time_ended"))
            print("check_reg_useremail id_telegram!>0 {} ".format(is_key_sec))
              
        print("check_reg_useremail is_key_sec# 16-09-202312:59  {} ".format(is_key_sec))
        print("check_reg_useremail useremail {} ".format(useremail))
        if is_key_sec > 0:
            is_useremail = cl_man_regist.check_reg_useremail(useremail)
            if is_useremail == clC.v_error:
                return jsonify({'result':clC.v_error, 'desc':clC.g("mess_error")})
            else:
                return jsonify({'result':is_useremail})
            
            # return jsonify({'result':is_useremail})
        else:
            return jsonify({'result':clC.v_error, 'desc':clC.g("mes_session_time_ended_adv")})
     
    # is_win=cl_man_req.is_win()
    # user =  'check_reg_useremail'
    # data = {"user":user, "is_win":is_win, "DEBUG_SAIT":DEBUG_SAIT} 
    #
    # return render_template('check_reg_useremail.html', data=data)


@app.route('/registration/registration_reg_data/', methods=['GET'])  # 16-09-202312:59
def registration_reg_data():  # 16-09-202312:59
    print("registration_reg_data args")
    print(str(request.args))
    request_data = {}
    if 'username' in request.args:
        request_data['username'] = request.args.get('username')  
    if 'useremail' in request.args:
        request_data['useremail'] = request.args.get('useremail')  
    if 'key_sec' in request.args:
        request_data['key_sec'] = request.args.get('key_sec')  
    ans = cl_man_regist.check_key_sec(request.args.get('key_sec'))
    ans["id_telegram"] = int(ans["id_telegram"])
    is_key_sec = ans["id_telegram"] 
    if ans["id_telegram"] > 0:
        pass
    else: 
        cl_man_regist.send_message(ans['id_telegram_self'], clC.g("mes_session_time_ended"))
        print("registration_reg_data id_telegram!>0 {} ".format(is_key_sec))
          
    print("registration_reg_data is_key_sec# 16-09-202312:59  {} ".format(is_key_sec))
    if is_key_sec > 0:
        ans = cl_man_regist.registration_reg_data(request_data)
        if ans == clC.v_error:
            return jsonify({'result':clC.v_error, 'desc':clC.g("mess_error")})
        else:
            return jsonify({'result':ans})
    else:
        return jsonify({'result':clC.v_error, 'desc':clC.g("mes_session_time_ended_adv")})


@app.route('/<string:API_KEY>/man_tzone/', methods=['GET'])
#@app.route('/registration/man_tzone/', methods=['GET'])  # 28-10-20236:51
@app.route('/' + clC.url_man_tzone_f + '/', methods=['GET'])
def man_tzone(API_KEY=None):
    global DEBUG_SAIT
    print("man_tzone args")
    print(str(request.args))
    request_data = {}
    tzone_new = None
    id_telegram=None
    if 'API_KEY' in request.args:
        API_KEY = request.args.get('API_KEY')  
    if 'tzone_new' in request.args:
        tzone_new = request.args.get('tzone_new')  
    if 'key_sec' in request.args:
        request_data['key_sec'] = request.args.get('key_sec')  
    ans = cl_man_regist.check_key_sec(request.args.get('key_sec'))
    ans["id_telegram"] = int(ans["id_telegram"])
    id_telegram= int(ans["id_telegram"])
    is_key_sec = ans["id_telegram"] 
    if ans["id_telegram"] > 0:
        pass
    else: 
        if 'DEBUG_SAIT' in request.args:
            DEBUG_SAIT=request.args.get('DEBUG_SAIT')
            print('dis_param_cmd DEBUG_SAIT=' + str(DEBUG_SAIT))
            if DEBUG_SAIT== "True" or DEBUG_SAIT==  True :
                pass
            else:
                cl_man_regist.send_message(ans['id_telegram_self'], clC.g("mes_session_time_ended"))
                print("man_tzone id_telegram!>0 {} ".format(is_key_sec))
                return jsonify({'result':clC.v_error, 'desc':clC.g("mes_session_time_ended_adv")})

    if API_KEY != None:
        mac = cl_man_req.get_macByAPI_KEY(API_KEY, app)
        if mac == 0:
            # raise InvalidAPIUsage("this mac address is not registered", status_code=406)
            # abort(401, description="Resource not found") 406 Not Acceptable
            return json.dumps({'result':clC.resultNotValidData}), clC.resultNotValidData, {'ContentType':'application/json'} 
            # return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
        if tzone_new != None:
            ans = cl_man_req.ChTZone(mac, tzone_new, app)
            if ans == 0:
                ans = 'OK'
            return jsonify({'result':ans}) 
    #
    # else:
    #     mac = request.args.get('mac')
    print("man_tzone id_telegram " + str(id_telegram))
    # d =jsonify(request.json)
    print(mac)
    tzone = cl_man_req.get_TZONE_BYmac(mac, app)
    lang =clC.ID_lang
    if id_telegram is not None:
        if id_telegram > 0:
            clC.send_message(id_telegram,  clC.url_man_tzone_f)
            lang = cl_man_req.get_lang(id_telegram,lang, app)
            
            
    is_win = cl_man_req.is_win()
    user = tzone or 'Shalabheeee'
    data = {"user":user, "tzone":tzone,# 28-10-20236:51
"mess_Change":clC.g("mess_Change" ),
"mess_Setting_time_zone_device":clC.g("mess_Setting_time_zone_device" ),
"mess_Select_new_value":clC.g("mess_Select_new_value" ),
             
 "tzoneSt":clC.tzoneSt,           
 "TZoneAr":clC.g("TZoneAr" ),           
             "is_win":is_win, "DEBUG_SAIT":DEBUG_SAIT} 

    return render_template('man_tzone.html', data=data)


@app.route('/registration/registration/', methods=['GET'])  # 28-10-20236:51
def registration():  # 16-09-202312:59
    print("registration args")
    print(str(request.args))
        
    print("registration")#16-02-202421:51
    clC.ID_lang= v_clMDB.get_id_lang(0, clC.ID_lang)


    is_win = cl_man_req.is_win()
    user = 'registration'
    data = {"user":user,
             "is_win":is_win,
             "Enter_your_name":clC.g("Enter_your_name"),
             "Enter_your_email_to_register_with_Grafana":clC.g("Enter_your_email_to_register_with_Grafana"),
             "registration":clC.g("registration"),
"messEmailBusy":clC.g("messEmailBusy",True ),#
"messEnterName":clC.g("messEnterName" ),
"messRegistrationError":clC.g("messRegistrationError" ),
"messRegistrationSuccess":clC.g("messRegistrationSuccess" ),
"messDataParamSent":clC.g("messDataParamSent" ),
             
              "DEBUG_SAIT":DEBUG_SAIT} 
    return render_template('registration.html', data=data)


# @app.route('/registration/device_management/', methods=['GET'])  # 28-10-20236:51
# @app.route('/' + clC.url_Device_management_f + '/', methods=['GET'])  # 28-10-20236:51
# def device_management():  # 04-12-202319:26
#     print("device_management args")
#     print(str(request.args))
#
#     print("device_management")
#
#     is_win = cl_man_req.is_win()
#     user = 'device_management'
#     data = {"user":user, "is_win":is_win, "DEBUG_SAIT":DEBUG_SAIT} 
#
#     return render_template('device_management.html', data=data)

# @app.route('/<string:API_KEY>/man_tzone/', methods=['GET'])
# @app.route('/man_tzone/', methods=['GET'])  # 28-10-20236:51
# def man_tzone(API_KEY=None):
#     print("man_tzone args")
#     print(str(request.args))
#     if 'API_KEY' in request.args:
#         # parameter 'varname' is specified
#         API_KEY = request.args.get('API_KEY')
#     else: 
#         pass   
#     if API_KEY != None:
#         mac = cl_man_req.get_macByAPI_KEY(API_KEY, app)
#         if mac == 0:
#             # raise InvalidAPIUsage("this mac address is not registered", status_code=406)
#             # abort(401, description="Resource not found") 406 Not Acceptable
#             return json.dumps({'result':clC.resultNotValidData}), clC.resultNotValidData, {'ContentType':'application/json'} 
#             # return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
#         if 'tzone_new' in request.args:
#             # parameter 'varname' is specified
#             tzone_new = request.args.get('tzone_new')
#             ans = cl_man_req.ChTZone(mac, tzone_new, app)
#             if ans == 0:
#                 ans = 'OK'
#             return jsonify({'result':ans}) 
#             # return jsonify({'result':'OK'}) 
#         else: 
#             pass   
#
#     else:
#         mac = request.args.get('mac')
#     print("man_tzone")
#     # d =jsonify(request.json)
#     print(mac)
#     tzone = cl_man_req.get_TZONE_BYmac(mac, app)
#     is_win=cl_man_req.is_win()
#     user = tzone or 'Shalabheeee'
#     data = {"user":user, "tzone":tzone, "is_win":is_win, "DEBUG_SAIT":DEBUG_SAIT} 
#
#     return render_template('man_tzone.html', data=data)

