Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,Response,jsonify,json
from core.model.BOModel import BOModel
from core.model.UserModel import UserModel
from core.model.SpotRegModel import SpotRegModel
from core.model.VerifyPaymentModel import VerifyPaymentModel
from core.model.OfflineModel import OfflineModel
from core.model.BOReportModel import BOReportModel
from core.model.TradeModel import TradeModel
from core.model.AddonsModel import AddonsModel
from core.model.SurgicalUserModel import SurgicalUserModel
from random import randint
from .. import Cryptography,Auth,RouteGroup,Helper,Custom,AWSUpload
import datetime
from core.library.email import EMAIL
import math
from datetime import timedelta,date,datetime
from flask import session, app
from os import listdir
import io
import csv
import ast
import requests,mandrill,json,math
import base64
import flask
from num2words import num2words
from werkzeug.utils import secure_filename
import boto3, botocore
from botocore.exceptions import ClientError
import webbrowser
import os #use for new instance of chrome
import urllib.parse
from io import BytesIO
import xlsxwriter
from xlsxwriter import Workbook
import xlwt
from collections import defaultdict
app = Blueprint('trade_reg', __name__)
'''--------------------------------------- Back Office Start -------------------------------------------------- '''
@app.route('/<int:conf_id>/<conf_key>/admin', methods = ["GET", "POST"])
@app.route('/admin', methods = ["GET", "POST"])
def BoHome(conf_id =None,conf_key=None):
host = request.host
host_data = UserModel().get_conference_by_host(host)
if host_data:
if conf_id:
conf_id = conf_id
conf_key = conf_key
else:
conf_id = host_data["conf_id"]
conf_key = host_data["conf_key"]
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
else:
return "Application not found"
@app.route('/<int:conf_id>/<conf_key>/trade_user_post_login', methods = ["GET","POST"])
@RouteGroup.conf_required
def TradeUserPostLogin(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
conf_id = conf['conf_id']
conf_name = conf['conf_name']
society_id = conf['society_id']
now = datetime.now()
if request.method == 'POST':
email = request.form['email']
if conf_id == 5 and email in ['santosh.bhide7@gmail.com','aaheroor@gmail.com','vivekmotewar@gmail.com','pushparaj.she8igar@gmail.com'] :
data={'msg' : 'Access-Denied'}
return jsonify(data)
password = request.form['password']
if not email or not password:
flash('Please enter email and password')
return redirect (url_for('delegate.login'))
else :
us = BOModel()
output = BOModel().get_bo_users_email(email,society_id,conf_id)
login_data = output
kc_session = None
fc_session = None
# for index,value in enumerate(conferences_data):
# if index == 0:
# fc_session = value
# if index == 1:
# kc_session = value
# if fc_session[0]['session_key'] != None:
# fc_session = fc_session
# fc_data = {
# 'fc_session': fc_session
# }
# login_data.update(fc_data)
# else:
# fc_session = None
# if kc_session[0]['session_key'] != None :
# kc_session = kc_session[0]
# kc_data = {
# 'kc_session': kc_session
# }
# login_data.update(kc_data)
# else:
# kc_session = None
if output != None :
is_admin = output['is_admin']
bo_access = UserModel().check_bo_access(email,2,society_id,conf_id) # for check back office admin access
if bo_access["is_admin"] == 1 :
db_pass = output['password']
if password == db_pass:
user_id = output['user_id']
Auth.bologin(login_data,society_id)
datas = {
'user_id' : output['user_id'],
'log' : "back office login",
'app_type' : Helper.AppType,
'society_id': society_id,
'conf_id' : conf_id,
'log_at' : now
}
BOModel().insert_back_offie_login_logs(datas)
data = {'msg':'success','conf_name':conf_name,'conf_id' :conf_id}
else:
data={'msg' : 'No-Match-Password'}
else:
data={'msg' : 'Access-Denied'}
else:
data={'msg' : 'No-data'}
return jsonify(data)
else:
email = request.values.get('email')
if conf_id == 5 and email in ['santosh.bhide7@gmail.com','chetankharkande4045@gmail.com','aaheroor@gmail.com','vivekmotewar@gmail.com','pushparaj.she8igar@gmail.com'] :
data={'msg' : 'Access-Denied'}
return jsonify(data)
password = request.values.get('password')
if not email or not password:
flash('Please enter email and password')
return redirect (url_for('delegate.login'))
else :
us = BOModel()
output = BOModel().get_bo_users_email(email,society_id,conf_id)
login_data = output
kc_session = None
fc_session = None
# for index,value in enumerate(conferences_data):
# if index == 0:
# fc_session = value
# if index == 1:
# kc_session = value
# if fc_session[0]['session_key'] != None:
# fc_session = fc_session
# fc_data = {
# 'fc_session': fc_session
# }
# login_data.update(fc_data)
# else:
# fc_session = None
# if kc_session[0]['session_key'] != None :
# kc_session = kc_session[0]
# kc_data = {
# 'kc_session': kc_session
# }
# login_data.update(kc_data)
# else:
# kc_session = None
if output != None :
is_admin = output['is_admin']
bo_access = UserModel().check_bo_access(email,2,society_id,conf_id) # for check back office admin access
if bo_access["is_admin"] == 1 :
db_pass = output['password']
if password == db_pass:
user_id = output['user_id']
Auth.bologin(login_data,society_id)
datas = {
'user_id' : output['user_id'],
'log' : "back office login",
'app_type' : Helper.AppType,
'society_id': society_id,
'conf_id' : conf_id,
'log_at' : now
}
BOModel().insert_back_offie_login_logs(datas)
del_status_id = 2 # success data
return redirect(url_for('trade_reg.Index_user',conf_id=conf_id,conf_key=conf_key,del_status_id=del_status_id))
else:
flash("No-Match-Password",'errorMsg')
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
else:
flash("Access-Denied",'errorMsg')
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
else:
flash("No-data",'errorMsg')
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
flash("Invaild login",'errorMsg')
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo_trade_logout', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoTradeLogout(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
society_id = conf['society_id']
if Auth.bocheck(society_id):
Auth.bologout(society_id)
if conf_id and int(conf_id) == 46:
return render_template('view_delegates_list/view_delegate_list_login.html',conf=conf)
else:
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
else:
flash("Invaild login")
return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo/login', methods = ["GET", "POST"])
@RouteGroup.conf_required
def Home(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
society_id = conf['society_id']
if conf:
if Auth.bocheck(society_id):
return redirect (url_for('trade_reg.Index_user',conf_id=conf_id,conf_key=conf_key))
else:
return render_template('backoffice_user/login.html',conf=conf)
else:
return "Invaild Link"
# @app.route('/<int:conf_id>/<conf_key>/bo', methods = ["GET", "POST"])
# @RouteGroup.conf_required
# def HomeLanding(conf_id,conf_key):
# conf = Auth.getConf(conf_id,conf_key)
# conf_id = conf['conf_id']
# society_id = conf['society_id']
# now = datetime.now()
# if conf:
# if Auth.bocheck(society_id):
# datas = {
# 'user_id' : Auth.user(society_id)['user_id'],
# 'log' : "login",
# 'app_type' : Helper.AppType,
# 'society_id': society_id,
# 'conf_id' : conf_id,
# 'log_at' : now
# }
# BOModel().insert_back_offie_login_logs(datas)
# del_status_id = 2 # success data
# return redirect (url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key,del_status_id=del_status_id))
# else:
# return redirect (url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
# else:
# return "Invaild Link"
@app.route("/<int:conf_id>/<conf_key>/bo/trade_index" , methods=['GET','POST'])
@RouteGroup.conf_required
# @RouteGroup.bo_trade_login_required
def TradeIndex_user(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
society_id = conf['society_id']
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
if conf_id and conf_id == 46:
data = BOModel().get_surgical_delegates_details(conf_id)
if data:
total_count = len(data)
else:
total_count = 0
return render_template('surgical_strike/bo_surgical_strike.html',conf=conf,data=data,total_count=total_count)
else:
Auth_user = Auth.user(society_id)
prefix = Auth_user['prefix'] or None
name = Auth_user['full_name'] or None
email = Auth_user['email']
mobile = Auth_user['mobile']
user_id = request.values.get('user_id',None)
if user_id:
user_id = user_id
else:
user_id = Auth_user['user_id']
full_name = prefix + " " + name if prefix else name
is_export = False
delegate_nos = request.values.get("delegate_nos",None)
if delegate_nos:
text_placeholder = delegate_nos
delegate_nos,from_del_no,to_del_no = conv_dele_no(delegate_nos)
else:
text_placeholder = None
delegate_nos,from_del_no,to_del_no = None,None,None
receipt_nos = request.values.get("receipt_nos",None)
if receipt_nos:
text_placeholder_receipt_nos = receipt_nos
receipt_nos,from_receipt_no,to_receipt_no = conv_dele_no(receipt_nos)
else:
text_placeholder_receipt_nos = None
receipt_nos,from_receipt_no,to_receipt_no = None,None,None
del_status_id = request.values.get("del_status_id","2")
if conf["is_gen_number"] == "ref_number":
orderby = request.values.get("orderby","d.ref_no_only")
else:
orderby = request.values.get("orderby","d.delegate_no")
search_data = {
'delegate_nos' : delegate_nos,
'from_del_no' : from_del_no,
'to_del_no' : to_del_no,
'receipt_nos' : receipt_nos,
'from_receipt_no' : from_receipt_no,
'to_receipt_no' : to_receipt_no,
'search' : request.values.get("search",None),
'user_type' : request.values.get("user_type",None),
'reg_mode' : request.values.get("reg_mode",None),
'pay_mode' : request.values.get("pay_mode",None),
'del_status_id' : del_status_id,
'From' : request.values.get("From",None),
'to' : request.values.get("to",None),
'orderby' : orderby,
'order_type' : request.values.get("order_type","desc"),
'amount_from' : request.values.get("amount_from",None),
'amount_to' : request.values.get("amount_to",None),
'role' : request.values.get("role",None)
}
page = request.values.get("page",1)
if "chetankharkande4045@gmail.com" in email and int(conf_id) == 5:
limit = request.values.get("limit",10)
else :
limit = request.values.get("limit",100)
page = conv_int(page)
limit = conv_int(limit)
total_count = BOModel().get_countBOModel(conf_id)
numPages = math.ceil(total_count/limit)
for i in range(1,numPages+1):
pagenum=i
submit_btn=request.values.get('submit_btn',None)
#Post method block start
if request.method == "POST":
submit_btn=request.values.get('submit_btn',None)
#if reset true search data all value set none
if request.values.get('reset_btn',None):
search_data['delegate_nos'] = None
search_data['from_del_no'] = None
search_data['to_del_no'] = None
search_data['receipt_nos'] = None
search_data['from_receipt_no'] = None
search_data['to_receipt_no'] = None
search_data['search'] = None
search_data['user_type'] = None
search_data['reg_mode'] = None
search_data['pay_mode'] = None
search_data['del_status_id'] = None
search_data['From'] = None
search_data['to'] = None
search_data['amount_to'] = None
search_data['amount_from'] = None
if conf['is_gen_number'] == 'ref_number':
search_data['orderby'] = "d.ref_no_only"
else:
search_data['orderby'] = "d.delegate_no"
search_data['order_type'] = "desc"
search_data['role'] = None
if submit_btn == '<' and page >1:
page = page -1
offset=int((page-1)*limit)
elif submit_btn == '>' and numPages>page :
page = page +1
offset=int((page-1)*limit)
else:
page=page
offset=int((page-1)*limit)
else:
offset=int((page-1)*limit)
#post method block end
offset=int((page-1)*limit)
filter_btn =request.values.get('filter_btn',None)
if not submit_btn and filter_btn :
filter_visible = 1
elif submit_btn and filter_btn :
filter_visible = 0
elif not submit_btn and not filter_btn :
filter_visible = 0
else :
filter_visible = 0
# filter_visible = 1 #here submit button click filter will not shows
if request.values.get('export_btn',None):
offset = None
limit = None
is_export = True
output = TradeModel().getdata_trade(search_data['delegate_nos'],search_data['from_del_no'],search_data['to_del_no'],search_data['receipt_nos'],search_data['from_receipt_no'],search_data['to_receipt_no'],search_data['search'],search_data['user_type'],search_data['del_status_id'],search_data['From'],search_data['to'],search_data['orderby'],search_data['order_type'],search_data['reg_mode'],search_data['pay_mode'],search_data['amount_from'],search_data['amount_to'],limit,offset,conf_id,society_id,search_data['role'],user_id)
for index,value in enumerate(output):
if index == 0:
data = value
if index == 1:
datas = value
if index == 2:
color = value
if index == 3:
payment_types = value
if index == 4:
addons = value
if index == 5:
role = value
if datas:
total_list = len(datas)
else:
total_list = 0
if is_export == True:
if data:
if conf['is_gen_number'] == 'ref_number':
export_columns = ["ref_no","name", "membership_no", "member_type", "total_amt", "remarks", "paid_at", "payment_method", "is_generate", "gender", "mobile", "email", "address","city", "state_name", "mc_number", "mc_state", "api_payment_id", "receipt_no", "reg_for", "parent_name", "parent_email", "parent_mobile", "accom_persons", "role", "delegate_remarks"]
col_name = ['Reference no', 'Name','Membership no', 'User Type', 'Amount','Remarks' , 'Paid on','Payment Method','Registered Mode','Gender', 'Mobile No.','Email Id' ,'Address','City','State','MCI Number','MCI State','Transaction Id','Receipt no','Registered For','Registered By ','Registered By Email Id','Registered By Mobile No.','accom_persons','role','delegate_remarks']
else:
export_columns = ["delegate_no","name", "membership_no", "member_type", "total_amt", "remarks", "paid_at", "payment_method", "is_generate", "gender", "mobile", "email", "address","city", "state_name", "mc_number", "mc_state", "api_payment_id", "receipt_no", "reg_for", "parent_name", "parent_email", "parent_mobile", "accom_persons", "role", "delegate_remarks"]
col_name = ['Delegate no', 'Name','Membership no', 'User Type', 'Amount','Remarks' , 'Paid on','Payment Method','Registered Mode','Gender', 'Mobile No.','Email Id' ,'Address','City','State','MCI Number','MCI State','Transaction Id','Receipt no','Registered For','Registered By ','Registered By Email Id','Registered By Mobile No.','accom_persons','role','delegate_remarks']
return ExportDownloadXSL(datas,export_columns,col_name,conf_key)
else:
flash("No Record Found !..")
html = render_template('trade/index/index_table.html' ,user_data = data ,offset=offset,conf_id=conf_id,conf_key=conf_key,conf=conf,payment_types=payment_types,search_data=search_data,limit=limit,page=page,dt_string=dt_string,str=str,int=int)
if total_list:
numpages = math.ceil(total_list/limit)
else:
numpages = 0
return render_template('trade/index/user_register.html' ,user_data= data,color=color,search_data=search_data,text_placeholder =text_placeholder,limit=limit,offset=offset,page=page,total_list=total_list,text_placeholder_receipt_nos=text_placeholder_receipt_nos,numpages=numpages,filter_visible = filter_visible ,table_val = html,conf=conf,payment_types=payment_types,addons=addons,str=str,del_status_id=del_status_id,role=role,user_id=user_id)
def conv_int(value):
try:
intval = int(value)
return intval
except:
return None
def conv_dele_no(value):
delegate_nos = None
from_del_no = None
to_del_no = None
if ',' in value or len(value) == 1 :
delegate_nos = value
elif '-' in value:
result = value.split('-')
if result and len(result)>0:
from_del_no = result[0] if result[0] else None
to_del_no = result[1] if result[1] else None
else:
delegate_nos = value
return delegate_nos,from_del_no,to_del_no
def conv_recepit_no(value):
receipt_nos = None
from_receipt_no = None
to_receipt_no = None
if ',' in value or len(value) == 1 :
receipt_nos = value
elif '-' in value:
result = value.split('-')
if result and len(result)>0:
from_receipt_no = result[0] if result[0] else None
to_receipt_no = result[1] if result[1] else None
else:
receipt_nos = value
return receipt_nos,from_receipt_no,to_receipt_no
def DownloadCSV(data,conf_key):
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
output = io.StringIO()
writer = csv.writer(output)
# writer = csv.writer(output,delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMA)
line = ['Delegate no', 'Name','Membership no', 'User Type', 'Amount','Remarks' , 'Paid on','Payment Method','Registered Mode','Gender', 'Mobile No.','Email Id' ,'Address','City','State','MCI Number','MCI State','Transaction Id','Receipt no','Registered For','Registered By ','Registered By Email Id','Registered By Mobile No.']
writer.writerow(line)
for row in data:
line = [row['delegate_no'] ,row['name'],row['membership_no'] , row['member_type'], row['total_amt'],row['remarks'],row['paid_at'],row['payment_method'], row['is_generate'],row['gender'] , row['mobile'], row['email'],row['address'], row['city'], row['state_name'], row['mc_number'],row['mc_state'],row['api_payment_id'], row['receipt_no'] ,row['reg_for'], row['parent_name'] , row['parent_email'] , row['parent_mobile']]
writer.writerow(line)
output.seek(0)
return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename="+str(conf_key)+"_Delegates_Report_"+str(date)+".csv"})
# Date : 07-07-2023 (ramya)
# Purpose : to export report Download in XSL format
def ExportDownloadXSL(data_name,export_columns,col_name,conf_key):
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
output = io.BytesIO()
Workbook = xlwt.Workbook()
sh = Workbook.add_sheet('Report')
idx = 0
a = 0
for row in col_name:
sh.write(0,a,row)
a+=1
b=0
sno_val = 0
for row in data_name:
for i in export_columns:
sh.write(idx+1, b, row[i])
b+=1
b=0
idx+=1
Workbook.save(output)
output.seek(0)
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+str(conf_key)+"_Delegates_Report_"+str(date)+".xls"})
@app.route('/bo_check_addons_new', methods = [ "GET","POST"])
def BoCheckAddonsNew():
now = datetime.now()
date = now.strftime("%Y-%m-%d %H:%M")
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf_id = request.values.get('conf_id',0)
conf_key = request.values.get('conf_key',0)
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
delegate_id = request.values.get('delegate_id') or 0
delegate_addons = BOModel().check_delegate_addons(delegate_id,conf_id)
addon_ids = delegate_addons['addon_ids']
reg_types = BOModel().get_addon_reg_type_for_modal(delegate_id,conf_id)
addons = BOModel().get_addons_pendings(delegate_id,curr_dt,conf_id,addon_ids)
return render_template('backoffice_user/addons_modal.html' , delegate_addons= delegate_addons,reg_types=reg_types,addons=addons,str=str,conf=conf)
@app.route('/<int:conf_id>/<conf_key>/bo/trade_edit_remarks',methods = ["POST"])
def TradeEditRemarks(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
payment_id = request.values.get('payment_id',None)
remarks = request.values.get('remarks',None)
del_status_id = request.values.get('del_status_id',None)
edit_remarks = BOModel().edit_remarks(payment_id,remarks)
flash("Updated Successfully....","successMsg")
return redirect(url_for('trade_reg.TradeIndex_user',conf_id=conf_id,conf_key=conf_key,del_status_id=del_status_id))
@app.route('/<int:conf_id>/<conf_key>/check_addons_new', methods = [ "GET","POST"])
def CheckAddonsNew(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
delegate_id = request.values.get('delegate_id',0)
delegate = BOModel().check_delegate_addons(delegate_id)
reg_types = BOModel().get_addon_reg_type_for_modal()
addons = BOModel().get_addonsBOModel(delegate_id,now,conf_id)
return render_template('backoffice_user/addons_modal.html' , delegate= delegate,reg_types=reg_types,addons=addons,str=str,conf=conf)
'''------------------------Back Office End -------------------------------------------------- '''
'''-------------- Pay Now Button Payment Proccess Starts ----------------------------------------------'''
@app.route('/<int:conf_id>/<conf_key>/bo/bo_payment', methods = ["GET","POST"])
@RouteGroup.conf_required
def BoPayment(conf_id,conf_key):
now = datetime.now()
created_at = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
submit_btn = request.values.get('sub_btn')
society_id = conf['society_id']
user_id = Auth.user(society_id)['user_id']
full_name = request.values.get('name')
email = request.values.get('email')
mobile = request.values.get('mobile')
delegate_ids = request.values.getlist('checklist')
show_msg = request.values.get('show_msg')
if len(full_name) == 0 or len(mobile) == 0 or len(email) == 0 :
flash("Please fill the data","Payerror")
return redirect(url_for('back_office.BoDelegate',conf_id=conf_id,conf_key=conf_key))
elif len(delegate_ids)> 0 :
state_id = UserModel().get_states()
output = UserModel().get_user(user_id,society_id,conf_id)
unique_id = now.strftime('%Y%m%d%H%M%S')
url = conf['paymentgateway_api_url']
r = requests.get(url)
apikey = json.loads(r.content.decode())
am_id = conf['paymentgateway_appmaster_id']
is_test = conf['paymentgateway_is_test']
for index,value in enumerate(apikey) :
api_am_id = value['am_id']
if api_am_id == am_id:
app_key = value['app_key']
app_name = value['app_name']
break
else:
pass
payment_for = app_name
unique_id = app_key+"_"+unique_id
delegate_ids = (",".join(delegate_ids))
app_type = Helper.AppType
if submit_btn == "Pay Now":
is_generate = 0
is_generate_link_payment = 0
usp_del_generate_payement = BOModel().usp_del_generate_payement(unique_id,delegate_ids,user_id,am_id,is_test,payment_for,is_generate,full_name,email,mobile,is_generate_link_payment,created_at,society_id,app_type,conf_id)
if usp_del_generate_payement :
return redirect(url_for('user.GeneratePostPayment',conf_id=conf_id,conf_key=conf_key,delegate_ids=delegate_ids,full_name=full_name,email=email,mobile=mobile,is_generate_link_payment=is_generate_link_payment))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
else:
is_generate = 1
is_generate_link_payment = 1
usp_del_generate_payement = BOModel().usp_del_generate_payement(unique_id,delegate_ids,user_id,am_id,is_test,payment_for,is_generate,full_name,email,mobile,is_generate_link_payment,created_at,society_id,app_type,conf_id)
if usp_del_generate_payement :
for delegate in usp_del_generate_payement:
payment_id = delegate['payment_id']
return redirect(url_for('user.GenerateDelegateMail',conf_id=conf_id,conf_key=conf_key,payment_id=payment_id,unique_id=unique_id,full_name=full_name,email=email,is_generate_link_payment=is_generate_link_payment,show_msg=show_msg))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoDelegate',conf_id=conf_id,conf_key=conf_key))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoDelegate',conf_id=conf_id,conf_key=conf_key))
'''-------------- Pay Now Button Payment Proccess Ends ----------------------------------------------'''
@app.route('/<int:conf_id>/<conf_key>/bo/trade_bo_post_offline_payment', methods = ["POST"])
@RouteGroup.conf_required
def TradeBoPostOfflinePayment(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
# regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
submit_btn = request.values.get('sub_btn')
delegate_ids = request.values.getlist('delegate_ids')
payment_method = request.values.get('method')
remarks = request.values.get('remarks')
receipt_mail = request.values.get('receipt_mail')
confimation_mail = request.values.get('confimation_mail')
txn_id = request.values.get('txn_id')
custom_email = request.values.get('custom_email')
paid_by = request.values.get('paid_by')
receipt_type = request.values.get('multiple_receipt')
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
society_id = conf['society_id']
auth_users = Auth.user(society_id)
if auth_users :
user_id = auth_users["user_id"]
full_name = auth_users["full_name"]
email = auth_users["email"]
mobile = auth_users["mobile"]
else :
flash("Invaild login" ,"errorMsg")
return redirect(url_for('back_office.Home',conf_id=conf_id,conf_key=conf_key))
if receipt_type == 'multiple_receipt':
del_list = list(map(int, delegate_ids[0].split(',')))
for delegate_id in del_list:
delegate = UserModel().get_delegate(delegate_id)
if paid_by :
full_name = paid_by
email = None
mobile = None
else:
name = delegate['full_name']
prefix = delegate['prefix']
full_name = prefix + " " + name if prefix else name
email = delegate['email']
mobile = delegate['mobile']
if len(custom_email) > 0 and custom_email is not None:
if paid_by :
full_name = paid_by
else :
full_name = None
email = custom_email
mobile = None
receipt_mail = 'receipt_mail'
new_datetime = now + timedelta(milliseconds=1)
unique_id = new_datetime.strftime('%Y%m%d%H%M%S%f')
now = datetime.now()
# Add 1 millisecond to the current datetime
created_at = now
url = conf['paymentgateway_api_url']
r = requests.get(url)
apikey = json.loads(r.content.decode())
am_id = conf['paymentgateway_appmaster_id']
is_test = conf['paymentgateway_is_test']
for index,value in enumerate(apikey) :
api_am_id = value['am_id']
if api_am_id == am_id:
app_key = value['app_key']
app_name = value['app_name']
break
else:
pass
payment_for = app_name
unique_id = app_key+"_"+unique_id
app_type = Helper.AppType
is_generate = 1
if payment_method == "Free": # return "free"
generate_payement = BOModel().usp_del_generate_free_payement(unique_id,delegate_id,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
else: # return "cash"
generate_payement = BOModel().usp_del_generate_cash_payement(unique_id,delegate_id,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
if generate_payement :
BoPaymentServerResponseLoop(conf_id,conf_key,user_id,unique_id,payment_method,receipt_mail,confimation_mail)
# return redirect(url_for('back_office.BoPaymentServerResponse',user_id=user_id,unique_id=unique_id,payment_method=payment_method,receipt_mail=receipt_mail,confimation_mail=confimation_mail,conf_id=conf_id,conf_key=conf_key))
incompleted_template = BOget_parent_incompleted_delegates(user_id,conf_id,conf_key)
data={
'status': 2,
'msg' : 'Registered Completed',
'incompleted_template':incompleted_template
}
# return redirect(url_for('back_office.BoPaymentServerResponse',user_id=user_id,unique_id=unique_id,payment_method=payment_method,receipt_mail=receipt_mail,confimation_mail=confimation_mail,conf_id=conf_id,conf_key=conf_key))
else :
flash("Please select atleast one delegate","Payerror")
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
return jsonify(data)
else:
if len(delegate_ids)> 0 :
del_list = str(delegate_ids).split(",")
if len(del_list) == 1:
delegate_id = delegate_ids[0]
delegate = UserModel().get_delegate(delegate_id)
if paid_by :
full_name = paid_by
email = None
mobile = None
else:
name = delegate['full_name']
prefix = delegate['prefix']
full_name = prefix + " " + name if prefix else name
email = delegate['email']
mobile = delegate['mobile']
else:
full_name = paid_by
if len(custom_email) > 0 and custom_email is not None:
if paid_by :
full_name = paid_by
else :
full_name = None
email = custom_email
mobile = None
receipt_mail = 'receipt_mail'
unique_id = now.strftime('%Y%m%d%H%M%S')
created_at = now
url = conf['paymentgateway_api_url']
r = requests.get(url)
apikey = json.loads(r.content.decode())
am_id = conf['paymentgateway_appmaster_id']
is_test = conf['paymentgateway_is_test']
for index,value in enumerate(apikey) :
api_am_id = value['am_id']
if api_am_id == am_id:
app_key = value['app_key']
app_name = value['app_name']
break
else:
pass
payment_for = app_name
unique_id = app_key+"_"+unique_id
delegate_ids = (",".join(delegate_ids))
app_type = Helper.AppType
is_generate = 1
if payment_method == "Free": # return "free"
generate_payement = BOModel().usp_del_generate_free_payement(unique_id,delegate_ids,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
else: # return "cash"
generate_payement = BOModel().usp_del_generate_cash_payement(unique_id,delegate_ids,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
if generate_payement :
return redirect(url_for('back_office.BoPaymentServerResponse',user_id=user_id,unique_id=unique_id,payment_method=payment_method,receipt_mail=receipt_mail,confimation_mail=confimation_mail,conf_id=conf_id,conf_key=conf_key))
else :
flash("Please select atleast one delegate","Payerror")
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key))
# updated at 2023-12-08 16:05 Sathosh G
@app.route('/<int:conf_id>/<conf_key>/payment_server_response_loop', methods = ["GET", "POST"])
# @RouteGroup.conf_required
def BoPaymentServerResponseLoop(conf_id,conf_key,user_id,unique_id,payment_method,receipt_mail,confimation_mail):
conf = Auth.getConf(conf_id,conf_key)
status = "success"
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
getData = BOModel().BOgetDataforPayments(unique_id,conf_id)
badge_table = conf['del_table_name']
# return "get data in call payment route"
if getData :
getData_1 = getData[0]
email = getData_1['email']
mobile = getData_1['mobile']
delegate_ids = getData_1['delegate_ids']
# role = getData_1['role'] or None
range_1 = getData_1['range_1'] or 1
amount = getData_1['amount'] or "0.00"
delegate_ids = delegate_ids.split(',')
data = {'status' : status,'updated_at' :dt_string,'paid_at' :dt_string,'payment_method':payment_method}
update_and_get_data = BOModel().updatePayment(unique_id,data,dt_string) # update payment status in your table
if update_and_get_data == "updated" and status =="success":
u = BOModel()
if len(delegate_ids) > 0 :
roles = []
for index,value in enumerate(getData) :
# del_id_1 = delegate_ids[index]
range_1 = value["range_1"]
role = value["role"]
roles.append(role)
roles = list(dict.fromkeys(roles))
i = 0
for role in roles:
generatedDelegates = BOModel().BOdelegate_no_generate(unique_id,conf_id,role)
i = i+ 1
# flash("Payment successful.","successMsg")
if generatedDelegates:
receipt_mail_sent = 0
for delegate in generatedDelegates:
delegate_id = delegate['delegate_id']
delegate_no = delegate['delegate_no']
# Code testing start
if len(delegate_ids) == 1:
if confimation_mail == "confimation_mail" and receipt_mail == "receipt_mail":
if payment_method and payment_method.lower() != "free":
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,email)
elif confimation_mail == "confimation_mail":
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,1,None)
if payment_method and payment_method.lower() != "free":
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
elif receipt_mail == "receipt_mail" and receipt_mail_sent == 0:
receipt_mail_sent = 1
# Added Status
if payment_method and payment_method.lower() != "free":
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],1,None)
else:
# Added Status
if payment_method and payment_method.lower() != "free":
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
else:
if confimation_mail == "confimation_mail":
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,1,None)
else:
pass
# Added Status
if payment_method and payment_method.lower() != "free":
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_mail == "receipt_mail" and receipt_mail_sent == 0:
receipt_mail_sent = 1
if receipt_datas:
# flash("An amount of Rs.{} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {}".format(amount,conf_name,email,receipt_no,delegate_nos),"successMsg")
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],1,None)
else:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],0,None)
else:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
r_data = generatedDelegates[0]
r_amount = r_data['total_amount']
conf_name = r_data['conf_name']
email = r_data['parent_email']
ref_nos = r_data['ref_nos']
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
r_amount = "Rs."+r_amount+"/-"
if int(session.get('showSuccessMsg',0)) == 0:
session["showSuccessMsg"] = 1
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(r_amount,email,receipt_no),"successMsg")
else:
confimation_mail_link = "/bo_view_confirmation_delegate_mail/"+str(conf_id)+"/"+str(conf_key)+"/"+str(delegate_id)
delegate_nos = delegate_no
delegate_no = '<a href="'+confimation_mail_link+'" target="_blank" >'+str(delegate_nos)+'</a>'
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+str(conf_key)+"/delegate_batch_print_from_reg?del_nos="+str(delegate_nos)+"&is_kit=1"
btn_link = '<a href="'+badge_print_url+'" target="_blank" > <i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,18,22,17,19,41,32,36,44,27,10,38]:
btn_link = btn_link
else:
btn_link = ""
if payment_method and payment_method.lower() != "free":
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Reference no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
else:
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Reference no(s). {} <br/> {}".format(r_amount,conf_name,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf_name,delegate_nos,btn_link),"successMsg")
session["showSuccessMsg"] = 0
else:
flash("An attempt to make the payment has failed. Please try again to make the payment. For any assistance, please click here to send an email to support","errorMsg")
society_id = conf['society_id']
Auth_user = Auth.user(society_id)
name = Auth_user['full_name'] or None
payment_method = "Paid by "+name
data = {'payment_method':payment_method}
update_and_get_data = TradeModel().updatePaymentTrade(unique_id,data) # update payment status in your table
if badge_table:
update_badge_data = BOModel().update_delegates_in_dele_badge(delegate_no,conf_id,badge_table,is_update=1) # 1 For Offline Registration
@app.route('/<int:conf_id>/<conf_key>/bo/bo_post_payment', methods = ["POST"])
@RouteGroup.conf_required
def BoPostPayment(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
society_id = conf['society_id']
submit_btn = request.values.get('sub_btn')
delegate_ids = request.values.getlist('checklist')
full_name = request.values.get('full_name')
email = request.values.get('email')
mobile = request.values.get('mobile')
unique_id = request.values.get('unique_id')
user_id = request.values.get('user_id')
payment_types = UserModel().get_payment_method(conf_id)
payment = payment_types[0]
payment_id = request.values.get('payment_id',0)
payment_type = payment['payment_type']
if len(delegate_ids)> 0 :
if submit_btn == "Pay Now":
if len(payment_types) == 1:
if payment_type == "PAYMENT GATEWAY":
return redirect(url_for('user.CallPayment',conf_id = conf_id,conf_key=conf_key,unique_id=unique_id))
else:
getData = UserModel().getDataforPayments(unique_id)
getData = getData[0]
amount = getData['amount']
payment_id = getData['payment_id']
delegate_id = delegate_ids
return render_template('users/make_payment.html',payment_type=payment_types,user_id=user_id,society_id=society_id,conf_id=conf_id,conf_key=conf_key,amount = amount,payment_id=payment_id,unique_id=unique_id,delegate_id=delegate_id,conf=conf,int=int,float=float)
# return render_template('users/make_payment_screen.html',user_id=user_id,payment_id=payment_id,image=image,encrypt_user_id=encrypt_user_id,unique_id=unique_id,payment_content=payment_content,payment_type=payment_type,member=member,society_id=society_id,society_key=society_key,step_no=step_no,utr_number=utr_number,userData=userData,societyData=societyData)
else:
getData = UserModel().getDataforPayments(unique_id)
getData = getData[0]
amount = getData['amount']
payment_id = getData['payment_id']
delegate_id = delegate_ids
return render_template('users/make_payment.html',payment_type=payment_types,user_id=user_id,society_id=society_id,conf_id=conf_id,conf_key=conf_key,amount = amount,payment_id=payment_id,unique_id=unique_id,delegate_id=delegate_id,conf=conf,int=int,float=float)
else:
return redirect(url_for('back_office.BoGeneratePostPayment',conf_id=conf_id,conf_key=conf_key,delegate_ids=delegate_ids,full_name=full_name,email=email,mobile=mobile))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/payment_server_response', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoPaymentServerResponse(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
status = "success"
user_id = request.values.get('user_id')
unique_id = request.values.get('unique_id')
payment_method = request.values.get('payment_method')
# return "success"
receipt_mail = request.values.get('receipt_mail')
confimation_mail = request.values.get('confimation_mail')
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
getData = BOModel().BOgetDataforPayments(unique_id,conf_id)
badge_table = conf['del_table_name']
# return "get data in call payment route"
if getData :
getData_1 = getData[0]
email = getData_1['email']
mobile = getData_1['mobile']
delegate_ids = getData_1['delegate_ids']
# role = getData_1['role'] or None
range_1 = getData_1['range_1'] or 1
amount = getData_1['amount'] or "0.00"
delegate_ids = delegate_ids.split(',')
data = {'status' : status,'updated_at' :dt_string,'paid_at' :dt_string,'payment_method':payment_method}
update_and_get_data = BOModel().updatePayment(unique_id,data,dt_string) # update payment status in your table
if update_and_get_data == "updated" and status =="success":
u = BOModel()
if len(delegate_ids) > 0 :
roles = []
for index,value in enumerate(getData) :
# del_id_1 = delegate_ids[index]
range_1 = value["range_1"]
role = value["role"]
roles.append(role)
# if conf_id == 1 :
# generatedDelegates = BOModel().BOSpecificDelegateNoGenerate(unique_id,conf_id,range_1,role,del_id_1)
# else :
# generatedDelegates = BOModel().BOdelegate_no_generate(unique_id,conf_id)
roles = list(dict.fromkeys(roles))
i = 0
for role in roles:
generatedDelegates = BOModel().BOdelegate_no_generate(unique_id,conf_id,role)
i = i+ 1
flash("Payment successful.","successMsg")
if generatedDelegates:
ref_nos = []
delegate_nos = []
receipt_mail_sent = 0
for delegate in generatedDelegates:
delegate_id = delegate['delegate_id']
delegate_no = delegate['delegate_no']
ref_no = delegate['ref_no']
if ref_no:
ref_nos.append(ref_no)
if delegate_no:
delegate_nos.append(delegate_no)
# Code testing start
if len(delegate_ids) == 1:
if confimation_mail == "confimation_mail" and receipt_mail == "receipt_mail":
if payment_method and payment_method.lower() != "free":
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,email)
elif confimation_mail == "confimation_mail":
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,1,None)
if payment_method and payment_method.lower() != "free":
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
elif receipt_mail == "receipt_mail" and receipt_mail_sent == 0:
receipt_mail_sent = 1
# Added Status
if payment_method and payment_method.lower() != "free":
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],1,None)
else:
# Added Status
if payment_method and payment_method.lower() != "free":
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
else:
if confimation_mail == "confimation_mail":
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,1,None)
else:
pass
# Added Status
if payment_method and payment_method.lower() != "free":
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_mail == "receipt_mail" and receipt_mail_sent == 0:
receipt_mail_sent = 1
if receipt_datas:
# flash("An amount of Rs.{} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {}".format(amount,conf_name,email,receipt_no,delegate_nos),"successMsg")
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],1,None)
else:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],0,None)
else:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
# code testing end
# if len(delegate_ids) == 1:
# if confimation_mail == "confimation_mail" and receipt_mail == "receipt_mail":
# BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,email)
# else:
# receipt_datas = u.receipt_no_generate_and_get(unique_id,conf_id)
# BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
# else:
# if confimation_mail == "confimation_mail":
# BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,1,None)
# else:
# pass
# receipt_datas = u.receipt_no_generate_and_get(unique_id,conf_id)
# if receipt_mail == "receipt_mail":
# if receipt_datas:
# # flash("An amount of Rs.{} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {}".format(amount,conf_name,email,receipt_no,delegate_nos),"successMsg")
# BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],1,None)
# else:
# BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_datas[0],0,None)
# else:
# BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
if ref_no:
ref_nos = str(ref_nos).replace("['",'').replace("']",'').replace("'",'')
if delegate_no:
delegate_nos = str(delegate_nos).replace("[",'').replace("]",'')
r_data = generatedDelegates[0]
r_amount = r_data['total_amount']
conf_name = r_data['conf_name']
email = r_data['parent_email']
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
r_amount = "Rs."+r_amount+"/-"
# flash("An amount of Rs.{} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
if int(session.get('showSuccessMsg',0)) == 0:
session["showSuccessMsg"] = 1
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(r_amount,email,receipt_no),"successMsg")
else:
confimation_mail_link = "/bo_view_confirmation_delegate_mail/"+str(conf_id)+"/"+str(conf_key)+"/"+str(delegate_id)
delegate_nos = delegate_no
delegate_no = '<a href="'+confimation_mail_link+'" target="_blank" >'+str(delegate_nos)+'</a>'
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+str(conf_key)+"/delegate_batch_print_from_reg?del_nos="+str(delegate_nos)+"&is_kit=1"
btn_link = '<a href="'+badge_print_url+'" target="_blank" > <i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,18,22,17,19,41,32,36,44,27,10,38]:
btn_link = btn_link
else:
btn_link = ""
if payment_method and payment_method.lower() != "free":
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Reference no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
else:
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Reference no(s). {} <br/> {}".format(r_amount,conf_name,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf_name,delegate_nos,btn_link),"successMsg")
session["showSuccessMsg"] = 0
else:
flash("An attempt to make the payment has failed. Please try again to make the payment. For any assistance, please click here to send an email to support","errorMsg")
# badge_data = MoveDelegateDataToBadge(conf_id,conf_key)
if badge_table:
update_badge_data = BOModel().update_delegates_in_dele_badge(delegate_no,conf_id,badge_table,is_update=1) # 1 For Offline Registration
incompleted_template = BOget_parent_incompleted_delegates(user_id,conf_id,conf_key)
data={
'status': 2,
'msg' : 'Registered Completed',
'incompleted_template':incompleted_template
}
return jsonify(data)
def MoveDelegateDataToBadge(conf_id,conf_key):
url = 'https://conference.numerotech.com/'+str(conf_id)+'/'+conf_key+'/move_delegates'
r = requests.get(url)
return "true"
@app.route('/<int:conf_id>/<conf_key>/<parent_user_id>/bo_get_parent_incompleted_delegates', methods = ["GET", "POST"])
def BOget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
unique_id = None
society_id = conf['society_id']
payment_types = BOModel().get_payment_types(conf_id)
delegateData = BOModel().get_incompleted_delegates_by_parent_user_id(parent_user_id,unique_id,conf_id,reg_mode=1)
if delegateData:
total_amount = 0
for index , value in enumerate(delegateData):
total_amount = total_amount + (value['total_amt'] if value['total_amt'] is not None else 0)
del_html_data = render_template('offlines/incompleted_information.html' ,user_data = delegateData,user_id = parent_user_id,conf_id =conf_id,conf_key=conf_key,total_amount=total_amount,conf=conf,payment_types=payment_types)
else:
del_html_data = ""
return del_html_data
@app.route('/<int:conf_id>/<conf_key>/spot_common_payment_server_response', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoSpotCommonPaymentServerResponse(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
status = "success"
success_msg = ''
user_id = request.values.get('user_id')
unique_id = request.values.get('unique_id')
payment_method = request.values.get('payment_method')
role = request.values.get('role')
register_id = request.values.get('register_id')
# return "success"
confirmation_mail = request.values.get('confirmation_mail') # added confirmation_mail
receipt_mail = request.values.get('receipt_mail') # added receipt_mail
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
getData = BOModel().BOgetDataforPayments(unique_id,conf_id)
# return "get data in call payment route"
if getData :
getData_1 = getData[0]
email = getData_1['email']
mobile = getData_1['mobile']
delegate_ids = getData_1['delegate_ids']
# role = getData_1['role'] or None
range_1 = getData_1['range_1'] or 1
amount = getData_1['amount'] or "0.00"
r_amount = amount
delegate_ids = delegate_ids.split(',')
data = {'status' : status,'updated_at' :dt_string,'paid_at' :dt_string,'payment_method':payment_method}
update_and_get_data = BOModel().updatePayment(unique_id,data,dt_string) # update payment status in your table
if update_and_get_data == "updated" and status =="success":
roles = []
for index,value in enumerate(getData) :
range_1 = value["range_1"]
role = value["role"]
roles.append(role)
roles = list(dict.fromkeys(roles))
i = 0
for role in roles:
generatedDelegates = BOModel().BOdelegate_no_generate(unique_id,conf_id,role)
i = i+ 1
if generatedDelegates:
for delegate in generatedDelegates:
delegate_id = delegate['delegate_id']
delegate_no = delegate['delegate_no']
ref_no = delegate['ref_no']
badge_table = conf['del_table_name']
if register_id :
self_spot_entry_update = SpotRegModel().update_completed_registered_delegates(register_id,delegate_no,conf_id)
else :
pass
if badge_table:
update_badge_data = BOModel().update_delegates_in_dele_badge(delegate_no,conf_id,badge_table,is_update=2) # 2 For Spot Registration
status = 1
if confirmation_mail == "confirmation_mail" and receipt_mail == "receipt_mail":
if payment_method and payment_method.lower() != "free":
success_msg = BoSpotConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,email)
elif confirmation_mail == "confirmation_mail" :
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,None)
if payment_method and payment_method.lower() != "free":
success_msg = BoSpotConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
elif receipt_mail == "receipt_mail":
# Added Status
if payment_method and payment_method.lower() != "free":
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,1,None)
success_msg = BoSpotConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
else:
# Added Status
if payment_method and payment_method.lower() != "free":
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
success_msg = BoSpotConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,0,email)
else:
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
r_amount = "Rs."+r_amount+"/-"
confimation_mail_link = "/bo_view_confirmation_delegate_mail/"+str(conf_id)+"/"+str(conf_key)+"/"+str(delegate_id)
delegate_nos = delegate_no
delegate_no = '<a href="'+confimation_mail_link+'" target="_blank" >'+str(delegate_nos)+'</a>'
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+str(conf_key)+"/delegate_batch_print_from_reg?del_nos="+str(delegate_nos)+"&is_kit=1"
btn_link = '<a href="'+badge_print_url+'" target="_blank" > <i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,18,22,17,19,41,32,36,44,27,10,38]:
btn_link = btn_link
else:
btn_link = ""
if conf['is_gen_number'] == 'ref_number':
success_msg = "An amount of {} has been made towards {} registration.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Reference no(s). {} <br/> {}".format(r_amount,conf['conf_name'],ref_no,btn_link)
else:
success_msg = "An amount of {} has been made towards {} registration.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf['conf_name'],delegate_no,btn_link)
if success_msg:
success_msg = success_msg
else:
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
r_amount = "Rs."+r_amount+"/-"
confimation_mail_link = "/bo_view_confirmation_delegate_mail/"+str(conf_id)+"/"+str(conf_key)+"/"+str(delegate_id)
delegate_nos = delegate_no
delegate_no = '<a href="'+confimation_mail_link+'" target="_blank" >'+str(delegate_nos)+'</a>'
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+str(conf_key)+"/delegate_batch_print_from_reg?del_nos="+str(delegate_nos)+"&is_kit=1"
btn_link = '<a href="'+badge_print_url+'" target="_blank" > <i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,18,22,17,19,41,32,36,44,27,10,38]:
btn_link = btn_link
else:
btn_link = ""
if conf['is_gen_number'] == 'ref_number':
success_msg = "An amount of {} has been made towards {} registration.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Reference no(s). {} <br/> {}".format(r_amount,conf['conf_name'],ref_no,btn_link)
else:
success_msg = "An amount of {} has been made towards {} registration.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf['conf_name'],delegate_no,btn_link)
else:
status = 0
success_msg = "Failed"
data={
'status' : status,
'success_msg' : success_msg,
'msg' :'Registered Completed'
}
return jsonify(data)
@app.route('/bo/bo_spot_confirmation_and_receipt_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
# @RouteGroup.bo_trade_login_required
def BoSpotConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,receipt_data,is_send,email):
conf = Auth.getConf(conf_id,conf_key)
template_name = "confirmation_and_receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
del_table_name = None
otp_1 = None
if conf :
del_table_name = conf["del_table_name"]
if receipt_data is None :
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
if email:
email = email
else:
email = receipt_data['email']
# email = 'sai@numerotec.com'
receipt_no = receipt_data['receipt_no']
r_amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
is_kit = receipt_data['d_is_kit']
company_name = receipt_data['d_company_name']
payment_method = receipt_data['payment_method']
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
amount_with_commas = r_amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if r_amount == "Free" :
r_amount = r_amount
else:
r_amount = "Rs."+r_amount+"/-"
delegate = None
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
# email = delegate['email']
# parent_email = delegate['parent_email']
delegate_no = delegate['delegate_no']
c_amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
########### Ganesan Nov 25 ,2022
# add kit counter for session map
del_table_name = conf["del_table_name"]
if del_table_name :
kc_del_sess_table = conf["kc_del_session_table_name"]
fc_del_sess_table = conf["fc_del_session_table_name"]
if is_kit and int(is_kit) > 0 :
session_table = "numerotech_foodkit.kc_sessions"
del_ses_table = kc_del_sess_table
else :
session_table = "numerotech_foodkit.fc_sessions"
del_ses_table = fc_del_sess_table
del_id_int = int(delegate_no)
insert_session = BOModel().sessionMapSpotReg(conf_id,del_id_int,del_table_name,kc_del_sess_table,fc_del_sess_table)
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+str(conf_key)+"/delegate_batch_print_from_reg?del_nos="+str(delegate_nos)+"&is_kit="+str(is_kit)
btn_link = '<a href="'+badge_print_url+'" target="_blank" > <i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,18,22,17,19,41,32,36,44,27,10,38]:
btn_link = btn_link
else:
btn_link = ""
# if del_table_name and conf_id == 12 :
# otp_1 = BOModel().getOTPforConfirmationMail(delegate_no,conf_id,del_table_name)
# else :
# pass
if otp_1 :
otp = otp_1["otp"]
else:
otp = None
confimation_mail_link = "/bo_view_confirmation_delegate_mail/"+str(conf_id)+"/"+str(conf_key)+"/"+str(delegate_id)
delegate_no = '<a href="'+confimation_mail_link+'" target="_blank" >'+delegate_nos+'</a>'
# Added Status
if payment_method and payment_method.lower() != "free":
success_msg = "An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,delegate_no,btn_link)
# subject = "Confirmation and Receipt Mail for Delegate Registration."
subject = "Confirmation and Receipt Mail for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
else :
success_msg = "An amount of {} has been made towards {} registration.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf_name,delegate_no,btn_link)
# subject = "Confirmation Mail for Delegate Registration."
subject = "Confirmation of registration - {}".format(delegate_no)
html = render_template('email/confirmation_and_receipt_mail.html',delegate=delegate,delegate_id=delegate_id,receipt_data=receipt_data,conf_id=conf_id,conf_key=conf_key ,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas,conf=conf,otp=otp)
if is_send == 1:
if conf['is_email_enable'] == 1:
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
return success_msg
else:
return success_msg
else:
return success_msg
return html
@app.route('/bo_receipt_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_data,is_send,email):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
if receipt_data is None :
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
if email:
email = email
else:
email = receipt_data['email']
receipt_no = receipt_data['receipt_no']
delegate_id = receipt_data['delegate_ids']
amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
ref_nos = receipt_data['ref_nos']
if str(amount) == "0.00":
amount = "Free"
else:
amount = int(amount)
amount = f"{amount:,}"
amount_with_commas = amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if amount == "Free" :
amount = amount
else:
amount = "Rs."+amount+"/-"
update_data = {
'amount_with_commas':amount_with_commas,
'amount_in_words':amount_in_words
}
receipt_data.update(update_data)
sub_data = {
'receipt_no':str(receipt_no),'amount':str(amount)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content': mailData['mail_content'],'receipt_data': receipt_data,'conf': conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
btn_link = ""
if delegate_nos :
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+conf_key+"/delegate_batch_print_from_reg?del_nos="+delegate_nos
btn_link = '<a href="'+badge_print_url+'" target="_blank" ><i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,41,44,10,38]:
btn_link = btn_link
else:
btn_link = ""
if int(session.get('showSuccessMsg',0)) == 0:
session["showSuccessMsg"] = 1
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(amount,email,receipt_no),"successMsg")
else:
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Reference no(s). {} <br/> {}".format(amount,conf_name,email,receipt_no,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
html = render_template('email/receipt_email_v1.html',mail_content=mail_content,conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 1
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf['backup_email_2']:
EMAIL.MailTemplateSendMail(subject,html,conf['backup_email_2'],mailData,conf)
return html
@app.route('/bo_sample_receipt_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoSampleReceiptDelegagteMail(conf_id,conf_key,unique_id,receipt_data,is_send,email):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
if receipt_data is None :
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
if email:
email = email
else:
email = receipt_data['email']
receipt_no = receipt_data['receipt_no']
delegate_id = receipt_data['delegate_ids']
amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
if str(amount) == "0.00":
amount = "Free"
else:
amount = int(amount)
amount = f"{amount:,}"
amount_with_commas = amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if amount == "Free" :
amount = amount
else:
amount = "Rs."+amount+"/-"
update_data = {
'amount_with_commas':amount_with_commas,
'amount_in_words':amount_in_words
}
receipt_data.update(update_data)
sub_data = {
'receipt_no':str(receipt_no),'amount':str(amount)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content': mailData['mail_content'],'receipt_data': receipt_data,'conf': conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+conf_key+"/delegate_batch_print_from_reg?del_nos="+delegate_nos
btn_link = '<a href="'+badge_print_url+'" target="_blank" ><i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,41,44,10,38]:
btn_link = btn_link
else:
btn_link = ""
if int(session.get('showSuccessMsg',0)) == 0:
session["showSuccessMsg"] = 1
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(amount,email,receipt_no),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
html = render_template('email/receipt_email_v1.html',mail_content=mail_content,conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 0
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf['backup_email_2']:
EMAIL.MailTemplateSendMail(subject,html,conf['backup_email_2'],mailData,conf)
return html
@app.route('/bo_confirmation_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
def BoConfirmationDelegateMailURL(conf_id,conf_key,delegate_id):
return BoConfirmationDelegateMail(conf_id,conf_key,delegate_id)
@RouteGroup.conf_required
def BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate=None,is_send=None,email=None):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "confirmation_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
if email:
email = email
else:
email = delegate['email']
parent_email = delegate['parent_email']
# parent_email = 'karthiashokan23@gmail.com'
delegate_no = delegate['delegate_no']
amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
sub_data = {
'delegate_no':str(delegate_no)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'delegate' : delegate,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html = render_template('email/confirmation_mail_v1.html',mail_content=mail_content,conf=conf)
tricon_subject = "Book your Accommodation for TRICON now!"
tricon_tnoa_23_html = render_template('email/tricon_tnoa_23_accommodation_mail.html',conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 1
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf['backup_email_2']:
EMAIL.MailTemplateSendMail(subject,html,conf['backup_email_2'],mailData,conf)
if email != parent_email:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,parent_email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 1
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf_id == 17:
EMAIL.MailTemplateSendMail(tricon_subject,tricon_tnoa_23_html,email,mailData,conf)
else:
return html
else :
return None
'''------------------------ Offine Registartion in Back Office End ----------------------------------------'''
@app.route('/bo_generate_confirmation_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoGenerateConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,is_send):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "confirmation_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
email = delegate['email']
# email = 'karthiashokan23@gmail.com'
parent_email = delegate['parent_email']
# parent_email = 'karthiashokan23@gmail.com'
delegate_no = delegate['delegate_no']
amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
sub_data = {
'delegate_no':str(delegate_no)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'delegate' : delegate,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html = render_template('email/confirmation_mail_v1.html',mail_content=mail_content,conf=conf)
tricon_subject = "Book your Accommodation for TRICON now!"
tricon_tnoa_23_html = render_template('email/tricon_tnoa_23_accommodation_mail.html',conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 0
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if email != parent_email:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,parent_email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 0
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf_id == 17:
EMAIL.MailTemplateSendMail(tricon_subject,tricon_tnoa_23_html,email,mailData,conf)
else:
return html
else :
return None
@app.route('/trade_view_confirmation_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def TradeViewConfirmationDelegateMail(conf_id,conf_key,delegate_id):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "confirmation_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
email = delegate['email']
# email = 'karthiashokan23@gmail.com'
parent_email = delegate['parent_email']
# parent_email = 'karthiashokan23@gmail.com'
delegate_no = delegate['delegate_no']
amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
title = "View Confimation Mail"
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
sub_data = {
'delegate_no':str(delegate_no)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'delegate' : delegate,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html_data = render_template('email/confirmation_mail_v1.html',mail_content=mail_content,conf=conf)
html = render_template('trade/index/view_confirmation.html',delegate=delegate,conf_id=conf_id,conf_key=conf_key,delegate_id=delegate_id,conf=conf,subject=subject,html_data=html_data,title=title)
return html
else :
return None
@app.route('/bo_view_receipl_delegate_mail/<int:conf_id>/<conf_key>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewReceiptDelegagteMail(conf_id,conf_key,unique_id):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
email = receipt_data['email']
# email = 'karthiashokan23@gmail.com'
receipt_no = receipt_data['receipt_no']
amount = receipt_data['amount']
# return amount
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
title = "View Receipt Mail"
if str(amount) == "0.00":
amount = "Free"
else:
amount = int(amount)
amount = f"{amount:,}"
amount_with_commas = amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if amount == "Free" :
amount = amount
else:
amount = "Rs."+amount+"/-"
update_data = {
'amount_with_commas':amount_with_commas,
'amount_in_words':amount_in_words
}
receipt_data.update(update_data)
sub_data = {
'receipt_no':str(receipt_no),'amount':str(amount)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content': mailData['mail_content'],'receipt_data': receipt_data,'conf': conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html_data = render_template('email/receipt_email_v1.html',mail_content=mail_content,conf=conf)
html = render_template('email/view_receipt_email.html',receipt_data=receipt_data,conf_id=conf_id,conf_key=conf_key ,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas,conf=conf,unique_id=unique_id,subject=subject,html_data=html_data)
return html
@app.route('/bo_send_confirmation_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
def BoSendConfirmationDelegateMail(conf_id,conf_key,delegate_id):
email = request.values.get('sample_email',None)
BoSampleConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,email)
return "Confirmation mail sent Successful"
@app.route('/bo_send_receipl_delegate_mail/<int:conf_id>/<conf_key>/<unique_id>', methods = ["GET", "POST"])
def BoSendReceiptDelegagteMail(conf_id,conf_key,unique_id):
email = request.values.get('sample_email',None)
if email:
BoSampleReceiptDelegagteMail(conf_id,conf_key,unique_id,None,1,email)
else:
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,1,email)
return "Receipt mail sent Successful"
# updated on 06 Oct 2022
# @app.route('/<int:conf_id>/<conf_key>/bo_reg_report_view', methods = ["GET", "POST"])
# @RouteGroup.conf_required
# def BORegReportView(conf_id,conf_key):
# conf = Auth.getConf(conf_id,conf_key)
# today_count = 0
# total_count = 0
# today_paid_amount = 0
# total_paid_amount = 0
# today_del_count = 0
# total_del_count = 0
# dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
# date_1 = request.values.get("date",None)
# current_dt = datetime.now() - timedelta(1)
# yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
# base_url = request.host_url
# if "https" in base_url :
# pass
# else :
# base_url = base_url.replace("http" ,"https")
# if date_1 :
# previous_date = date_1
# else :
# yesterday = datetime.now() - timedelta(1)
# yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
# previous_date = yesterday
# reg_data = BOModel().GetRegDataForMail(previous_date,conf_id)
# if reg_data :
# for index, value in enumerate(reg_data):
# addon_type_id = value["addon_type_id"]
# today_count = today_count+value['today_count']
# total_count = total_count+value['total_count']
# today_paid_amount = today_paid_amount+value['today_paid_amount']
# total_paid_amount = total_paid_amount+value['total_paid_amount']
# if addon_type_id == 1:
# today_del_count = today_del_count+value['today_count']
# total_del_count = total_del_count+value['total_count']
# return render_template('email/reg_report_email.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url)
# else :
# return "Registration record not exists."
@app.route('/<int:conf_id>/<conf_key>/daily_count_delegate_mail', methods = ["GET", "POST"])
@RouteGroup.conf_required
def DailyCountDelegateMail(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
if conf :
send_manual = request.values.get('send_manual',None)
date_1 = request.values.get("date",None)
reg_end_on = conf['reg_end_on']
current_tm = datetime.now()
dt_string = current_tm.strftime("%Y-%m-%d %I:%M %p")
# print("CRON JOB Executed at " + dt_string)
next_day = reg_end_on + timedelta(days=2)
# next_day = "2021-05-30"
# next_day = datetime.strptime(next_day, '%Y-%m-%d').date()
if send_manual and int(send_manual) > 0 :
DelegateReportSendMail(conf_id,conf_key,date_1)
return "Mail sent Successful."
else :
if next_day > current_tm :
if (current_tm.hour == 5 and current_tm.minute > 45) or (current_tm.hour == 6 and current_tm.minute < 25):
print("Time match - " + dt_string)
# if ( current_tm.hour == 9 or current_tm.hour == 10 ):
DelegateReportSendMail(conf_id,conf_key,date_1)
return "Mail sent Successful."
else:
print("Time not match - " + dt_string)
return ( dt_string +" Time not match ")
else:
return "Registration closed"
else :
return "Invalid conf-id or conf-key"
# def DelegateReportSendMail(conf_id,conf_key,date_1):
# conf = Auth.getConf(conf_id,conf_key)
# mailData = None
# row_val = []
# today_count = 0
# total_count = 0
# today_paid_amount = 0
# total_paid_amount = 0
# today_del_count = 0
# total_del_count = 0
# current_dt = datetime.now() - timedelta(1)
# yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
# base_url = request.host_url
# if "https" in base_url :
# pass
# else :
# base_url = base_url.replace("http" ,"https")
# if date_1 :
# previous_date = date_1
# else :
# yesterday = datetime.now() - timedelta(1)
# yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
# previous_date = yesterday
# users = BOModel().get_daily_count_send_mail(conf_id,conf_key)
# dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
# if users :
# reg_data = BOModel().GetRegDataForMail(previous_date,conf_id)
# for index, value in enumerate(reg_data):
# addon_type_id = value["addon_type_id"]
# today_count = today_count+value['today_count']
# total_count = total_count+value['total_count']
# today_paid_amount = today_paid_amount+value['today_paid_amount']
# total_paid_amount = total_paid_amount+value['total_paid_amount']
# if addon_type_id == 1:
# today_del_count = today_del_count+value['today_count']
# total_del_count = total_del_count+value['total_count']
# if reg_data :
# html = render_template('email/reg_report_email.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url)
# subject = conf['conf_name']+"- Delegate Registration Count as on {}".format(dt_string)
# for index,value in enumerate(users):
# receiver_email = value['email']
# receiver_mobile = value['mobile']
# receiver_name = value['full_name']
# created_at = datetime.now()
# # call here send mail function
# EMAIL.MailTemplateSendMail(subject,html,receiver_email,mailData,conf)
# # EMAIL.sendMail(subject,html,receiver_email,conf)
# stmt_1 =('''INSERT INTO send_mail_index ( conf_id,receiver_name,receiver_email,receiver_mobile,mail_send_at,created_at) VALUES ''')
# row_val.append(('(' + ''''{}','{}',"{}",'{}','{}','{}' ''' +')').format(conf_id,receiver_name,receiver_email,receiver_mobile,created_at,created_at))
# stmt_1 = stmt_1 + ",".join(row_val)
# stmt_1 = stmt_1 + ';'
# BOModel().save_delegate_report_sendmail(stmt_1)
# return "success"
# else :
# return "Report data is not available."
@app.route('/bo_send_confirmation_and_receipl_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
def BoSendConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id):
email = request.values.get('sample_email',None)
if email:
BoSampleConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,email)
else:
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,email)
return "Confirmation and Receipt mail sent Successful"
@app.route('/bo_view_confirmation_and_receipt_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id):
conf = Auth.getConf(conf_id,conf_key)
del_table_name = None
otp_1 = None
if conf :
del_table_name = conf["del_table_name"]
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
email = receipt_data['email']
# email = 'sai@numerotec.com'
receipt_no = receipt_data['receipt_no']
r_amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
if not r_amount :
r_amount = "0.00"
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
amount_with_commas = r_amount
if r_amount == "Free" :
amount_in_words = "Free"
else :
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if r_amount == "Free" :
r_amount = r_amount
else:
r_amount = "Rs."+r_amount+"/-"
delegate = None
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
# email = delegate['email']
# parent_email = delegate['parent_email']
delegate_no = delegate['delegate_no']
c_amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(c_amount) == "0.00":
c_amount = "Free"
else:
c_amount = "Rs."+str(c_amount)
# Code updated by Ganesan on Dec 09 ,2022 for karavali 2022 pedicon conference
# if del_table_name and conf_id == 12 :
# otp_1 = BOModel().getOTPforConfirmationMail(delegate_no,conf_id,del_table_name)
# else :
# pass
if otp_1 :
otp = otp_1["otp"]
else:
otp = None
# subject = "Receipt #{} for delegate registration ({})".format(receipt_no,r_amount)
subject = "Receipt #{} - Confirmation and Receipt Mail for Delegate Registration.".format(receipt_no)
html_data = render_template('email/confirmation_and_receipt_mail.html',delegate=delegate,delegate_id=delegate_id,receipt_data=receipt_data,conf_id=conf_id,conf_key=conf_key ,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas,conf=conf,otp=otp)
html = render_template('email/view_confirmation_and_receipt_email.html',conf_id=conf_id,conf_key=conf_key ,conf=conf,delegate_id=delegate_id,unique_id=unique_id,subject=subject,delegate=delegate,html_data=html_data)
return html
@app.route('/bo/bo_confirmation_and_receipt_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,receipt_data,is_send,email):
conf = Auth.getConf(conf_id,conf_key)
template_name = "confirmation_and_receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
del_table_name = None
otp_1 = None
if conf :
del_table_name = conf["del_table_name"]
if receipt_data is None :
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
receipt_no = receipt_data['receipt_no']
r_amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
ref_nos = receipt_data['ref_nos']
payment_method = receipt_data['payment_method']
if not r_amount :
r_amount = "0.00"
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
amount_with_commas = r_amount
if r_amount == "Free" :
amount_in_words = "Free"
amount_for_convertion = None
else :
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if r_amount == "Free" :
r_amount = r_amount
else:
r_amount = "Rs."+r_amount+"/-"
delegate = None
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
if email:
email = email
else:
email = delegate['email']
# email = delegate['email']
# parent_email = delegate['parent_email']
delegate_no = delegate['delegate_no']
c_amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
# subject = "Receipt #{} for delegate registration ({})".format(receipt_no,r_amount)
if conf['is_gen_number'] == 'ref_number':
badge_print_url = ""
else:
# badge_print_url = ""
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+str(conf_key)+"/delegate_batch_print_from_reg?del_nos="+delegate_nos
btn_link = '<a href="'+badge_print_url+'" target="_blank" ><i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,1,16,41,44,10,38]:
btn_link = btn_link
else:
btn_link = ""
if int(session.get('showSuccessMsg',0)) == 0:
session["showSuccessMsg"] = 1
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(r_amount,email,receipt_no),"successMsg")
else:
if payment_method and payment_method.lower() != "free":
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Reference no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
else:
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Reference no(s). {} <br/> {}".format(r_amount,conf_name,email,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,delegate_nos,btn_link),"successMsg")
# Code updated by Ganesan on Dec 09 ,2022 for karavali 2022 pedicon conference
# if del_table_name and conf_id == 12 :
# otp_1 = BOModel().getOTPforConfirmationMail(delegate_no,conf_id,del_table_name)
# else :
# pass
if otp_1 :
otp = otp_1["otp"]
else:
otp = None
# Added Status
is_gen_number = conf['is_gen_number']
if payment_method and payment_method.lower() != "free":
if is_gen_number == 'ref_number':
subject = "Confirmation for Delegate Registration - " + name + " ("+ str(ref_no) + ")."
else:
subject = "Confirmation and Receipt Mail for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
else:
if is_gen_number == 'ref_number':
subject = "Confirmation for Delegate Registration - " + name + " ("+ str(ref_no) + ")."
else:
subject = "Confirmation for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
# subject = "Confirmation and Receipt Mail for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
html = render_template('email/confirmation_and_receipt_mail.html',delegate=delegate,delegate_id=delegate_id,receipt_data=receipt_data,conf_id=conf_id,conf_key=conf_key ,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas,conf=conf,otp=otp)
tricon_subject = "Book your Accommodation for TRICON now!"
tricon_tnoa_23_html = render_template('email/tricon_tnoa_23_accommodation_mail.html',conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 1
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf_id == 17:
EMAIL.MailTemplateSendMail(tricon_subject,tricon_tnoa_23_html,email,mailData,conf)
else:
return html
return html
@app.route('/bo/bo_sample_confirmation_and_receipt_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoSampleConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,receipt_data,is_send,email):
conf = Auth.getConf(conf_id,conf_key)
template_name = "confirmation_and_receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
del_table_name = None
otp_1 = None
if conf :
del_table_name = conf["del_table_name"]
if receipt_data is None :
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
if receipt_datas:
receipt_data = receipt_datas[0]
if receipt_data:
receipt_no = receipt_data['receipt_no']
r_amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
ref_nos = receipt_data['ref_nos']
payment_method = receipt_data['payment_method']
if not r_amount :
r_amount = "0.00"
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
amount_with_commas = r_amount
if r_amount == "Free" :
amount_in_words = "Free"
else :
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if r_amount == "Free" :
r_amount = r_amount
else:
r_amount = "Rs."+r_amount+"/-"
delegate = None
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
if email:
email = email
else:
email = delegate['email']
# email = delegate['email']
# parent_email = delegate['parent_email']
delegate_no = delegate['delegate_no']
c_amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
# subject = "Receipt #{} for delegate registration ({})".format(receipt_no,r_amount)
if conf['is_gen_number'] == 'ref_number':
badge_print_url = ""
else:
badge_print_url = "https://conference.numerotech.com/"+str(conf_id)+"/"+conf_key+"/delegate_batch_print_from_reg?del_nos="+delegate_nos
btn_link = '<a href="'+badge_print_url+'" target="_blank" ><i class ="fa fa-print fa-1x"></i> <span aria-hidden="true" title="Print Badge">Print Badge</span></a>'
if conf_id in [8,1,16,41,44,10,38]:
btn_link = btn_link
else:
btn_link = ""
if int(session.get('showSuccessMsg',0)) == 0:
session["showSuccessMsg"] = 1
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(r_amount,email,receipt_no),"successMsg")
else:
if payment_method and payment_method.lower() != "free":
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Reference no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. The receipt has been email to {}.\nA delegate registration confirmation email has been sent to the email id of the delegate(s). Receipt no. {} .Delegate no(s). {} <br/> {}".format(r_amount,conf_name,email,receipt_no,delegate_nos,btn_link),"successMsg")
else:
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Reference no(s). {} <br/> {}".format(r_amount,conf_name,ref_nos,btn_link),"successMsg")
else:
flash("An amount of {} has been made towards {} registration. \nA delegate registration confirmation email has been sent to the email id of the delegate(s). Delegate no(s). {} <br/> {}".format(r_amount,conf_name,delegate_nos,btn_link),"successMsg")
# Code updated by Ganesan on Dec 09 ,2022 for karavali 2022 pedicon conference
# if del_table_name and conf_id == 12 :
# otp_1 = BOModel().getOTPforConfirmationMail(delegate_no,conf_id,del_table_name)
# else :
# pass
if otp_1 :
otp = otp_1["otp"]
else:
otp = None
# Added Status
if payment_method and payment_method.lower() != "free":
if conf['is_gen_number'] == 'ref_number':
subject = "Confirmation for Delegate Registration - " + name + " ("+ str(ref_no) + ")."
else:
subject = "Confirmation and Receipt Mail for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
else:
if conf['is_gen_number'] == 'ref_number':
subject = "Confirmation for Delegate Registration - " + name + " ("+ str(ref_no) + ")."
else:
subject = "Confirmation for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
# subject = "Confirmation and Receipt Mail for Delegate Registration - " + name + " ("+ str(delegate_no) + ")."
html = render_template('email/confirmation_and_receipt_mail.html',delegate=delegate,delegate_id=delegate_id,receipt_data=receipt_data,conf_id=conf_id,conf_key=conf_key ,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas,conf=conf,otp=otp)
tricon_subject = "Book your Accommodation for TRICON now!"
tricon_tnoa_23_html = render_template('email/tricon_tnoa_23_accommodation_mail.html',conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 0
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf_id == 17:
EMAIL.MailTemplateSendMail(tricon_subject,tricon_tnoa_23_html,email,mailData,conf)
else:
return html
return html
@app.route('/<int:conf_id>/<conf_key>/bo/bo_post_addons_add_register', methods = ["POST"])
@RouteGroup.conf_required
def BoPostAddonsAddRegister(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
msg = ""
status = 1
data = ""
payment_method = request.values.get('method')
remarks = request.values.get('remark')
receipt_mail = request.values.get('receipt_mail')
confimation_mail = request.values.get('confimation_mail')
txn_id = request.values.get('txn_id')
custom_email = request.values.get('custom_email')
delegate_id = request.form['delegate_ids'] or None
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
conf_id = conf['conf_id']
conf_key = conf['conf_key']
society_id = conf['society_id']
reg_types = BOModel().get_addon_reg_type(conf_id)
addons = BOModel().get_addonsBOModel(delegate_id,now,conf_id)
total_amount = 0
reg_addons = {}
insert_del_addons = []
delete_del_addons = []
addon_for_pay = []
for addon in addons:
reg_addons[addon["addon_id"]] = addon
if addon.get("delegate_addon_id") and addon.get("delegate_addon_id") > 0 and addon.get('reg_status') != 2:
delete_del_addons.append(addon["delegate_addon_id"])
#collect all delegate_addon_id for delegate
is_mandatory = {}
for rt in reg_types:
is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
values = request.values.getlist(rt.get('input_name'))
if values:
is_mandatory[rt['addon_type_id']] = 0
for val in values:
addon = reg_addons[int(val)]
if addon.get("delegate_addon_id") and addon.get("delegate_addon_id") > 0 and addon.get('reg_status') != 2:
addon_for_pay.append(addon.get("delegate_addon_id"))
total_amount = addon.get("amount",0) + total_amount
else:
add_data = {
"addon_id" : val,
"amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"original_amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"reg_status" : 0
}
insert_del_addons.append(add_data)
total_amount = addon.get("amount",0) + total_amount
reg_Validation = []
for key in is_mandatory:
if is_mandatory[key] == 1:
reg_Validation.append({'key': key ,'msg': "following field is mandatory."})
status = 0;
addon_id = None
for rt in reg_types:
is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
values = request.values.getlist(rt.get('input_name'))
addon_ids = None
for addon_val in values:
addon_ids = addon_val
break
addon_ids = addon_ids
get_addons_data = UserModel().get_addons_data(addon_ids,conf_id,now)
if get_addons_data:
is_mandatory_mc_no_state = get_addons_data['is_mandatory_mc_no_state']
if is_mandatory_mc_no_state and is_mandatory_mc_no_state==1:
if mc_number == None and mc_state_id == None:
data= { 'msg':'Please fill the medical council number and medical council state. This data is mandatorily required for '+get_addons_data['user_type'],'status' : 2}
return jsonify(data)
if mc_number == None :
data= { 'msg':'Please fill the medical council number and medical council state. This data is mandatorily required for '+get_addons_data['user_type'],'status' : 2}
return jsonify(data)
if mc_state_id == None:
data= { 'msg':'Please fill the medical council number and medical council state. This data is mandatorily required for '+get_addons_data['user_type'],'status' : 2}
return jsonify(data)
if len(insert_del_addons) > 0 or len(addon_for_pay)> 0:
UserModel().save_delegates_addons(delegate_id,insert_del_addons,delete_del_addons,now)
Auth_user = Auth.user(society_id)
prefix = Auth_user['prefix'] or None
name = Auth_user['full_name'] or None
email = Auth_user['email']
mobile = Auth_user['mobile']
user_id = Auth_user['user_id']
full_name = prefix + " " + name if prefix else name
if delegate_id:
delegate_id = delegate_id
delegate = UserModel().get_delegate(delegate_id)
name = delegate['full_name']
prefix = delegate['prefix']
full_name = prefix + " " + name if prefix else name
# full_name = delegate['full_name']
email = delegate['email']
mobile = delegate['mobile']
if len(custom_email) > 0 and custom_email is not None:
full_name = None
email = custom_email
mobile = None
receipt_mail = 'receipt_mail'
unique_id = now.strftime('%Y%m%d%H%M%S')
created_at = now
url = conf['payment_api_url']
r = requests.get(url)
apikey = json.loads(r.content.decode())
am_id = conf['pg_appmaster_id']
is_test = conf['pg_is_test']
for index,value in enumerate(apikey) :
api_am_id = value['am_id']
if api_am_id == am_id:
app_key = value['app_key']
app_name = value['app_name']
break
else:
pass
payment_for = app_name
unique_id = app_key+"_"+unique_id
delegate_ids = delegate_id
app_type = Helper.AppType
is_generate = 1
if payment_method == "Free": # return "free"
generate_payement = BOModel().usp_del_generate_free_payement(unique_id,delegate_ids,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
else: # return "cash"
generate_payement = BOModel().usp_del_generate_cash_payement(unique_id,delegate_ids,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
if generate_payement :
return redirect(url_for('back_office.BoPaymentServerResponse',user_id=user_id,unique_id=unique_id,payment_method=payment_method,receipt_mail=receipt_mail,confimation_mail=confimation_mail,conf_id=conf_id,conf_key=conf_key))
else :
flash("Please select atleast one delegate","Payerror")
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
else:
data ={ 'msg':'following field is mandatory.','status':0,'data':''}
return jsonify(data)
@app.route('/<int:conf_id>/<conf_key>/bo/generate_payement_link', methods = ["GET","POST"])
@RouteGroup.conf_required
def BoGeneratePayementLink(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
submit_btn =request.values.get('sub_btn')
# conf = BOModel().get_conf(conf_id,conf_key)
society_id = conf['society_id']
now = datetime.now()
created_at = now.strftime("%Y-%m-%d %H:%M:%S")
user_id = Auth.user(society_id)['user_id']
full_name = request.values.get('name')
email = request.values.get('email')
mobile = request.values.get('mobile')
delegate_ids = request.values.get('delegate_ids')
show_msg = request.values.get('show_msg')
addon_for_pay = []
total_amount = 0
if len(delegate_ids)> 0 :
reg_types = BOModel().get_addon_reg_type(conf_id)
addons = BOModel().get_addonsBOModel(delegate_ids,now,conf_id)
reg_addons = {}
insert_del_addons = []
delete_del_addons = []
for addon in addons:
reg_addons[addon["addon_id"]] = addon
if addon.get("delegate_addon_id") and addon.get("delegate_addon_id") > 0 and addon.get('reg_status') != 2:
delete_del_addons.append(addon["delegate_addon_id"])
#collect all delegate_addon_id for delegate
is_mandatory = {}
for rt in reg_types:
is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
values = request.values.getlist(rt.get('input_name'))
if values:
is_mandatory[rt['addon_type_id']] = 0
for val in values:
addon = reg_addons[int(val)]
if addon.get("delegate_addon_id") and addon.get("delegate_addon_id") > 0 and addon.get('reg_status') != 2:
addon_for_pay.append(addon.get("delegate_addon_id"))
total_amount = addon.get("amount",0) + total_amount
else:
add_data = {
"addon_id" : val,
"amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"original_amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"reg_status" : 0
}
insert_del_addons.append(add_data)
total_amount = addon.get("amount",0) + total_amount
if len(insert_del_addons) > 0 or len(addon_for_pay)> 0:
UserModel().save_delegates_addons(delegate_ids,insert_del_addons,delete_del_addons,now)
unique_id = now.strftime('%Y%m%d%H%M%S')
url = conf['paymentgateway_api_url']
r = requests.get(url)
apikey = json.loads(r.content.decode())
am_id = conf['paymentgateway_appmaster_id']
is_test = conf['paymentgateway_is_test']
for index,value in enumerate(apikey) :
api_am_id = value['am_id']
if api_am_id == am_id:
app_key = value['app_key']
app_name = value['app_name']
break
else:
pass
payment_for = app_name
unique_id = app_key+"_"+unique_id
# delegate_ids = (",".join(delegate_ids))
app_type = Helper.AppType
if submit_btn == "Pay Now":
is_generate = 0
is_generate_link_payment = 0
usp_del_generate_payement = BOModel().usp_del_generate_payement(unique_id,delegate_ids,user_id,am_id,is_test,payment_for,is_generate,full_name,email,mobile,is_generate_link_payment,created_at,society_id,app_type,conf_id)
if usp_del_generate_payement :
return redirect(url_for('user.GeneratePostPayment',conf_id=conf_id,conf_key=conf_key,delegate_ids=delegate_ids,full_name=full_name,email=email,mobile=mobile,is_generate_link_payment=is_generate_link_payment))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
else:
is_generate = 1
is_generate_link_payment = 1
usp_del_generate_payement = BOModel().usp_del_generate_payement(unique_id,delegate_ids,user_id,am_id,is_test,payment_for,is_generate,full_name,email,mobile,is_generate_link_payment,created_at,society_id,app_type,conf_id)
if usp_del_generate_payement :
for delegate in usp_del_generate_payement:
payment_id = delegate['payment_id']
return redirect(url_for('user.GenerateDelegateMail',conf_id=conf_id,conf_key=conf_key,payment_id=payment_id,unique_id=unique_id,full_name=full_name,email=email,is_generate_link_payment=is_generate_link_payment,show_msg=show_msg))
else:
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoDelegate',conf_id=conf_id,conf_key=conf_key))
else:
flash("Please select addons to proceed further","Payerror")
return redirect(url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key))
else :
flash("Please select atleast one delegate to proceed further","Payerror")
return redirect(url_for('back_office.BoDelegate',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo_generate_delegate_no_and_receipt_no', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoGenerateDelegateNoAndReceiptNo(conf_id,conf_key):
conf = UserModel().get_confUserModel(conf_id,conf_key)
unique_id = request.values.get('unique_id')
confirmation_mail = request.values.get('confirm_mail' or None ) or None
receipt_mail = request.values.get('reciept_mail'or None ) or None
role = None
receipt_data = BOModel().bo_generate_delegate_no_and_receipt_no(unique_id,conf_id,role)
if confirmation_mail == "confirmation_mail" and receipt_mail == "reciept_mail":
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
# BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,1,None)
dele_id = delegate_ids.split(",")
for i in dele_id:
delegate_id = i
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,None)
# if confirmation_mail == "confirmation_mail" :
# BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,None)
# else:
# BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,0,None)
# BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,None)
elif confirmation_mail == "confirmation_mail" and receipt_mail == "None":
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
dele_id = delegate_ids.split(",")
for i in dele_id:
delegate_id = i
if confirmation_mail == "confirmation_mail" :
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,None)
else:
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,0,None)
elif receipt_mail =="reciept_mail" and confirmation_mail =="None":
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,1,None)
else:
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
if receipt_data:
email = receipt_data['email']
# email = 'sai@numerotec.com'
receipt_no = receipt_data['receipt_no']
amount = receipt_data['amount']
conf_name = receipt_data['conf_name']
ref_nos = receipt_data['ref_nos']
if str(amount) == "0.00":
amount = "Free"
else:
amount = int(amount)
amount = f"{amount:,}"
amount_with_commas = amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if amount == "Free" :
amount = amount
else:
amount = "Rs."+amount+"/-"
########### Ganesan Nov 25 ,2022
# add kit counter for session map
# del_table_name = conf["del_table_name"]
# del_nos = delegate_nos.split(",")
# is_kit = 1
# if del_nos and del_table_name :
# for d_no in del_nos:
# delegate_no = d_no
# kc_del_sess_table = conf["kc_del_session_table_name"]
# fc_del_sess_table = conf["fc_del_session_table_name"]
# if is_kit and int(is_kit) > 0 :
# session_table = "del_table_name.kc_sessions"
# del_ses_table = kc_del_sess_table
# else :
# session_table = "del_table_name.fc_sessions"
# del_ses_table = fc_del_sess_table
# del_id_int = int(delegate_no)
# insert_session = BOModel().sessionMapSpotReg(conf_id,del_id_int,del_table_name,kc_del_sess_table,fc_del_sess_table)
# else :
# pass
if conf_id == 17 and amount_for_convertion in [500,1000,1500,2000]:
flash("An amount of {} inclusive of GST has been made towards WET & DRY lab registration.<br/>The receipt has been emailed to {}.<br/><br/> Receipt no. {}".format(amount,email,receipt_no),"succ_msg")
else:
if conf['is_gen_number'] == 'ref_number':
flash("An amount of {} has been made towards {} registration.<br/>The receipt has been email to {}.<br/>A delegate registration confirmation email has been sent to the email id of the delegate(s).<br/><br/>Receipt no. {} .Reference no(s). {}".format(amount,conf_name,email,receipt_no,ref_nos),"succ_msg")
else:
flash("An amount of {} has been made towards {} registration.<br/>The receipt has been email to {}.<br/>A delegate registration confirmation email has been sent to the email id of the delegate(s).<br/><br/>Receipt no. {} .Delegate no(s). {}".format(amount,conf_name,email,receipt_no,delegate_nos),"succ_msg")
return redirect (url_for('back_office.BoGetParentWaitingCompletedDelegates',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo_view_waiting_for_generate_dele_no', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoViewWaitingForGenerateDeleNo(conf_id,conf_key):
conf = UserModel().get_confUserModel(conf_id,conf_key)
unique_id = request.values.get('unique_id')
delegate = BOModel().usp_del_bo_view_waiting_gen_del_no_and_receipt_no(unique_id,conf_id)
if delegate :
delegate_id = delegate[0]['delegate_id']
delegate_ids = delegate[0]['delegate_ids']
prefix = delegate[0]['prefix']
name = delegate[0]['full_name']
full_name = prefix + " " + name if prefix else name
email = delegate[0]['email']
return render_template('backoffice_user/view_waiting_for_generate_delegate_no.html',delegate=delegate,delegate_id=delegate_id,delegate_ids=delegate_ids,conf=conf,unique_id=unique_id,full_name=full_name,email=email)
else:
return "<h4>No data</h4>"
# UTR SEARCH START
@app.route('/<int:conf_id>/<conf_key>/bo_get_parent_waiting_completed_delegates', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoGetParentWaitingCompletedDelegates(conf_id,conf_key):
del_html_data = ""
conf = UserModel().get_confUserModel(conf_id,conf_key)
search_data = request.values.get('search_txt' or None) or None
parent_user_id = None
# delegateData = BOModel().bo_get_completed_waiting_delegates_by_parent_user_id(parent_user_id,conf_id)
delegateData = BOModel().bo_search_utr_details(parent_user_id,conf_id,search_data)
if delegateData:
del_html_data_dev = render_template('backoffice_user/bo_waiting_for_gen_del_no_table.html' ,user_data = delegateData,conf_id =conf_id,conf_key=conf_key,conf_data=conf,conf=conf,str=str,type=type)
del_html_data = render_template('backoffice_user/bo_waiting_for_gen_del_no.html' ,user_data = delegateData,conf_id =conf_id,conf_key=conf_key,conf_data=conf,conf=conf,str=str,type=type,del_html_data_dev=del_html_data_dev)
else:
del_html_data = None
del_html_data_dev = render_template('backoffice_user/bo_waiting_for_gen_del_no_table.html' ,user_data = delegateData,conf_id =conf_id,conf_key=conf_key,conf_data=conf,conf=conf,str=str,type=type)
del_html_data = render_template('backoffice_user/bo_waiting_for_gen_del_no.html' ,user_data = delegateData,conf_id =conf_id,conf_key=conf_key,conf_data=conf,conf=conf,str=str,type=type,del_html_data_dev=del_html_data_dev)
return del_html_data
# UTR SEARCH END
@app.route('/<int:conf_id>/<conf_key>/post_reject_payment', methods = ["POST"])
@RouteGroup.conf_required
def postRejectPayment(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
template_name = "rejected_payment_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
reject_type = request.values.get('reject_type') or None
delegate_id = request.values.get('delegate_id')
unique_id = request.values.get('unique_id')
full_name = request.values.get('full_name')
remarks = request.values.get('remarks')
email = request.values.get('email')
data = {
'delegate_id': delegate_id,
'conf_id' : conf_id,
'unique_id' : unique_id,
'is_lock' : 0,
'remarks' : remarks,
'created_at' : now
}
if reject_type == 'proof_mistake' :
del_status_id = 7
update_reg_status = BOModel().bo_update_reg_status_delegates_addons(unique_id,delegate_id,now,del_status_id)
flash('Rejected Proof',"waiting_msg")
else :
flash('Rejected Payment',"waiting_msg")
update_reg_status = BOModel().bo_update_reg_status_delegates_addons(unique_id,delegate_id,now)
update = BOModel().bo_update_reject_payment(data)
# subject = "Your "+conf['conf_name']+" delegate registration is NOT APPROVED"
sub_data = {
'conf_name':conf['conf_name']
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'full_name' : full_name,
'remarks' : remarks,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
# html = render_template('email/upi_transaction_reject_mail.html',conf=conf,remarks=remarks,full_name=full_name)
html = render_template('email/upi_transaction_reject_mail_v1.html',conf=conf,mail_content=mail_content)
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string)
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
return redirect(url_for('back_office.BoGetParentWaitingCompletedDelegates',conf_id=conf_id,conf_key=conf_key))
# edit all option starts here 2022-12-07
@app.route('/<int:conf_id>/<conf_key>/bo/trade_edit_all_option_delegate', methods = [ "GET","POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def TradeBoEditAllOptionDelegate(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
society_id = conf['society_id']
parent_user_id = Auth.user(society_id)['user_id']
user_id = request.values.get('user_id',0)
# parent_user_id = request.values.get('parent_user_id',0)
delegate_id = request.values.get('delegate_id',0)
is_custom_addons = 1
del_status_id = request.values.get('del_status_id')
state_id = UserModel().get_states()
country_id = UserModel().get_country()
reg_types = BOModel().get_addon_reg_type(conf_id)
paymen_details = BOModel().get_delegate_payment_details(delegate_id,conf_id)
reg_addon_date = BOModel().get_reg_addon_date(delegate_id,conf_id)
date = reg_addon_date['start_by']
addons = BOModel().get_edit_all_addons(delegate_id,date,conf_id,None,is_custom_addons)
parent_user = UserModel().get_user(parent_user_id,society_id,conf_id)
badge_role = BOModel().get_badge_model(conf_id)
payment_types = BOModel().get_payment_types(conf_id)
if int(str(user_id),0) > 0: #Check user_id greater then 0
user = UserModel().get_user(user_id,society_id,conf_id) # get user details
if user :
if user and user["member_type_id"] == Custom.MemberTypeId or user["member_type_id"] == Custom.AssociateMemberTypeId or user["member_type_id"] in Custom.ASIMemberTypeId: # check user is member Custom -
user = OfflineModel().get_member_details(user_id,curr_dt)
if int(str(delegate_id),0) >0:
delegate = BOModel().get_delegate_for_edit(delegate_id)
user = delegate if delegate else user
if user_id == parent_user_id: # if both same then call myself add or edit else add or edit for other
return render_template('trade/index/edit_all_option.html',conf_id=conf_id,conf_key=conf_key, delegate=user,states=state_id,countries=country_id,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,badge_role=badge_role,payment_types=payment_types,paymen_details=paymen_details,register_date=date,del_status_id=del_status_id,dt_string=dt_string)
else:
return render_template('trade/index/edit_all_option.html',conf_id=conf_id,conf_key=conf_key,delegate=user,states=state_id,countries=country_id,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,badge_role=badge_role,payment_types=payment_types,paymen_details=paymen_details,register_date=date,del_status_id=del_status_id,dt_string=dt_string)
user = None
if int(str(user_id),0) > 0:
user = UserModel().get_user(user_id,society_id,conf_id)
delegate = None
if int(str(delegate_id),0) >0:
delegate = BOModel().get_delegate_for_edit(delegate_id)
if delegate is None:
if user:
delegate = user
return render_template('trade/index/edit_all_option.html',conf_id=conf_id,conf_key=conf_key,user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,badge_role=badge_role,payment_types=payment_types,paymen_details=paymen_details,register_date=date,del_status_id=del_status_id,dt_string=dt_string)
@app.route('/<int:conf_id>/<conf_key>/bo/trade_post_edit_all_option_register', methods = ["GET","POST"])
@RouteGroup.conf_required
def TradePostEditAllOptionRegister(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
msg = ""
pg_cert_path = None
pg_cert_name = None
file = None
file_upload = None # For upload certificates in delegates table # Added by Ganesan J
is_file_upload = 0
user_type_id = None
addon_id = None
status = 1
data = ""
total_amount = 0
delegate_id = request.form['delegate_id'] or None
parent_user_id = request.form['parent_user_id']
user_id = request.form['user_id']
now = datetime.now()
conf_id = request.form['conf_id']
conf_key = request.form['conf_key']
# conf = BOModel().get_conf(conf_id,conf_key)
society_id = conf['society_id']
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
prefix = request.form['prefix'] or None
full_name = request.form['full_name'] or None
email = request.form['email']
mobile = request.form['mobile']
date_of_birth = request.form['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
gender = request.form['gender'] or None
address1 = request.form['address1'] or None
address2 = request.form['address2'] or None
address3 = request.form['address3'] or None
city = request.form['city'] or None
pincode = request.form['pincode'] or None
state_id = request.form['state_id'] or None
country_id = request.form['country_id'] or None
mc_number = request.form['mc_number'] or None
mc_state_id = request.form['mc_state_id'] or None
membership_no = request.form['membership_no'] or None
receipt_no = request.form['receipt_no'] or None
remarks = request.form['remarks'] or None
paid_at = request.form['paid_at'] or None
payment_method = request.form['payment_method'] or None
transaction_id = request.form['transaction_id'] or None
tamount = request.form['tamount'] or None
balance_amount = request.form['balance_amount'] or None
refund_amount = request.form['refund_amount'] or None
unique_id = request.form['unique_id'] or None
role = request.form['role'] or None
register_date = request.form['register_date'] or None
delegate_no = request.form['delegate_no'] or None
check_in_date = request.values.get('check_in_date') or None
check_out_date = request.values.get('check_out_date') or None
check_in_time = request.values.get('check_in_time') or None
check_out_time = request.values.get('check_out_time') or None
designation = request.values.get('designation') or None
institution = request.values.get('institution') or None
nationality = request.values.get('nationality') or None
accom_persons = request.values.get("accom_persons" or None)
delegate_remarks = request.form['delegate_remarks'] or None
is_take_part_bpw = request.values.get('is_take_part_bpw') or None
mem_applied_at = request.values.get('mem_applied_at') or None
mem_is_applied = request.values.get('mem_is_applied') or None
mem_year = request.values.get('mem_year') or None
food = request.values.get('food') or None
age = request.values.get('age') or None
district = request.values.get('district') or None
aadhaar_number = request.values.get('aadhaar_number') or None
# Delegate Image
image_data = request.values.get('delegate_image_base64',None) or None
image_data_ext = request.values.get('delegate_image_ext') or None
is_remove_del_img = request.values.get('is_remove_del_img') or 0
if conf_id in [26,49]:
if aadhaar_number:
aadhaar_number = aadhaar_number.replace("-","")
else:
aadhaar_number = None
else:
aadhaar_number = aadhaar_number
# BOA 2024
if int(conf_id) in [26,49]:
senior_file = request.files.get('files_aadhaar',None) or None
if senior_file:
image_name = "aadhaar_proof_"
foldername = "aadhaar_proof/"
is_file_upload = 1
file = senior_file
# TNASICON 2023
if conf_id and int(conf_id) in [19] :
if addon_id:
if int(addon_id) in [223,377,378,379]:
file = request.files.get('files_asi',None)
if file:
image_name = "tnasicon2023_asipayment_proof_"
foldername = ""
is_file_upload = 1
# IAP KARNATAKA 2023
if conf_id and int(conf_id) == 36 :
if addon_id:
if int(addon_id) in [538,603,608]:
file = request.files.get('files',None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
# MEDITER RETINA CLUB 2023
if conf_id and int(conf_id) == 37 :
if addon_id:
if int(addon_id) in [553,554,557,559,561,562,565,567,571,573,575,576]:
file = request.files.get('files',None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
# IPGS 2023
if conf_id and int(conf_id) == 29 :
if addon_id:
if int(addon_id) in [365,373,369]:
file = request.files.get('files_', None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
# SZTNAOI 2023
if conf_id and int(conf_id) == 32 :
file = request.files.get('files',None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
# ROCKENT 2024
if conf_id and int(conf_id) == 49 :
pg_file = request.files.get('files',None)
if pg_file:
image_name = "certificate_proof_"
foldername = "certificats/"
is_file_upload = 1
file = pg_file
if int(is_file_upload) == 1:
file_upload = AWSUpload().AwsFileUpload(user_id,file,image_name,foldername)
else:
file_upload = ''
# If file upload function call then this block will execute
if file_upload :
file_upload = ast.literal_eval(file_upload)
file_upload_msg = file_upload["msg"]
file_upload_status = file_upload["status"]
if file_upload_status == 1 :
pg_cert_path = file_upload["pg_cert_path"] or None
pg_cert_name = file_upload["pg_cert_name"] or None
else :
return file_upload_msg
conference_id = conf_id
reg_types = BOModel().get_addon_reg_type(conf_id)
addons = BOModel().get_edit_all_addons_for_post(delegate_id,register_date,conf_id)
reg_addons = {}
insert_del_addons = []
delete_del_addons = []
updated_at = dt_string
for addon in addons:
reg_addons[addon["addon_id"]] = addon
#collect all delegate_addon_id for delegate
if addon["delegate_addon_id"] and addon["delegate_addon_id"] > 0:
delete_del_addons.append(addon["delegate_addon_id"])
is_mandatory = {}
for rt in reg_types:
is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
values = request.values.getlist(rt.get('input_name'))
if values:
is_mandatory[rt['addon_type_id']] = 0
for index,val in enumerate(values):
addon = reg_addons[int(val)]
if index == 0:
if user_type_id == None:
user_type_id = addon.get("user_type_id",None)
if addon_id == None:
addon_id = val
add_data = {
"addon_id" : val,
"amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"original_amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"reg_status" : 2,
"unique_id" : addon.get("unique_id") if addon.get("unique_id") else unique_id,
"is_bo_update" : 1
}
total_amount = addon.get("amount",0) + total_amount
insert_del_addons.append(add_data)
reg_Validation = []
for key in is_mandatory:
if is_mandatory[key] == 1:
reg_Validation.append({'key': key ,'msg': "following field is mandatory."})
status = 0;
del_data = {
'prefix' : prefix,
'user_id' : user_id if int(user_id) >0 else None,
'full_name' : full_name,
'email' : email,
'mobile' : mobile,
'dob' : dob,
'gender' : gender,
'address1' : address1,
'address2' : address2,
'address3' : address3,
'city' : city,
'pincode' : pincode,
'state_id' : state_id,
'country_id' : country_id,
'mc_number' : mc_number,
'mc_state_id' : mc_state_id,
'conference_id' : conference_id,
'membership_no' : membership_no,
'admin_user_id' : parent_user_id,
'society_id' : society_id,
'role' : role,
'check_in_date' : check_in_date,
'check_out_date' : check_out_date,
'check_in_time' : check_in_time,
'check_out_time' : check_out_time,
'designation' : designation,
'institution' : institution,
'nationality' : nationality,
'accom_persons' : accom_persons,
'delegate_remarks': delegate_remarks,
'is_take_part_bpw': is_take_part_bpw,
'mem_is_applied' : mem_is_applied,
'mem_applied_at' : mem_applied_at,
'mem_year' : mem_year,
'age' : age,
'food' : food,
'district' : district,
'reg_type_id' : user_type_id,
'aadhaar_number' : aadhaar_number
}
payment_details_add = {
'amount' : tamount,
'api_payment_id' : transaction_id,
'paid_at' : paid_at,
'updated_at' : updated_at,
'refund_amount' : refund_amount,
'balance_amount' : balance_amount,
'payment_method' : payment_method,
'remarks' : remarks,
'receipt_no' : receipt_no
}
cert_proof_deleted = request.values.get('cert_proof_deleted') or 0
asi_proof_deleted = request.values.get('asi_proof_deleted') or 0
res_proof_deleted = request.values.get('res_proof_deleted_') or 0
aadhaar_proof_deleted = request.values.get('aadhaar_proof_deleted_') or 0
if conf_id and int(conf_id) == 32 :
if pg_cert_path or int(cert_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(cert_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
# ROCKENT 2024
# if conf_id and int(conf_id) == 49 :
# if pg_cert_path or int(cert_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(cert_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
if conf_id and int(conf_id) == 19 :
if addon_id:
if int(addon_id) in [223,377,378,379]:
if pg_cert_path or int(asi_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(asi_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
else:
del_data['pg_cert_path'] = None
del_data['pg_cert_name'] = None
if conf_id and int(conf_id) == 36 :
if addon_id:
if int(addon_id) in [538,603,608]:
if pg_cert_path or int(cert_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(cert_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
else:
del_data['pg_cert_path'] = None
del_data['pg_cert_name'] = None
if conf_id and int(conf_id) == 37 :
if addon_id:
if int(addon_id) in [553,554,557,559,561,562,565,567,571,573,575,576]:
if pg_cert_path or int(cert_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(cert_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
else:
del_data['pg_cert_path'] = None
del_data['pg_cert_name'] = None
if conf_id and int(conf_id)== 29 :
if addon_id:
if int(addon_id) in [365,373,369]:
if pg_cert_path or int(res_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(res_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
else:
del_data['pg_cert_path'] = None
del_data['pg_cert_name'] = None
# BOA 2024 Aadhaar
if conf_id and int(conf_id) in [26,49] :
if pg_cert_path or int(res_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(res_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
# BOA 2024 Aadhaar
if status == 1:
app_type = "DELEGATE"
update = BOModel().update_delegate(delegate_id,del_data,None,conference_id)
if image_data:
AWSUpload().DelegateImageUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
else :
if int(is_remove_del_img) == 1:
AWSUpload().DeleteDelegateImage(delegate_id,conf_key)
BOModel().save_delegates_addonsBOModel(delegate_id,insert_del_addons,delete_del_addons,now)
# BOModel().Update_delegates_addons(delegate_id,unique_id,addon_id,original_amount,amount,now)
update_payment_details = BOModel().update_payment_detail(unique_id,conf_id,app_type,payment_details_add)
# update_payment_details = BOModel().update_payment_detail(unique_id,payment_details_add)
delegate_badge_table = conf['del_table_name']
if delegate_badge_table:
if delegate_no:
if update:
update_dele_badge = BOModel().update_delegates_in_dele_badge(delegate_no,conf_id,delegate_badge_table,is_update=0) # 0 For Update Both tables only
json = {
'msg':'Update completed ...',
'status':status,
'reg_validation' : reg_Validation,
}
return jsonify(json)
# -----------------------------------working--------------------------------------------------
# @app.route('/<int:conf_id>/<conf_key>/bo/bo_post_edit_all_option_register', methods = ["GET","POST"])
# @RouteGroup.conf_required
# def BoPostEditAllOptionRegister(conf_id,conf_key):
# conf = Auth.getConf(conf_id,conf_key)
# msg = ""
# pg_cert_path = None
# pg_cert_name = None
# file = None
# file_upload = None # For upload certificates in delegates table # Added by Ganesan J
# status = 1
# data = ""
# total_amount = 0
# delegate_id = request.form['delegate_id'] or None
# parent_user_id = request.form['parent_user_id']
# user_id = request.form['user_id']
# now = datetime.now()
# conf_id = request.form['conf_id']
# conf_key = request.form['conf_key']
# # conf = BOModel().get_conf(conf_id,conf_key)
# society_id = conf['society_id']
# dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
# prefix = request.form['prefix'] or None
# full_name = request.form['full_name'] or None
# email = request.form['email']
# mobile = request.form['mobile']
# date_of_birth = request.form['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
# gender = request.form['gender'] or None
# address1 = request.form['address1'] or None
# address2 = request.form['address2'] or None
# address3 = request.form['address3'] or None
# city = request.form['city'] or None
# pincode = request.form['pincode'] or None
# state_id = request.form['state_id'] or None
# country_id = request.form['country_id'] or None
# mc_number = request.form['mc_number'] or None
# mc_state_id = request.form['mc_state_id'] or None
# membership_no = request.form['membership_no'] or None
# receipt_no = request.form['receipt_no'] or None
# remarks = request.form['remarks'] or None
# paid_at = request.form['paid_at'] or None
# payment_method = request.form['payment_method'] or None
# transaction_id = request.form['transaction_id'] or None
# tamount = request.form['tamount'] or None
# balance_amount = request.form['balance_amount'] or None
# refund_amount = request.form['refund_amount'] or None
# unique_id = request.form['unique_id'] or None
# role = request.form['role'] or None
# register_date = request.form['register_date'] or None
# delegate_no = request.form['delegate_no'] or None
# check_in_date = request.values.get('check_in_date') or None
# check_out_date = request.values.get('check_out_date') or None
# check_in_time = request.values.get('check_in_time') or None
# check_out_time = request.values.get('check_out_time') or None
# designation = request.values.get('designation') or None
# institution = request.values.get('institution') or None
# nationality = request.values.get('nationality') or None
# accom_persons = request.values.get("accom_persons" or None)
# delegate_remarks = request.form['delegate_remarks'] or None
# is_take_part_bpw = request.values.get('is_take_part_bpw') or None
# user_type_id = None
# addon_id = None
# # extra input fields
# mem_applied_at = request.values.get('mem_applied_at') or None
# mem_is_applied = request.values.get('mem_is_applied') or None
# mem_year = request.values.get('mem_year') or None
# food = request.values.get('food') or None
# age = request.values.get('age') or None
# district = request.values.get('district') or None
# # extra input fields
# # Start here Aadhaar
# aadhaar_number = request.values.get('aadhaar_number') or None
# if conf_id in [26]:
# if aadhaar_number:
# aadhaar_number = aadhaar_number.replace("-","")
# else:
# aadhaar_number = None
# else:
# aadhaar_number = aadhaar_number
# if int(conf_id) in [26]:
# file = request.files.get('files_aadhaar',None) or None
# if file:
# image_name = "aadhaar_proof_"
# foldername = "aadhaar_proof/"
# file_upload = AWSUpload().AwsFileUpload(user_id,file,image_name,foldername)
# # If file upload function call then this block will execute
# if file_upload :
# file_upload = ast.literal_eval(file_upload)
# file_upload_msg = file_upload["msg"]
# file_upload_status = file_upload["status"]
# if file_upload_status == 1 :
# pg_cert_path = file_upload["pg_cert_path"] or None
# pg_cert_name = file_upload["pg_cert_name"] or None
# else :
# return file_upload_msg
# # End here Aadhaar
# conference_id = conf_id
# reg_types = BOModel().get_addon_reg_type(conf_id)
# addons = BOModel().get_edit_all_addons_for_post(delegate_id,register_date,conf_id)
# reg_addons = {}
# insert_del_addons = []
# delete_del_addons = []
# updated_at = dt_string
# for addon in addons:
# reg_addons[addon["addon_id"]] = addon
# #collect all delegate_addon_id for delegate
# if addon["delegate_addon_id"] and addon["delegate_addon_id"] > 0:
# delete_del_addons.append(addon["delegate_addon_id"])
# is_mandatory = {}
# for rt in reg_types:
# is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
# values = request.values.getlist(rt.get('input_name'))
# if values:
# is_mandatory[rt['addon_type_id']] = 0
# for index,val in enumerate(values):
# addon = reg_addons[int(val)]
# if index == 0:
# if user_type_id == None:
# user_type_id = addon.get("user_type_id",None)
# if addon_id == None:
# addon_id = val
# add_data = {
# "addon_id" : val,
# "amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
# "original_amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
# "reg_status" : 2,
# "unique_id" : addon.get("unique_id") if addon.get("unique_id") else unique_id,
# "is_bo_update" : 1
# }
# total_amount = addon.get("amount",0) + total_amount
# insert_del_addons.append(add_data)
# # addon_id = val
# # user_type_id = addon.get("user_type_id")
# # amount = request.form['addon_amount_'+val] or addon.get("amount",0)
# # original_amount = request.form['addon_amount_'+val] or addon.get("amount",0)
# # extra input fields
# if conf_id and int(conf_id) == 19 :
# if addon_id:
# if int(addon_id) in [223,377,378,379]:
# file = request.files.get('files_asi',None)
# if file:
# pg_cert_path = None
# pg_cert_name = None
# if file.filename:
# filename = secure_filename(file.filename)
# split_tup = os.path.splitext(filename)
# file_name = split_tup[0]
# file_extension = split_tup[1]
# file_str = "tnasicon2023_asipayment_proof_"+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
# if " " in file_str :
# file_str = file_str.replace(" ","")
# try:
# bucket = "delegateapp"
# user_id = str(user_id)
# foldername = ""
# acl ="public-read"
# s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
# response = s3.upload_fileobj(file, bucket,foldername + file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
# data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':file_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
# file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
# pg_cert_path = file_path
# pg_cert_name = file_str
# except ClientError as e:
# print(str(e))
# # logging.error(e)
# # data_1 = {'msg':'Image upload failed .Please try again.','status':0}
# # json_data = json.dumps(data_1)
# # return json_data
# return str(e)
# # flash('Something Error .Please Try Again')
# if conf_id and int(conf_id) == 32 :
# file = request.files.get('files',None)
# if file:
# pg_cert_path = None
# pg_cert_name = None
# if file.filename:
# filename = secure_filename(file.filename)
# split_tup = os.path.splitext(filename)
# file_name = split_tup[0]
# file_extension = split_tup[1]
# file_str = "certificate_proof_"+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
# if " " in file_str :
# file_str = file_str.replace(" ","")
# try:
# bucket = "delegateapp"
# user_id = str(user_id)
# foldername = ""
# acl ="public-read"
# s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
# response = s3.upload_fileobj(file, bucket,foldername + file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
# data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':file_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
# file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
# pg_cert_path = file_path
# pg_cert_name = file_str
# except ClientError as e:
# print(str(e))
# # logging.error(e)
# # data_1 = {'msg':'Image upload failed .Please try again.','status':0}
# # json_data = json.dumps(data_1)
# # return json_data
# return str(e)
# # flash('Something Error .Please Try Again')
# else:
# pg_cert_path = None
# pg_cert_name = None
# # IAP PEDICON 2023
# if conf_id and int(conf_id) == 36 :
# if addon_id:
# if int(addon_id) in [538,603,608]:
# file = request.files.get('files',None)
# if file:
# pg_cert_path = None
# pg_cert_name = None
# if file.filename:
# filename = secure_filename(file.filename)
# split_tup = os.path.splitext(filename)
# file_name = split_tup[0]
# file_extension = split_tup[1]
# file_str = "certificate_proof_"+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
# if " " in file_str :
# file_str = file_str.replace(" ","")
# try:
# bucket = "delegateapp"
# user_id = str(user_id)
# foldername = ""
# acl ="public-read"
# s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
# response = s3.upload_fileobj(file, bucket,foldername + file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
# data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':file_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
# file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
# pg_cert_path = file_path
# pg_cert_name = file_str
# except ClientError as e:
# print(str(e))
# # logging.error(e)
# # data_1 = {'msg':'Image upload failed .Please try again.','status':0}
# # json_data = json.dumps(data_1)
# # return json_data
# return str(e)
# # flash('Something Error .Please Try Again')
# else:
# pg_cert_path = None
# pg_cert_name = None
# # MEDITERRETINA 2023
# if conf_id and int(conf_id) == 37 :
# if addon_id:
# if int(addon_id) in [553,554,557,559,561,562,565,567,571,573,575,576]:
# file = request.files.get('files',None)
# if file:
# pg_cert_path = None
# pg_cert_name = None
# if file.filename:
# filename = secure_filename(file.filename)
# split_tup = os.path.splitext(filename)
# file_name = split_tup[0]
# file_extension = split_tup[1]
# file_str = "certificate_proof_"+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
# if " " in file_str :
# file_str = file_str.replace(" ","")
# try:
# bucket = "delegateapp"
# user_id = str(user_id)
# foldername = ""
# acl = "public-read"
# s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
# response = s3.upload_fileobj(file, bucket,foldername + file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
# data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':file_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
# file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
# pg_cert_path = file_path
# pg_cert_name = file_str
# except ClientError as e:
# print(str(e))
# # logging.error(e)
# # data_1 = {'msg':'Image upload failed .Please try again.','status':0}
# # json_data = json.dumps(data_1)
# # return json_data
# return str(e)
# # flash('Something Error .Please Try Again')
# else:
# pg_cert_path = None
# pg_cert_name = None
# if conf_id and int(conf_id) == 29 :
# if addon_id:
# if int(addon_id) in [365,373,369]:
# file = request.files.get('files_', None)
# if file:
# pg_cert_path = None
# pg_cert_name = None
# if file.filename:
# filename = secure_filename(file.filename)
# split_tup = os.path.splitext(filename)
# file_name = split_tup[0]
# file_extension = split_tup[1]
# file_str = "certificate_proof_"+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
# if " " in file_str :
# file_str = file_str.replace(" ","")
# try:
# bucket = "delegateapp"
# user_id = str(user_id)
# foldername = ""
# acl ="public-read"
# s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
# response = s3.upload_fileobj(file, bucket,foldername + file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
# data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':file_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
# file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
# pg_cert_path = file_path
# pg_cert_name = file_str
# except ClientError as e:
# print(str(e))
# # logging.error(e)
# # data_1 = {'msg':'Image upload failed .Please try again.','status':0}
# # json_data = json.dumps(data_1)
# # return json_data
# return str(e)
# # flash('Something Error .Please Try Again')
# else:
# pg_cert_path = None
# pg_cert_name = None
# # extra input fields
# reg_Validation = []
# for key in is_mandatory:
# if is_mandatory[key] == 1:
# reg_Validation.append({'key': key ,'msg': "following field is mandatory."})
# status = 0;
# # return "true"
# del_data = {
# 'prefix' : prefix,
# 'user_id' : user_id if int(user_id) >0 else None,
# 'full_name' : full_name,
# 'email' : email,
# 'mobile' : mobile,
# 'dob' : dob,
# 'gender' : gender,
# 'address1' : address1,
# 'address2' : address2,
# 'address3' : address3,
# 'city' : city,
# 'pincode' : pincode,
# 'state_id' : state_id,
# 'country_id' : country_id,
# 'mc_number' : mc_number,
# 'mc_state_id' : mc_state_id,
# 'conference_id' : conference_id,
# 'membership_no' : membership_no,
# 'admin_user_id' : parent_user_id,
# 'society_id' : society_id,
# 'role' : role,
# 'check_in_date' : check_in_date,
# 'check_out_date': check_out_date,
# 'check_in_time' : check_in_time,
# 'check_out_time': check_out_time,
# 'designation' : designation,
# 'institution' : institution,
# 'nationality' : nationality,
# 'accom_persons' : accom_persons,
# 'delegate_remarks': delegate_remarks,
# 'is_take_part_bpw':is_take_part_bpw,
# # extra input fields
# 'mem_is_applied' : mem_is_applied,
# 'mem_applied_at' :mem_applied_at,
# 'mem_year' : mem_year,
# 'age' : age,
# 'food' : food,
# 'district' : district,
# 'reg_type_id' : user_type_id,
# # Aadhaar
# 'aadhaar_number' : aadhaar_number
# # Aadhaar
# }
# payment_details_add = {
# 'amount' : tamount,
# 'api_payment_id' : transaction_id,
# 'paid_at' : paid_at,
# 'updated_at' : updated_at,
# 'refund_amount' : refund_amount,
# 'balance_amount' : balance_amount,
# 'payment_method' : payment_method,
# 'remarks' : remarks,
# 'receipt_no' : receipt_no
# }
# cert_proof_deleted = request.values.get('cert_proof_deleted') or 0
# asi_proof_deleted = request.values.get('asi_proof_deleted') or 0
# res_proof_deleted = request.values.get('res_proof_deleted_') or 0
# aadhaar_proof_deleted = request.values.get('aadhaar_proof_deleted_') or 0
# if conf_id and int(conf_id) == 32 :
# if pg_cert_path or int(cert_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(cert_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
# if conf_id and int(conf_id) == 19 :
# if addon_id:
# if int(addon_id) in [223,377,378,379]:
# if pg_cert_path or int(asi_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(asi_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
# else:
# del_data['pg_cert_path'] = None
# del_data['pg_cert_name'] = None
# if conf_id and int(conf_id) == 36 :
# if addon_id:
# if int(addon_id) in [538,603,608]:
# if pg_cert_path or int(cert_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(cert_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
# else:
# del_data['pg_cert_path'] = None
# del_data['pg_cert_name'] = None
# if conf_id and int(conf_id) == 37 :
# if addon_id:
# if int(addon_id) in [553,554,557,559,561,562,565,567,571,573,575,576]:
# if pg_cert_path or int(cert_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(cert_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
# else:
# del_data['pg_cert_path'] = None
# del_data['pg_cert_name'] = None
# if conf_id and int(conf_id)== 29 :
# if addon_id:
# if int(addon_id) in [365,373,369]:
# if pg_cert_path or int(res_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(res_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
# else:
# del_data['pg_cert_path'] = None
# del_data['pg_cert_name'] = None
# # BOA 2024 Aadhaar
# if conf_id and int(conf_id) in [26] :
# if pg_cert_path or int(res_proof_deleted) == 1:
# del_data['pg_cert_path'] = pg_cert_path
# if pg_cert_name or int(res_proof_deleted) == 1:
# del_data['pg_cert_name'] = pg_cert_name
# # BOA 2024 Aadhaar
# if status == 1:
# app_type = "DELEGATE"
# update = BOModel().update_delegate(delegate_id,del_data,None,conference_id)
# BOModel().save_delegates_addonsBOModel(delegate_id,insert_del_addons,delete_del_addons,now)
# # BOModel().Update_delegates_addons(delegate_id,unique_id,addon_id,original_amount,amount,now)
# update_payment_details = BOModel().update_payment_detail(unique_id,conf_id,app_type,payment_details_add)
# # update_payment_details = BOModel().update_payment_detail(unique_id,payment_details_add)
# delegate_badge_table = conf['del_table_name']
# if delegate_badge_table:
# if delegate_no:
# if update:
# update_dele_badge = BOModel().update_delegates_in_dele_badge(delegate_no,conf_id,delegate_badge_table,is_update=0) # 0 For Update Both tables only
# json = {
# 'msg':'Update completed ...',
# 'status':status,
# 'reg_validation' : reg_Validation,
# }
# return jsonify(json)
# --------------------------- working --------------------------------------
# @app.route('/<int:conf_id>/<conf_key>/bo/bo_post_edit_all_option_register', methods = ["GET","POST"])
# @RouteGroup.conf_required
# def BoPostEditAllOptionRegister(conf_id,conf_key):
# conf = Auth.getConf(conf_id,conf_key)
# msg = ""
# status = 1
# data = ""
# delegate_id = request.form['delegate_id'] or None
# parent_user_id = request.form['parent_user_id']
# user_id = request.form['user_id']
# now = datetime.now()
# conf_id = request.form['conf_id']
# conf_key = request.form['conf_key']
# # conf = BOModel().get_conf(conf_id,conf_key)
# society_id = conf['society_id']
# dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
# prefix = request.form['prefix'] or None
# full_name = request.form['full_name'] or None
# email = request.form['email']
# mobile = request.form['mobile']
# date_of_birth = request.form['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
# gender = request.form['gender'] or None
# address1 = request.form['address1'] or None
# address2 = request.form['address2'] or None
# address3 = request.form['address3'] or None
# city = request.form['city'] or None
# pincode = request.form['pincode'] or None
# state_id = request.form['state_id'] or None
# country_id = request.form['country_id'] or None
# mc_number = request.form['mc_number'] or None
# mc_state_id = request.form['mc_state_id'] or None
# membership_no = request.form['membership_no'] or None
# receipt_no = request.form['receipt_no'] or None
# remarks = request.form['remarks'] or None
# paid_at = request.form['paid_at'] or None
# payment_method = request.form['payment_method'] or None
# transaction_id = request.form['transaction_id'] or None
# tamount = request.form['tamount'] or None
# balance_amount = request.form['balance_amount'] or None
# refund_amount = request.form['refund_amount'] or None
# unique_id = request.form['unique_id'] or None
# role = request.form['role'] or None
# register_date = request.form['register_date'] or None
# delegate_no = request.form['delegate_no'] or None
# check_in_date = request.values.get('check_in_date') or None
# check_out_date = request.values.get('check_out_date') or None
# check_in_time = request.values.get('check_in_time') or None
# check_out_time = request.values.get('check_out_time') or None
# designation = request.values.get('designation') or None
# institution = request.values.get('institution') or None
# nationality = request.values.get('nationality') or None
# accom_persons = request.values.get("accom_persons" or None)
# delegate_remarks = request.form['delegate_remarks'] or None
# is_take_part_bpw = request.values.get('is_take_part_bpw') or None
# conference_id = conf_id
# reg_types = BOModel().get_addon_reg_type(conf_id)
# addons = BOModel().get_edit_all_addons(delegate_id,register_date,conf_id)
# reg_addons = {}
# insert_del_addons = []
# delete_del_addons = []
# updated_at = dt_string
# for addon in addons:
# reg_addons[addon["addon_id"]] = addon
# #collect all delegate_addon_id for delegate
# if addon["delegate_addon_id"] and addon["delegate_addon_id"] > 0:
# delete_del_addons.append(addon["delegate_addon_id"])
# is_mandatory = {}
# for rt in reg_types:
# is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
# values = request.values.getlist(rt.get('input_name'))
# if values:
# is_mandatory[rt['addon_type_id']] = 0
# for val in values:
# addon = reg_addons[int(val)]
# addon_id = val
# amount = request.form['addon_amount_'+val] or addon.get("amount",0)
# original_amount = request.form['addon_amount_'+val] or addon.get("amount",0)
# reg_Validation = []
# for key in is_mandatory:
# if is_mandatory[key] == 1:
# reg_Validation.append({'key': key ,'msg': "following list is mandatory."})
# status = 0;
# # return "true"
# del_data = {
# 'prefix' : prefix,
# 'user_id' : user_id if int(user_id) >0 else None,
# 'full_name' : full_name,
# 'email' : email,
# 'mobile' : mobile,
# 'dob' : dob,
# 'gender' : gender,
# 'address1' : address1,
# 'address2' : address2,
# 'address3' : address3,
# 'city' : city,
# 'pincode' : pincode,
# 'state_id' : state_id,
# 'country_id' : country_id,
# 'mc_number' : mc_number,
# 'mc_state_id' : mc_state_id,
# 'conference_id' : conference_id,
# 'membership_no' : membership_no,
# 'admin_user_id' : parent_user_id,
# 'society_id' : society_id,
# 'role' : role,
# 'check_in_date' : check_in_date,
# 'check_out_date': check_out_date,
# 'check_in_time' : check_in_time,
# 'check_out_time': check_out_time,
# 'designation' : designation,
# 'institution' : institution,
# 'nationality' : nationality,
# 'accom_persons' : accom_persons,
# 'delegate_remarks': delegate_remarks,
# 'is_take_part_bpw':is_take_part_bpw
# }
# payment_details_add = {
# 'amount' : tamount,
# 'api_payment_id' : transaction_id,
# 'paid_at' : paid_at,
# 'updated_at' : updated_at,
# 'refund_amount' : refund_amount,
# 'balance_amount' : balance_amount,
# 'payment_method' : payment_method,
# 'remarks' : remarks,
# 'receipt_no' : receipt_no
# }
# if status == 1:
# app_type = "DELEGATE"
# update = BOModel().update_delegate(delegate_id,del_data,None,conference_id)
# BOModel().Update_delegates_addons(delegate_id,unique_id,addon_id,original_amount,amount,now)
# update_payment_details = BOModel().update_payment_detail(unique_id,conf_id,app_type,payment_details_add)
# delegate_badge_table = conf['del_table_name']
# if delegate_badge_table:
# if delegate_no:
# if update:
# update_dele_badge = BOModel().update_delegates_in_dele_badge(delegate_no,conf_id,delegate_badge_table)
# json = {
# 'msg':'Update completed ...',
# 'status':status,
# 'reg_validation' : reg_Validation,
# }
# return jsonify(json)
@app.route('/bo_sample_confirmation_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoSampleConfirmationDelegateMail(conf_id,conf_key,delegate_id,delegate,is_send,email):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "confirmation_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
if delegate is None:
delegates = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
if delegates:
delegate = delegates[0]
if delegate:
if email:
email = email
else:
email = delegate['email']
parent_email = delegate['parent_email']
# parent_email = 'karthiashokan23@gmail.com'
delegate_no = delegate['delegate_no']
amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
sub_data = {
'delegate_no':str(delegate_no)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'delegate' : delegate,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html = render_template('email/confirmation_mail_v1.html',mail_content=mail_content,conf=conf)
tricon_subject = "Book your Accommodation for TRICON now!"
tricon_tnoa_23_html = render_template('email/tricon_tnoa_23_accommodation_mail.html',conf=conf)
if is_send == 1:
if conf['is_email_enable'] == 1:
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string),
'is_offline' : 0
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
if conf['backup_email_2']:
EMAIL.MailTemplateSendMail(subject,html,conf['backup_email_2'],mailData,conf)
if conf_id == 17:
EMAIL.MailTemplateSendMail(tricon_subject,tricon_tnoa_23_html,email,mailData,conf)
else:
return html
else :
return None
# 17-01-2023(ramya)
# Purpose : Searching Email,Mobile,Transaction Id already registered or not
# Whatsapp option
@app.route('/bo_send_confirmation_delegate_whatsapp/<int:conf_id>/<conf_key>/<delegate_id>',methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoSendConfirmationDelegateWhatsapp(conf_id,conf_key,delegate_id):
conf = Auth.getConf(conf_id,conf_key)
society_id = conf['society_id']
mobile_no = request.values.get('mobile_no',None)
msg_content = "*"+conf['conf_title']+" Confirmation*%0a"
whatsappdata = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
whatsapp_data = whatsappdata[0]
amount = whatsapp_data['total_amount']
prefix = whatsapp_data["prefix"]
if prefix:
name = whatsapp_data["prefix"] +" "+ whatsapp_data["full_name"]
else:
name = whatsapp_data["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
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(" " ,"")
# msg_content = "*DELEGATE REGISTRATION CONFROMATION * %0a%0a"
# msg_content = msg_content +"%0a*mobile_no : "+ str(mobile_no)+"*"
msg_content_1 = render_template('backoffice_user/delegate_registration/delegate_whatsapp.html',whatsappdata=whatsappdata,name=name,amount=amount,conf=conf)
# safe_string = urllib.parse.quote_plus(msg_content)
msg_content = msg_content+msg_content_1
safe_string_1 = "https://wa.me/91"+str(mobile_no)+"?text="+msg_content
return flask.redirect(safe_string_1)
webbrowser.open(safe_string_1) # to send whatsapp via new tab
return "success"
flash("Confirmation mail sent Successful to " +str(mobile_no),"whatsapp_success")
return redirect(url_for('back_office.BoViewConfirmationDelegateMail',conf_id=conf_id,conf_key=conf_key,delegate_id= delegate_id))
# return msg
else:
flash("Please enter the whatsapp number .","whatsapp_failed")
# flash("Confirmation mail sent Successful to " +str(mobile_no),"whatsapp_success")
return redirect(url_for('back_office.BoViewConfirmationDelegateMail',conf_id=conf_id,conf_key=conf_key,delegate_id=delegate_id))
@app.route('/all_conference_daily_count_delegate_mail', methods = ["GET", "POST"])
def AllConferenceDailyCountDelegateMail():
send_manual = request.values.get('send_manual',None)
date_1 = request.values.get("date",None)
current_tm = datetime.now()
reg_end_on = current_tm + timedelta(days=2)
dt_string = current_tm.strftime("%Y-%m-%d %I:%M %p")
# print("CRON JOB Executed at " + dt_string)
next_day = reg_end_on + timedelta(days=2)
# next_day = "2021-05-30"
# next_day = datetime.strptime(next_day, '%Y-%m-%d').date()
if send_manual and int(send_manual) > 0 :
tmp = AllConferenceDelegateReportSendMail(date_1)
return tmp
# return "Mail sent Successful."
else :
if next_day > current_tm :
if (current_tm.hour == 5 and current_tm.minute > 45) or (current_tm.hour == 6 and current_tm.minute < 25):
print("Time match - " + dt_string)
# if ( current_tm.hour == 11 or current_tm.hour == 12 ):
AllConferenceDelegateReportSendMail(date_1)
return "Mail sent Successful."
else:
print("Time not match - " + dt_string)
return ( dt_string +" Time not match ")
else:
return "Registration closed"
def AllConferenceDelegateReportSendMail(date_1):
row_val = []
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
users = BOModel().get_all_conference_daily_count_send_mail()
conferences_db = BOModel().get_conference()
conferences = {}
for conference in conferences_db:
conferences[conference['conf_id']] = conference
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
in_conf_id = []
sender_mail = []
if users :
for row in users:
html = []
email = ""
full_name = ""
mobile = ""
email = row['email']
full_name = row['full_name']
mobile = row['mobile']
str_conf_id = row['conf_id']
lst_conf_id = str_conf_id.split(",")
html.clear()
for x in lst_conf_id:
conf = conferences.get(int(x),None)
if conf:
reg_data = BOModel().GetRegDataForMail(previous_date,x)
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
for index, value in enumerate(reg_data):
addon_type_id = value["addon_type_id"]
today_count = today_count+value['today_count']
total_count = total_count+value['total_count']
today_paid_amount = today_paid_amount+value['today_paid_amount']
total_paid_amount = total_paid_amount+value['total_paid_amount']
if addon_type_id == 1:
today_del_count = today_del_count+value['today_count']
total_del_count = total_del_count+value['total_count']
if int(x) == 46:
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
yesterday_dt = datetime.strftime(current_dt, '%Y-%m-%d')
previous_reg_count = SurgicalUserModel().get_total_previous_reg_count(x,yesterday_dt)
current_reg_count = SurgicalUserModel().get_total__current_reg_count(x,yesterday_dt)
if previous_reg_count:
previous_reg_count = previous_reg_count['total_previous_count']
else:
previous_reg_count = 0
if current_reg_count:
current_reg_count = current_reg_count['total_current_count']
else:
current_reg_count = 0
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
html_data = render_template('email/ss_daily_count_mail.html',conf=conf,date=dt_string,previous_reg_count=previous_reg_count,current_reg_count=current_reg_count,previous_date=previous_date,base_url=base_url)
else:
html_data = render_template('email/all_conference_dail_mail_count.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count)
htmls = html_data.replace("\n", "")
html.append(htmls)
html_datas = str(html).replace("['", " ").replace("']", " ").replace(",", "").replace("' '", "")
html_tmp = render_template('email/reg_report_email_all.html',html=html_datas)
subject = "All Delegate Registration Count as on {}".format(dt_string)
receiver_email = email
receiver_mobile = mobile
receiver_name = full_name
created_at = datetime.now()
# call here send mail function
# Commented for testing purpose start
EMAIL.allconfcountsendMail(subject,html_tmp,email)
# Commented for testing purpose end
is_send_backup = 1
if is_send_backup == 1 :
email = "ntecBackup@gmail.com"
subject = "Backup mail of All Delegate Registration Count as on {} to {}".format(dt_string,receiver_email)
EMAIL.allconfcountsendMail(subject,html_tmp,email)
stmt_1 =('''INSERT INTO send_mail_index (conf_id,receiver_name,receiver_email,receiver_mobile,mail_send_at,created_at) VALUES ''')
row_val.append(('(' + ''''{}','{}',"{}",'{}','{}','{}' ''' +')').format(x,receiver_name,receiver_email,receiver_mobile,created_at,created_at))
stmt_1 = stmt_1 + ",".join(row_val)
stmt_1 = stmt_1 + ';'
BOModel().save_delegate_report_sendmail(stmt_1)
sender_mail.append(email)
return jsonify(sender_mail)
else :
return "Report data is not available."
@app.route('bo_all_reg_report_view', methods = ["GET", "POST"])
def BOAllRegReportView():
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
date_1 = request.values.get("date",None)
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
conferences_db = BOModel().get_conference()
conferences = {}
html =[]
for conference in conferences_db:
conferences[conference['conf_id']] = conference
for x in conferences:
conf = conferences.get(int(x),None)
if conf:
reg_data = BOModel().GetRegDataForMail(previous_date,x)
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
for index, value in enumerate(reg_data):
addon_type_id = value["addon_type_id"]
today_count = today_count+value['today_count']
total_count = total_count+value['total_count']
today_paid_amount = today_paid_amount+value['today_paid_amount']
total_paid_amount = total_paid_amount+value['total_paid_amount']
if addon_type_id == 1:
today_del_count = today_del_count+value['today_count']
total_del_count = total_del_count+value['total_count']
if int(x) == 46:
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
yesterday_dt = datetime.strftime(current_dt, '%Y-%m-%d')
previous_reg_count = SurgicalUserModel().get_total_previous_reg_count(x,yesterday_dt)
current_reg_count = SurgicalUserModel().get_total__current_reg_count(x,yesterday_dt)
if previous_reg_count:
previous_reg_count = previous_reg_count['total_previous_count']
else:
previous_reg_count = 0
if current_reg_count:
current_reg_count = current_reg_count['total_current_count']
else:
current_reg_count = 0
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
html_data = render_template('email/ss_daily_count_mail.html',conf=conf,date=dt_string,previous_reg_count=previous_reg_count,current_reg_count=current_reg_count,previous_date=previous_date,base_url=base_url)
else:
html_data = render_template('email/all_conference_dail_mail_count.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count)
htmls = html_data.replace("\n", "")
html.append(htmls)
html_datas = str(html).replace("['", " ").replace("']", " ").replace(",", "").replace("' '", "")
html_tmp = render_template('email/reg_report_email_all.html',html=html_datas)
return html_tmp
# Whatsapp Receipt option
@app.route('/bo_send_receipt_delegate_whatsapp/<int:conf_id>/<conf_key>/<unique_id>',methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoSendReceiptDelegateWhatsapp(conf_id,conf_key,unique_id):
conf = Auth.getConf(conf_id,conf_key)
mobile_no = request.values.get('mobile_no',None)
msg_content = "*"+conf['conf_title']+" Receipt*%0a"
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
receipt_data = receipt_datas[0]
receipt_no = receipt_data['receipt_no']
r_amount = receipt_data['amount']
full_name = receipt_data['full_name']
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
amount_with_commas = r_amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if r_amount == "Free" :
r_amount = r_amount
else:
r_amount = "Rs."+r_amount+"/-"
if mobile_no:
last_char = mobile_no[-1:]
last_letter = full_name[-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(" " ,"")
# msg_content = "*DELEGATE REGISTRATION CONFROMATION * %0a%0a"
# msg_content = msg_content +"%0a*mobile_no : "+ str(mobile_no)+"*"
msg_content_1 = render_template('backoffice_user/delegate_registration/delegate_receipt_whatsapp.html',receipt_datas=receipt_datas,amount=r_amount,conf=conf,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas)
msg_content = msg_content+msg_content_1
safe_string_1 = "https://wa.me/91"+str(mobile_no)+"?text="+msg_content
return flask.redirect(safe_string_1)
webbrowser.open(safe_string_1) # to send whatsapp via new tab
return "success"
else:
flash("Please enter the whatsapp number .","whatsapp_failed")
# flash("Confirmation mail sent Successful to " +str(mobile_no),"whatsapp_success")
return redirect(url_for('back_office.BoViewReceiptDelegagteMail',conf_id=conf_id,conf_key=conf_key,unique_id=unique_id))
@app.route('/bo_send_confirmation_and_receipt_delegate_mail_whatsapp/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoSendConfirmationAndReceiptDelegagteMailWhatsApp(conf_id,conf_key,delegate_id,unique_id):
conf = Auth.getConf(conf_id,conf_key)
mobile_no = request.values.get('mobile_no',None)
confimation_mail = request.values.get('confimation_mail',None)
receipt_mail = request.values.get('receipt_mail',None)
whatsappdata = BOModel().usp_del_get_delegates_by_delegate_id(delegate_id)
whatsapp_data = whatsappdata[0]
amount = whatsapp_data['total_amount']
prefix = whatsapp_data["prefix"]
if prefix:
name = whatsapp_data["prefix"] +" "+ whatsapp_data["full_name"]
else:
name = whatsapp_data["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
if mobile_no:
mobile_no = mobile_no
else:
mobile_no = whatsapp_data['mobile']
if confimation_mail and receipt_mail:
msg_content = "*"+conf['conf_title']+" Confirmation and Receipt*%0a"
elif confimation_mail:
msg_content = "*"+conf['conf_title']+" Confirmation*%0a"
else:
msg_content = "*"+conf['conf_title']+" Receipt*%0a"
if confimation_mail:
safe_string_1 = render_template('backoffice_user/delegate_registration/delegate_whatsapp.html',whatsappdata=whatsappdata,name=name,amount=amount,conf=conf)
msg_content = msg_content+safe_string_1
if receipt_mail:
receipt_datas = BOModel().BOreceipt_no_generate_and_get(unique_id,conf_id)
receipt_data = receipt_datas[0]
receipt_no = receipt_data['receipt_no']
r_amount = receipt_data['amount'] or 0.00
if str(r_amount) == "0.00":
r_amount = "Free"
else:
r_amount = int(r_amount)
r_amount = f"{r_amount:,}"
amount_with_commas = r_amount
amount_for_convertion = int(receipt_data['amount'] or '0')
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if r_amount == "Free" :
r_amount = r_amount
else:
r_amount = "Rs."+r_amount+"/-"
safe_string_2 = render_template('backoffice_user/delegate_registration/delegate_receipt_whatsapp.html',receipt_datas=receipt_datas,amount=r_amount,conf=conf,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas)
msg_content = msg_content+safe_string_2
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(" " ,"")
msg_content = "https://wa.me/91"+str(mobile_no)+"?text="+msg_content
return flask.redirect(msg_content)
webbrowser.open(msg_content) # to send whatsapp via new tab
return "success"
return "mobile not entered"
@app.route('/bo_view_confirmation_delegate_no_mail/<int:conf_id>/<conf_key>/<int:delegate_no>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewConfirmationDelegateMailNo(conf_id,conf_key,delegate_no):
delegate = None
conf = Auth.getConf(conf_id,conf_key)
conf_id = conf['conf_id']
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "confirmation_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
delegates = BOModel().usp_del_get_delegates_by_delegate_no(delegate_no,conf_id)
if delegates:
delegate = delegates[0]
if delegate:
email = delegate['email']
# email = 'karthiashokan23@gmail.com'
parent_email = delegate['parent_email']
# parent_email = 'karthiashokan23@gmail.com'
delegate_no = delegate['delegate_no']
amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
delegate_id = delegate['delegate_id']
ref_no = delegate['ref_no']
title = "View Confimation Mail"
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
sub_data = {
'delegate_no':str(delegate_no)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'delegate' : delegate,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html_data = render_template('email/confirmation_mail_v1.html',mail_content=mail_content,conf=conf)
html = render_template('email/view_confirmation_email.html',delegate=delegate,conf_id=conf_id,conf_key=conf_key,delegate_id=delegate_id,conf=conf,subject=subject,html_data=html_data,title=title)
return html
else :
return "Records does not exist."
# -------- start --- Addons and conference Closing Alert mail before one day
# test start
@app.route('/<int:conf_id>/<conf_key>/daily_count_wetlab_and_drylab_mail', methods = ["GET", "POST"])
@RouteGroup.conf_required
def DailyCountWetlabAndDrylabMail(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
if conf :
send_manual = request.values.get('send_manual',None)
date_1 = request.values.get("date",None)
reg_end_on = datetime(2023, 6, 30, 23,59,59)
current_tm = datetime.now()
dt_string = current_tm.strftime("%Y-%m-%d %I:%M %p")
# print("CRON JOB Executed at " + dt_string)
next_day = reg_end_on + timedelta(days=1)
if send_manual and int(send_manual) > 0 :
BOWetDryLab(conf_id,conf_key,date_1)
return "Mail sent Successful."
else :
if reg_end_on <= next_day :
if (current_tm.hour == 9 and current_tm.minute > 45) or (current_tm.hour == 10 and current_tm.minute < 22) :
print("Time match - " + dt_string)
BOWetDryLab(conf_id,conf_key,date_1)
return "Mail sent Successful."
elif (current_tm.hour == 17 and current_tm.minute > 45) or (current_tm.hour == 18 and current_tm.minute < 22):
BOWetDryLab(conf_id,conf_key,date_1)
return "Mail sent Successful."
else:
print("Time not match - " + dt_string)
return ( dt_string +" Time not match ")
else:
return "Registration closed"
else :
return "Invalid conf-id or conf-key"
def BOWetDryLab(conf_id,conf_key,date_1):
send_manual = request.values.get('send_manual',None)
conf = Auth.getConf(conf_id,conf_key)
today_count = 0
mailData = None
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
dt_string = datetime.now().strftime("%d-%m-%Y ")
date_1 = request.values.get("date",None)
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
final_total = 0
reg_datas = BOModel().GetWetDryReportForMail(date_1,conf_id)
for index,value in enumerate(reg_datas):
if index == 0:
reg_data = value
if index == 1:
total_count_data = value
if reg_data :
for index, value in enumerate(reg_data):
addon_type_id = value["addon_type_id"]
success_count = value['success_count']
waiting_count = value['waiting_count']
user_type = value["user_type"]
value['success_waiting_total'] = success_count+waiting_count
for ind , val in enumerate(total_count_data) :
reg_type = val["reg_type"]
head_count = val["head_count"]
if user_type in reg_type :
value["total_head_count"] = head_count
break
html = render_template('email/daily_count_mail_wetlab_and_drylab.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url)
subject = conf['conf_name']+"- Wet Lab and Dry Lab Registration Count as on {}".format(dt_string)
# email = ['drswarnauday@gmail.com','sci.com.tricon23@gmail.com','drsriramgopal@gmail.com','karthick@numerotec.com','aravinth@numerotec.com','ramya@numerotec.com','santhosh@numerotec.com','dp@numerotec.com','manjula@numerotec.com','ganesan@numerotec.com','sridharan.r@numerotec.com','sai@numerotec.com']
email = ['karthick@numerotec.com','aravinth@numerotec.com','ramya@numerotec.com','santhosh@numerotec.com']
for i in email:
pass
# EMAIL.MailTemplateSendMail(subject,html,i,mailData,conf)
return "mail sent Successful..."
else :
return "Registration record not exists."
@app.route('/<int:conf_id>/<conf_key>/bo_view_wetdry_lab', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BOViewWetDryLab(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
dt_string = datetime.now().strftime("%d-%m-%Y ")
date_1 = request.values.get("date",None)
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
final_total = 0
reg_datas = BOModel().GetWetDryReportForMail(date_1,conf_id)
for index,value in enumerate(reg_datas):
if index == 0:
reg_data = value
if index == 1:
total_count_data = value
if reg_data :
for index, value in enumerate(reg_data):
addon_type_id = value["addon_type_id"]
success_count = value['success_count']
waiting_count = value['waiting_count']
user_type = value["user_type"]
value['success_waiting_total'] = success_count+waiting_count
for ind , val in enumerate(total_count_data) :
reg_type = val["reg_type"]
head_count = val["head_count"]
if user_type in reg_type :
value["total_head_count"] = head_count
break
html = render_template('email/daily_count_mail_wetlab_and_drylab.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url)
return html
else :
return "Registration record not exists."
# test end
# June 1 2023
@app.route('/<int:conf_id>/<conf_key>/bo_view_waiting_for_payment_proof', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoViewWaitingForPaymentProof(conf_id,conf_key):
conf = UserModel().get_confUserModel(conf_id,conf_key)
# unique_id = request.values.get('unique_id')
delegate = BOReportModel().uspWaitingPaymentProofApproval(conf_id)
return render_template('backoffice_user/bo_waiting_for_pg_pay_approval.html',user_data=delegate,conf=conf,conf_id=conf_id ,conf_key=conf_key)
@app.route('/<int:conf_id>/<conf_key>/bo_view_waiting_forpayment_proof_generate_dele_no', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def BoViewWaitingForPaymentProofGenerateDeleNo(conf_id,conf_key):
conf = UserModel().get_confUserModel(conf_id,conf_key)
unique_id = request.values.get('unique_id')
delegate_id = request.values.get('delegate_id')
delegate = BOModel().usp_del_bo_view_waiting_gen_del_no_and_receipt_no_only_pg(unique_id,conf_id,delegate_id)
if delegate:
delegate_ids = delegate[0]['delegate_ids']
prefix = delegate[0]['prefix']
name = delegate[0]['full_name']
full_name = prefix + " " + name if prefix else name
email = delegate[0]['email']
return render_template('backoffice_user/view_waiting_for_payment_proof_generate_delegate_no.html',delegate=delegate,delegate_id=delegate_id,delegate_ids=delegate_ids,conf=conf,unique_id=unique_id,full_name=full_name,email=email)
else :
return "<h4>No Data</h4>"
@app.route('/<int:conf_id>/<conf_key>/bo_generate_payment_proof_delegate_no_and_receipt_no', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoGeneratePaymentProofDelegateNoAndReceiptNo(conf_id,conf_key):
conf = UserModel().get_confUserModel(conf_id,conf_key)
unique_id = request.values.get('unique_id')
delegate_id = request.values.get('delegate_id')
confirmation_mail = request.values.get('confirm_mail' or None ) or None
receipt_mail = request.values.get('reciept_mail'or None ) or None
role = None
conf_name = conf['conf_name']
receipt_data = BOModel().bo_generate_delegate_no_and_receipt_no_only_pg(unique_id,conf_id,role,delegate_id)
if receipt_data:
receipt_data = receipt_data[0]
delegate_id = receipt_data['delegate_id']
delegate_nos = receipt_data['delegate_no']
email = receipt_data['email']
if confirmation_mail == "confirmation_mail" and receipt_mail == "None":
if confirmation_mail == "confirmation_mail" :
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,None)
else:
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,0,None)
flash("Bonafide Proof verified successfully.","succ_msg")
return redirect (url_for('back_office.BoViewWaitingForPaymentProof',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/post_reject_payment_for_asi', methods = ["POST"])
@RouteGroup.conf_required
def postRejectPaymentForASI(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
delegate_id = request.values.get('delegate_id')
delegate_ids = request.values.get('delegate_ids')
unique_id = request.values.get('unique_id')
full_name = request.values.get('full_name')
remarks = request.values.get('remarks')
email = request.values.get('email')
data = {
'delegate_id': delegate_id,
'conf_id' : conf_id,
'unique_id' : unique_id,
'is_lock' : 0,
'remarks' : remarks,
'created_at' : now
}
url_data = BOModel().get_auto_login_url_by_delegate_id(delegate_id,conf_id)
if url_data :
auto_login_url = url_data['auto_login_url']
else :
auto_login_url = conf['app_url']
# update_reg_status = BOModel().bo_update_reg_status_delegates_addons(unique_id,delegate_id,now)
# pg_added
update = BOModel().bo_update_reject_payment(data)
del_status_id = 7
update_reg_status = BOModel().bo_update_reg_status_delegates_addons_for_pg_proof_reject(unique_id,delegate_id,now,del_status_id)
# pg_added
mailData = None
subject = "Your "+conf['conf_name']+" delegate registration is NOT APPROVED"
html = render_template('email/upi_transaction_reject_mail.html',conf=conf,remarks=remarks,full_name=full_name,auto_login_url=auto_login_url)
data_1 = EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
if data_1:
data_1 = json.loads(data_1)
update_data = {
'delegate_id' : str(delegate_id),
'conf_id' : str(conf_id),
'created_at' : str(dt_string)
}
data_1.update(update_data)
UserModel().insert_mandrill_logs(data_1)
flash('Rejected Proof',"waiting_msg")
return redirect(url_for('back_office.BoViewWaitingForPaymentProof',conf_id=conf_id,conf_key=conf_key))
# start bulk mail here
# created by : Karthick
# Usage : Back office confirmation and receipt mail bulk mail send purpose
# Date : 2023-07-06
@app.route('/bo_delegate_bulk_mail/<int:conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoDelegateBulkMail(conf_id,conf_key):
now = datetime.now()
sent_at = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
conf_mail = request.values.get('conf_mail',None )# confirm mail check box value
rec_mail = request.values.get('rec_mail', None )# recipt mail check box value
sample = request.values.get('sample', None )
sample_mail = request.values.get('sample_mail',None )
del_nos = request.form.getlist('del_nos',None)
if conf_mail == "conf_mail" and rec_mail == "rec_mail" :
data = BoViewConfirmationAndReceiptDelegagteBulkMail(conf_id,conf_key,del_nos)
return data
elif conf_mail == "conf_mail" and rec_mail == None :
data = BoViewConfirmationDelegateBulkMail(conf_id,conf_key,del_nos)
return data
elif conf_mail == None and rec_mail == "rec_mail" :
data = BoViewReceiptDelegagteBulkMail(conf_id,conf_key,del_nos)
return data
else :
return redirect (url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key))
@app.route('/bo_view_confirmation_and_receipt_delegate_bulk_mail/<int:conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewConfirmationAndReceiptDelegagteBulkMail(conf_id,conf_key,del_nos):
conf = Auth.getConf(conf_id,conf_key)
del_table_name = None
otp_1 = None
if conf :
del_table_name = conf["del_table_name"]
now = datetime.now()
sent_at = now.strftime("%Y-%m-%d %H:%M:%S")
delegate_nos = request.values.get('del_nos') or None
mail_type = 'Confirmation Mail and Recipt Mail'
sample_mail = request.values.get('sample_mail')
sample = request.values.get('sample_value'or None ) or None
template_name = "confirmation_and_receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
row_val = []
html_data = []
mail_send_list = []
mail_not_send_list = []
html = []
all_datas = BOModel().receipt_no_generate_and_get_delegate_no_bulk(delegate_nos,conf_id)
for index,value in enumerate(all_datas):
if index == 0:
delegates = value
if index == 1:
receipt_datas = value
receipt_data = {}
for item in receipt_datas:
receipt_data[item['delegate_no']] = item
r_amount = int(item['amount'])
if r_amount == "Free" :
r_amount = r_amount[item['amount']]
else:
r_amount = "Rs."+str(r_amount)+"/-"
amount = f"{int(item['amount']):,}"
amount_with_commas = amount
amount_for_convertion = int(item['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
update_data = {
'amount_with_commas':amount_with_commas,
'amount_in_words':amount_in_words
}
receipt_data[item['delegate_no']].update(update_data)
for delegate in delegates:
email = delegate['email']
# parent_email = delegate['parent_email']
delegate_no = delegate['delegate_no']
c_amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
ref_no = delegate['ref_no']
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(c_amount) == "0.00":
c_amount = "Free"
else:
c_amount = "Rs."+str(c_amount)
# Code updated by Ganesan on Dec 09 ,2022 for karavali 2022 pedicon conference
# if del_table_name and conf_id == 12 :
# otp_1 = BOModel().getOTPforConfirmationMail(del_no,conf_id,del_table_name)
# else :
# pass
if otp_1 :
otp = otp_1["otp"]
else:
otp = None
sub_data = {'delegate_no' : str(delegate_no),'name':name}
subject = Helper.merge_tags(mailData['subject'],sub_data)
receipt_data_by_del_no = receipt_data[delegate_no]
payment_method = receipt_data_by_del_no['payment_method']
# Add status
if payment_method and payment_method.lower() != "free":
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
subject = Helper.merge_tags(mailData['subject'],sub_data)
else:
# Reference number added here
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
subject = "Confirmation of registration - {}".format(delegate_no)
data = {
'mail_content' : mailData['mail_content'],
'receipt_data' : receipt_data_by_del_no,
'amount_with_commas':amount_with_commas,
'amount_in_words':amount_in_words,
'delegate':delegate,
'otp' : otp
}
mail_content = Helper.convert_html_for_mail_screen(data)
html = render_template('email/confirmation_and_receipt_mail.html',delegate=delegate,receipt_data=receipt_data_by_del_no,conf_id=conf_id,conf_key=conf_key ,amount_in_words=amount_in_words,amount_with_commas=amount_with_commas,conf=conf,otp=otp)
htmls = html.replace("\n", "")
html_data.append(htmls)
if is_gen_number == 'ref_number':
delegate_no = ref_no
else:
delegate_no = delegate_no
stmt_1 =('''INSERT INTO mail_logs (conf_id,delegate_no,to_email,mail_type,subject,sent_at,sample_mail) VALUES ''')
row_val.append(('(' + ''''{}','{}','{}','{}','{}','{}','{}' ''' +')').format(conf_id,delegate_no,email,mail_type,subject,sent_at,sample_mail))
try:
if sample == "1" and sample :
email = sample_mail
if conf['is_email_enable'] == 1:
email_list = list(email.split(","))
for i in email_list:
email = i
# EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
else :
if email :
if conf['is_email_enable'] == 1:
email_list = list(email.split(","))
for i in email_list:
email = i
# EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
except Exception as e:
pass
stmt_1 = stmt_1 + ",".join(row_val)
stmt_1 = stmt_1 + ';'
BOModel().save_delegate_report_sendmail(stmt_1)
html_datas = str(html_data).replace("['", " ").replace("']", " ").replace(",", "").replace("' '", "")
if sample == "1" and sample:
mail_contant = "<h4 style= 'color:green' ; >Sample Confirmation Mail and Recipt Mail Successfully Send to "+ sample_mail+" .</h4>"
else:
mail_contant = "<h4 style= 'color:green' ; >Confirmation Mail and Recipt Mail Send Successfully . </h4>"
return mail_contant
@app.route('/bo_view_confirmation_delegate_no_bulk_mail/<int:conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewConfirmationDelegateBulkMail(conf_id,conf_key,del_nos):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
sent_at = now.strftime("%Y-%m-%d %H:%M:%S")
mail_type = 'Confirmation Mail'
delegate_nos = request.form['del_nos'] or None
sample_mail = request.values.get('sample_mail')
sample = request.values.get('sample_value'or None ) or None
template_name = "confirmation_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
mail_send_list = []
mail_not_send_list = []
html_data = []
row_val = []
all_datas = BOModel().receipt_no_generate_and_get_delegate_no_bulk(delegate_nos,conf_id)
for index,value in enumerate(all_datas):
if index == 0:
delegates = value
for delegate in delegates:
email = delegate['email']
# email = 'karthiashokan23@gmail.com'
parent_email = delegate['parent_email']
# parent_email = 'karthiashokan23@gmail.com'
delegate_no = delegate['delegate_no']
amount = delegate['total_amount']
prefix = delegate["prefix"]
conf_name = delegate['conf_name']
delegate_id = delegate['delegate_id']
ref_no = delegate['ref_no']
title = "View Confimation Mail"
if prefix:
name = delegate["prefix"] +" "+ delegate["full_name"]
else:
name = delegate["full_name"]
if str(amount) == "0.00":
amount = "Free"
else:
amount = "Rs."+str(amount)
# Reference number added here
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
subject = "Confirmation of registration - "+str(ref_no)
else:
sub_data = {
'delegate_no':str(delegate_no)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'delegate' : delegate,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html = render_template('email/confirmation_mail_v1.html',mail_content=mail_content,conf=conf)
htmls = html.replace("\n", "")
html_data.append(htmls)
if is_gen_number == 'ref_number':
delegate_no = ref_no
else:
delegate_no = delegate_no
stmt_1 =('''INSERT INTO mail_logs (conf_id,delegate_no,to_email,mail_type,subject,sent_at,sample_mail) VALUES ''')
row_val.append(('(' + ''''{}','{}','{}','{}','{}','{}','{}' ''' +')').format(conf_id,delegate_no,email,mail_type,subject,sent_at,sample_mail))
try:
if sample == "1" and sample:
email = sample_mail
if conf['is_email_enable'] == 1:
email_list = list(email.split(","))
for i in email_list:
email = i
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
else :
if email :
if conf['is_email_enable'] == 1:
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
# pass
except Exception as e:
print(e)
pass
stmt_1 = stmt_1 + ",".join(row_val)
stmt_1 = stmt_1 + ';'
BOModel().save_delegate_report_sendmail(stmt_1)
html_datas = str(html_data).replace("['", " ").replace("']", " ").replace(",", "").replace("' '", "")
if sample == "1" and sample:
mail_contant = "<h4 style= 'color:green' ; > Sample Confirmation Mail Successfully Send to "+ sample_mail+" . </h4>"
else:
mail_contant = "<h4 style= 'color:green' ; > Confirmation Mail Send Successfully .</h4>"
return mail_contant
@app.route('/bo_view_receipl_delegate_mail/<int:conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewReceiptDelegagteBulkMail(conf_id,conf_key,del_nos):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
sent_at = now.strftime("%Y-%m-%d %H:%M:%S")
delegate_nos = request.form['del_nos'] or None
mail_type = 'Receipt Mail'
sample_mail = request.values.get('sample_mail')
sample = request.values.get('sample_value'or None ) or None
template_name = "receipt_mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
row_val = []
mail_send_list = []
mail_not_send_list = []
html_data = []
all_datas = BOModel().receipt_no_generate_and_get_delegate_no_bulk(delegate_nos,conf_id)
for index,value in enumerate(all_datas):
if index == 1:
receipt_datas = value
for receipt_data in receipt_datas:
# Add status
payment_method = receipt_data['payment_method']
if payment_method and payment_method.lower() != "free":
email = receipt_data['email']
delegate_no = receipt_data['delegate_no']
# email = 'karthiashokan23@gmail.com'
receipt_no = receipt_data['receipt_no']
amount = receipt_data['amount']
# return amount
conf_name = receipt_data['conf_name']
delegate_nos = receipt_data['delegate_nos']
title = "View Receipt Mail"
if str(amount) == "0.00":
amount = "Free"
else:
amount = int(amount)
amount = f"{amount:,}"
amount_with_commas = amount
amount_for_convertion = int(receipt_data['amount'])
amount_in_words = Helper.amountTowords(amount_for_convertion)
amount_in_words = amount_in_words.title()
if amount == "Free" :
amount = amount
else:
amount = "Rs."+amount+"/-"
update_data = {
'amount_with_commas':amount_with_commas,
'amount_in_words':amount_in_words
}
receipt_data.update(update_data)
sub_data = {
'receipt_no':str(receipt_no),
'amount':str(amount)
}
subject = Helper.merge_tags(mailData['subject'],sub_data)
m_data = {
'mail_content' : mailData['mail_content'],
'receipt_data':receipt_data,
'conf':conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
html = render_template('email/receipt_email_v1.html',mail_content=mail_content,conf=conf)
htmls = html.replace("\n", "")
html_data.append(htmls)
stmt_1 = ('''INSERT INTO mail_logs (conf_id,delegate_no,to_email,mail_type,subject,sent_at,sample_mail) VALUES ''')
row_val.append(('(' + ''''{}','{}','{}','{}','{}','{}','{}' ''' +')').format(conf_id,delegate_no,email,mail_type,subject,sent_at,sample_mail))
try:
if sample == "1" and sample :
email = sample_mail
if conf['is_email_enable'] == 1:
email_list = list(email.split(","))
for i in email_list:
email = i
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
else :
if email :
if conf['is_email_enable'] == 1:
email_list = list(email.split(","))
for i in email_list:
email = i
EMAIL.MailTemplateSendMail(subject,html,email,mailData,conf)
except Exception as e:
pass
else:
pass
stmt_1 = stmt_1 + ",".join(row_val)
stmt_1 = stmt_1 + ';'
BOModel().save_delegate_report_sendmail(stmt_1)
html_datas = str(html_data).replace("['", " ").replace("']", " ").replace(",", "").replace("' '", "")
if sample == "1" and sample:
mail_contant = "<h4 style= 'color:green' ; >Sample Recipt Mail Successfully Send to "+ sample_mail+" . </h4>"
else:
mail_contant = "<h4 style= 'color:green' ; > Recipt Mail Send Successfully . </h4>"
return mail_contant
# end bulk mail here
@app.route('/<int:conf_id>/<conf_key>/bo_make_payment_wet_dry_lab', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required
def BoMakePaymentWetDryLab(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
society_id = conf['society_id']
now = datetime.now()
delegate_id = request.values.get('delegate_id')
payment_method = request.values.get('methods')
remarks = request.values.get('remarks')
receipt_mail = request.values.get('receipt_mails')
confimation_mail = request.values.get('confimation_mails')
txn_id = request.values.get('txn_ids')
custom_email = request.values.get('custom_emails')
check_addon_limit = AddonsModel().get_addons_limit(delegate_id)
msg = ""
is_valid = 1
if check_addon_limit :
for item in check_addon_limit :
if(item['is_full'] == 1 and item['reg_status'] != 2) :
is_valid = 0
msg = msg + "<br>" + item['display_name'] + " maximum level reached ."
if is_valid == 0 :
data = { 'msg':msg,'status':0,'data':''}
return jsonify(data)
Auth_user = Auth.user(society_id)
prefix = Auth_user['prefix'] or None
name = Auth_user['full_name'] or None
email = Auth_user['email']
mobile = Auth_user['mobile']
user_id = Auth_user['user_id']
full_name = prefix + " " + name if prefix else name
if delegate_id:
delegate_id = delegate_id
delegate = UserModel().get_delegate(delegate_id)
name = delegate['full_name']
prefix = delegate['prefix']
full_name = prefix + " " + name if prefix else name
# full_name = delegate['full_name']
email = delegate['email']
mobile = delegate['mobile']
if len(custom_email) > 0 and custom_email is not None:
full_name = None
email = custom_email
mobile = None
receipt_mail = 'receipt_mail'
unique_id = now.strftime('%Y%m%d%H%M%S')
created_at = now
url = conf['paymentgateway_api_url']
r = requests.get(url)
apikey = json.loads(r.content.decode())
am_id = conf['paymentgateway_appmaster_id']
is_test = conf['paymentgateway_is_test']
for index,value in enumerate(apikey) :
api_am_id = value['am_id']
if api_am_id == am_id:
app_key = value['app_key']
app_name = value['app_name']
break
else:
pass
payment_for = "Payment for TRICON 2023 Wet and Dry Lab Registration"
if conf_id == 36:
unique_id = app_key+unique_id
else:
unique_id = app_key+"_"+unique_id
delegate_ids = delegate_id
app_type = Helper.AppType
is_generate = 1
if payment_method == "Free": # return "free"
generate_payement = BOModel().usp_del_generate_free_payement(unique_id,delegate_ids,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
else: # return "cash"
generate_payement = BOModel().usp_del_generate_cash_payement(unique_id,delegate_ids,user_id,payment_for,payment_method,remarks,full_name,email,mobile,is_generate,created_at,txn_id,society_id,app_type,conf_id)
if generate_payement :
return redirect(url_for('back_office.BoPaymentServerResponse',user_id=user_id,unique_id=unique_id,payment_method=payment_method,receipt_mail=receipt_mail,confimation_mail=confimation_mail,conf_id=conf_id,conf_key=conf_key))
else:
data ={ 'msg':'following field is mandatory.','status':0,'data':''}
return jsonify(data)
# Purpose : To View Acknowledge Mail
# Created on 2023-11-02 10:12 by Ramya
@app.route('/bo_view_acknowledge_delegate_mail/<int:conf_id>/<conf_key>/<delegate_id>/<unique_id>', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoViewAcknowledgementDelegateMail(conf_id,conf_key,delegate_id,unique_id):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
dt_string = now.strftime('%Y-%m-%d %H:%M:%S')
template_name = "payement_acknowledgement_mail"
title = "View Acknowledgement Mail"
mailData = UserModel().get_mail_template(template_name,conf_id)
delegate_data = BOModel().get_user_payment_data(conf_id,delegate_id,unique_id)
full_name = delegate_data['full_name']
utr_number = delegate_data['utr_number']
m_data = {
'mail_content' : mailData['mail_content'],
'full_name' : full_name,
'utr_number' : utr_number,
'conf' : conf
}
mail_content = Helper.convert_html_for_mail_screen(m_data)
sub_data = {'conf_name':conf['conf_name']}
subject = Helper.merge_tags(mailData['subject'],sub_data)
html = render_template('email/waiting_confirmation_mail_v1.html',conf=conf,mail_content= mail_content)
html_data = render_template('email/view_waiting_confirmation_mail.html',conf_id=conf_id,conf_key=conf_key,delegate_id=delegate_id,conf=conf,subject=subject,html=html,title=title)
return html_data
# Purpose : To check In Progress data registered or not
# Created on 2023-12-12 14:57:00 by ramya
@app.route('/<int:conf_id>/<conf_key>/bo_check_registered_or_not',methods =["GET","POST"])
@RouteGroup.conf_required
def BoCheckRegisteredorNot(conf_id,conf_key):
try:
delegate_id = request.values.get('delegate_id')
mobile = request.values.get('mobile') or None
email = request.values.get('email') or None
if mobile or email :
check_data = BOModel().bo_check_registered_or_not_data(conf_id,email,mobile)
if check_data :
html_data = render_template('backoffice_user/delegate_registration/bo_inprogress_check_registered_or_not.html',user_data=check_data,conf_id=conf_id,conf_key=conf_key)
data = {"data":html_data, "msg":"Already registered.","status" :1,"delegate_id":delegate_id }
json_data = json.dumps(data,default=str)
else:
msg = "Email - '"+email +"' and Mobile - "+mobile+" is Not Registered"
data = {"msg":msg,"status" :2 }
json_data = json.dumps(data,default=str)
else:
data = {"msg":"Invalid 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
# Purpose : To Delete In Progress data by delegate_id
# Created on 2023-12-13 10:44:00 by ramya
@app.route('/<int:conf_id>/<conf_key>/bo_delete_inprogress_record',methods =["GET","POST"])
@RouteGroup.conf_required
def BoDeleteInprogressRecord(conf_id,conf_key):
try:
delegate_id = request.values.get('delegate_id')
delete_inprogress_record = BOModel().bo_delete_inprogress_data(conf_id,delegate_id)
del_status_id = 0 # add to cart add del_status_id
if delete_inprogress_record == "success" :
flash("Deleted Successfully","successMsg")
return redirect(url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key,del_status_id=del_status_id))
else:
flash(str(delete_inprogress_record),"Payerror")
return redirect(url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key,del_status_id=del_status_id))
except Exception as e:
flash(str(e),"Payerror")
return redirect(url_for('back_office.Index_user',conf_id=conf_id,conf_key=conf_key,del_status_id=del_status_id))
@app.route('/<int:conf_id>/<conf_key>/post_bulk_confirm_upi_reg', methods = ["GET", "POST"])
@RouteGroup.conf_required
def postBulkConfirmUPIReg(conf_id,conf_key):
confirm_mail = None
reciept_mail = None
msg = ""
conf = UserModel().get_confUserModel(conf_id,conf_key)
unique_id = request.values.get('unique_id')
confirm_mail = request.values.get('confimation_mail' or None ) or None
receipt_mail = request.values.get('receipt_mail'or None ) or None
transaction_ids = request.values.get('transaction_ids'or None ) or None
unique_id = unique_id.replace(","," ")
unique_id = unique_id.split()
for row in unique_id:
success_msg = BoGenerateDelegateNoAndReceiptNoByUniqueId(conf_id,conf_key,row,confirm_mail,receipt_mail)
msg = msg + success_msg
if transaction_ids:
status = 2
payment_msg = "Payment successful."
reg_transaction_data = VerifyPaymentModel().getRegTranscationDetailsByitsIds(conf_id,transaction_ids)
not_reg_transaction_data = VerifyPaymentModel().getNotTranscationDetailsByitsIds(conf_id,transaction_ids)
html = render_template('verifyPayment/searched_transaction_details_table.html',reg_transaction_data=reg_transaction_data,not_reg_transaction_data=not_reg_transaction_data,conf=conf,conf_id=conf_id,conf_key= conf_key,str=str,int=int,type=type)
else:
html = None
payment_msg = ''
msg = msg +'No records found'
status = 1
data ={ "payment_msg":payment_msg,'msg':msg,'status':status,'html':html}
return jsonify(data)
@app.route('/<int:conf_id>/<conf_key>/bo_generate_delegate_no_and_receipt_no_by_unique_id', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BoGenerateDelegateNoAndReceiptNoByUniqueId(conf_id,conf_key,unique_id,confirm_mail,receipt_mail):
conf = UserModel().get_confUserModel(conf_id,conf_key)
msg = ''
confirmation_mail = confirm_mail
receipt_mail = receipt_mail
role = None
receipt_data = BOModel().bo_generate_delegate_no_and_receipt_no(unique_id,conf_id,role)
if confirmation_mail == "confimation_mail" and receipt_mail == "receipt_mail":
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
dele_id = delegate_ids.split(",")
for i in dele_id:
delegate_id = i
BoConfirmationAndReceiptDelegagteMail(conf_id,conf_key,delegate_id,unique_id,None,1,None)
elif confirmation_mail == "confimation_mail" and receipt_mail == None:
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
dele_id = delegate_ids.split(",")
for i in dele_id:
delegate_id = i
if confirmation_mail == "confimation_mail" :
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,1,None)
else:
BoConfirmationDelegateMail(conf_id,conf_key,delegate_id,None,0,None)
elif receipt_mail =="receipt_mail" and confirmation_mail ==None:
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,1,None)
else:
if receipt_data:
receipt_data = receipt_data[0]
delegate_ids = receipt_data['delegate_ids']
delegate_nos = receipt_data['delegate_nos']
BoReceiptDelegagteMail(conf_id,conf_key,unique_id,None,0,None)
# Reference number added here
is_gen_number = conf['is_gen_number']
if is_gen_number == 'ref_number':
msg = msg + "<br/><br/>An amount of {} has been made towards {} registration.<br>The receipt has been email to {}.A delegate registration confirmation email has been sent to the email id of the delegate(s).<br><b>Receipt no. {} . Reference no(s). {}</b>".format(receipt_data['amount'],conf['conf_name'],receipt_data['email'],receipt_data['receipt_no'],receipt_data['ref_nos'])
else:
msg = msg + "<br/><br/>An amount of {} has been made towards {} registration.<br>The receipt has been email to {}.A delegate registration confirmation email has been sent to the email id of the delegate(s).<br><b>Receipt no. {} . Delegate no(s). {}</b>".format(receipt_data['amount'],conf['conf_name'],receipt_data['email'],receipt_data['receipt_no'],receipt_data['delegate_nos'])
return msg
def DelegateReportSendMail(conf_id,conf_key,date_1):
conf = Auth.getConf(conf_id,conf_key)
mailData = None
row_val = []
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
users = BOModel().get_daily_count_send_mail(conf_id,conf_key)
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
bcc_mail = []
to_mail = []
if users :
reg_data = BOModel().GetRegDataForMail(previous_date,conf_id)
for index, value in enumerate(reg_data):
addon_type_id = value["addon_type_id"]
today_count = today_count+value['today_count']
total_count = total_count+value['total_count']
today_paid_amount = today_paid_amount+value['today_paid_amount']
total_paid_amount = total_paid_amount+value['total_paid_amount']
if addon_type_id == 1:
today_del_count = today_del_count+value['today_count']
total_del_count = total_del_count+value['total_count']
if reg_data :
for index,value in enumerate(users):
if "@numerotec.com" in value['email']:
bcc_mail.append(value['email'])
else :
to_mail.append(value['email'])
if to_mail :
to_str = str(to_mail).replace('[','').replace(']','').replace("'",'').replace(",",' / ')
else :
to_mail = ['karthick@numerotec.com','ramya@numerotec.com','aravinth@numerotec.com','santhosh@numerotec.com','sridharan.r@numerotec.com','sai@numerotec.com','dp@numerotec.com','manjula@numerotec.com']
bcc_mail = None
to_str = None
html = render_template('email/reg_report_email.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url,to_mail=to_str)
subject = conf['conf_name']+"- Delegate Registration Count as on {}".format(dt_string)
EMAIL.MailTemplateSendMail_v2(subject,html,to_mail,bcc_mail,mailData,conf)
return "success"
else :
return "Report data is not available."
# updated on 06 Oct 2022
# @app.route('/<int:conf_id>/<conf_key>/bo_reg_report_view', methods = ["GET", "POST"])
# @RouteGroup.conf_required
# def BORegReportView(conf_id,conf_key):
# conf = Auth.getConf(conf_id,conf_key)
# today_count = 0
# total_count = 0
# today_paid_amount = 0
# total_paid_amount = 0
# today_del_count = 0
# total_del_count = 0
# bcc_mail = []
# to_mail = []
# dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
# date_1 = request.values.get("date",None)
# current_dt = datetime.now() - timedelta(1)
# yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
# base_url = request.host_url
# if "https" in base_url :
# pass
# else :
# base_url = base_url.replace("http" ,"https")
# if date_1 :
# previous_date = date_1
# else :
# yesterday = datetime.now() - timedelta(1)
# yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
# previous_date = yesterday
# users = BOModel().get_daily_count_send_mail(conf_id,conf_key)
# for index,value in enumerate(users):
# if "@numerotec.com" in value['email'] :
# bcc_mail.append(value['email'])
# else :
# to_mail.append(value['email'])
# if to_mail :
# to_str = str(to_mail).replace('[','').replace(']','').replace("'",'').replace(",",' / ')
# else :
# # to_mail = ['sai@numerotec.com','manjula@numerotec.com','dp@numerotec.com','sridharan.r@numerotec.com']
# # Testing Purpose
# to_mail = ['karthick@numerotec.com','ramya@numerotec.com','aravinth@numerotec.com','santhosh@numerotec.com']
# to_str = None
# reg_data = BOModel().GetRegDataForMail(previous_date,conf_id)
# if reg_data :
# for index, value in enumerate(reg_data):
# addon_type_id = value["addon_type_id"]
# today_count = today_count+value['today_count']
# total_count = total_count+value['total_count']
# today_paid_amount = today_paid_amount+value['today_paid_amount']
# total_paid_amount = total_paid_amount+value['total_paid_amount']
# if addon_type_id == 1:
# today_del_count = today_del_count+value['today_count']
# total_del_count = total_del_count+value['total_count']
# return render_template('email/reg_report_email.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url,to_mail=to_str)
# else :
# return "Registration record not exists."
@app.route('/<int:conf_id>/<conf_key>/bo_reg_report_view', methods = ["GET", "POST"])
@RouteGroup.conf_required
def BORegReportView(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
bcc_mail = []
to_mail = []
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
date_1 = request.values.get("date",None)
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
users = BOModel().get_daily_count_send_mail(conf_id,conf_key)
for index,value in enumerate(users):
if "@numerotec.com" in value['email'] :
bcc_mail.append(value['email'])
else :
to_mail.append(value['email'])
if to_mail :
to_str = str(to_mail).replace('[','').replace(']','').replace("'",'').replace(",",' / ')
else :
# to_mail = ['sai@numerotec.com','manjula@numerotec.com','dp@numerotec.com','sridharan.r@numerotec.com']
# Testing Purpose
to_mail = ['karthick@numerotec.com','ramya@numerotec.com','aravinth@numerotec.com','santhosh@numerotec.com']
to_str = None
# reg_data = BOModel().GetRegDataForMail(previous_date,conf_id)
reg_data = BOModel().GetRegDataForMail_v2(previous_date,conf_id)
for index,value in enumerate(reg_data):
if index == 0:
reg_data = value
if index == 1:
conf_db = value[0]
if index == 2:
waiting_for_approval_data = value
waiting_count = {}
if waiting_for_approval_data :
waiting_total_count = waiting_for_approval_data[0]['total_waiting_count']
if int(waiting_total_count) == 0 :
is_show_waiting_count = 0
else:
today_waiting_count = 0
total_waiting_count = 0
today_waiting_paid_amount = 0
total_waiting_paid_amount = 0
is_show_waiting_count = 1
today_waiting_count = today_waiting_count + waiting_for_approval_data[0]['today_waiting_count']
total_waiting_count = total_waiting_count + waiting_for_approval_data[0]['total_waiting_count']
today_waiting_paid_amount = today_waiting_paid_amount + waiting_for_approval_data[0]['today_waiting_paid_amount']
total_waiting_paid_amount = total_waiting_paid_amount + waiting_for_approval_data[0]['total_waiting_paid_amount']
waiting_count = {'today_waiting_count':today_waiting_count,'total_waiting_count':total_waiting_count,'today_waiting_paid_amount':today_waiting_paid_amount,'total_waiting_paid_amount':total_waiting_paid_amount}
else :
is_show_waiting_count = 0
if reg_data :
for index, value in enumerate(reg_data):
addon_type_id = value["addon_type_id"]
today_count = today_count+value['today_count']
total_count = total_count+value['total_count']
today_paid_amount = today_paid_amount+value['today_paid_amount']
total_paid_amount = total_paid_amount+value['total_paid_amount']
if addon_type_id == 1:
today_del_count = today_del_count+value['today_count']
total_del_count = total_del_count+value['total_count']
return render_template('email/reg_report_email.html',waiting_count = waiting_count,is_show_waiting_count = is_show_waiting_count,previous_date =yester_dt,reg_data = reg_data,conf=conf_db,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url,to_mail=to_str)
else :
return "Registration record not exists."
# Purpose : Separate conference mail version 2 start
# Created on 2024-04-13 12:00
@app.route('/daily_count_delegate_mail_v2', methods = ["GET", "POST"])
def DailyCountDelegateMail_v2():
send_manual = request.values.get('send_manual',None)
date_1 = request.values.get("date",None)
current_tm = datetime.now()
reg_end_on = current_tm + timedelta(days=2)
dt_string = current_tm.strftime("%Y-%m-%d %I:%M %p")
next_day = reg_end_on + timedelta(days=2)
if send_manual and int(send_manual) > 0 :
DelegateReportSendMail_v2(date_1)
return "Mail sent Successful."
else :
if next_day > current_tm :
if (current_tm.hour == 5 and current_tm.minute > 45) or (current_tm.hour == 6 and current_tm.minute < 25):
DelegateReportSendMail_v2(date_1)
return "Mail sent Successful."
else:
return ( dt_string +" Time not match ")
else:
return "Registration closed"
def DelegateReportSendMail_v2(date_1):
dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
reg_data_list = defaultdict(list)
conf_list = defaultdict(list)
waiting_list = defaultdict(list)
current_dt = datetime.now() - timedelta(1)
yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
base_url = request.host_url
if "https" in base_url :
pass
else :
base_url = base_url.replace("http" ,"https")
if date_1 :
previous_date = date_1
else :
yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
previous_date = yesterday
data = BOModel().GetRegDataForMail_v2(previous_date,None)
for index,value in enumerate(data):
if index == 0:
reg_data = value
if index == 1:
conf_db = value
if index == 2:
waiting_data_db = value
active_conf_list = []
for r in reg_data:
reg_data_list[r["conf_id"]].append(r)
for r in waiting_data_db:
waiting_list[r["conf_id"]].append(r)
for r in conf_db:
active_conf_list.append(r['conf_id'])
conf_list[r["conf_id"]].append(r)
if active_conf_list :
for conf_id in active_conf_list:
today_count = 0
total_count = 0
today_paid_amount = 0
total_paid_amount = 0
today_del_count = 0
total_del_count = 0
reg_data = reg_data_list[conf_id]
conf = conf_list[conf_id][0]
conf_name = conf['conf_name']
to_mail = conf['to_mail_id']
bcc_mail = conf['bcc_mail_id']
if to_mail :
to_str = str(to_mail).replace(",",' / ')
else :
to_mail = 'karthick@numerotec.com,ramya@numerotec.com,aravinth@numerotec.com,santhosh@numerotec.com,sridharan.r@numerotec.com,sai@numerotec.com,dp@numerotec.com,manjula@numerotec.com'
bcc_mail = None
to_str = None
for value in reg_data_list[conf_id]:
addon_type_id = value["addon_type_id"]
today_count = today_count+value['today_count']
total_count = total_count+value['total_count']
today_paid_amount = today_paid_amount+value['today_paid_amount']
total_paid_amount = total_paid_amount+value['total_paid_amount']
if addon_type_id == 1:
today_del_count = today_del_count+value['today_count']
total_del_count = total_del_count+value['total_count']
waiting_count = {}
waiting_for_approval_data = waiting_list[conf_id]
if waiting_for_approval_data :
waiting_total_count = waiting_for_approval_data[0]['total_waiting_count']
if int(waiting_total_count) == 0 :
is_show_waiting_count = 0
else:
today_waiting_count = 0
total_waiting_count = 0
today_waiting_paid_amount = 0
total_waiting_paid_amount = 0
is_show_waiting_count = 1
today_waiting_count = today_waiting_count + waiting_for_approval_data[0]['today_waiting_count']
total_waiting_count = total_waiting_count + waiting_for_approval_data[0]['total_waiting_count']
today_waiting_paid_amount = today_waiting_paid_amount + waiting_for_approval_data[0]['today_waiting_paid_amount']
total_waiting_paid_amount = total_waiting_paid_amount + waiting_for_approval_data[0]['total_waiting_paid_amount']
waiting_count = {'today_waiting_count':today_waiting_count,'total_waiting_count':total_waiting_count,'today_waiting_paid_amount':today_waiting_paid_amount,'total_waiting_paid_amount':total_waiting_paid_amount}
else :
is_show_waiting_count = 0
html = render_template('email/reg_report_email.html',waiting_count = waiting_count,is_show_waiting_count = is_show_waiting_count,previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url,to_mail=to_str)
subject = conf_name +"- Delegate Registration Count as on {}".format(dt_string)
# to_mail = "ramya@numerotec.com"
# bcc_mail = "karthick@numerotec.com"
# bcc_mail = None
EMAIL.MailTemplateSendMail_v2(subject,html,to_mail,bcc_mail,None,conf)
return "success"
else :
return "Report data is not available."
# def DelegateReportSendMail_v2(date_1):
# dt_string = datetime.now().strftime("%d-%m-%Y %I:%M %p")
# reg_data_list = defaultdict(list)
# conf_list = defaultdict(list)
# current_dt = datetime.now() - timedelta(1)
# yester_dt = datetime.strftime(current_dt, '%d-%m-%Y')
# base_url = request.host_url
# if "https" in base_url :
# pass
# else :
# base_url = base_url.replace("http" ,"https")
# if date_1 :
# previous_date = date_1
# else :
# yesterday = datetime.now() - timedelta(1)
# yesterday = datetime.strftime(yesterday, '%Y-%m-%d')
# previous_date = yesterday
# data = BOModel().GetRegDataForMail_v2(previous_date)
# for index,value in enumerate(data):
# if index == 0:
# reg_data = value
# if index == 1:
# conf_db = value
# active_conf_list = []
# for r in reg_data:
# reg_data_list[r["conf_id"]].append(r)
# for r in conf_db:
# active_conf_list.append(r['conf_id'])
# conf_list[r["conf_id"]].append(r)
# if active_conf_list :
# for conf_id in active_conf_list:
# today_count = 0
# total_count = 0
# today_paid_amount = 0
# total_paid_amount = 0
# today_del_count = 0
# total_del_count = 0
# reg_data = reg_data_list[conf_id]
# conf = conf_list[conf_id][0]
# conf_name = conf['conf_name']
# to_mail = conf['to_mail_id']
# bcc_mail = conf['bcc_mail_id']
# if to_mail :
# to_str = str(to_mail).replace(",",' / ')
# else :
# to_mail = 'karthick@numerotec.com,ramya@numerotec.com,aravinth@numerotec.com,santhosh@numerotec.com,sridharan.r@numerotec.com,sai@numerotec.com,dp@numerotec.com,manjula@numerotec.com'
# bcc_mail = None
# to_str = None
# # to_mail = "aravinth@numerotec.com,santhosh@numerotec.com"
# # bcc_mail = "karthick@numerotec.com"
# for value in reg_data_list[conf_id]:
# addon_type_id = value["addon_type_id"]
# today_count = today_count+value['today_count']
# total_count = total_count+value['total_count']
# today_paid_amount = today_paid_amount+value['today_paid_amount']
# total_paid_amount = total_paid_amount+value['total_paid_amount']
# if addon_type_id == 1:
# today_del_count = today_del_count+value['today_count']
# total_del_count = total_del_count+value['total_count']
# html = render_template('email/reg_report_email.html',previous_date =yester_dt,reg_data = reg_data,conf=conf,date=dt_string,today_count=today_count,total_count=total_count,today_paid_amount=today_paid_amount,total_paid_amount=total_paid_amount,today_del_count=today_del_count,total_del_count=total_del_count,base_url=base_url,to_mail=to_str)
# subject = conf_name +"- Delegate Registration Count as on {}".format(dt_string)
# EMAIL.MailTemplateSendMail_v2(subject,html,to_mail,bcc_mail,None,conf)
# return "success"
# else :
# return "Report data is not available."
# Separate conference mail version 2 ends
# UTR SEARCH START
@app.route('/<int:conf_id>/<conf_key>/bo/bo_search_upi_details', methods = ["POST","GET"])
def BoSearchUpiDetails(conf_id,conf_key):
delegateData = ""
try:
conf = Auth.getConf(conf_id,conf_key)
search_data = request.values.get("search_data")
if search_data:
parent_user_id = None
delegateData = BOModel().bo_search_utr_details(parent_user_id,conf_id,search_data)
del_html_data_dev = render_template('backoffice_user/bo_waiting_for_gen_del_no_table.html' ,user_data = delegateData,conf_id =conf_id,conf_key=conf_key,conf_data=conf,conf=conf,str=str,type=type)
data = {"del_html_data_dev":del_html_data_dev,"msg":"","status" :1 }
else:
del_html_data_dev = render_template('backoffice_user/bo_waiting_for_gen_del_no_table.html' ,user_data = delegateData,conf_id =conf_id,conf_key=conf_key,conf_data=conf,conf=conf,str=str,type=type)
data = {"del_html_data_dev":"","msg":"Please enter UTR number","status" :2 }
return json.dumps(data ,default=str)
except Exception as e:
data = {"del_html_data_dev":"","msg" : str(e) ,"status" : 401}
return json.dumps(data ,default=str)
# UTR SEARCH END
#----------------offline registration start ------------------------------------------------
'''------------------------ Offine Registartion in Back Office Start ----------------------------------------'''
@app.route('/<int:conf_id>/<conf_key>/bo/trade_offline_registration', methods = [ "GET","POST"])
@RouteGroup.conf_required
@RouteGroup.bo_trade_login_required
def TradeBoDelegate(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
reg_option = request.values.get('reg_option') or None
society_id = conf['society_id']
parent_user_id = Auth.user(society_id)['user_id']
user_id = request.values.get('user_id',0)
# parent_user_id = request.values.get('parent_user_id',0)
delegate_id = request.values.get('delegate_id',0)
is_custom_addons = 1
state_id = UserModel().get_states()
country_id = UserModel().get_country()
reg_types = BOModel().get_addon_reg_type(conf_id)
addons = TradeModel().get_addonsTradeBOModel(delegate_id,curr_dt,conf_id,None,is_custom_addons,parent_user_id,reg_option)
parent_user = UserModel().get_user(parent_user_id,society_id,conf_id)
badge_role = BOModel().get_badge_model(conf_id)
user = None
if int(str(user_id),0) > 0:
user = UserModel().get_user(user_id,society_id,conf_id)
delegate = None
if int(str(delegate_id),0) >0:
delegate = UserModel().get_delegate(delegate_id)
if delegate is None:
if user:
delegate = user
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
return render_template('trade/offline/register_page.html',reg_option=reg_option,conf_id=conf_id,conf_key=conf_key,user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,incompleted_template=incompleted_template,badge_role=badge_role)
@app.route('/bo/check_self_reg', methods = [ "GET","POST"])
def check_self_reg():
user_id = request.values.get('user_id',0)
society_id = request.values.get('society_id')
check_user_del = BOModel().check_user_delegate(user_id,society_id)
return str(check_user_del)
@app.route('/<int:conf_id>/<conf_key>/bo/trade_selected_member', methods = [ "POST"])
def TradeBoSelectedMember(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
# conf = BOModel().get_conf(conf_id,conf_key)
society_id = conf['society_id']
user_id = request.values.get('user_id',0)
parent_user_id = request.values.get('parent_user_id',0)
delegate_id = request.values.get('delegate_id',0)
reg_option = 'Member'
data = UserModel().get_state_country_users_type(user_id,society_id,delegate_id,conf_id,parent_user_id,now)
is_custom_addons = 1
addons = TradeModel().get_addonsTradeBOModel(delegate_id,curr_dt,conf_id,None,is_custom_addons,parent_user_id,reg_option)
badge_role = BOModel().get_badge_model(conf_id)
for index,value in enumerate(data):
if index == 0:
state_id = value
if index == 1:
country_id = value
if index == 2:
user = value
if index == 4:
reg_types = value
if index == 6:
parent_user = value
if int(str(user_id),0) > 0: #Check user_id greater then 0
user = UserModel().get_user(user_id,society_id,conf_id) # get user details
if user and user["member_type_id"] == Custom.MemberTypeId or user["member_type_id"] == Custom.AssociateMemberTypeId or user["member_type_id"] in Custom.ASIMemberTypeId or user["member_type_id"] == Custom.NationalMemberTypeId: # check user is member Custom -
user = OfflineModel().get_member_details(user_id,curr_dt)
html_data = render_template('trade/offline/register_page_content.html',delegate=user,states=state_id,countries=country_id,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,badge_role=badge_role)
data = { "html_data": html_data,"status":1}
return json.dumps(data,default =str)
else:
html_data = None
data = { "html_data": html_data,"status":0}
return json.dumps(data,default =str)
else:
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo/trade_add_delegate', methods = [ "GET","POST"])
@RouteGroup.conf_required
def TradeBoAddDelegate(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
if request.method == 'POST':
conf = BOModel().get_conf(conf_id,conf_key)
society_id = conf['society_id']
user_id = request.values.get('user_id',0)
parent_user_id = request.values.get('parent_user_id',0)
delegate_id = request.values.get('delegate_id',0)
update = request.values.get('update',0)
reg_option = request.values.get('reg_option') or None
print("reg_option")
print(reg_option)
data = UserModel().get_state_country_users_type(user_id,society_id,delegate_id,conf_id,parent_user_id,now)
is_custom_addons = 1
addons = TradeModel().get_addonsTradeBOModel(delegate_id,curr_dt,conf_id,None,is_custom_addons,parent_user_id,reg_option)
badge_role = BOModel().get_badge_model(conf_id)
for index,value in enumerate(data):
if index == 0:
state_id = value
if index == 1:
country_id = value
if index == 2:
user = value
if index == 4:
reg_types = value
if index == 6:
parent_user = value
if int(str(user_id),0) > 0: #Check user_id greater then 0
user = UserModel().get_user(user_id,society_id,conf_id) # get user details
if user and user["member_type_id"] == Custom.MemberTypeId or user["member_type_id"] == Custom.AssociateMemberTypeId or user["member_type_id"] in Custom.ASIMemberTypeId or user["member_type_id"] == Custom.NationalMemberTypeId: # check user is member Custom -
user = OfflineModel().get_member_details(user_id,curr_dt)
if int(str(delegate_id),0) >0:
delegate = UserModel().get_delegate(delegate_id)
user = delegate if delegate else user
if user_id == parent_user_id: # if both same then call myself add or edit else add or edit for other
return render_template('trade/offline/register_page_content.html',user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,update=update,badge_role=badge_role)
else:
return render_template('trade/offline/register_page_content.html',user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,update=update,badge_role=badge_role)
user = None
if int(str(user_id),0) > 0:
user = UserModel().get_user(user_id,society_id,conf_id)
delegate = None
if int(str(delegate_id),0) >0:
delegate = UserModel().get_delegate(delegate_id)
if delegate is None:
if user:
delegate = user
return render_template('trade/offline/register_page_content.html',user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,update=update,badge_role=badge_role)
else :
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo/edit_delegate', methods = [ "GET","POST"])
@RouteGroup.conf_required
def BoEditDelegate(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
# conf = BOModel().get_conf(conf_id,conf_key)
society_id = conf['society_id']
user_id = request.values.get('user_id',0)
parent_user_id = request.values.get('parent_user_id',0)
delegate_id = request.values.get('delegate_id',0)
del_status_id = request.values.get('del_status_id')
reg_option = request.values.get('reg_option') or None
data = UserModel().get_state_country_users_type(user_id,society_id,delegate_id,conf_id,parent_user_id,now)
is_custom_addons = 1
addons = TradeModel().get_addonsTradeBOModel(delegate_id,curr_dt,conf_id,None,is_custom_addons,parent_user_id,reg_option)
badge_role = BOModel().get_badge_model(conf_id)
for index,value in enumerate(data):
if index == 0:
state_id = value
if index == 1:
country_id = value
if index == 2:
user = value
if index == 4:
reg_types = value
if index == 6:
parent_user = value
if int(str(user_id),0) > 0: #Check user_id greater then 0
user = UserModel().get_user(user_id,society_id,conf_id) # get user details
if user and user["member_type_id"] == Custom.MemberTypeId or user["member_type_id"] == Custom.AssociateMemberTypeId or user["member_type_id"] in Custom.ASIMemberTypeId or user["member_type_id"] == Custom.NationalMemberTypeId: # check user is member Custom -
user = OfflineModel().get_member_details(user_id,curr_dt)
if int(str(delegate_id),0) >0:
delegate = UserModel().get_delegate(delegate_id)
user = delegate if delegate else user
if user_id == parent_user_id: # if both same then call myself add or edit else add or edit for other
return render_template('backoffice_user/delegate_registration/edit_index_page_member.html',user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,del_status_id=del_status_id,badge_role=badge_role)
else:
return render_template('backoffice_user/delegate_registration/edit_index_page_member.html',user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,del_status_id=del_status_id,badge_role=badge_role)
user = None
if int(str(user_id),0) > 0:
user = UserModel().get_user(user_id,society_id,conf_id)
delegate = None
if int(str(delegate_id),0) >0:
delegate = UserModel().get_delegate(delegate_id)
if delegate is None:
if user:
delegate = user
return render_template('backoffice_user/delegate_registration/edit_index_page_member.html',user_id=user_id,states=state_id,countries=country_id,delegate=delegate,parent_user_id=parent_user_id,reg_types=reg_types,addons=addons,str=str,type=type,conf=conf,del_status_id=del_status_id,badge_role=badge_role)
@app.route('/<int:conf_id>/<conf_key>/bo/delete_delegate', methods = [ "GET","POST"])
@RouteGroup.conf_required
def BoDeleteDelegate(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
delegate_id = request.values.get('delegate_id',0)
parent_user_id = request.values.get('parent_user_id',0)
if int(str(delegate_id)) > 0:
BOModel().delete_delegate(delegate_id)
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
json={ 'msg':'Deleted Successfully','status':1,'incompleted_template':incompleted_template}
else:
json={ 'msg':'Error try after some time','status':1,'data': ''}
return jsonify(json)
@app.route('/<int:conf_id>/<conf_key>/bo/trade_search_user', methods = ["GET", "POST"])
@RouteGroup.conf_required
def TradeBoGetSearchUser(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
if request.method == 'POST':
conf = BOModel().get_conf(conf_id,conf_key)
society_id = conf['society_id']
search = request.values.get('search')
user_id = request.form['user_id']
user = UserModel().get_search_user(search,society_id,conf_id)
if user == None:
html = None
else:
html = render_template('trade/offline/search_table.html' , user_data= user,conf_id=conf_id,conf_key=conf_key)
return json.dumps(html ,default=str)
else:
return redirect(url_for('back_office.BoRegister',conf_id=conf_id,conf_key=conf_key))
@app.route('/<int:conf_id>/<conf_key>/bo/trade_post_add_register', methods = ["POST"])
@RouteGroup.conf_required
def TradeBoPostAddRegister(conf_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
pg_cert_path = None
pg_cert_name = None
file = None
file_upload = None # For upload certificates in delegates table # Added by Ganesan J
is_file_upload = 0
msg = ""
status = 1
data = ""
delegate_id = request.form['delegate_id'] or None
conf_id = request.form['conf_id']
conf_key = request.form['conf_key']
society_id = conf['society_id']
email = request.form['email']
mobile = request.form['mobile']
parent_user_id = request.form['parent_user_id']
user_id = request.form['user_id']
if int(user_id) > 0 :
output = UserModel().get_user(user_id,society_id,conf_id)
email = output['email']
mobile = output['mobile']
else:
email = email
mobile = mobile
# conf = BOModel().get_conf(conf_id,conf_key)
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
prefix = request.form['prefix'] or None
full_name = request.form['full_name'] or None
date_of_birth = request.form['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
gender = request.form['gender'] or None
address1 = request.form['address1'] or None
address2 = request.form['address2'] or None
address3 = request.form['address3'] or None
city = request.form['city'] or None
pincode = request.form['pincode'] or None
state_id = request.form['state_id'] or None
country_id = request.form['country_id'] or None
mc_number = request.form['mc_number'] or None
mc_state_id = request.form['mc_state_id'] or None
membership_no = request.form['membership_no'] or None
role = request.form['role'] or None
if role :
if "_" in role :
role_1 = role.split("_")
role = role_1[0]
range_1 = role_1[1]
else :
role = "DELEGATE"
range_1 = 1
check_in_date = request.values.get('check_in_date') or None
check_out_date = request.values.get('check_out_date') or None
check_in_time = request.values.get('check_in_time') or None
check_out_time = request.values.get('check_out_time') or None
designation = request.values.get('designation') or None
institution = request.values.get('institution') or None
nationality = request.values.get('nationality') or None
accom_persons = request.values.get("accom_persons" or None)
delegate_remarks= request.form['delegate_remarks'] or None
is_take_part_bpw= request.values.get('is_take_part_bpw') or None
mem_applied_at = request.values.get('mem_applied_at') or None
mem_is_applied = request.values.get('mem_is_applied') or None
mem_year = request.values.get('mem_year') or None
food = request.values.get('food') or None
age = request.values.get('age') or None
user_type_id = None
district = request.values.get('district') or None
# Delegate Image
image_data = request.values.get('delegate_image_base64',None) or None
image_data_ext = request.values.get('delegate_image_ext') or None
is_remove_del_img = request.values.get('is_remove_del_img') or 0
if int(user_id) > 0:
member_type_id = request.form['member_type_id'] or None
else:
member_type_id = 2
conference_id = conf_id
time_set = request.form['time_set'] or None
conf_id = conf_id
reg_types = BOModel().get_addon_reg_type(conf_id)
addons = BOModel().get_addonsBOModel(delegate_id,curr_dt,conf_id)
reg_addons = {}
insert_del_addons = []
delete_del_addons = []
created_at_date = {'created_at': dt_string}
updated_at_date = {'updated_at': dt_string}
for addon in addons:
reg_addons[addon["addon_id"]] = addon
#collect all delegate_addon_id for delegate
if addon["delegate_addon_id"] and addon["delegate_addon_id"] > 0:
delete_del_addons.append(addon["delegate_addon_id"])
is_mandatory = {}
for rt in reg_types:
is_mandatory[rt['addon_type_id']] = rt['is_mandatory']
values = request.values.getlist(rt.get('input_name'))
if values:
is_mandatory[rt['addon_type_id']] = 0
for val in values:
addon_id = val
addon = reg_addons[int(val)]
user_type_id = addon.get("user_type_id")
if addon.get("delegate_addon_id") and addon.get("delegate_addon_id") > 0 and request.form['addon_amount_'+val] == addon.get("amount"):
#if already have addon and deleate not change the addon then we removed delegate_addon_id in delete_addons variable
delete_del_addons.remove(addon.get("delegate_addon_id"))
else:
add_data = {
"addon_id" : val,
"amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"original_amount" : request.form['addon_amount_'+val] or addon.get("amount",0),
"reg_status" : 0
}
insert_del_addons.append(add_data)
# TNASICON 2023
if conf_id and int(conf_id) in [19] :
if addon_id:
if int(addon_id) in [223,377,378,379]:
file = request.files.get('files_asi',None)
if file:
image_name = "tnasicon2023_asipayment_proof_"
foldername = ""
is_file_upload = 1
# IAP KARNATAKA 2023,SZTNAOI 2023
if conf_id and int(conf_id) in [32,36,8] :
file = request.files.get('files',None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
# MEDITER RETINA CLUB 2023
if conf_id and int(conf_id) == 37 :
if addon_id:
if int(addon_id) in [553,554,557,559,561,562,565,567,571,573,575,576]:
file = request.files.get('files',None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
# IPGS 2023
if conf_id and int(conf_id) == 29 :
if addon_id:
if int(addon_id) in [365,373,369]:
file = request.files.get('files_', None)
if file:
image_name = "certificate_proof_"
foldername = ""
is_file_upload = 1
if int(is_file_upload) == 1:
file_upload = AWSUpload().AwsFileUpload(user_id,file,image_name,foldername)
else:
file_upload = ''
# If file upload function call then this block will execute
if file_upload :
file_upload = ast.literal_eval(file_upload)
file_upload_msg = file_upload["msg"]
file_upload_status = file_upload["status"]
if file_upload_status == 1 :
pg_cert_path = file_upload["pg_cert_path"] or None
pg_cert_name = file_upload["pg_cert_name"] or None
else :
return file_upload_msg
reg_Validation = []
for key in is_mandatory:
if is_mandatory[key] == 1:
reg_Validation.append({'key': key ,'msg': "following field is mandatory."})
status = 0;
del_data = {
'parent_user_id': parent_user_id,
'prefix' : prefix,
'user_id' : user_id if int(user_id) >0 else None,
'full_name' : full_name,
'email' : email,
'mobile' : mobile,
'dob' : dob,
'gender' : gender,
'address1' : address1,
'address2' : address2,
'address3' : address3,
'city' : city,
'pincode' : pincode,
'state_id' : state_id,
'country_id' : country_id,
'mc_number' : mc_number,
'mc_state_id' : mc_state_id,
'conference_id' : conference_id,
'membership_no' : membership_no,
'member_type_id': member_type_id,
'admin_user_id' : parent_user_id,
'society_id' : society_id,
'is_offline' : 1,
'd_is_kit' : 1,
'role' : role,
'check_in_date' : check_in_date,
'check_out_date': check_out_date,
'check_in_time' : check_in_time,
'check_out_time': check_out_time,
'designation' : designation,
'institution' : institution,
'nationality' : nationality,
'accom_persons' : accom_persons,
'delegate_remarks': delegate_remarks,
'is_take_part_bpw':is_take_part_bpw,
'district' : district,
# extra input fields
'mem_is_applied' : mem_is_applied,
'mem_applied_at' : mem_applied_at,
'mem_year' : mem_year,
'age' : age,
'food' : food,
'reg_type_id' : user_type_id,
'del_status_id' : 0
}
cert_proof_deleted = request.values.get('cert_proof_deleted') or 0
asi_proof_deleted = request.values.get('asi_proof_deleted') or 0
res_proof_deleted = request.values.get('res_proof_deleted_') or 0
if conf_id and int(conf_id) in [32,36,8] :
if pg_cert_path or int(cert_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(cert_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
if conf_id and int(conf_id) == 19 :
if addon_id:
if int(addon_id) in [223,377,378,379]:
if pg_cert_path or int(asi_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(asi_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
if conf_id and int(conf_id)== 29 :
if addon_id:
if int(addon_id) in [365,373,369]:
if pg_cert_path or int(res_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(res_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
else:
del_data['pg_cert_path'] = None
del_data['pg_cert_name'] = None
if conf_id and int(conf_id) == 37 :
if addon_id:
if int(addon_id) in [553,554,557,559,561,562,565,567,571,573,575,576]:
if pg_cert_path or int(cert_proof_deleted) == 1:
del_data['pg_cert_path'] = pg_cert_path
if pg_cert_name or int(cert_proof_deleted) == 1:
del_data['pg_cert_name'] = pg_cert_name
else:
del_data['pg_cert_path'] = None
del_data['pg_cert_name'] = None
if int(time_set) == 0:
del_data.update(created_at_date)
else:
del_data.update(updated_at_date)
trade_by_limit = Auth.user(society_id)['trade_by_limit']
if user_type_id :
if trade_by_limit and int(trade_by_limit) == 1 :
get_trade_limit = TradeModel().get_trade_by_limit(parent_user_id,user_type_id,conf_id,delegate_id)
get_trade_del_count = TradeModel().get_total_trade_del_count(parent_user_id,conf_id)
# Reg. type limit check
reg_limit = get_trade_limit['reg_limit']
total_reg_limit_count = get_trade_limit['total_delegate_count']
# Total limit check
trade_access_limit = get_trade_limit['trade_access_limit'] or 0
total_trade_del_count = get_trade_del_count['total_trade_del_count'] or 0
trade_error_msg = get_trade_limit['user_type']
if int(trade_access_limit) >= int(total_trade_del_count) :
if int(total_reg_limit_count) == 0 :
pass
elif int(reg_limit) <= int(total_reg_limit_count) :
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':trade_error_msg +' Limit reached','status':0,'incompleted_template':incompleted_template}
return jsonify(data)
else:
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':'Total limit reached','status':0,'incompleted_template':incompleted_template}
return jsonify(data)
else :
get_trade_limit = TradeModel().get_trade_limit(parent_user_id,user_type_id,conf_id,delegate_id)
total_reg_limit_count = get_trade_limit['total_delegate_count']
trade_access_limit = get_trade_limit['trade_access_limit'] or 0
trade_error_msg = ""
if int(total_reg_limit_count) < int(trade_access_limit):
pass
else:
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':trade_error_msg +' Total Limit reached','status':0,'incompleted_template':incompleted_template}
return jsonify(data)
if int(delegate_id) > 0:
delegate = UserModel().get_delegate(delegate_id)
if delegate:
if delegate['delegate_no'] and delegate['delegate_no'] >0:
delegate_id = BOModel().insert_delegate(del_data)
if image_data:
AWSUpload().DelegateImageUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
else :
if int(is_remove_del_img) == 1:
AWSUpload().DeleteDelegateImage(delegate_id,conf_key)
BOModel().save_delegates_addons(delegate_id,insert_del_addons,delete_del_addons,now)
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':'Add Successfully','status':1,'incompleted_template':incompleted_template}
return jsonify(data)
else:
status = 0
msg = "your request cannot be processed. click here to try after some time"
if status == 1:
update = BOModel().update_delegate(delegate_id,del_data,None,conf_id)
if image_data:
AWSUpload().DelegateImageUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
else :
if int(is_remove_del_img) == 1:
AWSUpload().DeleteDelegateImage(delegate_id,conf_key)
BOModel().save_delegates_addons(delegate_id,insert_del_addons,delete_del_addons,now)
json = {
'msg':'Update completed ...',
'status':status,
'incompleted_template' : TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key),
'reg_validation' : reg_Validation
}
return jsonify(json)
else:
existing_data = None
if int(user_id) > 0 :
existing_data = UserModel().get_check_exsits_delegate(user_id,parent_user_id,conf_id)
if existing_data:
delegate_no = existing_data["delegate_no"]
if delegate_no and delegate_no > 0 :
delegate_id = BOModel().insert_delegate(del_data)
if image_data:
AWSUpload().DelegateImageUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
else :
if int(is_remove_del_img) == 1:
AWSUpload().DeleteDelegateImage(delegate_id,conf_key)
BOModel().save_delegates_addons(delegate_id,insert_del_addons,delete_del_addons,now)
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':'Add Successfully','status':1,'incompleted_template':incompleted_template}
return jsonify(data)
else:
# Already registered block .So is_mandatory is removed.
delegate_id = BOModel().insert_delegate(del_data)
if image_data:
AWSUpload().DelegateImageUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
else :
if int(is_remove_del_img) == 1:
AWSUpload().DeleteDelegateImage(delegate_id,conf_key)
BOModel().save_delegates_addons(delegate_id,insert_del_addons,delete_del_addons,now)
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':'Add Successfully','status':1,'incompleted_template':incompleted_template}
return jsonify(data)
else:
if status == 1:
delegate_id = BOModel().insert_delegate(del_data)
if image_data:
AWSUpload().DelegateImageUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
else :
if int(is_remove_del_img) == 1:
AWSUpload().DeleteDelegateImage(delegate_id,conf_key)
BOModel().save_delegates_addons(delegate_id,insert_del_addons,delete_del_addons,now)
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
data={ 'msg':'Add Successfully','status':1,'incompleted_template':incompleted_template}
return jsonify(data)
else:
data= { 'msg':'','status':0,'data':'','reg_validation' : reg_Validation}
return jsonify(data)
'''-----------landing page end-----------'''
@app.route('/<int:conf_id>/<conf_key>/<parent_user_id>/trade_offline_get_parent_incompleted_delegates', methods = ["GET", "POST"])
def TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
unique_id = None
society_id = conf['society_id']
payment_types = BOModel().get_payment_types(conf_id)
delegateData = TradeModel().get_incompleted_delegates_by_parent_user_id(parent_user_id,unique_id,conf_id,reg_mode=1)
if delegateData:
total_amount = 0
for index , value in enumerate(delegateData):
total_amount = total_amount + (value['total_amt'] if value['total_amt'] is not None else 0)
del_html_data = render_template('trade/offline/incomplete_table.html' ,user_data = delegateData,user_id = parent_user_id,conf_id =conf_id,conf_key=conf_key,total_amount=total_amount,conf=conf,payment_types=payment_types)
else:
del_html_data = ""
return del_html_data
@app.route('/<int:conf_id>/<conf_key>/<parent_user_id>/get_parent_incompleted_delegates_table', methods = ["GET", "POST"])
def get_parent_incompleted_delegates_table(parent_user_id,conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
unique_id = None
society_id = conf['society_id']
payment_types = BOModel().get_payment_types(conf_id)
delegateData = BOModel().get_incompleted_delegates_by_parent_user_id(parent_user_id,unique_id,conf_id,reg_mode=1)
if delegateData:
total_amount = 0
for index , value in enumerate(delegateData):
total_amount = total_amount + (value['total_amt'] if value['total_amt'] is not None else 0)
del_html_data = render_template('trade/offline/incomplete_table_content.html' ,user_data = delegateData,user_id = parent_user_id,conf=conf,conf_id =conf_id,conf_key=conf_key,total_amount=total_amount,payment_types=payment_types)
else:
del_html_data = ""
return del_html_data
@app.route('/<int:conf_id>/<conf_key>/get_total', methods = ["GET","POST"])
def GetTotal(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
delegate_ids = request.form.getlist('delegate[]')
parent_user_id = request.values.get('parent_user_id')
incompleted_template = TradeOfflineget_parent_incompleted_delegates(parent_user_id,conf_id,conf_key)
if len(delegate_ids)> 0 :
if delegate_ids:
delegate_ids = str(delegate_ids)
delegate_ids = delegate_ids.replace("[" ,"").replace("]","").replace("'","")
total_amount = BOModel().get_dele(delegate_ids)
json={ 'status':1,'incompleted_template':incompleted_template,'total_amount':total_amount}
else:
json={ 'status':1,'incompleted_template':incompleted_template,'total_amount':''}
return jsonify(json)
@app.route('/<int:conf_id>/<conf_key>/get_addons_total', methods = ["GET","POST"])
def GetAddonsTotal(conf_id,conf_key):
conf = Auth.getConf(conf_id,conf_key)
addon_ids = request.form.getlist('addon_id[]')
delegate_id = request.form['delegate_id']
if len(addon_ids)> 0 :
addon_ids = str(addon_ids)
addon_ids = addon_ids.replace("[" ,"").replace("]","").replace("'","")
total_amount = BOModel().get_addons_total_amount(addon_ids,delegate_id)
json={ 'status':1,'total_amount':total_amount}
else:
json={ 'status':1,'total_amount':''}
return jsonify(json)
#------------------offline registration end----------------------
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists