# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests
import json
from selenium.webdriver.chrome.options import Options
class P3(unittest.TestCase):
	def setUp(self):
		# downloadFilepath = "E://Yogesh//"
		options = Options()
		# prefs = {'download.default_directory' : 'C:/Scripts'}
		# options.add_experimental_option('prefs', prefs)
		# options.add_argument("download.default_directory=C:/Scripts")
		options.add_argument("--headless")
		options.add_argument("--no-sandbox")
		# options.add_experimental_option("prefs", {"download.default_directory": "\\home\\hp\\Yogesh\\Mast\\Selenium\\Prod\\1": False,"download.directory_upgrade": True,"safebrowsing_for_trusted_sources_enabled": False,"safebrowsing.enabled": False})
		# self.myoptions = options
		self.driver = webdriver.Chrome(options=options)
		self.driver.implicitly_wait(10)
		self.base_url = "https://www.katalon.com/"
		self.verificationErrors = []
		self.accept_next_alert = True

	def test_p3(self):
		appointmentId = ""
		try:
			# url = 'https://mast-api.3cubemedicare.com/api/getAppointmentsForReport/'
			# response = requests.get(url)
			# responseJson = response.json()
			appointmentId = 3#responseJson["appointment"]
			path = "/var/www/html/pearsonScripts/reports/"+str(appointmentId)
			options = Options()
			options.add_argument("--headless")
			options.add_argument("--no-sandbox")
			options.add_experimental_option("prefs", {"download.default_directory": path,"download.prompt_for_download": False,"download.directory_upgrade": True,"safebrowsing_for_trusted_sources_enabled": False,"safebrowsing.enabled": False})
			driver = webdriver.Chrome(options=options)
			driver.get("https://qglobal.pearsonclinical.com/qg/in/login.seam")
			time.sleep(2)
			print("1")
			driver.find_element_by_id("login:uname").click()
			driver.find_element_by_id("login:uname").clear()
			driver.find_element_by_id("login:uname").send_keys("3cubemedicare")
			driver.find_element_by_id("login:pword").click()
			driver.find_element_by_id("login:pword").clear()
			driver.find_element_by_id("login:pword").send_keys("QuantumEffect@2019")
			driver.find_element_by_id("login:signInButton").click()
			time.sleep(3)
			driver.implicitly_wait(5)
			try:
				wait = WebDriverWait(driver, 10)
				element = wait.until(EC.element_to_be_clickable((By.ID, 'showStartingTipsForm:gettingStartedClose')))
			except:
				pass
			try:
				driver.find_element_by_id("showStartingTipsForm:gettingStartedClose").click()
			except:
				pass
			try:
				wait = WebDriverWait(driver, 10)
				element = wait.until(EC.element_to_be_clickable((By.ID, 'j_id100:confirmTerminate')))
			except:
				pass
			try:
				driver.find_element_by_id("j_id100:confirmTerminate").click()
			except:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			print("2")
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_id("repTabId_lbl").click()
			time.sleep(3)
			driver.implicitly_wait(5)
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_id("reportExamineeListForm:j_id616").click()
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_id("editExamineeForm:examineeId").click()
			driver.find_element_by_id("editExamineeForm:examineeId").clear()
			driver.find_element_by_id("editExamineeForm:examineeId").send_keys(appointmentId)
			driver.find_element_by_id("editExamineeForm:search").click()
			# driver.implicitly_wait(5)
			# time.sleep(1)
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			print("3")
			firstRow = driver.find_element_by_class_name("jqgfirstrow")
			firstRow.find_element_by_xpath("./following-sibling::tr").click()
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_id("cb_list").click()
			print("4")
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_id("reportExamineeAssessmentList:generateReport").click()
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			print("5")
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='MCMI-IV'])[3]/following::span[2]").click()
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			print("6")
			time.sleep(3)
			driver.implicitly_wait(5)
			driver.find_element_by_id("reportOptionForm:generateReportButton").click()
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			print("7")
			driver.find_element_by_css_selector("input[value='Yes'][type='submit']").click()
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			reportDialog = driver.find_element_by_id("reportOptionsDialogDiv")
			while(reportDialog.is_displayed()):
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalContainer")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			try:
				loader = driver.find_element_by_id("spinnerModalDiv")
				while (loader.is_displayed()):
					pass
			except Exception as e:
				pass
			time.sleep(3)
			driver.implicitly_wait(5)
			signOutBtn = driver.find_element_by_id("custFacingHeader:signOut")
			while(signOutBtn.is_displayed()==False):
				pass
			signOutBtn.click()
			driver.find_element_by_id("confirmLogoutForm:ok").click()
			
			url = 'https://mast-api.3cubemedicare.com/api/updatePearsonReportStatus/'
			payload = {"appointmentId":appointmentId,"status":"Success"}
			response = requests.post(url,json=payload)
			print("Done")
		except Exception as e:
			print(str(e))
			if(appointmentId == ""):
				pass
			else:
				url = 'https://mast-api.3cubemedicare.com/api/updatePearsonReportStatus/'
				payload = {"appointmentId":appointmentId,"status":"Fail"}
				response = requests.post(url,json=payload)
	
	def is_element_present(self, how, what):
		try: self.driver.find_element(by=how, value=what)
		except NoSuchElementException as e: return False
		return True
	
	def is_alert_present(self):
		try: self.driver.switch_to_alert()
		except NoAlertPresentException as e: return False
		return True
	
	def close_alert_and_get_its_text(self):
		try:
			alert = self.driver.switch_to_alert()
			alert_text = alert.text
			if self.accept_next_alert:
				alert.accept()
			else:
				alert.dismiss()
			return alert_text
		finally: self.accept_next_alert = True
	
	def tearDown(self):
		self.driver.quit()
		self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
	unittest.main()

