Sindbad~EG File Manager

Current Path : /home/numerotech/conf-kcscan.numerotech.com/conference_kc_scan/core/controller/
Upload File :
Current File : //home/numerotech/conf-kcscan.numerotech.com/conference_kc_scan/core/controller/KitController.py

from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
from core.model.KitModel import KitModel
from core.model.KitSessionModel import KitSessionModel
from random import randint
import datetime,time
from datetime import timedelta,date,datetime
from .. import Auth,RouteGroup
from core.library.email import EMAIL
from flask import session, app

from os.path import join
import re
import os
from os import path
import flask
import webbrowser
import csv
from io import StringIO
import io
from flask import Response


app = Blueprint('kit', __name__)

@app.route('/<int:conf_id>/<conf_key>/kit_login',methods = ["GET", "POST"])
def KitLogin(conf_id,conf_key):
	getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
	if getKcConfData :
		conf_name = getKcConfData["conf_name"]
		conf_schema = getKcConfData["conf_name"]
		if session.get("kcsession") :
			return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))
		else :
			return render_template('kitcounter/kit_login.html' , conf_id = conf_id ,conf_key =conf_key ,conf_name =conf_name)
	else :
		return "<h4 style= 'color:red' ; > Invalid URL </h4>"

@app.route('/post_kit_login', methods = ["POST"])
def PostKitLogin():
	now = datetime.now()
	current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
	if request.method == "POST":
		conf_id  = request.values.get('conf_id')
		conf_key = request.values.get('conf_key')
		getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
		if getKcConfData :
			conf_schema = getKcConfData["conf_schema"]

		session_key   = request.form['session_key']
		conf_id       = request.form['conf_id']
		conf_key      = request.form['conf_key']
		if  not session_key:
			flash('Please enter session_key',"errorMsg")
			return redirect (url_for('kit.KitLogin'))
		else :
			us = KitModel()
			user_output = us.getDataBySessionKeyFrontEnd(session_key,current_dt,conf_id,conf_key,conf_schema)
			if user_output:
				db_session_key = user_output['session_key']
				if session_key == db_session_key:
					session_id = user_output['session_id']
					session["kcsession"] = user_output
					flash('Login sucessfully.',"successMsg" )
					return redirect (url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))
				else :
					flash("Ivalid session key" ,"errorMsg")
					return redirect (url_for('kit.KitLogin',conf_id =conf_id ,conf_key = conf_key))

			else:
				flash('Invalid Session Key.',"errorMsg" )
				return redirect (url_for('kit.KitLogin',conf_id =conf_id ,conf_key = conf_key))

@app.route('/<int:conf_id>/<conf_key>/kc_dashboard',methods = ["GET", "POST"])
def KcDashBoard(conf_id,conf_key):
	total_count  = 0
	start_time   = ""
	end_time     = ""
	session_name = ""
	now = datetime.now()
	current_dt   = now.strftime("%d-%m-%Y %H:%M:%S")
	current_dt_1    = now.strftime("%Y-%m-%d %H:%M:%S")
	session_id      = None

	getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
	if getKcConfData :
		conf_schema              = getKcConfData['conf_schema']
		conf_name                  = getKcConfData["conf_name"]
		# del_table_name           = getKcConfData["del_table_name"]
		# kc_del_session_table_name   = getKcConfData["kc_del_session_table_name"]
		# kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]
		if session.get("kcsession") :
# 			return jsonify(session.get("kcsession"))
			session_data = session.get("kcsession")
			session_id   = session_data["session_id"]
			# check session is end or not 
			is_session_open = KitModel().checkSessionIsOpen(session_id,current_dt_1,conf_schema)
			
			if is_session_open :
				session_name = is_session_open["session_name"]
				start_time   = is_session_open["start_time"]
				end_time     = is_session_open["end_time"]

				if start_time :
					start_time = start_time.strftime("%d-%m-%Y %H:%M:%S")
				if end_time :
					end_time   = end_time.strftime("%d-%m-%Y %H:%M:%S")
				scanned_data = KitModel().getKITReport(session_id, conf_id, conf_key,conf_schema)

				if scanned_data :
					for index,value in enumerate(scanned_data) :
						scan_count   = value["scanned_count"]
						total_count  = total_count + scan_count 
									
				html_data = render_template('kitcounter/report_table.html' , scanned_data = scanned_data,total_count=total_count)
				role_data = render_template('kitcounter/kc_download_report_dropdown.html' , scanned_data = scanned_data)
				return render_template('kitcounter/kc_dashboard.html' ,session_id=session_id,html_data =html_data,scanned_data = scanned_data,total_count = total_count ,current_dt=current_dt ,start_time=start_time, end_time=end_time, session_name=session_name ,conf_id= conf_id,conf_key=conf_key, conf_name=conf_name,role_data=role_data)
			else : 
				if session.get("kcsession") :
					session.pop('kcsession', None)
				else :
					pass
				flash("Invalid session" ,"errorMsg")	
				return redirect(url_for('kit.KitLogin' ,conf_id =conf_id ,conf_key = conf_key))
		else :
			flash("Invalid session key" ,"errorMsg")
			return redirect(url_for('kit.KitLogin',conf_id =conf_id ,conf_key = conf_key))
	else : 
		return "<h4 style= 'color:red' ; > Invalid URL </h4>"		
	# end		

