Sindbad~EG File Manager

Current Path : /proc/self/cwd/food_kit_scan_badges/core/controller/
Upload File :
Current File : //proc/self/cwd/food_kit_scan_badges/core/controller/RegDeskController.py

from flask import request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
from core.model.BadgeModel import BadgeModel
from core.model.RegdeskModel import RegdeskModel
from .. import  Custom


from .. import Cryptography
from flask import  app
from random import randint
import datetime
from datetime import timedelta,date,datetime,time
from werkzeug.utils import secure_filename
from os.path import join, dirname, realpath
import os
from collections import OrderedDict
from collections import defaultdict
from json import dumps
import string 
import random

import requests


app = Blueprint('regdesk', __name__)


@app.route('/boa_venue', methods = ["GET", "POST"])
def BOAVenue():
	return render_template('boa_venue.html')

# http://127.0.0.1:5003/regdesk_login?regdesk_pin=5555&api_key=w347H52d96
@app.route('/regdesk_login', methods = ["GET", "POST"])
def RegdeskLogin():
	json_data     = []
	confData      = []
	delegate_data = []
	msg           = ""
	signed_count  = 0
	now           = datetime.now()
	curr_dt       = now.strftime("%Y-%m-%d %H:%M:%S")
	curr_date     = now.strftime("%Y-%m-%d")
	try:
		APIKEY      = request.values.get("api_key",None)
		regdesk_pin = request.values.get('regdesk_pin') or None
		signup_for_alldays = request.values.get('signup_for_alldays') or 0
		signup_for_alldays = int(signup_for_alldays) if signup_for_alldays else 0
		if APIKEY  and  APIKEY == Custom.APIKEY :
			confData    = RegdeskModel().getConfDataForRegdesk(regdesk_pin)
			if confData : 
				conf_start_time = confData["conf_start_time"]
				conf_end_time   = confData["conf_end_time"]
				del_table_name  = confData["del_table_name"]
				conf_id         = confData["conf_id"]
				conf_key        = confData["conf_key"]
				signup_table    = confData["signup_table"] # March 07 2023
				# signup_for_alldays  = confData["signup_for_alldays"] # March 07 2023


				conf_start_time_str = conf_start_time.strftime("%Y-%m-%d %H:%M:%S")
				conf_end_time_str = conf_end_time.strftime("%Y-%m-%d %H:%M:%S")

				if conf_start_time < now < conf_end_time :
					delegateData = RegdeskModel().delegateData(conf_id,del_table_name,signup_for_alldays,signup_table,curr_date)
					if delegateData :
						delegate_data = delegateData
						key_order = ["delegate_id","delegate_no","role","full_name","email","mobile","city","state","membership_no","mc_number","counter","batch","signed_by","comments","signed_on","updated_at","conf_id","reg_remarks"]
						
						 
						# for index,value in enumerate(delegate_data) : 
						# 	signed_on = value["signed_on"]
						# 	if signed_on :
						# 		signed_count = signed_count + 1
							
						data = {'conf_data' : confData ,'delegate_data' : delegate_data ,'signed_count': signed_count ,'msg' : "success", 'status' : 1}
						
						result = defaultdict(list)
						for dic in data["delegate_data"]:
							signed_on = dic["signed_on"]
							if signed_on :
								signed_count = signed_count + 1

							ordered = OrderedDict((key, dic.get(key)) for key in key_order)
							result["delegate_data"].append(ordered)

						data["signed_count"] = signed_count
						json_data = dumps(data ,default=str)
						return json_data
					else :
						data = {'conf_data' : confData ,'delegate_data' : "" ,'signed_count': signed_count ,'msg' : "Delegate Records not exist", 'status' : 7}
						json_data = json.dumps(data,default= str)
						return json_data
						
						

				elif conf_start_time > now :
					status   = 4
					msg      = "Conference not yet start. It will start on " + conf_start_time_str
					
				elif now > conf_end_time :
					status   = 5
					msg      = "Conference is completed on "+  conf_end_time_str
				else :
					msg = "Try again"
					status = 6

				data = {'conf_data' : confData ,'delegate_data' : delegate_data ,'signed_count': signed_count ,'msg' : msg, 'status' : status}
			else :
				data = {'conf_data' : [] ,'delegate_data' : delegate_data ,'signed_count': signed_count,'msg' : 'Invalid pin or Regdesk may be closed.', 'status' : 3}
		else :
			data = {'conf_data' : [] ,'delegate_data' : delegate_data,'signed_count': signed_count, 'msg' : 'Invalid API KEY', 'status' : 2}

		json_data = json.dumps(data,default= str)
		return json_data			
	
	except Exception as e:
		data = {'conf_data' : [],'delegate_data' : delegate_data ,'signed_count': signed_count, 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data,default= str)
		return json_data
		


