/// <summary> /// Executes a Report /// </summary> /// <param name="reportName">Name of Report to Run.</param> public void ExecuteReportAsync(string reportName) { Console.Write("ExecuteReport started \n"); this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Called Method ExecuteReport Asynchronously."); ReportCallCompletedEventArgs <Report> reportCallCompletedEventArgs = new ReportCallCompletedEventArgs <Report>(); Console.Write("callCompletedEventArgs instantiated \n"); if (string.IsNullOrEmpty(reportName)) { IdsException exception = new IdsException(Resources.ParameterNotNullMessage, new ArgumentNullException(Resources.StringParameterNullOrEmpty)); Console.Write("IdsException instantiated \n"); this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Error, string.Format(CultureInfo.InvariantCulture, Resources.ExceptionGeneratedMessage, exception.ToString())); reportCallCompletedEventArgs.Error = exception; this.OnExecuteReportAsyncCompleted(this, reportCallCompletedEventArgs); } else { try { AsyncService asyncService = new AsyncService(this.serviceContext); asyncService.OnExecuteReportAsyncCompleted += new ReportServiceCallback <Report> .ReportCallCompletedEventHandler(this.ExecuteReportAsyncCompleted); string reportsQueryParameters = GetReportQueryParameters(); asyncService.ExecuteReportAsync(reportName as string, reportsQueryParameters as string); } catch (SystemException systemException) { this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(TraceLevel.Error, systemException.Message); IdsException idsException = new IdsException(systemException.Message); reportCallCompletedEventArgs.Error = idsException; this.OnExecuteReportAsyncCompleted(this, reportCallCompletedEventArgs); } } }
/// <summary> /// call back method for asynchronously Executing a Report /// </summary> /// <param name="sender">The sender.</param> /// <param name="eventArgs">The <see cref="Intuit.Ipp.Core.AsyncCallCompletedEventArgs"/> instance containing the event data.</param> private void ExecuteReportAsynCompleted(object sender, AsyncCallCompletedEventArgs eventArgs) { ReportCallCompletedEventArgs <Report> reportCallCompletedEventArgs = new ReportCallCompletedEventArgs <Report>(); if (eventArgs.Error == null) { try { IEntitySerializer responseSerializer = CoreHelper.GetSerializer(this.serviceContext, false); string response = eventArgs.Result; if (!response.StartsWith("{\"Report\":")) { response = "{\"Report\":" + response + "}"; } IntuitResponse restResponse = (IntuitResponse)responseSerializer.Deserialize <IntuitResponse>(response); reportCallCompletedEventArgs.Report = restResponse.AnyIntuitObject as Report; this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Finished Executing event Execute ReportAsynCompleted in AsyncService object."); this.OnExecuteReportAsyncCompleted(this, reportCallCompletedEventArgs); } catch (SystemException systemException) { IdsException idsException = CreateIdsException(systemException); this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(TraceLevel.Error, idsException.ToString()); reportCallCompletedEventArgs.Error = idsException; this.OnExecuteReportAsyncCompleted(this, reportCallCompletedEventArgs); } } else { reportCallCompletedEventArgs.Error = eventArgs.Error; this.OnExecuteReportAsyncCompleted(this, reportCallCompletedEventArgs); } }
/// <summary> /// Executes a Report (asynchronously) under the specified realm in an asynchronous manner. The realm must be set in the context. /// </summary> /// <param name="reportName">Name of the Report to Run</param> /// <param name="reportsQueryParameters">Report Parameters for query string</param> public void ExecuteReportAsync(string reportName, string reportsQueryParameters) { this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Called Method ExecuteReport Asynchronously."); AsyncRestHandler asyncRestHandler = new AsyncRestHandler(this.serviceContext); asyncRestHandler.OnCallCompleted += new EventHandler <AsyncCallCompletedEventArgs>(this.ExecuteReportAsynCompleted); ReportCallCompletedEventArgs <Report> reportCallCompletedEventArgs = new ReportCallCompletedEventArgs <Report>(); string resourceString = reportName; try { // Builds resource Uri string uri = ""; if (!string.IsNullOrEmpty(reportsQueryParameters)) { uri = string.Format(CultureInfo.InvariantCulture, "{0}/company/{1}/reports/{2}?{3}", Utility.CoreConstants.VERSION, this.serviceContext.RealmId, resourceString, reportsQueryParameters); } else { uri = string.Format(CultureInfo.InvariantCulture, "{0}/company/{1}/reports/{2}", Utility.CoreConstants.VERSION, this.serviceContext.RealmId, resourceString); } // Create request parameters RequestParameters parameters; if (this.serviceContext.IppConfiguration.Message.Request.SerializationFormat == Intuit.Ipp.Core.Configuration.SerializationFormat.Json) { parameters = new RequestParameters(uri, HttpVerbType.GET, Utility.CoreConstants.CONTENTTYPE_APPLICATIONJSON); } else { parameters = new RequestParameters(uri, HttpVerbType.GET, Utility.CoreConstants.CONTENTTYPE_APPLICATIONXML); } // Prepare request HttpWebRequest request = asyncRestHandler.PrepareRequest(parameters, new Report()); //// get response asyncRestHandler.GetResponse(request); } catch (SystemException systemException) { this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(TraceLevel.Error, systemException.Message); IdsException idsException = new IdsException(systemException.Message); reportCallCompletedEventArgs.Error = idsException; this.OnExecuteReportAsyncCompleted(this, reportCallCompletedEventArgs); } }
/// <summary> /// ExecuteReport Asynchronous call back method /// </summary> /// <param name="sender">Rest handler class</param> /// <param name="eventArgs">callback event arguments</param> private void ExecuteReportAsyncCompleted(object sender, ReportCallCompletedEventArgs <Report> eventArgs) { this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Finished Executing Method ExecuteReport Async."); this.OnExecuteReportAsyncCompleted(sender, eventArgs); }