@app.route('/post_kscan_data', methods = ["POST", "GET"])
def PostKScanData():
	try:
		# time.sleep(1)
		conf_id  = request.values.get('conf_id')
		conf_key = request.values.get('conf_key')
		getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
		if getKcConfData :
			conf_schema              = getKcConfData['conf_schema']

		if session.get("kcsession") :
			session_data = session.get("kcsession")
			session_id   = session_data["session_id"]
			now          = datetime.now()
			current_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
			# delegate_no = request.form['delegate_no']
			delegate_no  = request.values.get("delegate_no")  or None # Added on step 11,2023
			session_id   = request.values.get("session_id")  or None  # Added on step 11,2023
			if delegate_no :
				delegate_no = delegate_no.lstrip('0')

			# del_table_name              = request.form['del_table_name']
			# kc_del_session_table_name   = request.form['kc_del_session_table_name']
			# kc_session_entry_table_name = request.form['kc_session_entry_table_name']
			# fetching data from form..
			data = {
				'delegate_no' : delegate_no,
				'created_at' :current_dt,
				'session_id'  : session_id
			}
			insert_data = None
			if int(session_id or 0) == 3:
			    insert_data = KitModel().insertkcScannedDataCustom(conf_id,session_id,delegate_no,conf_schema)
			else:    
			    insert_data = KitModel().insertkcScannedData1(conf_id,session_id,delegate_no,conf_schema)
			data = insert_data
			json_data = jsonify(data)
			return json_data
		else :
			data = {"delegate_no" : delegate_no, "full_name" : "" ,"role" : " ","scan_at" : "" ,"msg" : "Invalid login" ,"status" : 4}
			
			json_data = json.dumps(data,default=str)
			return json_data	
	except Exception as e:
		data = {"delegate_no" : "", "full_name" : "" ,"role" : " ","scan_at" : "" ,"msg" : str(e) ,"status" : 401}
		json_data = json.dumps(data,default=str)
		return json_data
	

@app.route('/kit_reports', methods = ["POST"])
def KITReports():
	now = datetime.now()
	current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
	total_count = 0
	try:
		total_count = 0
		
		if session.get("kcsession") :
			session_data  = session.get("kcsession")
			session_id    = session_data["session_id"]
			conf_id       = request.form['conf_id']
			conf_key      = request.form['conf_key']

			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			conf_name     = getKcConfData["conf_name"]
			conf_schema     = getKcConfData["conf_schema"]
			# del_table_name           = getKcConfData["del_table_name"]
			# kc_del_session_table_name   = getKcConfData["kc_del_session_table_name"]
			# kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]

			scanned_data = KitModel().getKITReport(session_id,conf_id,conf_key,conf_schema)
			if scanned_data : 
				for index,value in enumerate(scanned_data) :
					scan_count = value["scanned_count"]
					total_count = total_count + scan_count

					
			html_data = render_template('kitcounter/report_table.html' , scanned_data = scanned_data,total_count=total_count)
			role_data = render_template('kitcounter/kc_download_report_dropdown.html' , scanned_data = scanned_data)

			data = { 'html_data' : html_data ,'scanned_data' : scanned_data,'role_data' : role_data ,'msg' :'success'  ,'current_dt' : current_dt,'total_count': total_count ,'status' : 1 }
			json_data = json.dumps(data ,default =str)
			return json_data
		else :
			data = {'html_data' : "" , "scanned_data" : "" , 'role_data' : "", "msg" :"Invalid login",'current_dt' : current_dt,'total_count': total_count  ,"status" : 2}
			json_data = json.loads(data)
			return json_data

	except Exception as e:
		data = { 'html_data' : "" ,"scanned_data" : "" ,'role_data' : "" ,"msg" : str(e)  ,'current_dt' : current_dt,'total_count': total_count,"status" : 401}
		json_data = json.loads(data)
		return json_data

