# -*- coding: utf-8 -*-
from selenium import selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from agent_functions import search_agent
from common_functions_60 import *

import random, time
import string


def create_network_component(driver,name,type_component,group,module_group,min_warning=None,max_warning=None,min_critical=None,max_critical=None,str_warning=None,str_critical=None,description=None):

	# type_component is for example -> Remote ICMP network agent (latency) or Remote TCP network agent, numeric data	

	click_menu_element(driver,"Network components")

	driver.find_element_by_id("id_component_type").click()
	Select(driver.find_element_by_id("id_component_type")).select_by_visible_text("Create a new network component")
	
	driver.find_element_by_id("submit-crt").click()

	driver.find_element_by_id("text-name").click()
	driver.find_element_by_id("text-name").clear()
	driver.find_element_by_id("text-name").send_keys(name)

	driver.find_element_by_id("type").click()
	Select(driver.find_element_by_id("type")).select_by_visible_text(type_component)

	driver.find_element_by_xpath('//option[contains(.,"'+group+'")]').click()
	
	driver.find_element_by_id("id_module_group").click()
	Select(driver.find_element_by_id("id_module_group")).select_by_visible_text(module_group)

	if min_warning != None:

		driver.find_element_by_id("text-min_warning").click()
		driver.find_element_by_id("text-min_warning").clear()
		driver.find_element_by_id("text-min_warning").send_keys(min_warning)

	if max_warning != None:
		
		driver.find_element_by_id("text-max_warning").click()
		driver.find_element_by_id("text-max_warning").clear()
		driver.find_element_by_id("text-max_warning").send_keys(max_warning)

	if min_critical != None:

		driver.find_element_by_id("text-min_critical").click()
		driver.find_element_by_id("text-min_critical").clear()
		driver.find_element_by_id("text-min_critical").send_keys(min_critical)

	if max_critical != None:

		driver.find_element_by_id("text-max_critical").click()
		driver.find_element_by_id("text-max_critical").clear()
		driver.find_element_by_id("text-max_critical").send_keys(max_critical)

	# str_warning and str_critical if type_component supports this type
	if str_warning != None:
		
		driver.find_element_by_id("text-str_warning").click()
		driver.find_element_by_id("text-str_warning").clear()
		driver.find_element_by_id("text-str_warning").send_keys(str_warning)

	if str_critical != None:
		
		driver.find_element_by_id("text-str_critical").click()
		driver.find_element_by_id("text-str_critical").clear()
		driver.find_element_by_id("text-str_critical").send_keys(str_critical)
	
	if description != None:

		driver.find_element_by_id("textarea_description").click()
		driver.find_element_by_id("textarea_description").clear()
		driver.find_element_by_id("textarea_description").send_keys(description)

	driver.find_element_by_id("submit-crt").click()

