public Resource FindResourceByEmail(string resourceEmail) { Resource _result = null; // Query Resource to get the owner of the lead StringBuilder strResource = new StringBuilder(); try { strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Resource</entity>"); strResource.Append("<query>"); strResource.Append("<field>Email<expression op=\"equals\">"); strResource.Append(resourceEmail); strResource.Append("</expression></field>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { // Get the ID for the resource _result = (Resource)respResource.queryResult.EntityResults[0]; } return(_result); } catch (Exception _ex) { throw new Exception("AutotaskAPIClient.FindResourceByEmail", _ex); } }
public Account FindAccountByName(string AccountName) { Account _result = null; StringBuilder strResource = new StringBuilder(); try { strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Account</entity>"); strResource.Append("<query>"); strResource.Append("<field>AccountName<expression op=\"equals\">"); strResource.Append(AccountName); strResource.Append("</expression></field>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { _result = (Account)respResource.queryResult.EntityResults[0]; } return(_result); } catch (Exception _ex) { throw new Exception("AutotaskAPIClient.FindAccountByName", _ex); } }
public Contact FindContactByEmail(string contactEmail) { Contact _result = null; // Query Resource to get the owner of the lead StringBuilder strResource = new StringBuilder(); try { strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Contact</entity>"); strResource.Append("<query>"); strResource.Append("<condition><field>EMailAddress<expression op=\"equals\">"); strResource.Append(contactEmail); strResource.Append("</expression></field></condition>"); strResource.Append("<condition><field>Active<expression op=\"equals\">"); strResource.Append("1"); strResource.Append("</expression></field></condition>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { _result = (Contact)respResource.queryResult.EntityResults[0]; } return(_result); } catch (Exception _ex) { throw new Exception("AutotaskAPIClient.FindContactByEmail", _ex); } }
public Resource FindResource(string resourceUserName) { Resource _result = null; // Query Resource to get the owner of the lead StringBuilder strResource = new StringBuilder(); strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Resource</entity>"); strResource.Append("<query>"); strResource.Append("<field>UserName<expression op=\"equals\">"); strResource.Append(resourceUserName); strResource.Append("</expression></field>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { // Get the ID for the resource _result = (Resource)respResource.queryResult.EntityResults[0]; } return(_result); }
public Account FindAccountByDomain(string emailDomain) { Dictionary <int, decimal> _counts = new Dictionary <int, decimal>(); Dictionary <int, decimal> _statistics = new Dictionary <int, decimal>(); Account _result = null; // Query Resource to get the owner of the lead StringBuilder strResource = new StringBuilder(); try { strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Contact</entity>"); strResource.Append("<query>"); strResource.Append("<field>EMailAddress<expression op=\"contains\">"); strResource.Append(emailDomain); strResource.Append("</expression></field>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { int _total = respResource.queryResult.EntityResults.Count(); System.Threading.Tasks.Parallel.ForEach(respResource.queryResult.EntityResults, (_contact) => { lock (_counts) { if (_counts.ContainsKey((int)((Contact)_contact).AccountID)) { _counts[(int)((Contact)_contact).AccountID]++; } else { _counts.Add((int)((Contact)_contact).AccountID, 1); _statistics.Add((int)((Contact)_contact).AccountID, 0); } } }); System.Threading.Tasks.Parallel.ForEach(_counts, (_count) => { _statistics[_count.Key] = Math.Round(((_count.Value / _total) * 100), 3); }); int _AccountID = _statistics.OrderBy(key => key.Value).Reverse().First().Key; _result = FindAccountByID(_AccountID); } return(_result); } catch (Exception _ex) { throw new Exception("AutotaskAPIClient.FindAccountByDomain", _ex); } }
private List <AllocationCode> UpdateUseTypeOneAllocationCodes() { List <AllocationCode> _result = null; StringBuilder strResource = new StringBuilder(); strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>AllocationCode</entity>"); strResource.Append("<query>"); strResource.Append("<condition><field>UseType<expression op=\"equals\">"); strResource.Append(Convert.ToString(1)); strResource.Append("</expression></field></condition>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { _result = new List <AllocationCode>(Array.ConvertAll(respResource.queryResult.EntityResults, new Converter <Entity, AllocationCode>(EntityToAllocationCode))); } return(_result); }
public Contact FindFirstContactByDomain(string emailDomain) { Contact _result = null; // Query Resource to get the owner of the lead StringBuilder strResource = new StringBuilder(); strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Contact</entity>"); strResource.Append("<query>"); strResource.Append("<field>EMailAddress<expression op=\"contains\">"); strResource.Append(emailDomain); strResource.Append("</expression></field>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { _result = (Contact)respResource.queryResult.EntityResults[0]; } return(_result); }
public Ticket FindTicketByNumber(string ticketNumber) { Ticket _result = null; StringBuilder strResource = new StringBuilder(); if (string.IsNullOrWhiteSpace(ticketNumber)) { throw new ArgumentNullException(); } if (!IsValidAutoTaskTicket(ticketNumber)) { throw new ArgumentException(); } try { strResource.Append("<queryxml version=\"1.0\">"); strResource.Append("<entity>Ticket</entity>"); strResource.Append("<query>"); strResource.Append("<field>TicketNumber<expression op=\"equals\">"); strResource.Append(Convert.ToString(ticketNumber)); strResource.Append("</expression></field>"); strResource.Append("</query></queryxml>"); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strResource.ToString())); if (respResource.queryResult.ReturnCode > 0 && respResource.queryResult.EntityResults.Length > 0) { _result = (Ticket)respResource.queryResult.EntityResults[0]; } return(_result); } catch (Exception _ex) { throw new Exception("AutotaskAPIClient.FindTicketByNumber", _ex); } }
public Ticket[] FindTicketByDateRange(DateTimeOffset DateStart, DateTimeOffset DateEnd) { Ticket[] _results = null; List <Ticket> _resultBuilder = new List <Ticket>(); if (DateStart == null && DateEnd == null) { throw new ArgumentNullException(); } if (DateStart >= DateEnd) { throw new ArgumentOutOfRangeException(); } StringBuilder strQuery = new StringBuilder(); StringBuilder strQueryStart = new StringBuilder(); StringBuilder strQueryEnd = new StringBuilder(); List <StringBuilder> strConditions = new List <StringBuilder>(); strQueryStart.Append("<queryxml version=\"1.0\">"); strQueryStart.Append("<entity>Ticket</entity>"); strQueryStart.Append("<query>"); strConditions.Add(new StringBuilder()); strConditions.Last().Append("<condition><field>CreateDate<expression op=\"GreaterThanorEquals\">"); strConditions.Last().Append(DateStart); strConditions.Last().Append("</expression></field></condition>"); strConditions.Add(new StringBuilder()); strConditions.Last().Append("<condition><field>CreateDate<expression op=\"LessThanorEquals\">"); strConditions.Last().Append(DateEnd); strConditions.Last().Append("</expression></field></condition>"); strQueryEnd.Append("</query></queryxml>"); strQuery.Append(strQueryStart); foreach (StringBuilder _condition in strConditions) { strQuery.Append(_condition); } strQuery.Append(strQueryEnd); queryResponse respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strQuery.ToString())); while (respResource.queryResult.ReturnCode > 0) { Ticket[] _temp = new Ticket[respResource.queryResult.EntityResults.Count()]; Array.Copy(respResource.queryResult.EntityResults, 0, _temp, 0, respResource.queryResult.EntityResults.Count()); _resultBuilder.AddRange(_temp); if (respResource.queryResult.EntityResults.Length == 500) {// try for more if (strConditions.Count == 3) { strConditions.Remove(strConditions.Last()); } strConditions.Add(new StringBuilder()); strConditions.Last().Append("<condition><field>id<expression op=\"GreaterThan\">"); strConditions.Last().Append(respResource.queryResult.EntityResults.Last().id); strConditions.Last().Append("</expression></field></condition>"); strQuery.Clear(); strQuery.Append(strQueryStart); foreach (StringBuilder _condition in strConditions) { strQuery.Append(_condition); } strQuery.Append(strQueryEnd); respResource = _atwsServicesClient.query(new queryRequest(_atwsIntegrations, strQuery.ToString())); } else { break; // we got em all but returncode will never be > 0 unless we set it so just break out. } } _results = _resultBuilder.ToArray(); return(_results); }
public async Task <object[]> SyncAsync(string soqlQuery, SqlSyncWriter writer) { if (string.IsNullOrWhiteSpace(soqlQuery)) { throw new ArgumentNullException(nameof(soqlQuery)); } if (writer == null) { throw new ArgumentNullException(nameof(writer)); } // if not login yet then login if (_soapClient == null) { await LoginAsync(); } List <object> writeResult = new List <object>(); try { // read data from sfdc Logger.LogInfo("Querying from Sfdc"); Logger.LogDebug($"SOQL: {soqlQuery}"); queryResponse queryResponse = await _soapClient.queryAsync(_sessionHeader, null, null, null, null, soqlQuery); QueryResult queryResult = queryResponse.result; if (queryResult.records == null) { Logger.LogInfo($"No result return from Sfdc"); return(null); } Logger.LogInfo( $"Querying from Sfdc returning {queryResult.records.Length} records from {queryResult.size} total records"); // loop fetch data from sfdc when is not done bool done; do { done = queryResult.done; // ReSharper disable once InvertIf if (queryResult.size > 0) { // write data DataTableObject data = new DataTableObject(queryResult.records); Logger.LogInfo($"Writing to destination {data.Length} records"); object[] ids = await writer(data); Logger.LogInfo($"Writing to destination completed"); writeResult.AddRange(ids); // query more record if (!queryResult.done) { Logger.LogInfo("Querying more record from Sfdc"); queryMoreResponse queryMoreResponse = await _soapClient.queryMoreAsync(_sessionHeader, null, null, queryResult.queryLocator); queryResult = queryMoreResponse.result; Logger.LogInfo($"Querying more record from Sfdc returning {queryResult.records.Length} records"); } } } while (!done); } catch (Exception e) { throw new Exception("Error sync data.", e); } return(writeResult.ToArray()); }