Sindbad~EG File Manager

Current Path : /home/numerotech/conference.numerotech.com/food_kit_scan_badges/core/controller/
Upload File :
Current File : //home/numerotech/conference.numerotech.com/food_kit_scan_badges/core/controller/UserController.py

from flask import render_template,request,flash,redirect,url_for, Blueprint,session,json,jsonify
import datetime
from datetime import timedelta,date,datetime
from .. import Cryptography,RouteGroup,Helper,Custom
from core.model.UserModel import UserModel
from core.model.ConfAppModel import ConfAppModel
from core.model.OfflineRegistrationModel import OfflineRegistrationModel
from core.model.BadgeModel import BadgeModel
from core.library.email import EMAIL
from flask import  app
import flask
from .. import Cryptography,Auth,RouteGroup,Helper,Custom



app = Blueprint('userss', __name__)


@app.route('/search_users',methods = ["GET","POST"])
def Users():
	society_data    = UserModel().getSociety()
	return render_template('users/adduser.html',society_data=society_data)
	
@app.route('/post_search_users',methods=["GET","POST"])
def PostSearchUsers():
	
	search_name     = request.values.get('search_name') or None
	search_email    = request.values.get('search_email') or None
	search_mobile   = request.values.get('search_mobile') or None
	society_id 		= request.values.get('society_id') or None
	data 			= UserModel().usp_get_all_society_members(search_name,search_email,search_mobile,society_id)
	if data:
		is_add_new_user=0
	else:
		is_add_new_user=1

	html_data = render_template('users/search_table.html',search_data=data,is_add_new_user=is_add_new_user)
	data = {"html_data" : html_data,'msg' :"success" , 'status' : 1 }
	return json.dumps(data,default=str)

@app.route('/view_member',methods = ["GET","POST"])
def ViewMember():
	user_id          = request.values.get("user_id")
	search_data      = UserModel().view_search(user_id)
	society_intial   = UserModel().getSociety()
	return render_template('users/view_member.html',user_data=search_data,user_id=user_id,society_intial=society_intial)

@app.route('/edit_user/<int:user_id>',methods =["GET","POST"])
def EditUser(user_id,data=None):
	if data is None:
		search_data       = UserModel().view_search(user_id)
		society_intial    = UserModel().getSociety()
		member_type_data  = UserModel().get_member_type()
		mc_state_data     = UserModel().get_mcstates_of_india()
		society_id		  = request.values.get('society_id') or None
		conf_data 		  = UserModel().get_conf_data_by_society(society_id)
		is_edit           = 1
		return render_template('users/add_new_user.html',is_edit=is_edit,user_data=search_data,user_id=user_id,society_intial=society_intial,member_type_data=member_type_data,mc_state_data=mc_state_data,conf_data=conf_data,str=str)
	else:
		search_data		   = data
		society_intial     = UserModel().getSociety()
		member_type_data   = UserModel().get_member_type()
		mc_state_data      = UserModel().get_mcstates_of_india()


		return render_template('users/add_new_user.html',user_data=search_data,user_id=user_id,society_intial=society_intial,member_type_data=member_type_data,mc_state_data=mc_state_data,str=str)

@app.route('/insert_user',methods=["GET","POST"])
def InsertUser():
	email              = request.values.get('email') or None
	society_intial     = UserModel().getSociety()
	member_type_data   = UserModel().get_member_type()
	mc_state_data      = UserModel().get_mcstates_of_india()
	return render_template('users/add_new_user.html',email=email,user_data=None,society_intial=society_intial,member_type_data=member_type_data,mc_state_data=mc_state_data,str=str)