@app.route('/send_kc_report_mail',methods = ["POST"])
def SendKcReportMail():
	total_count = 0
	scan_count  = 0
	now = datetime.now()
	current_dt   = now.strftime("%d-%m-%Y %H:%M:%S")
	current_date = now.strftime("%d-%m-%Y")

	mail_ids     = request.form['mail_id']
	conf_id      = request.form['conf_id']
	conf_key     = request.form['conf_key']

	if mail_ids:
		last_char = mail_ids[-1:]
		# check last character is commma 
		if "," ==  last_char :
			mail_ids = re.sub(r".$", "", mail_ids)
		# check white spance in given inputs ,if exist then replace as empty
		if " " in mail_ids :
			mail_ids = mail_ids.replace(" " ,"")
		# set list from a string using comma character	
		mail_list = list(mail_ids.split(","))

		if session.get("kcsession") :
			session_data = session.get("kcsession")
			session_id   = session_data["session_id"]
			session_name = session_data['session_name']
			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			conf_name     = getKcConfData["conf_name"]
			conf_schema   = getKcConfData["conf_schema"]
			scanned_data = KitModel().getKITReport(session_id,conf_id,conf_key,conf_schema)

			if scanned_data : 
				for index,value in enumerate(scanned_data) :
					scan_count  = value["scanned_count"]
					total_count = total_count + scan_count 
							
			mail_template = render_template('kitcounter/kit_email/kit_report_email.html' , scanned_data = scanned_data,total_count=total_count,conf_id=conf_id)
# 			subject       = " "+ conf_name+"- kit counter Report on " + current_date
			subject       = " "+ conf_name+"- " + session_name.upper()  + " DISBURSAL REPORT" 


			for email in mail_list:
				# parsing the element from a list using for loop
				# send mail here
				EMAIL.KcReportMail(subject,mail_template,email,session_name)

			flash("Report mail has been sent. ","successMsg")	
			return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))
		else :
			flash("Invalid  session" , "errorMsg")
			return redirect(url_for('kit.KcDashBoard' ,conf_id =conf_id ,conf_key = conf_key))
	else :
		flash("Please enter atleast one mail-id ." ,"errorMsg")
		return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))


@app.route('/send_kc_report_whatsapp',methods = ["POST"])
def SendKcReportWhatsapp():
	total_count = 0
	scan_count  = 0
	msg_content = ""
	mobile_no   = request.form['mobile_no']

	conf_id     = request.form['conf_id']
	conf_key    = request.form['conf_key']
	if mobile_no:
		last_char = mobile_no[-1:]
		# check last character is commma 
		if "," ==  last_char :
			mobile_no = re.sub(r".$", "", mobile_no)
		# check white spance in given inputs ,if exist then replace as empty
		if " " in mobile_no :
			mobile_no = mobile_no.replace(" " ,"")

		if session.get("kcsession") :
			session_data = session.get("kcsession")
			session_id   = session_data["session_id"]

			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			conf_name     = getKcConfData["conf_name"]
			del_table_name           = getKcConfData["del_table_name"]
			kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]

			scanned_data = KitModel().getKITReport(session_id,conf_id,conf_key,del_table_name,kc_session_entry_table_name)
			if scanned_data : 
				# msg_content = "KIT Counter Report - SESLI22%0a%0a"+session_name+"%0a%0a"
				msg_content = "*KIT Counter Report - "+conf_name+"* %0a%0a" 
				for index,value in enumerate(scanned_data) :
					if index == 0 :
						session_name = value["session_name"]
						session_date = value["start_time"]
						if session_date :
							session_date=session_date.strftime("%d-%m-%Y")
						else:
							session_date=""
						msg_content = "*KIT Counter Report - SESLI22* %0a" +"*" +session_date+" - "+session_name+"*"+"%0a%0a"

					scan_count  = value["scanned_count"]
					role        = value["role"]
					total_count = total_count + scan_count 
					msg_content = msg_content + "*"+role+"*" +" : " + str(scan_count) +"%0a"

				
				msg_content = msg_content +"%0a*Total Scanned Count : "+ str(total_count)+"*"
				msg_content = "https://wa.me/91"+str(mobile_no)+"?text="+msg_content	
				webbrowser.open(msg_content) # to send whatsapp via new tab

				flash("Kit counter report has been sent sucessfully to " + mobile_no ,"successMsg")
				return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))	 # comment after testing
				# return  flask.redirect(msg_content)		

				# return redirect(url_for('kit.KcDashBoard'))
		else :
			flash("Invalid  session" , "errorMsg")
			return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))	
	else:	
		flash("Please enter the whatsapp number to sent the kit counter report.")		
		return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))	

	return redirect(url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))