# ---------------- not complete ------- Feb 25, 2023 
# http://127.0.0.1:5001/save_singup_record?api_key=w347H52d96&conf_id=1&delegate_no=1&del_table_name=delegates_iages23&signed_by=DELEGATE
@app.route('/save_signup_record', methods = ["GET", "POST"])
def SaveSignupRecord():
	json_data    = {}
	delegate_nos = []
	signed_count = 0
	msg          = ""
	update_stmt  = "" 
	signed_on_1    = None
	signed_count_1 = None
	is_valid     = "Invalid"
	now          = datetime.now()
	curr_dt      = now.strftime("%Y-%m-%d %H:%M:%S")
	curr_date     = now.strftime("%Y-%m-%d")
	try:
		conf_id	       = request.values.get('conf_id') or None
		APIKEY         = request.values.get("api_key") or None
		del_table_name = request.values.get('del_table_name') or None
		delegate_no    = request.values.get('delegate_no') or None

		signup_for_alldays = request.values.get('signup_for_alldays') or 0
		signup_table       = request.values.get('signup_table') or None
			
		if delegate_no :
			delegate_no = int(delegate_no)

		signed_by	   = request.values.get('signed_by') or 'DELEGATE'	
		comments	   = request.values.get('comments') or None
		
		signed_on      = curr_dt
		sync_at        = curr_dt
		updated_at     = curr_dt

		if APIKEY  and  APIKEY == Custom.APIKEY :
			
			update_and_get_count = RegdeskModel().updateAndGetSignedCountForAndroidSignup(conf_id,delegate_no,del_table_name,curr_dt,signed_by,comments,curr_date,signup_for_alldays,signup_table)
			if update_and_get_count :
				for index,value in enumerate(update_and_get_count) :
					if index == 0 :
						is_valid_1 = value
					if index == 1 :
						signed_on_1 = value
					if index == 2 :
						signed_count_1 = value	


				if signed_count_1 :
					signed_count = signed_count_1[0]["signed_count"]
				# March 01, 2023
				if is_valid_1 :
					is_valid  = is_valid_1[0]["is_valid"]
					signed_on = None
					if is_valid  != "Valid" :
						msg     = "Sorry !. " + str(delegate_no) + " is doesn't exists in badge count list"
						status  = 5
						data    = {"signed_count" : signed_count, "signed_on" : signed_on, "msg" : msg , "status" : status}
						json_data = json.dumps(data ,default=str)
						return json_data
				# end	

				if signed_on_1 :
					signed_on = signed_on_1[0]["signed_on"]
					if signed_on :
						status    = 3
						signed_on = datetime.strptime(signed_on, '%Y-%m-%d %H:%M:%S')
						signed_on = signed_on.strftime("%d-%m-%Y %H:%M:%S")
						msg       = "Already signed at " + signed_on
					else:
						status = 1
						msg    = "success"

				data = {"signed_count" : signed_count, "signed_on" : signed_on, "msg" : msg , "status" : status}
				json_data = json.dumps(data ,default=str)
				return json_data
			else :
				msg    = "Signed data does not exist"
				status = 4
				data   = {"signed_count" : signed_count, "signed_on" : "", "msg" : msg , "status" : status}
				json_data = json.dumps(data ,default=str)
				return json_data	
		else :
			data = {'signed_count' : 0 ,'signed_on' : "", 'msg' : 'Invalid API KEY', 'status' : 2}
			json_data = json.dumps(data ,default=str)
			return json_data	
	except Exception as e:
		data = {'signed_count' : 0,'signed_on' : "" , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str)
		return json_data

# ---------------