@app.route('/post_user',methods=["GET","POST"])
def PostUser():
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	society_intial      = request.values.get('society_intial') or None 
	member_type_data    = request.values.get('member_type_id') or None 
	prefix              = request.values.get('prefix') or None 
	full_name           = request.values.get('full_name') or None
	email               = request.values.get('email') or None
	mobile              = request.values.get('mobile') or None
	membership_no       = request.values.get('membership_no') or None
	membership_no_only  = request.values.get('membership_no_only') or None
	mc_number           = request.values.get('mc_number') or None    
	mc_state_id         = request.values.get('mc_state_id') or None
	whatsapp_number     = request.values.get('whatsapp_number') or None
	city                = request.values.get('city') or None
	address1            = request.values.get('address1') or None
	pincode             = request.values.get('pincode') or None
	is_admin            = request.values.get('is_admin') or None
	password            = request.values.get('password') or None
	date_of_birth 		= request.values.get('dob') or None
	if date_of_birth:
		try:
			dob     = datetime.strptime(date_of_birth, '%d-%m-%Y')
		except Exception as e:
			dob     = None
	else:
		dob         = None
	otp 				= request.values.get('otp') or None
	otp_expire_on 		= request.values.get('otp_expire_on') or None
	otp_verified_at     = request.values.get('otp_verified_at') or None

	data ={
	'prefix'          	 : prefix,
	'full_name'       	 : full_name,
	'email'           	 : email,
	'mobile'          	 : mobile,
	'membership_no'   	 : membership_no,
	'membership_no_only' : membership_no_only,
	'mc_number'       	 : mc_number,
	'mc_state_id'     	 : mc_state_id,
	'society_id'      	 : society_intial,
	'member_type_id'  	 : member_type_data, 
	'whatsapp_number' 	 : whatsapp_number,
	'city'            	 : city,
	'address1'        	 : address1,
	'pincode'         	 : pincode,
	'is_admin'        	 : is_admin,
	'password'        	 : password,
	'dob'				 : dob,
	'otp' 				 : otp,
	'otp_expire_on'      : otp_expire_on,
	'otp_verified_at'    : otp_verified_at,
	'created_at'      	 : current_dt    
	}
	insert_userdata = UserModel().insert_user_data(data)
	flash('Inserted Successfully.','successMsg')
	return redirect (url_for('userss.Users'))

@app.route('/update_user',methods=["GET","POST"])
def UpdateUser():
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	society_id          = request.values.get('society_id') or None
	prefix              = request.values.get('prefix') or None 
	full_name           = request.values.get('full_name') or None 
	email               = request.values.get('email') or None
	mobile              = request.values.get('mobile') or None
	membership_no       = request.values.get('membership_no') or ' '
	membership_no_only  = request.values.get('membership_no_only') or None
	mc_number           = request.values.get('mc_number') or ' '
	mc_state_id         = request.values.get('mc_state_id') or ' '
	whatsapp_number     = request.values.get('whatsapp_number') or None
	city                = request.values.get('city') or None
	address1            = request.values.get('address1') or None
	pincode             = request.values.get('pincode') or None
	is_admin            = request.values.get('is_admin') or None
	password            = request.values.get('password') or None
	member_type_id      = request.values.get('member_type_id') or None
	user_id             = request.values.get('user_id')
	conference_id       = request.form.get('conf_id') or None
	parent_user_id      = request.values.get('user_id') or None
	update_delegate     = request.values.get('update_delegate') or None
	date_of_birth       = request.values.get('dob') or None
	update_delegate_user = request.values.get('update_delegate_user') or None
	if date_of_birth:
		try:
			dob     = datetime.strptime(date_of_birth, '%d-%m-%Y')
		except Exception as e:
			dob     = None
	else:
		dob         = None
	otp 				= request.values.get('otp') or None
	otp_expire_on 		= request.values.get('otp_expire_on') or None
	otp_verified_at      = request.values.get('otp_verified_at') or None

	if update_delegate and int(update_delegate) == 0:
		update_in_delegates = UserModel().update_in_delegate(user_id,parent_user_id,conference_id,membership_no,mc_number,mc_state_id,current_dt)
		
	if update_delegate_user and int(update_delegate_user) == 0:
		update_delegate_user = UserModel().update_user_and_delegate(user_id,parent_user_id,conference_id,prefix,full_name,email,mobile,current_dt)	
	
	if user_id and int(user_id) > 0 :
		data ={
		'society_id'         : society_id,
		'prefix'             : prefix,
		'full_name'          : full_name,
		'email'              : email,
		'mobile'             : mobile,
		'membership_no'   	 : membership_no,
		'membership_no_only' : membership_no_only,
		'mc_number'          : mc_number,
		'mc_state_id'        : mc_state_id,
		'whatsapp_number'    : whatsapp_number,
		'city'               : city,
		'address1'           : address1,
		'pincode'            : pincode,
		'is_admin'           : is_admin,
		'password'           : password,
		'member_type_id'     : member_type_id,
		'dob' 				 : dob,
		'otp' 				 : otp,
		'otp_expire_on'      : otp_expire_on,
		'otp_verified_at'     : otp_verified_at,
		'updated_at'         : [current_dt]     

		}
			
		update_member = UserModel().update_member(user_id,data,society_id)
		html_data     = render_template ('users/add_new_user.html',user_data=update_member)
		data          = {"html_data" : html_data ,"status" : 1 , "msg" : "Updated Successfully.','successMsg"}
	else:
		data = {"html_data" : "" ,"status" : 2 , "msg" : "Invalid "}	
	return json.dumps(data)

