Sindbad~EG File Manager

Current Path : /home/numerotech/mcinfo.numerotech.com/mc_info_update/core/controller/
Upload File :
Current File : //home/numerotech/mcinfo.numerotech.com/mc_info_update/core/controller/ExamCandidateController.py

from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,Response,jsonify,json
from core.model.ExamCandidateModel import ExamCandidateModel
from random import randint
from core.library.email import EMAIL
from .. import Cryptography
from flask import session, app
from werkzeug.utils import secure_filename
import ast
from mandrill import Mandrill
from os.path import join, dirname,isfile, realpath
from datetime import datetime, timedelta
import os
import requests,mandrill,json,math,random



from itertools import groupby
from operator import itemgetter

app = Blueprint('exam_candidate', __name__)

@app.route('/fiages_candidate_list', methods = ["GET", "POST"])
def FIAGESCandidateList():
	more_than_record_list = ['atluri9@yahoo.com','avinash.1973@gmail.com','becksahad23@gmail.com','bharucha.manoj@gmail.com','bhuwnesh1989@gmail.com','birendravss@gmail.com','dinshu.mh0106@gmail.com','docnaveenverma@gmail.com','doctorratneshkumar@gmail.com','dr_ramakanth@rediffmail.com','dr.jagat01@gmail.com','dr.jnbarman@gmail.com','dr.pnarendra@gmail.com','dr.ramaswami89@gmail.com','dr.vrajan@yahoo.co.in','drchlua@gmail.com','drdurgesh11@gmail.com','drharshms@gmail.com','drirshadkgmc2009@gmail.com','drkcacarunagiri@gmail.com','drkrishnaaiims@gmail.com','drlenka09@gmail.com','drlohokarenarendra@gmail.com','drmatchavel@hotmail.com','drnk.2011@gmail.com','drpradip4u@gmail.com','drprateekgourav@gmail.com','drpriyambad.sahu@gmail.com','drravihzb@gmail.com','drsameerummer@gmail.com','drsdilipkumar450@gmail.com','drtejassavdekar@gmail.com','drvinay07@gmail.com','elango.vikram@gmail.com','export@lebenlab.com','gilesfanny@gmail.com','gnagagsri@gmail.com','imrantariqajmal@gmail.com','karanwalpoonam123@gmail.com','karthikshivam03@gmail.com','krn1980p@gmail.com','lavanyamoturi08@gmail.com','mahenderjkv@gmail.com','milanvaghasia921993@gmail.com','mohdtariq271@gmail.com','myselfsohail74@gmail.com','nagaa.mahendran@gmail.com','namria73@gmail.com','naveenalexander@yahoo.co.in','nazrulhasan355@gmail.com','patelshaishav99@gmail.com','prashantmeshram1980@gmail.com','pravin.hector@gmail.com','prudhvismc@gmail.com','rahulmahadar@gmail.com','rathodprajawalam@gmail.com','rehan1977@rediffmail.com','rohtash.luthra@gmail.com','saad.anwar05@gmail.com','samirjain29@gmail.com','shamv21@gmail.com','singh.santanu8@gmail.com','sourabh.damani@yahoo.com','spsknair@gmail.com','sudiptomallik2010@gmail.com','thasneem.eakareem@gmail.com','tusharastafari@gmail.com','uk19850003@gmail.com','ukpandey.gmc@gmail.com','varun14021982@gmail.com','vedrishu@gmail.com','veenavenkat.2994@gmail.com','vgokul1708@gmail.com','vignesh.vicky827@gmail.com','vsuganyadevi@gmail.com','yashpal_ksp28@rediffmail.com','zahidrather8989@gmail.com']
	more_than_record_list = str(more_than_record_list)
	more_than_record_list = more_than_record_list.replace("[","")
	more_than_record_list = more_than_record_list.replace("]","")
	more_than_records = ExamCandidateModel().getDelegateDuplicateEmailRecords(more_than_record_list)
	one_records = ExamCandidateModel().getDelegateNonDuplicateEmailRecords(more_than_record_list)

	print(type(more_than_records))
	print(type(one_records))

	# candidate_data = ExamCandidateModel().getFIAGESCandidateOnly()
	return render_template('exam_candidate/exam_candidate_index.html' ,candidate_data=candidate_data,itemgetter=itemgetter,groupby=groupby)