# 2023-02-26 sync all data with signed count
# http://127.0.0.1:5003/sync_toandroid_with_count?api_key=w347H52d96&conf_id=1&del_table_name=delegates_iages23&signup_for_alldays=0&signup_table=numerotech_primary_db_conf.signup_demo
@app.route('/sync_toandroid_with_count', methods = ["GET", "POST"])
def SyncToAndroidWithCount():
	json_data    = {}
	signed_count = 0
	msg          = ""
	now          = datetime.now()
	curr_dt      = now.strftime("%Y-%m-%d %H:%M:%S")
	curr_date    = now.strftime("%Y-%m-%d")
	key_order    = ["delegate_id","delegate_no","role","full_name","email","mobile","city","state","membership_no","mc_number","counter","batch","signed_by","comments","signed_on","updated_at","conf_id","reg_remarks"]
	try:
		APIKEY         = request.values.get("api_key") or None
		conf_id	       = request.values.get('conf_id') or None
		del_table_name = request.values.get('del_table_name') or None
		is_scanned_list= request.values.get('is_scanned_list') or 0
		date_1         = request.values.get('date_1') or curr_date # It means curr date
		# updated on March 07, 2023
		signup_for_alldays = request.values.get('signup_for_alldays') or 0
		signup_table       = request.values.get('signup_table') or None
		regdesk_pin = request.values.get('regdesk_pin') or None # March13 ,2023
		
		data = {"regdesk_pin" : regdesk_pin , "signup_table" : signup_table, "signup_for_alldays" : signup_for_alldays , "date_1" : date_1 , "is_scanned_list" : is_scanned_list , "del_table_name" :  del_table_name , "conf_id" : conf_id  }
		# return ( json.dumps(data, default = str ) ) # Just for testing
		if APIKEY  and  APIKEY == Custom.APIKEY :
			confData    = RegdeskModel().getConfDataForRegdesk(regdesk_pin)
			if confData : 
				conf_start_time = confData["conf_start_time"]
				conf_end_time   = confData["conf_end_time"]
				del_table_name  = confData["del_table_name"]
				conf_id         = confData["conf_id"]
				conf_key        = confData["conf_key"]
				signup_table    = confData["signup_table"] # March 07 2023
				# signup_for_alldays  = confData["signup_for_alldays"] # March 07 2023


				conf_start_time_str = conf_start_time.strftime("%Y-%m-%d %H:%M:%S")
				conf_end_time_str = conf_end_time.strftime("%Y-%m-%d %H:%M:%S")

				if conf_start_time < now < conf_end_time :
					# Added on Aug 02 2023
					# return str(is_scanned_list)
					if is_scanned_list   and  int(is_scanned_list)> 0 :
						# return (" scanned list block   -- " + str(signup_for_alldays) )
						delegate_data_and_count = RegdeskModel().syncAllDataScannedListOnly(conf_id,del_table_name,date_1,signup_for_alldays,signup_table)
					else :
						# return  "else block calling"
						delegate_data_and_count = RegdeskModel().syncAllDataWithSignedCountForAndroidSignup(conf_id,del_table_name,date_1,signup_for_alldays,signup_table)
					if delegate_data_and_count :
						for index,value in enumerate(delegate_data_and_count) :
							if index == 0 :
								delegate_data  = value

							if index == 1 :
								signed_count_1 = value	

						if signed_count_1 :
							signed_count = signed_count_1[0]["signed_count"]
							
						data = {"delegate_data" : delegate_data,"signed_count" : signed_count, "msg" : "success" , "status" : 1}

						result = defaultdict(list)
						for dic in data["delegate_data"]:
							ordered = OrderedDict((key, dic.get(key)) for key in key_order)
							result["delegate_data"].append(ordered)

						json_data = dumps(data ,default=str)
						return json_data
					else :
						msg    = "Signed data does not exist"
						status = 3
						data   = { "delegate_data" : "","signed_count" : signed_count,  "msg" : msg , "status" : status}
						
					# json_data = json.dumps(data ,default=str)
					json_data = jsonify(data)
					return json_data
				else :
					data = {'delegate_data' : '','signed_count' : 0 ,'msg' : 'Registration desk closed.', 'status' : 500}

				json_data = jsonify(data)
				return json_data						
			else :
				data = {'delegate_data' : '','signed_count' : 0 ,'msg' : 'Invalid PIN.', 'status' : 500}	

			json_data = jsonify(data)
			return json_data		

					
		else :
			data = {'delegate_data' : '','signed_count' : 0 ,'msg' : 'Invalid API KEY', 'status' : 2}
			json_data = json.dumps(data ,default=str)
			return json_data	
	except Exception as e:
		data = {'signed_count' : 0,'signed_count' : 0 , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str)
		return json_data