@app.route('/update_in_delegate',methods =["POST"])
def UpdateInDelegate():
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	membership_no       = request.values.get('membership_no') or None
	mc_number           = request.values.get('mc_number') or None    
	mc_state_id         = request.values.get('mc_state_id') or None
	conference_id       = request.form.get('conf_id') or None
	user_id 			= request.values.get('user_id') or None
	parent_user_id      = request.values.get('user_id') or None

	update_in_delegate = UserModel().update_in_delegate(user_id,parent_user_id,conference_id,membership_no,mc_number,mc_state_id,current_dt)
	flash('Updated Successfully.','successMsg')
	return redirect(url_for('userss.Users'))


@app.route('/duplicate_user/<int:user_id>',methods =["GET","POST"])
def DuplicateUser(user_id):
	search_data    = UserModel().view_search(user_id)
	society_intial = UserModel().getSociety()
	mc_state_data  = UserModel().get_mcstates_of_india()
	return render_template('users/duplicate_user.html',user_data=search_data,user_id=user_id,society_intial=society_intial,mc_state_data=mc_state_data)

@app.route('/post_duplicate_user',methods=["GET","POST"])
def PostDuplicateUser():
	if request.method=='POST':
		duplicate_user_id   = request.values.get('duplicate_user_id') or None
		society_id          = request.values.get('society_intial') or None
		prefix              = request.values.get('prefix') or None 
		full_name           = request.values.get('full_name') or None
		email               = request.values.get('email') or None
		mobile              = request.values.get('mobile') or None
		membership_no       = request.values.get('membership_no') or None
		membership_no_only  = request.values.get('membership_no_only') or None
		mc_number           = request.values.get('mc_number') or None    
		mc_state_id         = request.values.get('mc_state_id') or None
		whatsapp_number     = request.values.get('whatsapp_number') or None
		city                = request.values.get('city') or None
		address_1           = request.values.get('address_1') or None
		pincode             = request.values.get('pincode') or None
		is_admin            = request.values.get('is_admin') or None
		password            = request.values.get('password') or None
		dob  				= request.values.get('dob') or None
		otp 				= request.values.get('otp') or None
		otp_expire_on 		= request.values.get('otp_expire_on') or None
		otp_verified_at      = request.values.get('otp_verified_at') or None
	data ={
		'society_id'      	 : society_id,
		'prefix'          	 : prefix,
		'full_name'       	 : full_name,
		'email'           	 : email,
		'mobile'          	 : mobile,
		'membership_no'   	 : membership_no,
		'membership_no_only' : membership_no_only,
		'mc_number'       	 : mc_number,
		'mc_state_id'        : mc_state_id,
		'whatsapp_number'    : whatsapp_number,
		'city'               : city,
		'address1'           : address_1,
		'pincode'            : pincode,
		'is_admin'           : is_admin,
		'password'           : password,
		'dob' 				 : dob,
		'otp' 				 : otp,
		'otp_expire_on'      : otp_expire_on,
		'otp_verified_at'    : otp_verified_at,
		'created_at'         : datetime.now()

	}
	user_data        = UserModel().check_email(email,society_id)
	if user_data:
		flash('Society and Email Id Already Exists.','errorMsg')
		return redirect(url_for('userss.DuplicateUser',user_id=duplicate_user_id))
	else:
		insert_userdata = UserModel().insert_user_data(data)
		flash('Inserted Successfully.','successMsg')
		return redirect (url_for('userss.Users'))


@app.route('/delete_user_id',methods = ['POST', 'GET'])
def DeleteUserId():
	user_id = request.values.get("user_id")
	delete_and_get_data = UserModel().delete_user_id(user_id)
	flash("delete Successfully","successMsg")
	return redirect(url_for('userss.Users'))


@app.route('/view_society_listby_email_id',methods=["GET","POST"])
def ViewSocietyListByEmailId():
	user_id         = request.values.get("user_id")
	search_data     = UserModel().view_email_list(user_id)
	return render_template('users/view_society_list.html',user_data=search_data,user_id=user_id)

@app.route('/view_society_listby_mobile',methods=["GET","POST"])
def ViewSocietyListByMobile():
	user_id         = request.values.get("user_id")
	search_data     = UserModel().view_mobile_list(user_id)
	return render_template('users/view_society_list.html',user_data=search_data,user_id=user_id)

@app.route('/search_user_id_in_delegate/<int:user_id>',methods=["GET","POST"])
def SearchUserIdInDelegate(user_id):
	user_id         = request.values.get('user_id')
	search_data     = UserModel().get_search_user_id_in_delagetes(user_id)
	html_data = render_template('users/search_delegate_table_user_id.html',search_data=search_data,user_id=user_id)
	data = {"html_data" : html_data,'msg' :"success" , 'status' : 1 }
	return json.dumps(data,default=str)
	