@app.route('/mail_respond/<uuid>', methods = ["GET", "POST"])
def MailRespond(uuid):
	data_1 = None
	candidate_data = ExamCandidateModel().getExamCandidateByUserUUID(uuid)
	course_data = ExamCandidateModel().CourseData()
	course_data_1 =[]
	conf_id  =1
	other_course = None
	delegate_id  = 0
	
	if candidate_data :
		data_1    = candidate_data[0]
		user_id   = data_1["user_id"]
		email     = data_1["email"]
		arrival_time   = data_1["arrival_time"]
		departure_time = data_1["departure_time"]
		delegate_id    = data_1["delegate_id"]

		for index,value in enumerate(candidate_data) : 
			course_name = value["course_name"]
			course_data_1.append(course_name)

		course_data_1 = str(course_data_1)
		course_data_1 = course_data_1.replace("[", "")
		course_data_1 = course_data_1.replace("]", "")	
		other_course  = ExamCandidateModel().OtherCourseData(email,user_id,conf_id)
		states        = ExamCandidateModel().getStatesList()
		html_data     = render_template('exam_candidate/other_course_table.html',other_course = other_course)
		
	else:
		candidate_data = ExamCandidateModel().getNoneRegisteredData(uuid)
		if candidate_data : 
			data_1 = candidate_data[0]
			user_id 	   = None
			email          = data_1["email"] 
			arrival_time   = None
			departure_time = None

			other_course  = ExamCandidateModel().OtherCourseData(email,user_id,conf_id)	
			states        = ExamCandidateModel().getStatesList()
			html_data     = render_template('exam_candidate/other_course_table.html',other_course = other_course)
		else :
			return "<h4 style='color:red;'> Invalid URL <h4>"
		
		
				

	return render_template('exam_candidate/mail_response.html',candidate_data=candidate_data ,data=data_1,course_data=course_data,email=email,user_id=user_id,html_data=html_data,course_data_1=course_data_1,uuid=uuid,states=states,arrival_time = arrival_time,departure_time=departure_time,len=len,delegate_id=delegate_id)	


 # invitation mail  start single
# @app.route('/invitation_mail/<uuid>', methods = ["GET", "POST"])
# def InvitationMail(uuid):
# 	candidate_data = ExamCandidateModel().getExamCandidateByUserUUID(uuid)
# 	if candidate_data : 
# 		data_1    = candidate_data[0]
# 		return render_template('exam_candidate/fiages_email/invitation_mail.html',candidate_data=candidate_data ,data=data_1,uuid=uuid)
# 	else :
# 		candidate_data = ExamCandidateModel().getNoneRegisteredData(uuid)
# 		if candidate_data : 
# 			data_1 = candidate_data[0]
# 			return render_template('exam_candidate/fiages_email/invitation_mail.html',candidate_data=candidate_data ,data=data_1,uuid=uuid)
# 		else :
# 			return "<h4 style='color:red;'>Record does not exist.</h4>"	

#add_mcq_other_course
@app.route('/add_mcq_other_course', methods = ["GET", "POST"])
def AddMcqOtherCourse():
	now       = datetime.now()
	curr_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	try:
		user_id          = request.values.get("user_id")
		email            = request.values.get("email")
		mcq_other_course = request.values.get("mcq_other_course")
		delegate_no      = request.values.get("delegate_no") or None
		if delegate_no and delegate_no == 0 :
			delegate_no = None

		fiages_course_id = request.values.get("fiages_course_id") or None
		conf_id = 1 

		data_for_db={'user_id'    : user_id,
		'email'            : email,
		# 'mcq_other_course' : mcq_other_course,
		'created_at' 	   : curr_dt,
		'updated_at' 	   : curr_dt,
		'course_name'      : mcq_other_course,
		'delegate_no'      : delegate_no,
		'conf_id'   	   : conf_id
		}

		if int(fiages_course_id) > 0 :
			if 'created_at' in data_for_db: del data_for_db['created_at']
		else :
			if 'updated_at' in data_for_db: del data_for_db['updated_at']	

		
		save_and_get_data = ExamCandidateModel().saveDataAndGetData(data_for_db,fiages_course_id,email,user_id,conf_id)
		html_data = render_template('exam_candidate/other_course_table.html',other_course =  save_and_get_data)
		
		data = {"html_data" : html_data , "msg" : "success" , "status" : 1}
		json_data = json.dumps(data,default =str)
		return json_data
	except Exception as e:
		data = {"html_data" : "" , 'msg' : str(e) , "status" : 401}
		json_data = json.dumps(data,default =str)
		return json_data