@app.route('/<int:conf_id>/<conf_key>/kit_logout',methods = ["GET", "POST"])
def KitLogout(conf_id,conf_key):
	if session.get("kcsession") :
		session.pop('kcsession', None)
	else :
		pass
	return redirect(url_for('kit.KitLogin' ,conf_id = conf_id,conf_key= conf_key))	

@app.route('/<int:conf_id>/<conf_key>/download_kc_report',methods = ["GET","POST"])
def DowloadKcReport(conf_id,conf_key):
	try:
		now = datetime.now()
		current_dt = now.strftime("%d-%m-%Y %H:%M:%S")
		if session.get("kcsession") :
			session_data  = session.get("kcsession")
			session_id    = session_data["session_id"]
			# session_id    = 1
			# conf_id       = 3
			role          = request.values.get('role')

			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			conf_name     = getKcConfData["conf_name"]
			del_table_name           = getKcConfData["del_table_name"]
			# kc_del_session_table_name   = getKcConfData["kc_del_session_table_name"]
			kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]
			scanned_data = KitModel().getKITReportDownload(session_id,conf_id,kc_session_entry_table_name,role)
			if scanned_data :
				output = io.StringIO()
				writer = csv.writer(output)
				line = ['Prefix', 'Name','Email', 'Mobile', 'Membership Number' , 'City' ,'Role']
				writer.writerow(line)
				for row in scanned_data:
					line = [row['prefix'] , row['full_name'],row['email'] or  '' , row['mobile'] or  '', row['membership_no'] or  '' , row['city'] or  '',row['role'] or  '' ]
					writer.writerow(line)

				output.seek(0)
				return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename=data_report.csv"})
			
			else :
				return "Record not exist"		
	except Exception as e:
		data = { 'html_data' : "" ,"scanned_data" : "" , "msg" : str(e)  ,'current_dt' : current_dt,'total_count': total_count,"status" : 401}
		json_data = json.loads(data)
		return json_data

@app.route('/<int:conf_id>/<conf_key>/download_kc_report_1',methods = ["GET","POST"])
def DownloadKCReport1(conf_id,conf_key):
	try:
		if session.get("kcsession") :
			session_data  = session.get("kcsession")
			session_id    = session_data["session_id"]
			role          = request.values.get('role') #query string
			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			conf_name     = getKcConfData["conf_name"]
			del_table_name           = getKcConfData["del_table_name"]
			# kc_del_session_table_name   = getKcConfData["kc_del_session_table_name"]
			kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]
			# role = None
			scanned_data = KitModel().getKITReportDownload(session_id,conf_id,kc_session_entry_table_name,role)
			if scanned_data :
				webbrowser.open("http://127.0.0.1:5001/3/selsi22/download_kc_report?role="+role) # to send whatsapp via new tab
				data = {"msg" :"success" ,"status" : 1}
			else :
				data  = {"msg" :"Record not exists." ,"status" : 2}

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

		else :
			data  = {"msg" :"Invalid login." ,"status" : 3}

		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('/save_kc_token',methods = ["GET","POST"])