@app.route('/delete_search_delegate_user_id',methods = ['POST', 'GET'])
def DeleteSearchDelegateUserId():
	delegate_id = request.values.get("delegate_id")
	delete_and_get_data = UserModel().delete_delegate_user_id(delegate_id)
	flash("delete Successfully","successMsg")
	return redirect(url_for('userss.Users'))
	
@app.route('/search_delegate_record',methods = ['POST', 'GET'])
def SearchDelegateRecord():
	conference_data = ConfAppModel().get_conference()
	return render_template('users/search_delegate_record.html',conference_data = conference_data)

@app.route('/post_search_delegate_record',methods = ['POST', 'GET'])
def PostSearchDelegateRecord():
	now         = datetime.now()
	conf_id 	= request.values.get("conf_id" ) or None
	search_data = request.values.get("search" ) or None
	before_time = request.values.get("before_time" ) or None
	if before_time:
		now_minus_before_time = now - timedelta(minutes = int(before_time))
		before_time  = now_minus_before_time.strftime("%Y-%m-%d %H:%M")
	else:
		before_time  = None
	get_delegate_data = UserModel().get_delegate_data(conf_id,search_data,before_time,None)
	for index,value in enumerate(get_delegate_data):
		if index == 0:
			delegate_data  = value
		if index == 1:
			delegate_addon_data = value

		if index == 2:
			user_payment_data = value
	html_data = render_template('users/search_delegate_record_table.html',delegate_data=delegate_data,delegate_addon_data=delegate_addon_data,user_payment_data=user_payment_data)
	data     = {"html_data":html_data,"msg":"success","status":1}
	json_data = json.dumps(data,default=str)
	return json_data


@app.route('/<int:delegate_id>/update_delegate_record',methods = ['POST', 'GET'])
def UpdateDelegateRecord(delegate_id):
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	conf_id             = request.values.get('conf_id') or None

	search_data = request.values.get("search") or None
	before_time = request.values.get("before_time") or None
	if before_time:
		now_minus_before_time = now - timedelta(minutes = int(before_time))
		before_time  = now_minus_before_time.strftime("%Y-%m-%d %H:%M")

	else:
		before_time  = None



	delegate_no         = request.values.get('delegate_no') or None
	registered_on       = request.values.get('registered_on' ) or  None
	del_status_id       = request.values.get('del_status_id' ) or  None
	ref_no              = request.values.get('ref_no' ) or  None
	ref_no_only         = request.values.get('ref_no_only' ) or  None
	update_data         = {
							'delegate_no'  :delegate_no,
							'registered_on':registered_on,
							'del_status_id':del_status_id,
							'ref_no':ref_no,
							'ref_no_only':ref_no_only,
							'updated_at'   :current_dt
						  }
						  
	get_conf = UserModel().get_conf_by_conf_id(conf_id)
	conf_schema = get_conf['conf_schema']
	updated_and_get_data= UserModel().update_delegate_record(delegate_id,update_data,conf_schema)
	get_delegate_data = UserModel().get_delegate_data(conf_id,search_data,before_time,None)
	for index,value in enumerate(get_delegate_data):
		if index == 0:
			delegate_data  = value
		if index == 1:
			delegate_addon_data = value
		if index == 2:
			user_payment_data = value
	html_data = render_template('users/search_delegate_record_table.html',delegate_data=delegate_data,delegate_addon_data=delegate_addon_data,user_payment_data=user_payment_data)
	data     = {"html_data":html_data,"msg":"Updated Successfully.","status":1}
	json_data = json.dumps(data,default=str)
	return json_data


@app.route('/<int:delegate_addon_id>/update_delegate_addon_record',methods = ['POST', 'GET'])
def UpdateDelegateAddonRecord(delegate_addon_id):
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	conf_id             = request.values.get('conf_id') or None
	search_data         = request.values.get('search') or None
	before_time         = request.values.get('before_time') or None
	if before_time:
		now_minus_before_time = now - timedelta(minutes = int(before_time))
		before_time  = now_minus_before_time.strftime("%Y-%m-%d %H:%M")
	else:
		before_time  = None

	delegate_id         = request.values.get('delegate_id') or None
	reg_status          = request.values.get('reg_status') or 0
	amount              = request.values.get('amount') or None
	reg_status          = int(reg_status) if reg_status else 0
	unique_id           = request.values.get('unique_id') or None
	addon_id            = request.values.get('addon_id') or None
	update_data         = {
							'reg_status'  :reg_status,
							'amount'      :amount,
							'unique_id'   :unique_id,
							'addon_id'    :addon_id,
							'updated_at'  :current_dt
						  }
	get_conf = UserModel().get_conf_by_conf_id(conf_id)
	conf_schema = get_conf['conf_schema']
	updated_data= UserModel().update_delegate_addon_record(delegate_addon_id,update_data,conf_schema)
	get_delegate_data = UserModel().get_delegate_data(conf_id,search_data,before_time,None)
	for index,value in enumerate(get_delegate_data):
		if index == 0:
			delegate_data  = value
		if index == 1:
			delegate_addon_data = value
		if index == 2:
			user_payment_data = value
	html_data = render_template('users/search_delegate_record_table.html',delegate_data=delegate_data,delegate_addon_data=delegate_addon_data,user_payment_data=user_payment_data)
	data     = {"html_data":html_data,"msg":"Updated Successfully.","status":1}
	json_data = json.dumps(data,default=str)
	return json_data



