Exemplo n.º 1
0
        public ReportRetrieveResult Retrieve(ReportRetrieveRequest request)
        {
            request.CheckNotNull();

            if (request.ReportKey.IsEmptyOrNull())
            {
                throw new ArgumentNullException("reportKey");
            }

            var reportInfo = ReportRegistry.GetReport(request.ReportKey);

            if (reportInfo == null)
            {
                throw new ArgumentOutOfRangeException("reportKey");
            }

            if (reportInfo.Permission != null)
            {
                Authorization.ValidatePermission(reportInfo.Permission);
            }

            var response = new ReportRetrieveResult();

            response.Properties = PropertyItemHelper.GetPropertyItemsFor(reportInfo.Type);
            response.ReportKey  = reportInfo.Key;
            response.Title      = reportInfo.Title;
            var reportInstance = Activator.CreateInstance(reportInfo.Type);

            response.InitialSettings  = reportInstance;
            response.IsDataOnlyReport = reportInstance is IDataOnlyReport;
            response.IsExternalReport = reportInstance is IExternalReport;

            return(response);
        }
        public ReportRetrieveResult Retrieve(ReportRetrieveRequest request,
                                             IServiceProvider serviceProvider, IPropertyItemProvider propertyItemProvider)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (request.ReportKey.IsEmptyOrNull())
            {
                throw new ArgumentNullException(nameof(request.ReportKey));
            }

            if (propertyItemProvider is null)
            {
                throw new ArgumentNullException(nameof(propertyItemProvider));
            }

            var reportInfo = ReportRegistry.GetReport(request.ReportKey);

            if (reportInfo == null)
            {
                throw new ArgumentOutOfRangeException(nameof(request.ReportKey));
            }

            if (reportInfo.Permission != null)
            {
                Permissions.ValidatePermission(reportInfo.Permission, Localizer);
            }

            var response = new ReportRetrieveResult
            {
                Properties = propertyItemProvider.GetPropertyItemsFor(reportInfo.Type).ToList(),
                ReportKey  = reportInfo.Key,
                Title      = reportInfo.Title
            };
            var reportInstance = ActivatorUtilities.CreateInstance(serviceProvider, reportInfo.Type);

            response.InitialSettings  = reportInstance;
            response.IsDataOnlyReport = reportInstance is IDataOnlyReport;
            response.IsExternalReport = reportInstance is IExternalReport;

            return(response);
        }