public async Task <string> GenerateReport()
        {
            var data = await _repository.GetAsync();

            var reportingData = HotelReportModel.Map(data);

            return(await _reportGenerator.GenerateAsync(reportingData));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        /// <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);
        }