@app.route('/<int:payment_id>/update_user_payment_record',methods = ['POST', 'GET'])
def UpdateUserPaymentRecord(payment_id):
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	conf_id             = request.values.get('conf_id') or None
	search_data 		= request.values.get('search' ) or None
	before_time 		= request.values.get('before_time' ) or None
	if before_time:
		now_minus_before_time = now - timedelta(minutes = int(before_time))
		before_time  = now_minus_before_time.strftime("%Y-%m-%d %H:%M")
	else:
		before_time  = None


	delegate_id         = request.values.get('delegate_id') or None
	receipt_no          = request.values.get('receipt_no') or None
	status              = request.values.get('status') or None
	
	payment_method_from_gateway	= request.values.get('payment_method_from_gateway') or None
	amount                   	= request.values.get('amount') or None
	payment_method	            = request.values.get('payment_method') or None
	paid_at	                    = request.values.get('paid_at') or None
	updated_at	                = request.values.get('updated_at') or None
	utr_number	                = request.values.get('utr_number') or None
	amount                      = request.values.get('amount') or None
	update_data = {
				'receipt_no'                 : receipt_no,
				'status'                     : status,
				'payment_method_from_gateway': payment_method_from_gateway,
				'payment_method'             : payment_method,
				'paid_at'                    : paid_at,
				'updated_at'                 : updated_at,
				'utr_number'                 : utr_number,
				'api_payment_id'             : utr_number,
				'amount'                     : amount			
				}
				
				
	updated_data      = UserModel().update_user_payment_record(payment_id,update_data)
	get_delegate_data = UserModel().get_delegate_data(conf_id,search_data,before_time,None)
	for index,value in enumerate(get_delegate_data):
		if index == 0:
			delegate_data  = value
		if index == 1:
			delegate_addon_data = value
		if index == 2:
			user_payment_data = value
	html_data = render_template('users/search_delegate_record_table.html',delegate_data=delegate_data,delegate_addon_data=delegate_addon_data,user_payment_data=user_payment_data)
	data     = {"html_data":html_data,"msg":"Updated Successfully.","status":1}
	json_data = json.dumps(data,default=str)
	return json_data



@app.route('/delete_delegate_record',methods = ['POST', 'GET'])
def DeleteDelegateRecord():
	now                 = datetime.now()
	current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
	conf_id             = request.values.get('conf_id') or None
	delegate_id         = request.values.get('delegate_id') or None
	delegate_addon_id   = request.values.get('delegate_addon_id') or None
	search_data         = request.values.get('search') or None
	before_time         = request.values.get('before_time') or None
	if before_time:
		now_minus_before_time = now - timedelta(minutes = int(before_time))
		before_time           = now_minus_before_time.strftime("%Y-%m-%d %H:%M")
	else:
		before_time  = None

	delete_delegate   = UserModel().delete_delegate_record(delegate_id,delegate_addon_id,conf_id)
	get_delegate_data = UserModel().get_delegate_data(conf_id,search_data,before_time,None)
	for index,value in enumerate(get_delegate_data):
		if index == 0:
			delegate_data  = value
		if index == 1:
			delegate_addon_data = value
		if index == 2:
			user_payment_data = value
	html_data = render_template('users/search_delegate_record_table.html',delegate_data=delegate_data,delegate_addon_data=delegate_addon_data,user_payment_data=user_payment_data)
	data     = {"html_data":html_data,"msg":"Deleted Successfully.","status":1}
	json_data = json.dumps(data,default=str)
	return json_data
	
	
@app.route('/search_error_logs',methods = ['POST', 'GET'])
def SearchErrorLogs():
	logger_data   = UserModel().get_logger_name()
	host_url_data = UserModel().get_host_url()
	app_type_data = UserModel().get_app_type()
	return render_template('users/search_error_logs.html',app_type_data=app_type_data,logger_data = logger_data,host_url_data=host_url_data)


