Sindbad~EG File Manager

Current Path : /home/numerotech/mcinfo.numerotech.com/mc_info_update/core/model/
Upload File :
Current File : //home/numerotech/mcinfo.numerotech.com/mc_info_update/core/model/ExamCandidateModel.py

from sqlalchemy import create_engine, MetaData, Table, insert, select,update,delete,text
from sqlalchemy.sql import and_, or_
from core import app
import json

engine = create_engine(app.config['DATABASE_URI'],pool_pre_ping=True,pool_recycle=3600)


class ExamCandidateModel():
	def __init__(self):
		try:
			self.meta = MetaData()
			self.delegates           = Table("delegates", self.meta,  autoload_with=engine)
			self.fiages_other_course = Table("fiages_other_course", self.meta,  autoload_with=engine) 
			self.mcq_users           = Table("mcq_users", self.meta,  autoload_with=engine)
# 			self.fiages_candidate    = Table("fiages_candidate", self.meta,  autoload_with=engine)
			
					
		except Exception as e:
			print(e)


	def getExamCandidate(self):
		conn = engine.connect()
		# stmt_2 = text("SELECT * from fiages_candidate ;")
		stmt = text("set sql_mode = '' ;")
		conn.execute(stmt)
		stmt_2 = text("SELECT  f.user_id,d.prefix,f.full_name,f.email,f.mobile,f.city,f.state,f.uuid, uc.course_id,uc.session_id, c.course_name,c.exam_city,d.mc_number,s.state_name,d.delegate_no,d.role,d.delegate_id  from fiages_candidate f "  
		+ " left join user_course_map uc on uc.user_id= f.user_id  "  
		+ " left join mcq_courses c on c.course_id= uc.course_id  " 
		+ " left join delegates d on d.email    = f.email "
		+ " left join states s on s.state_id    = d.mc_state_id  "
		+ " where  CHAR_LENGTH(f.full_name) > 2   and d.conference_id = 1 and f.email not like '%numeortec.com%'  group by  f.user_id ,uc.course_id  order by d.delegate_no desc limit 20;")
		
		results= conn.execute(stmt_2)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None 

	def getFIAGESCandidateOnly(self):
		conn = engine.connect()
		'''
		SELECT  f.email ,f.user_id,f.prefix,f.full_name,f.mobile, f.city,f.state,f.uuid,f.conf_id,d.delegate_no,d.role,d.delegate_id
		 from fiages_candidate f 
		 left join delegates d on f.email = d.email  and d.conference_id = 1
		 where f.email is not null  group by f.email ;
		'''
		# stmt_2 = text("SELECT * from fiages_candidate where full_name is not null and CHAR_LENGTH(full_name) > 2  order by full_name ;")
		
		stmt_2 = text("SELECT f.* ,d.delegate_no,d.role,d.delegate_id from fiages_candidate f left join delegates d on d.email = f.email and d.conference_id = 1 where f.full_name is not null and  f.email is not null and d.email not in ("+str(more_than_record_list)+") ")
		# stmt_2 = text("SELECT f.* ,d.delegate_no,d.role,d.delegate_id from fiages_candidate f left join delegates d on d.email = f.email and d.conference_id = 1 where f.full_name is not null and CHAR_LENGTH(f.full_name) > 2 and f.email is not null  order by f.full_name ;")
		
		results= conn.execute(stmt_2)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None 

	def getExamCandidateByUserID(self,user_id):
		conn = engine.connect()
		stmt = text("SELECT * from mcq_users where user_id = "+str(user_id)+ ";")
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results[0]
		else:
			return None

	# GET data by email
	def getExamCandidateByUserEmail(self,email):
		conn = engine.connect()
		# stmt_1 = text("set sql_mode = '' ;")
		# conn.execute(stmt_1)
		stmt = text("select  distinct d.delegate_no,d.user_id,d.prefix,d.full_name,d.email,d.mobile,d.arrival_date,d.arrival_time,d.departure_date,d.departure_time, "+
		" d.is_interest,d.stay_at,d.arrival_by,d.departure_by,d.mc_number,d.mc_state_id, f.exam_city,f.course_id,f.course_name,d.role,d.delegate_id from delegates d  inner join  fiages_candidate f on f.email = d.email "+
		" where  d.conference_id = 1 and d.delegate_no is not null and d.email = '"+email+"'  ;")
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	def getExamCandidateByUserUUID(self,uuid):
		conn = engine.connect()
		stmt_1 = text("SET SQL_MODE = '' ;")
		conn.execute(stmt_1)
		stmt = text("SELECT distinct d.delegate_no, d.user_id,d.prefix,d.full_name,d.email,d.mobile,d.arrival_date,d.arrival_time,d.departure_date,d.departure_time,"
		+ " d.is_interest,d.stay_at,d.arrival_by,d.departure_by,d.mc_number,d.mc_state_id,s.state_name,f.user_id as f_user_id,f.uuid, mc.exam_city,uc.course_id,mc.course_name,d.role,d.delegate_id "
		+ " from delegates d  inner join  fiages_candidate f on f.email = d.email "
		+ " left join states s on s.state_id = d.mc_state_id left join user_course_map uc on f.user_id = uc.user_id "
		+" left join mcq_courses mc on mc.course_id = uc.course_id "+
		"   where  d.conference_id = 1 and f.uuid = '"+uuid+"'  group by f.user_id, uc.course_id    ;")

		# stmt = text("SELECT distinct d.delegate_no,d.user_id,d.prefix,d.full_name,d.email,d.mobile,d.arrival_date,d.arrival_time,d.departure_date,d.departure_time,"
		# + " d.is_interest,d.stay_at,d.arrival_by,d.departure_by,d.mc_number,d.mc_state_id,s.state_name,f.user_id as f_user_id,f.uuid, mc.exam_city,uc.course_id,mc.course_name "
		# + " from delegates d  left join  fiages_candidate f on f.email = d.email "
		# + " left join states s on s.state_id = d.mc_state_id left join user_course_map uc on f.user_id = uc.user_id "
		# +" left join mcq_courses mc on mc.course_id = uc.course_id "+
		# "   where   f.uuid = '"+uuid+"'   ;")
		
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	def getNoneRegisteredData(sefl,uuid) :
		conn = engine.connect()
		
		stmt = text("select f.user_id as f_user_id,f.prefix,f.full_name,f.email,f.mobile,f.uuid,mc.exam_city,uc.course_id,mc.course_name from fiages_candidate f " 
		+ " left join user_course_map uc on f.user_id = uc.user_id  left join mcq_courses mc on mc.course_id = uc.course_id " 
		+ " where   f.uuid = '"+uuid+"' ; ")
		print(stmt)
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	



	def CourseData(self):
		conn = engine.connect()
		stmt = text("SELECT * from mcq_courses where is_visible > 0;")
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None			

	# save or update other course data and get the all records by user id or email
	def saveDataAndGetData(self,data,fiages_course_id,email,user_id,conf_id):
		conn = engine.connect()
		if int(fiages_course_id) > 0 :
			update_stmt = self.fiages_other_course.update().where(self.fiages_other_course.c.fiages_course_id.in_([fiages_course_id])).values(data) 
			conn.execute(update_stmt)
		else :
			conn.execute(self.fiages_other_course.insert(), data)
		

		if int(user_id) and int(user_id) > 0 :
			stmt = text("SELECT * FROM fiages_other_course WHERE user_id = "+str(user_id)+" and conf_id = "+str(conf_id)+";")
		else :
			stmt = text("SELECT * FROM fiages_other_course WHERE email = '"+email+"' and conf_id = "+str(conf_id)+";")
		
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	# other course data
	def OtherCourseData(self,email,user_id,conf_id):
		conn = engine.connect()
		if user_id and int(user_id) > 0 :
			stmt = text("SELECT * FROM fiages_other_course WHERE user_id = "+str(user_id)+" and conf_id = "+str(conf_id)+";")
		else :
			stmt = text("SELECT * FROM fiages_other_course WHERE email = '"+email+"' and conf_id = "+str(conf_id)+";")
		
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	def DeleteAndGetData(self,fiages_course_id,email,user_id,conf_id):
		conn = engine.connect()
		del_stmt = text("DELETE FROM fiages_other_course WHERE fiages_course_id = " + str(fiages_course_id) + " ; ")
		conn.execute(del_stmt)
		if int(user_id) and int(user_id) > 0 :
			stmt = text("SELECT * FROM fiages_other_course WHERE user_id = "+str(user_id)+" and conf_id = "+str(conf_id)+";")
		else :
			stmt = text("SELECT * FROM fiages_other_course WHERE email = '"+email+"' and conf_id = "+str(conf_id)+";")
		
		results= conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None


	def EditDataById(self,fiages_course_id):
		conn    = engine.connect()
		stmt    = text("SELECT * FROM fiages_other_course WHERE fiages_course_id = " + str(fiages_course_id) + " ; ")		
		results = conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results[0]
		else:
			return None			

	def updateMailResponseData(self,conf_id,delegate_no,email,data,delegate_id):
		conn = engine.connect()
		try:
			stmt = text("SET FOREIGN_KEY_CHECKS = 0 ;")
			conn.execute(stmt)
			if int(delegate_no) > 0 :
				update_stmt = self.delegates.update().where(self.delegates.c.delegate_id.in_([delegate_id])).where(self.delegates.c.conference_id.in_([conf_id])).values(data) 
				conn.execute(update_stmt)
			else :
				update_stmt = self.delegates.update().where(self.delegates.c.delegate_id.in_([delegate_id])).where(self.delegates.c.conference_id.in_([conf_id])).values(data) 
				conn.execute(update_stmt)
			
			conn.close()
			return "success"    
		except Exception as e:
			conn.close()
			return str(e)	

	#getStatesList 
	def getStatesList(self) :
		conn = engine.connect()
		stmt = text(" select * from states where country_id= 101 ; ")	
		results = conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	# 		
	def InsertCourseData(self,insert_query,f_user_id,course_ids):
		conn = engine.connect()
		if course_ids :
			course_ids = course_ids.replace("[" ,"")
			course_ids = course_ids.replace("]" ,"")	

			stmt_1 = text("delete from user_course_map where user_id = "+str(f_user_id)+" and course_id in ("+course_ids +" )")	

		stmt = text(insert_query)	
		results = conn.execute(stmt)
		conn.close()
		if results : 
			return results
		else:
			return None	

	def CheckAlreadyExist(self,conf_id,delegate_no,email,delegate_id):
		conn = engine.connect()
		try:
			if delegate_no and int(delegate_no) > 0 :
				stmt = text("SELECT * from delegates where delegate_id  = "+str(delegate_id)+" and and delegate_no = "+str(delegate_no)+" and  conference_id = "+str(conf_id)+"  ;")
				
			else :
				stmt = text("SELECT * from delegates where delegate_id  = "+str(delegate_id)+" and conference_id = "+str(conf_id)+" ;")
			
			results = conn.execute(stmt)
			results = [dict(r) for r in results] if results else None
			conn.close()
			if results : 
				return results
			else:
				return None	
			
			return "success"    
		except Exception as e:
			conn.close()
			return str(e)

	def insertRecorMailResponse(self,data):
		conn =engine.connect()
		stmt = text("SET FOREIGN_KEY_CHECKS = 0 ;")
		conn.execute(stmt)
		conn.execute(self.delegates.insert(), data)
		conn.close()
		return "success"			

	def test(self):
		conn =engine.connect()
		stmt = text("SET sql_safe_updates = 0 ;")
		conn.execute(stmt)
		stmt_2 = text("update users set password = '1111' where user_id= 38826 ;")
		conn.execute(stmt_2)
		conn.close()
		return "success"

	def updateFiageCandidate(self,uuid,update_stmt):
		conn = engine.connect()
		try:
			stmt_1 = text("SET SQL_SAFE_UPDATES = 0 ;")
			stmt = text(update_stmt)
			conn.execute(stmt_1)
			conn.execute(stmt)
			
			conn.close()
			return "success"    
		except Exception as e:
			conn.close()
			return str(e)

	def getMorethanoneRecords(self,more_than_record_list):
		conn = engine.connect()
		stmt = text(" select delegate_id,d.parent_user_id,d.user_id,d.full_name,d.email,d.mobile,d.delegate_no,d.created_at from delegates d where d.email in ("+str(more_than_record_list)+
			" and d.delegate_no  is not null and d.delegate_no > 0 and d.conference_id = 1  order by d.email asc ) ; ")	
		results = conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	# Feb 03, 2023
	def getOnlyoneRecords(self,more_than_record_list):
		conn = engine.connect()
		stmt = text(" select delegate_id,d.parent_user_id,d.user_id,d.full_name,d.email,d.mobile,d.delegate_no,d.created_at from delegates d where d.email not in ("+str(more_than_record_list)+
			" and d.delegate_no  is not null and d.delegate_no > 0 and d.conference_id = 1  order by d.email asc ) ; ")	
		results = conn.execute(stmt)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None	

	# for index screen
	# fiage list
	def getDelegateDuplicateEmailRecords(self,more_than_record_list):
		conn = engine.connect()
		# stmt_2 = text("SELECT * from fiages_candidate where full_name is not null and CHAR_LENGTH(full_name) > 2  order by full_name ;")
		
		stmt_2 = text("SELECT f.* ,d.delegate_no,d.role,d.delegate_id from fiages_candidate f left join delegates d on d.email = f.email and d.conference_id = 1 and d.email  in ("+str(more_than_record_list)+") and d.delegate_no > 0  where f.full_name is not null and  f.email is not null  ")
		print(stmt_2)
		# stmt_2 = text("SELECT f.* ,d.delegate_no,d.role,d.delegate_id from fiages_candidate f left join delegates d on d.email = f.email and d.conference_id = 1 where f.full_name is not null and CHAR_LENGTH(f.full_name) > 2 and f.email is not null  order by f.full_name ;")
		
		results= conn.execute(stmt_2)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None 

	def getDelegateNonDuplicateEmailRecords(self,more_than_record_list):
		conn = engine.connect()
		# stmt_2 = text("SELECT * from fiages_candidate where full_name is not null and CHAR_LENGTH(full_name) > 2  order by full_name ;")
		
		stmt_2 = text("SELECT f.* ,d.delegate_no,d.role,d.delegate_id from fiages_candidate f left join delegates d on d.email = f.email and d.conference_id = 1 and d.email not in ("+str(more_than_record_list)+")  where f.full_name is not null and  f.email is not null  ")
		# stmt_2 = text("SELECT f.* ,d.delegate_no,d.role,d.delegate_id from fiages_candidate f left join delegates d on d.email = f.email and d.conference_id = 1 where f.full_name is not null and CHAR_LENGTH(f.full_name) > 2 and f.email is not null  order by f.full_name ;")
		
		results= conn.execute(stmt_2)
		results = [dict(r) for r in results] if results else None
		conn.close()
		if results : 
			return results
		else:
			return None 		





					




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