# delete mail fiages_course_id
@app.route('/delete_mcq_other_course/<int:fiages_course_id>', methods = ["GET", "POST"])
def DeleteMcqOtherCourse(fiages_course_id):
	now       = datetime.now()
	curr_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	conf_id   = 1
	try:
		user_id          = request.values.get("user_id")
		email            = request.values.get("email")
		delete_and_get_data =ExamCandidateModel().DeleteAndGetData(fiages_course_id,email,user_id,conf_id)
		html_data = render_template('exam_candidate/other_course_table.html',other_course =  delete_and_get_data)

		data = {"html_data" : html_data , "msg" : "success" , "status" : 1}
		json_data = json.dumps(data,default =str)
		return json_data
	except Exception as e:
		data = {"html_data" : "" , 'msg' : str(e) , "status" : 401}
		json_data = json.dumps(data,default =str)
		return json_data


@app.route('/edit_mcq_other_course/<int:fiages_course_id>', methods = ["GET", "POST"])
def EditMcqOtherCourse(fiages_course_id):
	now       = datetime.now()
	curr_dt   = now.strftime("%Y-%m-%d %H:%M:%S")
	conf_id   = 1
	try:
		user_id             = request.values.get("user_id")
		email               = request.values.get("email")
		get_data = ExamCandidateModel().EditDataById(fiages_course_id)
		
		if get_data :
			course_name = get_data["course_name"]
		else : 
			course_name = ""	
	
		data = {"course_name" : course_name , "msg" : "success" , "status" : 1}
		json_data = json.dumps(data,default =str)
		return json_data
	except Exception as e:
		data = {"course_name" : "" , 'msg' : str(e) , "status" : 401}
		json_data = json.dumps(data,default =str)
		return json_data		

	
# save mail response date
@app.route('/save_mail_response', methods = ["GET", "POST"])
def SaveMailResponse():
	now       = datetime.now()
	curr_dt   = now.strftime("%Y-%m-%d %H:%M:%S")

	user_id          = request.values.get("user_id") or None
	email            = request.values.get("email") 
	full_name        = request.values.get("full_name") or None
	mobile           = request.values.get("mobile") or None
	mc_number        = request.values.get("mc_number") or None
	# mc_state_id      = request.values.get("mc_state_id") or None
	delegate_no      = request.values.get("delegate_no") or None

	arrival_date   = request.values.get("arrival_date") or None
	arrival_time   = request.values.get("arrival_time") or None
	arrival_by     = request.values.get("arrival_by")  or None
	departure_date = request.values.get("departure_date") or None
	departure_time = request.values.get("departure_time") or None
	departure_by   = request.values.get("departure_by") or None
	stay_at        = request.values.get("stay_at") or None
	uuid           = request.values.get("uuid") or None
	f_user_id      = request.values.get("f_user_id") or 0
	delegate_id    = request.values.get("delegate_id") or 0

	course_names  = request.values.getlist("course_name") or None

	insert_values_1 = ""
	course_ids      = None
	insert_values_1 = "("
	insert_stmt     = " insert into user_course_map (user_id,course_id,created_at)values"
	if course_names and len(course_names)  > 0:
		course_ids = str(course_names)

		for course_id_1 in course_names :

			# print(course_id_1|t)
			if  'None' not in course_id_1: 
				insert_values = ""+ str(f_user_id) + ","+str(course_id_1)+ ",'"+curr_dt+"'"
				insert_values = insert_values+"),("	
				insert_values_1 = insert_values_1 + insert_values


		insert_values = insert_values_1[:-2]	
		insert_query  = insert_stmt+insert_values	
		# insert_course_data = ExamCandidateModel().InsertCourseData(insert_query,f_user_id,course_ids)

	is_interest   = request.values.get("is_interest") or None
	reason        = request.values.get("reason") or None
	conf_id = 1

	data = {
	'user_id'      : user_id,
	'email'        : email,
# 	'full_name'    : full_name,
	'mobile'       : mobile,
	'mc_number'    : mc_number,
	# 'mc_state_id'  : mc_state_id,
	'delegate_no'  : delegate_no,
	'arrival_date' : arrival_date,
	'arrival_time' : arrival_time,
	'arrival_by'     : arrival_by,
	'departure_date' : departure_date,
	'departure_time' : departure_time,
	'departure_by'   : departure_by,
	'stay_at'        : stay_at,
	'is_interest'    : is_interest,
	'reason'         : reason,
	'conference_id'  : conf_id,
	'updated_at'     : curr_dt,
	'created_at'     : curr_dt
	}
	# if not delegate_no 

	# check record already exist in delegate table using email and conf_id
	check_already_exist = ExamCandidateModel().CheckAlreadyExist(conf_id,delegate_no,email,delegate_id)
	if check_already_exist :
		if 'created_at' in data: del data['created_at']
		save_data = ExamCandidateModel().updateMailResponseData(conf_id,delegate_no,email,data,delegate_id)
	else : 
		if 'updated_at' in data: del data['updated_at']
		save_data = ExamCandidateModel().insertRecorMailResponse(data)

	data_for_update = {'uuid' :uuid , 'updated_at' : curr_dt}
	update_stmt = "update fiages_candidate set updated_at = '"+curr_dt+"' where uuid = '"+uuid+"' ;"
	ExamCandidateModel().updateFiageCandidate(uuid,update_stmt)

	if save_data == "success" : 
		sendConfirmateionMail(uuid)
		# flash("Thanks for your updates . " ,"successMsg")
		return redirect(url_for('exam_candidate.InfoUpdateCompletd',uuid =uuid))
	else :
		flash(save_data, "errorMsg")
		return redirect(url_for('exam_candidate.MailRespond',uuid =uuid))		