@app.route('/post_error_logs',methods = ['POST', 'GET'])
def PostErrorLogs():
	try:
		now           = datetime.now()
		app_type      = request.values.get('app_type') or None 
		logger_name   = request.values.get('logger_name') or None
		host_url      = request.values.get('host_url') or None
		before_time   = request.values.get('before_time') or None
		limit         = request.values.get('limit') or None
		db_name       = request.values.get('db_name') or None
		if before_time:
			now_minus_before_time = now - timedelta(minutes = int(before_time))
			before_time           = now_minus_before_time.strftime("%Y-%m-%d %H:%M")
		else:
			before_time  = None

		error_log_data   = UserModel().get_del_error_logs(logger_name,host_url,before_time,limit,app_type,db_name)
		html_data        = render_template('users/search_error_logs_table.html',error_log_data=error_log_data,db_name=db_name)
		data             = {"html_data":html_data,"msg":"Success","status":1}
		json_data = json.dumps(data,default=str)
		return json_data

	except Exception as e:
		data             = {"html_data":"","msg":str(e),"status":401}
		json_data = json.dumps(data,default=str)
		return json_data
		
		
# Usage : Search Pending Delegate Record
# Date  : 2023-07-03 12:00
# Created by : Ramya

@app.route('/search_pending_delegate_record',methods = ['POST', 'GET'])
def SearchPendingDelegateRecord():
	now           = datetime.now()
	from_date     = now.strftime("%Y-%m-%d 00:00:00")
	to_date       = now.strftime("%Y-%m-%d %H:%M:%S")
	conference_data = ConfAppModel().get_conference()
	return render_template('users/search_pending_delegate_record.html',conference_data=conference_data,from_date=from_date,to_date=to_date)


@app.route('/post_search_pending_delegate_record',methods = ['POST', 'GET'])
def PostSearchPendingDelegateRecord():
	try:
		conf_id    = request.values.get('conf_id') or None
		from_date  = request.values.get('from_date') or None
		to_date    = request.values.get('to_date') or None
		status     = request.values.get('status') or None
		limit      = request.values.get('limit') or None
		get_pending_delegate_record = UserModel().get_pending_delegate_record(conf_id,from_date,to_date,status,limit)
		html_data        = render_template('users/search_pending_delegate_record_table.html',del_data=get_pending_delegate_record)
		data             = {"html_data":html_data,"msg":"Success","status":1}
		json_data = json.dumps(data,default=str)
		return json_data
	except Exception as e:
		data      = {"html_data":"","msg":str(e),"status":401}
		json_data = json.dumps(data,default=str)
		return json_data
		

# Usage : View Payment type for conference
# Date  : 2023-07-11 12:27
# Created by : Ramya

@app.route('/<int:conf_id>/<conf_key>/view_payment_type',methods = ['POST', 'GET'])
def ViewPaymentType(conf_id,conf_key):
	get_conf_name    = ConfAppModel().get_conf_name(conf_id,conf_key)
	if get_conf_name:
		get_payment_data = UserModel().get_payment_type(conf_id)
		return render_template('users/view_payment_type.html',conf_id = conf_id,conf_key=conf_key,payment_data=get_payment_data,get_conf_name=get_conf_name)
	else:
		return "<h1>Invalid URL </h1>"


@app.route('/<int:conf_id>/<conf_key>/post_payment_type',methods = ['POST', 'GET'])
def PostPaymentType(conf_id,conf_key):
	try:
		now                 = datetime.now()
		current_dt          = now.strftime("%Y-%m-%d %H:%M:%S")
		m_payment_id        = request.values.get('m_payment_id') or None
		is_bo_visible       = request.values.get('is_bo_visible') or None
		is_online_visible   = request.values.get('is_online_visible') or None
		data                = {
								'is_bo_visible'     : is_bo_visible,
								'is_online_visible' : is_online_visible,
								'updated_at'        : current_dt
							  }
		update_payment_type = UserModel().update_payment_type(m_payment_id,data)
		return "success"

	except Exception as e:
		raise e	
		
		
@app.route('/send_whatsapp_bo_credentials/<int:user_id>/<society_id>/<int:conf_id>/<whatsapp_number>',methods = ["GET","POST"])
def SendWhatsappBoCredentials(user_id,society_id,conf_id,whatsapp_number):
	conference_data  = ConfAppModel().get_conf_data_for_edit(conf_id)
	conf_key         = conference_data['conf_key']
	conf             = OfflineRegistrationModel().OR_get_confUserModel(conf_id,conf_key)
	society_id    	 = conf['society_id']
	msg_content      = "Backoffice Creadentials"
	whatsappdata     = UserModel().get_users_data_for_whatsapp(user_id)
	full_name        = whatsappdata['full_name']
	email  			 = whatsappdata['email']
	password         = whatsappdata['password']
	prefix           = whatsappdata['prefix']
	if prefix:
			name = whatsappdata["prefix"] +" "+ whatsappdata["full_name"]
	else:
		name = whatsappdata["full_name"]
	if whatsapp_number:
		last_char = whatsapp_number[-1:]
		# check last character is commma 
		if "," ==  last_char :
			whatsapp_number = re.sub(r".$", "", whatsapp_number)
		# check white spance in given inputs ,if exist then replace as empty
		if " " in whatsapp_number :
			whatsapp_number = whatsapp_number.replace(" " ,"")

		app_url  = conf['app_url']