# @app.route('/sync_toandroid_with_count', methods = ["GET", "POST"])
# def SyncToAndroidWithCount():
# 	json_data    = {}
# 	signed_count = 0
# 	msg          = ""
# 	now          = datetime.now()
# 	curr_dt      = now.strftime("%Y-%m-%d %H:%M:%S")
# 	curr_date    = now.strftime("%Y-%m-%d")
# 	key_order    = ["delegate_id","delegate_no","role","full_name","email","mobile","city","state","membership_no","mc_number","counter","batch","signed_by","comments","signed_on","updated_at","conf_id"]
# 	try:
# 		APIKEY         = request.values.get("api_key") or None
# 		conf_id	       = request.values.get('conf_id') or None
# 		del_table_name = request.values.get('del_table_name') or None
# 		date_1         = request.values.get('date_1') or curr_date # It means curr date
# 		# updated on March 07, 2023
# 		signup_for_alldays = request.values.get('signup_for_alldays') or 0
# 		signup_table       = request.values.get('signup_table') or None
# 		if APIKEY  and  APIKEY == Custom.APIKEY :
# 			delegate_data_and_count = RegdeskModel().syncAllDataWithSignedCount(conf_id,del_table_name,date_1,signup_for_alldays,signup_table)
# 			if delegate_data_and_count :
# 				for index,value in enumerate(delegate_data_and_count) :
# 					if index == 0 :
# 						delegate_data  = value

# 					if index == 1 :
# 						signed_count_1 = value	

# 				if signed_count_1 :
# 					signed_count = signed_count_1[0]["signed_count"]
					
# 				data = {"delegate_data" : delegate_data,"signed_count" : signed_count, "msg" : "success" , "status" : 1}

# 				result = defaultdict(list)
# 				for dic in data["delegate_data"]:
# 					ordered = OrderedDict((key, dic.get(key)) for key in key_order)
# 					result["delegate_data"].append(ordered)

# 				json_data = dumps(data ,default=str)
# 				return json_data
# 			else :
# 				msg    = "Signed data does not exist"
# 				status = 3
# 				data   = { "delegate_data" : "","signed_count" : signed_count,  "msg" : msg , "status" : status}
				
# 			# json_data = json.dumps(data ,default=str)
# 			json_data = jsonify(data)
# 			return json_data	
# 		else :
# 			data = {'delegate_data' : '','signed_count' : 0 ,'msg' : 'Invalid API KEY', 'status' : 2}
# 			json_data = json.dumps(data ,default=str)
# 			return json_data	
# 	except Exception as e:
# 		data = {'signed_count' : 0,'signed_count' : 0 , 'msg' : str(e), 'status' : 401}
# 		json_data = json.dumps(data ,default=str)
# 		return json_data




# http://127.0.0.1:5001/get_singup_record?api_key=w347H52d96&del_table_name=delegates_selsi22&device_id=android123
@app.route('/get_singup_record', methods = ["GET", "POST"])
def GetSignupRecord():
	json_data    = {}
	delegate_nos = []
	try:
		APIKEY         = request.values.get("api_key") or None
		del_table_name = request.values.get('del_table_name') or None
		device_id      = request.values.get('device_id') or None		
		if APIKEY  and  APIKEY == Custom.APIKEY :
			delegate_nos = request.json
			if delegate_nos :
				delegate_no_str = str(delegate_nos)
				delegate_no_str = delegate_no_str.replace("[" , "").replace("]" , "")
			else : 
				delegate_no_str  = None	
				
			get_singed_data = RegdeskModel().getRegdeskSignedData(del_table_name,delegate_no_str,device_id)
			if get_singed_data :
				data = {'delegate_data' : get_singed_data , 'msg' : 'success' ,'status' : 1}
			else : 
				data = {'delegate_data' : [] , 'msg' : 'No signed records to update' ,'status' : 2}	
				
		else :
			data = {'delegate_data' : [] , 'msg' : 'Invalid API KEY', 'status' : 5}

		json_data = json.dumps(data,default =str)
		return json_data
	except Exception as e:
		data = {'delegate_data' : [] , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str)
		return json_data	