@app.route('/send_confirmation_mail/<uuid>', methods = ["GET", "POST"])
def sendConfirmateionMail(uuid):
	conf_id = 1
	user_id = None
	candidate_data = ExamCandidateModel().getExamCandidateByUserUUID(uuid)

	if candidate_data : 
		data       = candidate_data[0]
		email      = data["email"]
		user_id    = data["user_id"]
		prefix     = data["prefix"]
		full_name_1 = data["full_name"] or '' 

		full_name   = prefix + " " + full_name_1 if prefix  else "Dr. " + full_name_1

		other_course  = ExamCandidateModel().OtherCourseData(email,user_id,conf_id)
		html = render_template('exam_candidate/fiages_email/confirmation_mail.html',data=data,candidate_data=candidate_data,uuid=uuid,other_course=other_course)
		if  full_name :
			subject = "Dear "+ full_name + ", IAGES 2023 - Delegate / Convocation information update confirmation"
		else :
			   subject = "IAGES 2023 - Delegate / Convocation information update confirmation"

		email   = "ganesan@numerotec.com"
		print(email)
		# please enable it
		# EMAIL.sendMail(subject,html,email)
		return "success"
		return render_template('exam_candidate/fiages_email/confirmation_mail.html',data=data,candidate_data=candidate_data,uuid=uuid,other_course=other_course)
	else :
		return "<h4 style='color:red;'>Invalid URL </h4>"


@app.route('/info_update_complete/<uuid>', methods = ["GET", "POST"])
def InfoUpdateCompletd(uuid):
	candidate_data = ExamCandidateModel().getExamCandidateByUserUUID(uuid)
	if candidate_data : 
		data       = candidate_data[0]
		email      = data["email"]
		user_id    = data["user_id"]
		return render_template('exam_candidate/thankyou_screen.html',email =email)
	else:
		candidate_data = ExamCandidateModel().getNoneRegisteredData(uuid)
		if candidate_data :
			data       = candidate_data[0]
			email      = data["email"]
			return render_template('exam_candidate/thankyou_screen.html',email =email)
		else:
			return "<h4 style='color:red;'>Invalid URL </h4>"
		