# 		safe_string_1 = "https://wa.me/91"+str(whatsapp_number)+"?text="+"Dear :%20"+prefix+full_name+"%0A%0AURL :%20"+app_url+"/bo%0A%0Aemail :%20"+email+"%0A%0Apassword :%20"+password
		safe_string_1 = "https://wa.me/91"+str(whatsapp_number)+"?text="+"*Backoffice Credentials*%0A%0A*URL* :%20"+app_url+"/bo%0A%0A*email* :%20"+email+"%0A%0A*password* :%20"+password

		return flask.redirect(safe_string_1)
		webbrowser.open(safe_string_1) # to send whatsapp via new tab
		return "success"
		flash("mail sent Successful to " +str(whatsapp_number),"whatsapp_success")

	else:	
		flash("Please enter the whatsapp number .","whatsapp_failed")		

		return "faild"

@app.route('/send_mail_bo_credentials/<int:user_id>/<society_id>/<int:conf_id>', methods = ["GET", "POST"])
def SendMailBoCredentials(user_id,society_id,conf_id):
	conference_data  = ConfAppModel().get_conf_data_for_edit(conf_id)
	conf_key         = conference_data['conf_key']
	conf             = OfflineRegistrationModel().OR_get_confUserModel(conf_id,conf_key)
	conf_name		 = conf['conf_name'] 
	now              = datetime.now()
	dt_string        = now.strftime('%Y-%m-%d %H:%M:%S')
	template_name    = "backoffice_credentials"
	mailData         = ConfAppModel().get_mail_template(template_name,conf_id)
	emaildata        = UserModel().get_users_data_for_whatsapp(user_id)
	is_send          = request.values.get('is_send')
	email            = emaildata['email']
	sub_data = {
					  'conf_name':conf_name
				}
	subject = Helper.merge_tags(mailData['subject'],sub_data)             
	
	m_data  = {
				'mail_content'  : mailData.mail_content,
				'emaildata'     : emaildata,
				'conf'          : conf
			}   

	mail_content = Helper.convert_html_for_mail_screen(m_data)
	html    = render_template('conferenceapp/email/bo_access_credentials_mail.html',mail_content=mail_content,conf=conf)
	if int(is_send) == 1:
		if email :
			EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
	return 'Bo Access Mail send Successfully'
	

# Usage : Bulk Delete error logs
# Date  : 2023-09-25 12:12
# Created by : Ramya