# -------- March 03 2023 -----------------------------------
# Generate date list for show in dropdown list in android app
#http://192.168.1.10:5003/get_datelist?api_key=w347H52d96&conf_id=8
@app.route('/get_datelist', methods = ["GET", "POST"])
def GetDateList():
	json_data = {}
	date_list = []
	try:
		APIKEY         = request.values.get("api_key") or None
		conf_id        = request.values.get('conf_id') or None		
		if APIKEY  and  APIKEY == Custom.APIKEY :
			conf_data = RegdeskModel().getConfDates(conf_id)
			if conf_data :
				start_date = conf_data["conf_start_time"]
				end_date   = conf_data["conf_end_time"]
				curr_date  = start_date
				delta = end_date - start_date   # returns timedelta

				x = 2
				for i in range(delta.days + 1):
					x   = x+1
					day = start_date + timedelta(days=i)
					day_str = day.strftime("%d-%m-%Y")
					date_list.append(day_str)

				date_list.insert(0, "All Day")	
				
					
				data = {'date_list' : date_list , 'msg' : 'success' ,'status' : 1}
			else : 
				data = {'date_list' : [] , 'msg' : 'No dates' ,'status' : 2}	
				
		else :
			data = {'date_list' : [] , 'msg' : 'Invalid API KEY', 'status' : 5}

		json_data = json.dumps(data,default =str)
		return json_data
	except Exception as e:
		data = {'date_list' : [] , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str)
		return json_data	

# http://192.168.1.10:5003/get_report?api_key=w347H52d96&conf_id=8&del_table_name=delegates_demo&date_1=2023-03-02
# @app.route('/get_report', methods = ["GET", "POST"])
# def GetReport():
# 	json_data = {}
# 	delegate_data = []
# 	signed_count  = 0 
# 	try:
# 		APIKEY         = request.values.get("api_key") or None
# 		conf_id        = request.values.get('conf_id') or None		
# 		del_table_name = request.values.get('del_table_name') or None
# 		date_1		   = request.values.get('date_1') or None
		

# 		if APIKEY  and  APIKEY == Custom.APIKEY :
# 			delegate_data = RegdeskModel().delegateDatByDatewise(conf_id,del_table_name,date_1)
# 			if delegate_data :
# 				signed_count = len(delegate_data)
# 				data = {'delegate_data' : delegate_data,'signed_count' :signed_count , 'msg' : 'success' ,'status' : 1}
# 			else : 
# 				data = {'delegate_data' : [],'signed_count' :signed_count , 'msg' : 'No dates' ,'status' : 2}	
				
# 		else :
# 			data = {'delegate_data' : [],'signed_count' :signed_count , 'msg' : 'Invalid API KEY', 'status' : 5}

# 		json_data = json.dumps(data,default =str)
# 		return json_data
# 	except Exception as e:
# 		data = {'delegate_data' : [],'signed_count' :signed_count , 'msg' : str(e), 'status' : 401}
# 		json_data = json.dumps(data ,default=str)
# 		return json_data


# March 08, 2023 Get overall count with role wise
# http://127.0.0.1:5003/get_overall_count?api_key=w347H52d96&conf_id=8&del_table_name=delegates_demo&signup_for_alldays=0&signup_table=numerotech_primary_db_conf.signup_demo
@app.route('/get_overall_count', methods = ["GET", "POST"])
def GetOverallCount():
	json_data = {}
	delegate_data = []
	signed_count  = 0 
	oveall_signed_count = 0
	date_wise_count = None
	now           = datetime.now()
	curr_dt       = now.strftime("%Y-%m-%d %H:%M:%S")
	curr_date     = now.strftime("%Y-%m-%d")

	try:
		APIKEY         = request.values.get("api_key") or None
		conf_id        = request.values.get('conf_id') or None		
		del_table_name = request.values.get('del_table_name') or None
		date_1		       = request.values.get('date_1') or None
		signup_for_alldays = request.values.get('signup_for_alldays') or 0
		signup_table       = request.values.get('signup_table') or None
		

		if APIKEY  and  APIKEY == Custom.APIKEY :
			# CALL usp_android_get_overall_signed_count(8,'delegates_demo',null,1,'numerotech_primary_db_conf.signup_demo');
			delegate_data = RegdeskModel().getOverAllcountRolewise(conf_id,del_table_name,date_1,signup_for_alldays,signup_table)
			if delegate_data :
				for index ,value in enumerate(delegate_data) : 
					if index == 0 :
						delegate_data = value
					if index == 1 :
						sign_count_result = value
					if index == 2 :
						date_wise_count = value	

					
				if sign_count_result :
					signed_count = 	sign_count_result[0]["oveall_signed_count"]
							

				data = {'delegate_data' : delegate_data,'signed_count' :signed_count ,'date_wise_count' : date_wise_count, 'msg' : 'success' ,'status' : 1}
			else : 
				data = {'delegate_data' : [],'signed_count' :signed_count,'date_wise_count' : date_wise_count , 'msg' : 'No dates' ,'status' : 2}	
				
		else :
			data = {'delegate_data' : [],'signed_count' :signed_count,'date_wise_count' : date_wise_count , 'msg' : 'Invalid API KEY', 'status' : 5}

		json_data = json.dumps(data,default =str)
		return json_data
	except Exception as e:
		data = {'delegate_data' : [],'signed_count' :signed_count,'date_wise_count' : date_wise_count , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str)
		return json_data		


