Sindbad~EG File Manager

Current Path : /home/numerotech/paymentapi.numerotech.com/paymentapi/core/model/
Upload File :
Current File : //home/numerotech/paymentapi.numerotech.com/paymentapi/core/model/PayumoneyModel.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
from flask import session

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

class PayumoneyModel():
	def __init__(self):
		try:
			self.meta = MetaData()
			self.payments         = Table("payments", self.meta, autoload_with=engine)
			self.gateway_settings = Table("gateway_settings", self.meta, autoload_with=engine)
		except Exception as e:
			print(e)

	def get_gateway(self,id):
		with engine.connect() as conn:
			stmt   = select([self.gateway_settings]).where(self.gateway_settings.c.gateway_id.in_([id]))
			result = conn.execute(stmt).one_or_none()
			return  dict(result._mapping)  if result else None
		
	def updatepaymentdetail(self,txnid,save_data):
		with engine.connect() as conn:
			stmt = self.payments.update().where(self.payments.c.payment_id.in_([txnid])).values(save_data)
			result = conn.execute(stmt)
			conn.commit()
			return result
	

	def update_pay_req_id(self,p_id,pay_req_id):
		with engine.connect() as conn:
			stmt = self.payments.update().values({"payment_request_id":pay_req_id}).where(self.payments.c.p_id.in_([p_id]))
			result = conn.execute(stmt)
			conn.commit()
			return result

	def update_pay_status(self,p_id,payment_id,payment_status,payment_request_id):
		with engine.connect() as conn:
			stmt = self.payments.update().values({"payment_id":payment_id,"payment_status":payment_status}).where(self.payments.c.p_id.in_([p_id]))
			result = conn.execute(stmt)
			conn.commit()
			return result


	def update_payment_id(self,p_id,payment_id,payment_status,created_at):
		with engine.connect() as conn:
			stmt   = self.payments.update().values({"payment_id":payment_id,"payment_status":payment_status,"updated_at":created_at}).where(self.payments.c.p_id.in_([p_id]))
			result = conn.execute(stmt)
			conn.commit()
			return result   

	

	def getuser_idbytxnid(self,payment_id):
		with engine.connect() as conn:
			stmt   = text("select * from payments where payment_id = '"+str(payment_id)+"'  limit 1")
			result = conn.execute(stmt).one_or_none()
			return  dict(result._mapping)  if result else None
		
	# update webhook data by unique_id -- October 31, 2022
	def updateWebhookData(self,unique_id,webhook_data):
		print("Webhook-calling...")
		with engine.connect() as conn:
			stmt    = text("select * from payments where unique_id = '"+unique_id+"' order by created_at desc limit 1")
			result 	= conn.execute(stmt).all()
			results = [dict(r._mapping) for r in result] if result else None
			if results  :
				payment_status = results[0]['payment_status']
				if payment_status and "success" in payment_status :
					return "Payemnt status already exist as success"
				else :
					stmt_2   = self.payments.update().values(webhook_data).where(self.payments.c.unique_id.in_([unique_id]))
					result_2 = conn.execute(stmt_2)
					conn.commit()
					return "Webhook data updated ."
			else :
				return "Unique Id not exists ."	
				

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