def SavekCToken():
	now = datetime.now()
	current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
	if session.get("kcsession") :
		session_data = session.get("kcsession")
		session_id   = session_data["session_id"]
		ref_delegate_no =  request.form['ref_delegate_no'] or 0
		ref_name        = request.form['ref_name'] or ''
		ref_mobile      = request.form['ref_mobile'] or ''
		conf_id         = request.form['conf_id'] or 0
		conf_key        = request.form['conf_key'] or ''
		getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
		kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]

		if not ref_delegate_no and not ref_name and not ref_mobile  :
			flash('Please enter Ref Delegate Number or Name or mobile .','errorMsg')
			return redirect(url_for('kit.KcDashBoard' ,conf_id = conf_id , conf_key=conf_key))
		else:
			data = {
				'ref_delegate_no' : ref_delegate_no,
				'ref_name'        : ref_name,
				'ref_mobile'      : ref_mobile,
				'conf_id'         : conf_id,
				'session_id'      : session_id,
				'created_at'      : current_dt,
				'is_token'        : 1
			}
			# insert_stmt = insert into kc_sessinons_entry_selsi22 ()
			insert_stmt= "insert into "+kc_session_entry_table_name+"(ref_delegate_no,ref_name,ref_mobile,session_id,created_at,is_token) values("+str(ref_delegate_no)+",'"+str(ref_name)+"','"+str(ref_mobile)+"',"+str(session_id)+",'"+current_dt+"','1');"	
			insert_users = KitModel().insert_kc_token_data(insert_stmt)
			if insert_users == "success":
				flash('Counpon count updated .','successMsg')
				return redirect(url_for('kit.KcDashBoard' ,conf_id = conf_id , conf_key=conf_key))	
			else :
				flash("Error .try again" , "errorMsg")  
				return redirect(url_for('kit.KcDashBoard' ,conf_id = conf_id , conf_key=conf_key))
	else :
		flash("Invalid login " , "errorMsg")
		return redirect (url_for('kit.KitLogin' ,conf_id = conf_id , conf_key=conf_key))

@app.route('/save_kc_token_ajax',methods = ["GET","POST"])
def SavekCTokenAjax():
	now = datetime.now()
	current_dt = now.strftime("%Y-%m-%d %H:%M:%S")

	try:
		if session.get("kcsession") :
			session_data = session.get("kcsession")
			session_id   = session_data["session_id"]
			ref_delegate_no = request.values.get("ref_delegate_no") or 0
			ref_name        = request.values.get("ref_name") or ""
			ref_mobile      = request.values.get("ref_mobile") or ""
			conf_id         = request.values.get("conf_id") or 0
			conf_key        = request.values.get("conf_key") or ""

			conf_id         = int(conf_id) if conf_id else conf_id

			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			
			kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]

			if not ref_delegate_no and not ref_name and not ref_mobile  :
				return_data = {"msg" : "Please enter Ref Delegate Number or Name or mobile ." , "status" : 2}
				json_data   = json.dumps(return_data ,default = str)
				return json_data
			else:
				insert_stmt  = "insert into "+kc_session_entry_table_name+"(ref_delegate_no,ref_name,ref_mobile,session_id,created_at,is_token) values("+str(ref_delegate_no)+",'"+str(ref_name)+"','"+str(ref_mobile)+"',"+str(session_id)+",'"+current_dt+"','1');"	
				insert_users = KitModel().insert_kc_token_data(insert_stmt)
				if insert_users == "success":
					return_data  = {"msg" : "Counpon count updated." , "status" : 1}
				else :
					return_data  = {"msg" : str(insert_users) , "status" : 3}
				
				json_data = json.dumps(return_data ,default = str)
				return json_data	
		else :
			flash("Invalid login " , "errorMsg")
			return_data  = {"msg" : "Invalid login" , "status" : 4}
			json_data    = json.dumps(return_data ,default = str)
			return json_data
	except Exception as e:
		return_data  = {"msg" : str(e) , "status" : 401}
		json_data    = json.dumps(return_data ,default = str)
		return json_data 
			


# KIT COUNTER AUTO LOGIN
@app.route('/<int:conf_id>/<conf_key>/kit_auto_login/<session_key>', methods = ["GET","POST"])
def KITAutoLogin(conf_id,conf_key,session_key):
	try:
		now = datetime.now()
		current_dt  = now.strftime("%Y-%m-%d %H:%M:%S")
		user_output = KitModel().getDataBySessionKey(session_key,current_dt,conf_id,conf_key)
		if user_output :
			if session.get("kcsession") :
				session.pop('kcsession', None)
			
			session_id  = user_output['session_id']
			user_output["scan_system_name"] = "System-2" # updated on July 07, 2023
			session["kcsession"] = user_output
			
			flash('Login sucessfully.',"successMsg" )
			return redirect (url_for('kit.KcDashBoard',conf_id =conf_id ,conf_key = conf_key))
		else :
			flash("Ivalid session key" ,"errorMsg")
			return redirect (url_for('kit.KitLogin',conf_id =conf_id ,conf_key = conf_key))
		
	except Exception as e:
		msg = str(e)
		flash(msg , "errorMsg")
		return redirect (url_for('kit.KitLogin',conf_id =conf_id ,conf_key = conf_key))
	