@app.route('/confapp_signin', methods = ["GET", "POST"])
def ConfAppSingin():
	json_data     = []
	confData      = []
	users = []
	email         = request.values.get('email') or None		
	password      = request.values.get('password') or None
	try:
		if email and password :
			users = RegdeskModel().GetUserForConfAppLogin(email,password)
			if users :
				# data_for_update= {""}
				data = {"users" : users , "msg" : "success" , "status" : 1 }
			else :
				data = {"users" : users , "msg" : "Invalid email or password" , "status" : 2 }

			json_data = json.dumps(data,default= str)
			return json_data	

		else : 
			data = {"users" : users , "msg" : "Email and password cannot be blank" , "status" : 3 }  
			json_data = json.dumps(data,default= str)
			return json_data
	except Exception as e:
		data = {"users" : users , "msg" : str(e) , "status" : 401 }  
		json_data = json.dumps(data,default= str)
		return json_data


# @app.route('/delegate_auto_present_generate', methods = ["GET", "POST"])
# def DelegateAutoPresentGenerate():
# 	generate_present = RegdeskModel().generateDelegatePresent()
# 	return "success"

@app.route('/random_password', methods = ["GET", "POST"])
def RandomPassword():
	length = 20
	characters = string.ascii_letters + string.digits + string.punctuation
	# Use random.sample() to generate a list of unique characters
	password_characters = random.sample(characters, length)
	# Convert the list to a string and return it
	password = "".join(password_characters)
	return password
	

@app.route("/get_my_ip", methods=["GET"])
def get_my_ip():
	user_agent = request.headers.get('X-Forwarded-For', request.remote_addr)
	# user_agent = UserAgent(request.headers.get('User-Agent'))
	print("Remote address-------")
	print(user_agent)
	return user_agent
	os_name = user_agent.platform
	browser_name = user_agent.browser
	return jsonify({'ip_address': request.remote_addr, 'os_name':os_name,'browser_name' : browser_name}) 
	
@app.route("/system_log", methods=["GET"])
def SystemLog():
	now           = datetime.now()
	curr_dt       = now.strftime("%Y-%m-%d %H:%M:%S")
	try:
		# system_data   = request.headers.get("user-agent")
		# ip_add        = request.headers.get('X-Forwarded-For', request.remote_addr)
		system_data   = request.values.get("system_data") or ""
		ip_add        = request.values.get("ip_add") or ""
		society_id    = request.values.get("society_id") or 0
		conf_id       = request.values.get("conf_id") or 0
		email         = request.values.get("email") or ""
		app_type      = request.values.get("app_type") or ""
		app_url       = request.values.get("app_url") or ""
		
		#data = {"society_id" : society_id,"conf_id":conf_id, "system_data" : system_data, "ip_add" : ip_add, "app_type" : app_type,"app_url" : app_url ,"created_at" : curr_dt }
		insert_stmt = "INSERT INTO user_device (society_id,conf_id,email,system_data,ip_add,app_type,app_url,created_at)values("+str(society_id)+", "+str(conf_id)+", '"+email+"','"+system_data+"', '"+ip_add+"', '"+app_type+"','"+app_url+"', '"+curr_dt+"' ) ;"
		save_data = RegdeskModel().insertUserDevice(insert_stmt)
		if "success" in save_data :
			data = {"msg" : "success" ,"status" : 1}
		else :
			data = {"msg" : save_data ,"status" : 2}
			
		json_data = json.dumps(data,default = str)
		return json_data
	except Exception as e:
		data = {"msg" : str(e) ,"status" : 401}
		json_data = json.dumps(data,default = str)
		return json_data