def create_plugin_component(driver,name,type_component,group,module_group,min_warning=None,max_warning=None,min_critical=None,max_critical=None,str_warning=None,str_critical=None,description=None,plugin=None,target_ip=None,port=None):

	# type_component is for example -> Generic boolean or Generic numeric incremental (absolute)
	#Variable plugin is for example -> SMTP Check or UDP port check

	click_menu_element(driver,"Network components")
	
	driver.find_element_by_xpath('//*[@id="id_component_type"]/option[2]').click()
	
	driver.find_element_by_id("submit-crt").click()
	
	driver.find_element_by_id("text-name").click()
	driver.find_element_by_id("text-name").clear()
	driver.find_element_by_id("text-name").send_keys(name)

	driver.find_element_by_id("type").click()
	Select(driver.find_element_by_id("type")).select_by_visible_text(type_component)

	driver.find_element_by_xpath('//option[contains(.,"'+group+'")]').click()

	driver.find_element_by_id("id_module_group").click()
	Select(driver.find_element_by_id("id_module_group")).select_by_visible_text(module_group)

	if min_warning != None:

		driver.find_element_by_id("text-min_warning").click()
		driver.find_element_by_id("text-min_warning").clear()
		driver.find_element_by_id("text-min_warning").send_keys(min_warning)

	if max_warning != None:

		driver.find_element_by_id("text-max_warning").click()
		driver.find_element_by_id("text-max_warning").clear()
		driver.find_element_by_id("text-max_warning").send_keys(max_warning)

	if min_critical != None:

		driver.find_element_by_id("text-min_critical").click()
		driver.find_element_by_id("text-min_critical").clear()
		driver.find_element_by_id("text-min_critical").send_keys(min_critical)
		

	if max_critical != None:

		driver.find_element_by_id("text-max_critical").click()
		driver.find_element_by_id("text-max_critical").clear()
		driver.find_element_by_id("text-max_critical").send_keys(max_critical)

	# str_warning and str_critical for Generic string type:
	if str_warning != None:

		driver.find_element_by_id("text-str_warning").click()
		driver.find_element_by_id("text-str_warning").clear()
		driver.find_element_by_id("text-str_warning").send_keys(str_warning)

	if str_critical != None:

		driver.find_element_by_id("text-str_critical").click()
		driver.find_element_by_id("text-str_critical").clear()
		driver.find_element_by_id("text-str_critical").send_keys(str_critical)
	
	if description != None:

		driver.find_element_by_id("textarea_description").click()
		driver.find_element_by_id("textarea_description").clear()
		driver.find_element_by_id("textarea_description").send_keys(description)

	
	if plugin != None: 
		
		driver.find_element_by_xpath('//option[contains(.,"'+plugin+'")]').click()

		if plugin == "UDP port check":
			
			driver.find_element_by_id("text-_field1_").clear()
			driver.find_element_by_id("text-_field1_").send_keys(target_ip)
	
			driver.find_element_by_id("text-_field2_").clear()
			driver.find_element_by_id("text-_field2_").send_keys(port)

	driver.find_element_by_id("submit-crt").click()	

def create_wmi_component(driver,name,type_component,group,module_group,min_warning=None,max_warning=None,min_critical=None,max_critical=None,str_warning=None,str_critical=None,description=None):

	# type_component is for example -> Generic boolean or Generic numeric incremental (absolute)

	click_menu_element(driver,"Network components")
	
	driver.find_element_by_xpath('//*[@id="id_component_type"]/option[3]').click()
	
	driver.find_element_by_id("submit-crt").click()
	
	driver.find_element_by_id("text-name").click()
	driver.find_element_by_id("text-name").clear()
	driver.find_element_by_id("text-name").send_keys(name)

	driver.find_element_by_id("type").click()
	Select(driver.find_element_by_id("type")).select_by_visible_text(type_component)

	driver.find_element_by_xpath('//option[contains(.,"'+group+'")]').click()

	driver.find_element_by_id("id_module_group").click()
	Select(driver.find_element_by_id("id_module_group")).select_by_visible_text(module_group)
	
	if min_warning != None:

		driver.find_element_by_id("text-min_warning").click()
		driver.find_element_by_id("text-min_warning").clear()
		driver.find_element_by_id("text-min_warning").send_keys(min_warning)

	if max_warning != None:

		driver.find_element_by_id("text-max_warning").click()
		driver.find_element_by_id("text-max_warning").clear()
		driver.find_element_by_id("text-max_warning").send_keys(max_warning)

	if min_critical != None:

		driver.find_element_by_id("text-min_critical").click()
		driver.find_element_by_id("text-min_critical").clear()
		driver.find_element_by_id("text-min_critical").send_keys(min_critical)
		

	if max_critical != None:

		driver.find_element_by_id("text-max_critical").click()
		driver.find_element_by_id("text-max_critical").clear()
		driver.find_element_by_id("text-max_critical").send_keys(max_critical)

	# str_warning and str_critical if type_component is Generic boolean
	if str_warning != None:

		driver.find_element_by_id("text-str_warning").click()
		driver.find_element_by_id("text-str_warning").clear()
		driver.find_element_by_id("text-str_warning").send_keys(str_warning)

	if str_critical != None:

		driver.find_element_by_id("text-str_critical").click()
		driver.find_element_by_id("text-str_critical").clear()
		driver.find_element_by_id("text-str_critical").send_keys(str_critical)
	
	if description != None:

		driver.find_element_by_id("textarea_description").click()
		driver.find_element_by_id("textarea_description").clear()
		driver.find_element_by_id("textarea_description").send_keys(description)

	driver.find_element_by_id("submit-crt").click()