#  KIT COUNTER SCANNED LIST

@app.route('/<int:conf_id>/<conf_key>/kit_scanned_delegates', methods = ["GET"])
def KITReportsScannedDelegates(conf_id,conf_key):
	now = datetime.now()
	current_dt  = now.strftime("%d-%m-%Y %H:%M:%S")
	total_count = 0
	try:
		if session.get("kcsession") :
			session_data  = session.get("kcsession")
			session_id    = session_data["session_id"]

			getKcConfData = KitSessionModel().getKcConfData(conf_id,conf_key)
			conf_name     = getKcConfData["conf_name"]
			conf_schema   = getKcConfData["conf_schema"]
			# del_table_name              = getKcConfData["del_table_name"]
			# kc_del_session_table_name = getKcConfData["kc_del_session_table_name"]
			# kc_session_entry_table_name = getKcConfData["kc_session_entry_table_name"]
			
			session_name = session_data["session_name"]
			start_time   = session_data["start_time"]
			end_time     = session_data["end_time"]


			scanned_data = KitModel().getKITReportWithName(session_id,conf_id,conf_key,conf_schema)
			if scanned_data : 
				total_count = len(scanned_data)

			return render_template('kitcounter/kit_scanned_list.html' , scanned_data = scanned_data,total_count=total_count,conf_id=conf_id,conf_name=conf_name,conf_key=conf_key,session_name=session_name,start_time=start_time,end_time=end_time)
		else :
			flash("Invalid login" ,"errorMsg")
			return redirect(url_for("kit.KitLogin" ,conf_id=conf_id,conf_key=conf_key))
			
	except Exception as e:
		flash(str(e) ,"errorMsg")
		return redirect(url_for("kit.KitLogin" ,conf_id=conf_id,conf_key=conf_key))	
		

# Save KC Scan data from log table
@app.route('/<int:conf_id>/<conf_key>/kc_save_from_errorlogs',methods = ["GET", "POST"])
def KcSaveFromErrorLogs(conf_id,conf_key):
	now         = datetime.now()
	curr_date   = now.strftime("%Y-%m-%d")
	curr_dt     = now.strftime("%Y-%m-%d %H:%M:%S")
	# curr_date   = "2023-09-02"
	no_of_rows  = 0
	primary_ids = []

	delegate_no 	 = 0
	session_id  	 = 0
	conf_data     = KitModel().getKcScanErrorLogs(conf_id,conf_key,curr_date,is_column_only=1)
	if not conf_data : 
		return "Invalid URL"

	scanErrorData = KitModel().getKcScanErrorLogs(conf_id,conf_key,curr_date,is_column_only=0)	

	if scanErrorData :	
		del_table_name 				= conf_data["del_table_name"]		
		kc_session_entry_table_name = conf_data["kc_session_entry_table_name"]
		kc_del_session_table_name   = conf_data["kc_del_session_table_name"]

		for index,value in enumerate(scanErrorData):
			no_of_rows = no_of_rows+1
			url        = value["url"]
			primary_id = value["id"]
			if url :
				query_params = 	url.split("?")
				query_params = query_params[1]
				
				query_params = query_params.replace("&" , ",")
				query_params = query_params.split(",")

				for row in query_params :
					values_1 = row.split("=")	
					col_name = values_1[0]
					if "session_id" in col_name :
						session_id = values_1[1] 
						session_id = int(session_id) if session_id else 0

					if "delegate_no" in col_name :
						delegate_no = values_1[1]
						delegate_no = int(delegate_no) if delegate_no else 0	

					
				if delegate_no> 0 and session_id > 0 :
					insert_data = KitModel().insertkcScannedData1(session_id,delegate_no,del_table_name,kc_del_session_table_name,kc_session_entry_table_name)
					primary_ids.append(primary_id)


		data_from_logs_table = {"conf_id" : conf_id, "scan_updated_at" : curr_dt }
		update_logs  = KitModel().saveKCScanDataFromLogs(primary_ids, data_from_logs_table)
			
		return "Total inserted records is "+ str(no_of_rows) + " ."			
	else :
		return "No kit scanning Records in error logs table !."				

		


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