@app.route("/call_log", methods=["GET"])
def CallLog():
	system_data   = request.headers.get("user-agent")
	ip_add        = request.headers.get('X-Forwarded-For', request.remote_addr)
	route_name = request.path
	route_name = route_name[1:]
	base_url    = request.host_url
	if "https" in base_url:
		pass
	else:
		base_url = base_url.replace("http","https")	
		
	app_url = base_url+route_name
	society_id    = 17
	conf_id       = 18
	email         =  "abc@yahoo.com"
	params        = "system_log?society_id="+str(society_id)+"&conf_id="+str(conf_id)+"&email="+email+"&app_type=DELEGAET&app_url="+app_url+"&ip_add="+ip_add+"&system_data="+system_data
	base_url      = request.host_url +params
	result = requests.get(base_url)
	res = result.text
	res = json.loads(res)
	return str(res)
	

	# Unsginup option from mobile app
# https://conference.numerotech.com/unsignup_from_mobilapp_1
# {"conf_id" : 8 , "delegate_no" : 10000 ,"del_table_name" : "numerotech_foodkit.delegates_demo" , "reason" : "testing by ganesan"  , "device_type" : "IOS"}
# @app.route('/unsignup_from_mobilapp_1', methods = ["POST"])
# def UnsignupFromMobileapp1():
# 	json_data    = {}
# 	data = []
# 	signed_count=0
# 	try:
# 		aa = request.json
# 		del_table_name = aa['del_table_name'] or None
# 		conf_id        = aa['conf_id'] or None
# 		delegate_no    = aa["delegate_no"] or None
# 		reason         = aa['reason'] or None
# 		device_type    = aa['device_type'] or  'IOS'
# 		if delegate_no  and  int(delegate_no)  > 0 :
# 			unsignup  = RegdeskModel().unsignupFromMobileApp(conf_id,delegate_no,del_table_name,reason,device_type)
# 			for index,value in enumerate(unsignup) :
# 				signed_count = value["signed_count"]
# 				status       = value["status_1"]
# 				msg          = value["msg"]

# 			data = {"signed_count" : signed_count , "msg" : msg , "status" : status}
# 		else :
# 			data = {'signed_count' : 0 , 'msg' : 'Invalid Delegate Number', 'status' : 3}

# 		json_data = json.dumps(data,default =str)
# 		return json_data
# 	except Exception as e:
# 		signed_count_1 = RegdeskModel().getSignedCount(conf_id,del_table_name)
# 		if signed_count_1 :
# 			signed_count = signed_count_1["signed_count"]

# 		data = {'signed_count' : signed_count , 'msg' : str(e), 'status' : 401}
# 		json_data = json.dumps(data ,default=str)
# 		return json_data


# https://conference.numerotech.com/unsignup_from_mobilapp_1
# {"conf_id" : 8 , "delegate_no" : 10000 ,"del_table_name" : "numerotech_foodkit.delegates_demo" , "reason" : "testing by ganesan"  , "device_type" : "IOS"}
@app.route('/unsignup_from_mobilapp_1', methods = ["POST"])
def UnsignupFromMobileapp1():
	json_data          = {}
	data               = []
	signed_count       = 0
	signup_for_alldays = 0
	signup_table       = None
	date_1             = None
	delegate_data      = None
	del_table_name     = None
	key_order          = ["delegate_id","delegate_no","role","full_name","email","mobile","city","state","membership_no","mc_number","counter","batch","signed_by","comments","signed_on","updated_at","conf_id","reg_remarks"]
	req_dict   = {}
	conf_id    = 0
	try:
		aa = request.json
		for index,value in enumerate(aa) :
			if index == 0 :
				del_table_name = value["del_table_name"]
				conf_id        = value["conf_id"]
				delegate_no    = value["delegate_no"]

				reason         = value["reason"]
				device_type    = value["device_type"] or 'Android'
		
		
		if delegate_no  and  int(delegate_no)  > 0 :
			unsignup  = RegdeskModel().unsignupFromMobileApp(conf_id,delegate_no,del_table_name,reason,device_type)
			if unsignup :
				for index,value in enumerate(unsignup) :
					signed_count = value["signed_count"]
					status       = value["status_1"]
					msg          = value["msg"]

			# Scanne count
			delegate_data = RegdeskModel().syncAllDataScannedListOnly(conf_id,del_table_name,date_1,signup_for_alldays,signup_table)
			if delegate_data :
				for index,value in enumerate(delegate_data) :
					if index == 0 :
						delegate_data  = value

				result = defaultdict(list)
				for dic in delegate_data:
					ordered = OrderedDict((key, dic.get(key)) for key in key_order)
					result["delegate_data"].append(ordered)	

			data = {"delegate_data" : delegate_data, "signed_count" : signed_count , "msg" : msg , "status" : status}
			
		else :
			data = {"delegate_data" : delegate_data,'signed_count' : 0 , 'msg' : 'Invalid Delegate Number', 'status' : 3}

		json_data = json.dumps(data,default =str ,sort_keys=False)
		return json_data
	except Exception as e:
		signed_count_1 = RegdeskModel().getSignedCount(conf_id,del_table_name)
		if signed_count_1 :
			signed_count = signed_count_1["signed_count"]

		data = {"delegate_data" : delegate_data,'signed_count' : signed_count , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str,sort_keys=False)
		return json_data
	
	