@app.route('/delete_error_logs',methods = ['POST', 'GET'])
def DeleteErrorLogs():
	try:
		now           = datetime.now()
		ids           = request.values.get('ids') or None 
		app_type      = request.values.get('app_type') or None 
		logger_name   = request.values.get('logger_name') or None
		host_url      = request.values.get('host_url') or None
		before_time   = request.values.get('before_time') or None
		limit         = request.values.get('limit') or None
		ids_length    = request.values.get('ids_length') or None
		db_name       = request.values.get('db_name') or None
		if before_time:
			now_minus_before_time = now - timedelta(minutes = int(before_time))
			before_time           = now_minus_before_time.strftime("%Y-%m-%d %H:%M")
		else:
			before_time      = None
		delete_error_logs    = UserModel().delete_error_logs(db_name,ids)
		if delete_error_logs == 'success' :
			error_log_data   = UserModel().get_del_error_logs(logger_name,host_url,before_time,limit,app_type,db_name)
			html_data        = render_template('users/search_error_logs_table.html',error_log_data=error_log_data,db_name=db_name)
			msg   = str(ids_length) + " records deleted successfully in "+ db_name
			data  = {"html_data":html_data,"msg":msg,"status":1}
		else:
			data  = {"html_data":"","msg":delete_error_logs,"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



# Usage : View BO Admin Access Users
# Date  : 2023-07-07 15:02
# Created by : Ramya
# Old
@app.route('/<int:society_id>/view_boadmin_access_users',methods = ['POST', 'GET'])
def ViewBOAdminAccessUsers(society_id):
	get_data = UserModel().get_boadmin_access_record(society_id)
	society  = UserModel().get_society_name(society_id)
	return render_template('users/view_boadmin_access_users.html',get_data=get_data,society=society)



# Usage : View BO Admin Access Users
# Created on : 2023-07-07 15:02 and Changed on 2024-01-05 17:14:00 By Ramya

# @app.route('/<int:society_id>/<int:conf_id>/<conf_key>/view_boadmin_access_users',methods = ['POST', 'GET'])
# def ViewBOAdminAccessUsers(society_id,conf_id,conf_key):
# 	data   = UserModel().get_boadmin_access_data(conf_id,society_id)
# 	for index,value in enumerate(data):
# 		if index == 0:
# 			conf_name  = value[0]
# 		if index == 1:
# 			all_data = value
# 		if index == 2:
# 			total_count = value[0]
# 		if index == 3:
# 			other_email_total_count = value[0]

# 	return render_template('users/view_boadmin_access_users_v1.html',other_email_total_count=other_email_total_count,total_count=total_count,get_data=all_data,conf_name=conf_name,society_id=society_id,conf_id=conf_id,conf_key=conf_key)


# @app.route('/<int:society_id>/get_user_data',methods = ['POST', 'GET'])
# def GetUserDataforBOadminAccess(society_id):
# 	try:
# 		search_data   = request.values.get('search_data') or None
# 		get_user_data = UserModel().get_user_for_boadmin_access(society_id,search_data)
# 		if get_user_data :
# 			html_data   = render_template('users/view_boadmin_access_users_table_v1.html',search_data=search_data,data=get_user_data)
# 			msg         = "User data successfully searched"
# 			status      = 1
# 		else :
# 			html_data   = render_template('users/view_boadmin_access_users_table_v1.html',search_data=search_data,data=get_user_data)
# 			msg         = "No User data"
# 			status      = 2
# 		data        = {"html_data":html_data,"msg":msg,"status":status}
# 		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('/<int:conf_id>/<conf_key>/save_user_access',methods = ['POST', 'GET'])
# def SaveUserAccess(conf_id,conf_key):
# 	try:
# 		now               = datetime.now()
# 		current_dt        = now.strftime("%Y-%m-%d %H:%M:%S")
# 		society_id        = request.values.get('society_id') or None
# 		search_data       = request.values.get('search_data') or None
# 		user_id	          = request.values.get('user_id') or None
# 		full_name         = request.values.get('full_name') or None
# 		mobile            = request.values.get('mobile') or None
# 		email	          = request.values.get('email') or None
# 		password	      = request.values.get('password') or None
# 		is_admin	      = request.values.get('is_admin') or None
# 		check_admin_access  = UserModel().check_already_exist_in_admin_access(society_id,conf_id,email)
# 		if user_id and int(user_id) > 0:
# 			data_for_update = {"password":password,"is_admin":is_admin,"updated_at":current_dt}
# 			update_user     = UserModel().update_user_bo_access(user_id,data_for_update)
			
# 		else :
# 			user_data_for_update     = {"member_type_id":2,"society_id":society_id,"prefix":"Dr.","full_name":full_name,"mobile":mobile,"email":email,"password":password,"is_admin":is_admin,"created_at":current_dt}
# 			update_user              = UserModel().insert_user_data_bo_access(user_data_for_update)
		
# 		if check_admin_access :
# 			data_for_update = {"password":password,"is_admin":is_admin,"updated_at":current_dt}
# 			update_user     = UserModel().update_user_bo_access(user_id,data_for_update)
# 		else :
# 			insert_admin_access_data = {"admin_role_id": 1,"conf_id" : conf_id, "society_id"  : society_id, "app_type_id" : 2, "admin_email" : email}
# 			insert_in_admin_access   = UserModel().insert_in_admin_access(insert_admin_access_data)


# 		get_user_data   = UserModel().get_user_for_boadmin_access(society_id,search_data)
# 		if get_user_data :
# 			html_data   = render_template('users/view_boadmin_access_users_table_v1.html',search_data=search_data,data=get_user_data)
# 			msg         = "User data successfully searched"
# 			status      = 1
# 		else :
# 			html_data   = render_template('users/view_boadmin_access_users_table_v1.html',search_data=search_data,data=get_user_data)
# 			msg         = "No User data"
# 			status      = 2
# 		data        = {"html_data":html_data,"msg":msg,"status":status}
# 		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('all_tariff',methods =["GET","POST"])
def AllTariff():
	now               = datetime.now()
	curr_dt           = now.strftime("%d-%m-%Y %H:%M:%S")
	curr_date         = now.strftime("%Y-%m-%d")
	next_day          = now +  timedelta(days=1)
	next_date         = next_day.strftime("%Y-%m-%d")
	
	conf = UserModel().get_all_active_conference(next_date)
	return render_template('users/all_tariff.html',conf=conf)

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