from env import ZendeskTask

if config.logLevel == "info":
	logging.basicConfig(format='%(asctime)s | %(levelname)s | %(filename)s | %(message)s', level=logging.INFO, filename=config.logFile)
else:
	logging.basicConfig(format='%(asctime)s | %(levelname)s | %(filename)s | %(message)s', level=logging.DEBUG, filename=config.logFile)

if __name__ == "__main__":
	# Create object for internal database methods (mySQL)
	mysqlDb = MySqlTask(config.mysql_username, config.mysql_password, config.mysql_host, config.mysql_database)

	# Create object for Salesforce methods
	sfdc = SalesforceTask(config.sfUser, config.sfPass, config.sfApiToken)

	# Create object for Zendesk methods
	zd = ZendeskTask(config.zenURL, config.zenAgent, config.zenPass, config.zenToken)

	### Pull SFDC Contact Info to Zendesk ###
	try:
		sfdcLastModified = sfdc.sfdc_timestamp()
		logging.info("Current Salesforce Timestamp: {0}".format(sfdcLastModified))
	except Exception, err:
		logging.error(err)
		sys.exit()

	# Get the last modified timestamp from internal database
	startTime = { "startTime" : mysqlDb.pull_job_timestamp('SFDC_CONTACT_LM_PULL') }
	logging.info("Pulling an internal start time of {0}".format(startTime))

	##### Extract modified SFDC Contacts#####
	logging.info("Pulling Authorized Support Contacts from Salesforce")
    timeToConvert = datetime.fromtimestamp(time.mktime(time.strptime(origDateTime, timeFormat)))

    #print timeToConvert

    if not offset.find("+"):
        minuteOffset = float(offset[1:]) * .6
        return str(timeToConvert - timedelta(minutes=minuteOffset))
    else:
        minuteOffset = float(offset[1:]) * .6
        return str(timeToConvert + timedelta(minutes=minuteOffset))

if __name__ == "__main__":
    logging.info("Running incremental Zendesk export...")

    # Create object for Zendesk queries
    zd = ZendeskTask(config.zenURL, config.zenAgent, config.zenPass, config.zenToken)
    
    # Create object for internal database methods (mySQL)
    zendeskDb = MySqlTask(config.zendeskMySql['username'],
                          config.zendeskMySql['password'],
                          config.zendeskMySql['host'],
                          config.zendeskMySql['database'])
    zendeskDb.connect()

    # Grab the last time Accounts were successfully updated
    start_time = zendeskDb.pull_job_timestamp("INCREMENTAL_EXPORT")

    logging.info("INCREMENTAL_EXPORT: start_time={0}".format(start_time))
    try:
        tickets = zd.get_tickets(start_time)
		logging.info("Sucessfully opened configuration file.")

		f.close()
	except Exception, err:
		logging.exception(err)
		sys.exit(1)

	# Create object for internal database methods (mySQL)
	mysqlDb = MySqlTask(config['mysql_username'], config['mysql_password'], config['mysql_host'], config['mysql_database'])

	# Create object for Salesforce methods
	sfdc = SalesforceTask(config['sfUser'], config['sfPass'], config['sfApiToken'])

	# Create object for Zendesk methods
	zd = ZendeskTask(config['zenURL'], config['zenAgent'], config['zenPass'], config['zenToken'])

	### Pull SFDC Account Info to Zendesk Organizations ###
	try:
		sfdcLastModified = sfdc.sfdc_timestamp()
		logging.info("Current Salesforce Timestamp: {0}".format(sfdcLastModified))
	except Exception, err:
		logging.exception(err)
		sys.exit()

	# Get the last modified timestamp from internal database
	startTime = mysqlDb.pull_job_timestamp('SFDC_ACCOUNTS_LAST_MODIFIED')
	logging.info("Pulling SFDC_ACCOUNTS_LAST_MODIFIED; start time of {0}".format(startTime))

	##### Extract all SFDC Accounts #####
	logging.info("Pulling Accounts from Salesforce")