예제 #1
0
        private IReportRequest LoadTemplate(MvcContext context, string templateCode, Type definitionType,
                                            Controller controller){
            log.debug(() => "start load template");
            var definition = LoadDefinition(templateCode, definitionType).Clone();
            definition.CleanupParameters(myapp.usr);

            if (acl.get(definition)){
                var result = new ReportRequest();
                var savedcode = controller.Request.Params["srcode"];
                if(savedcode.hasContent()){
                    definition.TemplateParameters.SavedReport = myapp.storage.Get<ISavedReport>().Load(savedcode);
                    if(!definition.TemplateParameters.SavedReport.Authorize(myapp.usr)) {
                        throw new SecurityException("попытка вывода недоступного хранимого отчета с кодом "+savedcode);
                    }
                }else {
					definition.TemplateParameters.SavedReport = myapp.storage.Get<ISavedReport>().Load(templateCode+"_default");
                }
                if (!controller.existed("notempalate")){
                    
                    definition.LoadParameters(controller.Request.Params);
                }

                result.ReportDefinition = definition;
                result.RequestId = new ReportRequestIdentity{Uid = Guid.NewGuid().ToString()};
                log.debug(() => "end load template");
                return result;
            }
            else{
                throw new SecurityException("Вы не имеете права использовать шаблон отчета с кодом " + templateCode);
            }
        }