# Remove CME Scan record from mobile app
@app.route('/remove_cmescan_from_mobilapp_1', methods = ["POST"])
def RemoveCMESCanFromMobileapp1():
	json_data          = {}
	data               = []
	signed_count       = 0
	signup_for_alldays = 1
	signup_table       = None
	date_1             = None
	delegate_data      = None
	del_table_name     = None
	key_order          = ["delegate_id","delegate_no","role","full_name","email","mobile","city","state","membership_no","mc_number","counter","batch","signed_by","comments","signed_on","updated_at","conf_id","reg_remarks"]
	req_dict   = {}
	conf_id    = 0
	
	now           = datetime.now()
	curr_dt       = now.strftime("%Y-%m-%d %H:%M:%S")
	curr_date     = now.strftime("%Y-%m-%d")
	try:
		aa = request.json
		
		for index,value in enumerate(aa) :
			if index == 0 :
				del_table_name = value["del_table_name"]
				conf_id        = value["conf_id"]
				delegate_no    = value["delegate_no"]

				reason         = value["reason"]
				device_type    = value["device_type"] or 'Android'
				signup_table   = value["signup_table"]
		
		
		if delegate_no  and  int(delegate_no)  > 0 :
			ret_data = {}
			unsignup  = RegdeskModel().removeCMEScanRecordFromMobileApp(conf_id,delegate_no,del_table_name,reason,device_type,signup_table)
			ret_data = {"conf_id" : conf_id  , "delegate_no" : delegate_no , "del_table_name" : del_table_name  ,"reason" : reason , "device_type" : device_type  , "signup_table" : signup_table }
			# return (json.dumps(ret_data , default = str) )
			if unsignup :
				for index,value in enumerate(unsignup) :
					signed_count = value["signed_count"]
					status       = value["status_1"]
					msg          = value["msg"]

			# Scanne count
			date_1 = date_1 if date_1 else curr_date
			delegate_data = RegdeskModel().syncAllDataScannedListOnly(conf_id,del_table_name,date_1,signup_for_alldays,signup_table)
			if delegate_data :
				for index,value in enumerate(delegate_data) :
					if index == 0 :
						delegate_data  = value

				result = defaultdict(list)
				for dic in delegate_data:
					ordered = OrderedDict((key, dic.get(key)) for key in key_order)
					result["delegate_data"].append(ordered)	

			data = {"delegate_data" : delegate_data, "signed_count" : signed_count , "msg" : msg , "status" : status}
			
		else :
			data = {"delegate_data" : delegate_data,'signed_count' : 0 , 'msg' : 'Invalid Delegate Number', 'status' : 3}

		json_data = json.dumps(data,default =str ,sort_keys=False)
		return json_data
	except Exception as e:
		signed_count = 0
		signed_count_1 = RegdeskModel().getCEMSignedCount(conf_id,signup_table,curr_date)
		if signed_count_1 :
			signed_count = signed_count_1["signed_count"]
		

		data = {"delegate_data" : delegate_data,'signed_count' : signed_count , 'msg' : str(e), 'status' : 401}
		json_data = json.dumps(data ,default=str,sort_keys=False)
		return json_data
	
	
	
	

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists