from appservices.common.util import *

def payaid_payout_fundtransfer(get_api_key,get_salt,get_base_url,merchant_reference_number,account_name,amount,account_number,ifsc_code,bank_name,transfer_type,bank_branch,payOutPaymentGatewayId,client_ip,userId,apiType):
	payaidResponseData = {}
	paymentgatewayresponseDict = {}
	try:
		payaid_request_body = {
		"api_key":get_api_key,
		"merchant_reference_number":merchant_reference_number,
		"account_name":account_name,
		"amount":amount,
		"account_number":account_number,
		"ifsc_code":ifsc_code,
		"bank_name":bank_name,
		"transfer_type":transfer_type,
		"bank_branch":bank_branch
		}
		hashvalue = Sha512Hash(payaid_request_body,get_salt)
		payaid_request_body.update({"hash": hashvalue})
		print(payaid_request_body,"PAYAID REQUEST BODY")

		try:
			url = get_base_url+"/fundtransfer"
			headers = {'Content-type': 'application/json'}
			payaidResponseData = requests.post(url, json=payaid_request_body, headers=headers)
			payaidResponseJsonData = json.loads(payaidResponseData.text)
			print(payaidResponseJsonData,"(((((((((((((PayAID PAYOUT RESPONSE)))))))))))))")

			data = payaidResponseJsonData.get("data", {})
			error = payaidResponseJsonData.get("error", {})

			if data.get("status") == "SUCCESS":
				if data.get("transaction_id")==None:
					transaction_id=data.get("internal_id")
				else:
					transaction_id=data.get("transaction_id")
				paymentgatewayresponseDict = {
					"status": data.get("status", ""),
					"merchant_reference_number": data.get("merchant_reference_number", ""),
					"transaction_id": transaction_id
				}
				paymentgatewayresponseDict["responseStatus"] = 1
				paymentgatewayresponseDict['result'] = "Transaction is successful!"

			elif data.get("status") == "PROCESSING":
				if data.get("transaction_id")==None:
					transaction_id=data.get("internal_id")
				else:
					transaction_id=data.get("transaction_id")
				paymentgatewayresponseDict = {
					"status": data.get("status", ""),
					"merchant_reference_number": data.get("merchant_reference_number", ""),
					"transaction_id": transaction_id
				}
				paymentgatewayresponseDict["responseStatus"] = 1
				paymentgatewayresponseDict['result'] = "Transaction is processing!"

			elif error.get("code") == 1023:
				paymentgatewayresponseDict = {"responseStatus": 0, 'result': "Invalid given details!!"}

			elif error.get("code") == 1028:
				paymentgatewayresponseDict = {"responseStatus": 0, 'result': "Transaction Not Found!!"}

			elif error.get("code") == 1029:
				paymentgatewayresponseDict = {"responseStatus": 0, 'result': "Transaction Terminated!!"}

			elif error.get("code") == 1015:
				paymentgatewayresponseDict = {"responseStatus": 0, 'result': "Invalid request!!"}
		except Exception as e:
			app.logger.error(traceback.format_exc())
			paymentgatewayresponseDict["responseStatus"]=0
			paymentgatewayresponseDict['result']="Our banking partner server is down please try after sometime!!"
		
		# API Logs Table Saving Here
		requestData=[payaid_request_body]
		save_wowpe_link_api_log_table = save_api_logs_data(userId,"payout","fund_transfer",url,payOutPaymentGatewayId,requestData,client_ip,apiType)

		save_wowpe_link_api_log_table.update(responseData=[payaidResponseJsonData],responseDate=datetime.datetime.now())
		transactionData = [payaidResponseJsonData]

	except Exception as e:
		app.logger.error(traceback.format_exc())
		paymentgatewayresponseDict["responseStatus"]=0
		paymentgatewayresponseDict['result']="Our banking partner server is down please try after sometime!!"
	return paymentgatewayresponseDict

def payaid_payout_fundtransfer_check_status(get_api_key,pgOrderId,get_salt,get_base_url):
	pgCheckStatusResponseDict = {}
	try:
		payaid_request_body = {
		"api_key":get_api_key,
		"merchant_reference_number":pgOrderId
		}
		hashvalue = Sha512Hash(payaid_request_body,get_salt)
		payaid_request_body.update({"hash": hashvalue})
		print(payaid_request_body,"PAYAID PAYOUT CHECK STATUS REQUEST BODY")

		headers = {
			"accept": "application/json",
			"content-type": "application/json"
		}
		url = get_base_url+"/fundtransferstatus"
		try:
			response = requests.post(url, json=payaid_request_body,headers=headers)
			payaidCheckResponseData = json.loads(response.text)
			print(payaidCheckResponseData,"(((((((((((((PAYAID PAYOUT CHECK STATUS RESPONSE)))))))))))))")
		except Exception as e:
			app.logger.error(traceback.format_exc())
			pgCheckStatusResponseDict["responseStatus"]=0
			pgCheckStatusResponseDict["result"]="Our banking partner server is down please try after sometime!!"
			return pgCheckStatusResponseDict
	except Exception as e:
		app.logger.error(traceback.format_exc())
		pgCheckStatusResponseDict["responseStatus"]=0
		pgCheckStatusResponseDict["result"]="Our banking partner server is down please try after sometime!!"
		return pgCheckStatusResponseDict