# Bulk mail
@app.route('/bulk_mail', methods = ["GET", "POST"])
def BulkMail():
	candidate_data = ExamCandidateModel().getExamCandidate()
	course_data  = []
	i = 1

	if candidate_data :
		for key, value in groupby(candidate_data,key = itemgetter('email')) :
			email  = key
			data_1 = value
			for r in data_1 :
				uuid        = r["uuid"]  
				prefix      = r["prefix"]

				full_name = r["full_name"] or '' 
				# full_name   = prefix + " " + full_name_1 if prefix  else "Dr. " +full_name_1

				delegate_no = r["delegate_no"]
				mobile      = r["mobile"]

				mc_number  = r["mc_number"]
				state_name = r["state_name"]
				course_name= r["course_name"]
				course_data.append(course_name)


			data = {'prefix': prefix,'full_name':full_name,'email':email,'mobile':mobile,'mc_number' :mc_number,'state_name':state_name,"uuid" : uuid}

			base_url = request.host_url
			if "https" in base_url:
				pass 
			else :
				base_url = base_url.replace("http" , "https")	

			base_url = "https://delegates.iages2023.com/"
			url_1 = base_url+"mail_respond/"+uuid
			html      = render_template('exam_candidate/fiages_email/bulk_invitation_mail.html',candidate_data=course_data ,data=data,uuid=uuid,url_1=url_1)
			if full_name :
				if prefix :
					full_name_2 = prefix + " " +  full_name
				else :
					full_name_2 = "Dr. "+ full_name		

				subject = "Dear " + full_name_2  + ", "+ " Very important! Confirmation required for IAGES 2023 Convocation / Conference"
			else:
				subject = " Very important! Confirmation required for IAGES 2023 Convocation / Conference"
			
			email = "ganesan@numerotec.com"
			if email :
				# please uncommand this test mail
				# EMAIL.sendMail(subject,html,email)
	
				print( str(i) , email)

				
			else :
				pass
			
			# return "mail sent successfully"
			i=i+1		
			# return "mail sent successfully"

		return "mail sent successfully"
		
	else :
		return "Records does not exists"		


	return render_template('exam_candidate/exam_candidate_index.html' ,candidate_data=candidate_data,itemgetter=itemgetter,groupby=groupby)
	
@app.route('/send_mail/<uuid>', methods = ["GET", "POST"])
def SendMailToCandidate(uuid):
	candidate_data = ExamCandidateModel().getExamCandidateByUserUUID(uuid)
	if candidate_data : 
		data_1    = candidate_data[0]

		email     = data_1["email"]
		uuid      = data_1["uuid"] or ''

		prefix      = data_1["prefix"]
		full_name_1 = data_1["full_name"] or ''
		full_name   = prefix + " " + full_name_1 if prefix  else full_name_1


		base_url = request.host_url
		if "https" in base_url:
			pass 
		else :
			base_url = base_url.replace("http" , "https")	

		base_url = "https://delegates.iages2023.com/"
		url_1 = base_url+"mail_respond/"+uuid
	
		html      = render_template('exam_candidate/fiages_email/invitation_mail.html',candidate_data=candidate_data ,data=data_1,uuid=uuid,url_1=url_1)
		if full_name :
			subject = "Dear "+ full_name +", Very important! Confirmation required for IAGES 2023 Convocation / Conference"
		else :
			   subject = "Very important! Confirmation required for IAGES 2023 Convocation / Conference"
		email = "ganesan@numerotec.com"
		print(email)
		# return "please wait"
		# EMAIL.sendMail(subject,html,email)
		return "Email sent successfully."
	else :
		candidate_data = ExamCandidateModel().getNoneRegisteredData(uuid)
		if candidate_data : 
			data_1 = candidate_data[0]
			email  = data_1["email"]
			uuid   = data_1["uuid"] or ''

			prefix      = data_1["prefix"] 
			full_name_1 = data_1["full_name"]
			full_name   = prefix + " " + full_name_1 if prefix  else "Dr. " +full_name_1

			base_url = request.host_url
			if "https" in base_url:
				pass 
			else :
				base_url = base_url.replace("http" , "https")	

			base_url = "https://delegates.iages2023.com/"
			url_1 = base_url+"mail_respond/"+uuid

			html   =  render_template('exam_candidate/fiages_email/invitation_mail.html',candidate_data=candidate_data ,data=data_1,uuid=uuid,url_1=url_1)
			subject = "Dear "+ full_name  + ", "+" Very important! Confirmation required for IAGES 2023 Convocation / Conference"
			# EMAIL.sendMail(subject,html,email)
			return "Email sent successfully."
		else :
			return "<h4 style='color:red;'>Record does not exist.</h4>"	
			
@app.route('/test', methods = ["GET", "POST"])
def test():
	candidate_data = ExamCandidateModel().test()
	return "success"
	return render_template('exam_candidate/exam_candidate_index.html' ,candidate_data=candidate_data,itemgetter=itemgetter,groupby=groupby)
			
	

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