public async Task <string> GenerateReport() { var data = await _repository.GetAsync(); var reportingData = HotelReportModel.Map(data); return(await _reportGenerator.GenerateAsync(reportingData)); }
public async Task <IActionResult> Report( [FromForm, Bind("TemplateId,ProductName,QuantityPerPackage,Size,File,Manufacturer,CountryOfOrigin,Importer,ImporterCountry")] ProductInfoModel model) { model.ReportOptions = _reportOptions; var template = await _mediator.Send(new GetSingleTemplateRequest { Id = model.TemplateId }); if (template == null) { return(NotFound()); } var validationResult = await new ProductInfoModelValidator(template.ProductInfoModelConfiguration, _localizer) .ValidateAsync(model); if (!validationResult.IsValid) { foreach (var error in validationResult.Errors) { ModelState.AddModelError(error.PropertyName, error.ErrorMessage); } model.Templates = await _mediator.Send(new GetTemplatesRequest()); model.ReportOptions = _reportOptions; return(View("ProductInfo", model)); } var product = _productMapperFactory .CreateMapper(template.ProductInfoModelConfiguration) .Map(model); return(await _reportGenerator.GenerateAsync(this, template, product)); }
/// <summary> /// Asynchronously generates a report from a registered report and filter values /// </summary> /// <param name="reportName">The report name</param> /// <param name="filterValues">The filter values</param> /// <param name="userInfo">The user information</param> /// <returns>The generation result</returns> public async Task <ReportGenerationResult> GenerateAsync ( string reportName, SubmittedReportFilterValues filterValues, ReportUserInfo userInfo ) { Validate.IsNotEmpty(reportName); Validate.IsNotNull(filterValues); Validate.IsNotNull(userInfo); var watch = Stopwatch.StartNew(); var hasAccess = CanUserAccessReport ( reportName, userInfo ); if (false == hasAccess) { watch.Stop(); return(new ReportGenerationResult ( null, watch.ElapsedMilliseconds, "The user is not authorized to generate the report." )); } var registeredReport = _reportRepository.GetReport ( reportName ); if (registeredReport.Disabled) { watch.Stop(); return(new ReportGenerationResult ( null, watch.ElapsedMilliseconds, "The report cannot be generated because it is disabled." )); } var reportDefinition = _definitionBuilder.Build ( registeredReport, _queryRepository ); var reportFilter = BuildReportFilter ( registeredReport, reportDefinition, filterValues, userInfo ); var options = new ReportGenerationOptions() { Culture = userInfo.Culture, PreferredLanguage = userInfo.PreferredLanguage }; var task = _reportGenerator.GenerateAsync ( reportDefinition, reportFilter, options ); var result = await task.ConfigureAwait ( false ); return(result); }