コード例 #1
0
        public CrcReportFolder Create(ReportingService2005Soap rService, string path)
        {
            var ret = new CrcReportFolder();

            ret.Path       = path;
            ret.FolderName = CrcReportDefinition.ReportNameFromPath(path);

            var lcRequest = new ListChildrenRequest(path, false);

            var lcResponse = rService.ListChildren(lcRequest);

            foreach (CatalogItem itemLoop in lcResponse.CatalogItems)
            {
                if (itemLoop.Type == ItemTypeEnum.Folder)
                {
                    var sf = Create(rService, itemLoop.Path);
                    if (sf.Reports.Count() > 0 || sf.SubFolders.Count() > 0)
                    {
                        ret.SubFolders.Add(sf);
                    }
                }
                else if (itemLoop.Type == ItemTypeEnum.Report)
                {
                    if (!itemLoop.Hidden)
                    {
                        var repItem = new CrcReportItem();
                        repItem.ReportPath  = itemLoop.Path;
                        repItem.DisplayName = itemLoop.Name;
                        repItem.Description = itemLoop.Description;
                        ret.Reports.Add(repItem);
                    }
                }
            }
            return(ret);
        }
コード例 #2
0
        public List <CrcReportHistory> GetUsersRecentRuns(string username, int max)
        {
            string    sql = SqlPatternUsersRecentRuns();
            DataTable res = new DataTable();

            using (SqlConnection conn = new SqlConnection(GetReportServerConnectionString()))
            {
                SqlCommand comm = new SqlCommand(String.Format(sql, max), conn);

                comm.Parameters.Add("@UserName", SqlDbType.NVarChar, 520).Value = username;
                SqlDataAdapter adapt = new SqlDataAdapter(comm);
                adapt.Fill(res);
            }
            var histList = new List <CrcReportHistory>();

            foreach (DataRow rowLoop in res.Rows)
            {
                var h = new CrcReportHistory()
                {
                    ReportName  = CrcReportDefinition.ReportNameFromPath(rowLoop["ReportPath"].ToString()),
                    ReportPath  = rowLoop["ReportPath"].ToString(),
                    UserName    = rowLoop["UserName"].ToString(),
                    Parameters  = rowLoop["Parameters"].ToString(),
                    TimeStart   = (DateTime)rowLoop["TimeStart"],
                    RunDuration = (int)rowLoop["TimeDataRetrieval"],
                    RowCount    = (long)rowLoop["RowCount"]
                };
                histList.Add(h);
            }
            return(histList);
        }
コード例 #3
0
        public void LogToCrissCrossHistory(CrcReportDefinition repDef, string username, string executionId)
        {
            string        crissCrossInstance    = GetAppRootUrl(false);
            string        reportPath            = repDef.ReportPath;
            var           converter             = new CrcParameterConverter();
            List <string> parametersListForUser = converter.GetReportParametersForUser(repDef, 0);
            string        parametersForUser     = string.Join(Environment.NewLine, parametersListForUser.ToArray());

            logger.DebugFormat("Logging report run to CrissCrossExecutionLog - executionid {0}", executionId);

            string sql = "insert into CrissCrossExecutionLog(ExecutionId, CrissCrossInstance, ReportPath, UserName, ParametersForUser) "
                         + "values(@ExecutionId, @CrissCrossInstance, @ReportPath, @UserName, @ParametersForUser)";

            using (SqlConnection conn = new SqlConnection(GetCrissCrossHistoryConnectionString()))
            {
                conn.Open();
                SqlCommand comm = new SqlCommand(sql, conn);
                comm.Parameters.Add("@ExecutionId", SqlDbType.NVarChar, 128).Value        = executionId;
                comm.Parameters.Add("@CrissCrossInstance", SqlDbType.NVarChar, 250).Value = crissCrossInstance;
                comm.Parameters.Add("@ReportPath", SqlDbType.NVarChar, 850).Value         = reportPath;
                comm.Parameters.Add("@UserName", SqlDbType.NVarChar, 520).Value           = username;
                comm.Parameters.Add("@ParametersForUser", SqlDbType.NVarChar).Value       = parametersForUser;
                comm.ExecuteNonQuery();
            }
        }
コード例 #4
0
        public CrcReportDefinition MakeTestReportDefn()
        {
            var repDefn = new CrcReportDefinition();

            repDefn.ReportPath  = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";
            var dateParam = new CrcParameterDefinition();

            dateParam.Name          = "PretendDateParam";
            dateParam.DisplayName   = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;
            repDefn.ParameterDefinitions.Add(dateParam);
            var singleChoiceParam = new CrcParameterDefinition();

            singleChoiceParam.Name          = "PretendSingleSelect";
            singleChoiceParam.DisplayName   = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S1", Label = "Single1"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S2", Label = "Single2"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S3", Label = "Single3"
            });
            repDefn.ParameterDefinitions.Add(singleChoiceParam);
            var multiChoiceParam = new CrcParameterDefinition();

            multiChoiceParam.Name          = "PretendMultiSelect";
            multiChoiceParam.DisplayName   = "Pretend Multi Select";
            multiChoiceParam.ParameterType = CrcParameterType.MultiSelect;
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M1", Label = "Multi1"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M2", Label = "Multi2"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M3", Label = "Multi3"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M4", Label = "Multi4"
            });
            multiChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "M5", Label = "Multi5"
            });
            repDefn.ParameterDefinitions.Add(multiChoiceParam);

            return(repDefn);
        }
コード例 #5
0
        public void HasDependantParameters_CanDetectFalse()
        {
            var crcRepDefn = new CrcReportDefinition();

            crcRepDefn.ParameterDefinitions.Add(new CrcParameterDefinition()
            {
                Name = "ParamOne"
            });
            crcRepDefn.ParameterDefinitions.Add(new CrcParameterDefinition()
            {
                Name = "ParamTwo"
            });

            Assert.IsFalse(crcRepDefn.HasDependantParameters);
        }
コード例 #6
0
        private string BuildCombinedDescription(CrcReportDefinition repDefn)
        {
            string combDesc = "";

            if (!string.IsNullOrEmpty(repDefn.Description))
            {
                combDesc = repDefn.Description;
            }
            if (!string.IsNullOrEmpty(repDefn.ReportHint))
            {
                if (combDesc.Length > 0)
                {
                    combDesc += "<br/><br/>";
                }
                combDesc += repDefn.ReportHint;
            }
            return(combDesc);
        }
コード例 #7
0
        public CrcReportDefinition MakeTestReportDefn(string dateValue, string selectValue)
        {
            var repDefn = new CrcReportDefinition();

            repDefn.ReportPath  = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";

            var dateParam = new CrcParameterDefinition();

            dateParam.Name          = "PretendDateParam";
            dateParam.DisplayName   = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;

            dateParam.ParameterChoice             = new CrcParameterChoice("PretendDateParam");
            dateParam.ParameterChoice.SingleValue = dateValue;

            repDefn.ParameterDefinitions.Add(dateParam);

            var singleChoiceParam = new CrcParameterDefinition();

            singleChoiceParam.Name          = "PretendSingleSelect";
            singleChoiceParam.DisplayName   = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S1", Label = "Single1"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S2", Label = "Single2"
            });
            singleChoiceParam.ValidValues.Add(new CrcValidValue()
            {
                Value = "S3", Label = "Single3"
            });
            singleChoiceParam.ParameterChoice             = new CrcParameterChoice("PretendSingleSelect");
            singleChoiceParam.ParameterChoice.SingleValue = selectValue;
            repDefn.ParameterDefinitions.Add(singleChoiceParam);



            return(repDefn);
        }
コード例 #8
0
        public void HasDependantParameters_CanDetectTrue()
        {
            var crcRepDefn = new CrcReportDefinition();

            crcRepDefn.ParameterDefinitions.Add(new CrcParameterDefinition()
            {
                Name = "ParamOne",
                DependantParameterNames = new List <string>()
                {
                    "ParamTwo"
                }
            });
            crcRepDefn.ParameterDefinitions.Add(new CrcParameterDefinition()
            {
                Name = "ParamTwo"
            });

            Assert.IsTrue(crcRepDefn.HasDependantParameters);
        }
コード例 #9
0
 public List<rws.ParameterValue> GetParametersValuesForSsrsWebService(CrcReportDefinition reptDefn)
 {
     var convertedParams = new List<rws.ParameterValue>();
     foreach (var paramDefn in reptDefn.ParameterDefinitions)
     {
         if (paramDefn.ParameterChoice != null)
         {
             if (!string.IsNullOrEmpty(paramDefn.ParameterChoice.SingleValue))
             {
                 foreach (string valLoop in paramDefn.ParameterChoice.Values)
                 {
                     var convParam = new rws.ParameterValue();
                     convParam.Name = paramDefn.Name;
                     convParam.Value = valLoop;
                     convertedParams.Add(convParam);
                 }
             }
         }
     }
     return convertedParams;
 }
コード例 #10
0
        public void GetAvailableParameterNames_CanOmitHidden()
        {
            var crcRepDefn = new CrcReportDefinition();

            crcRepDefn.ParameterDefinitions.Add(new CrcParameterDefinition()
            {
                Name        = "ParamOne",
                DisplayName = "ParamOneDesc",
                Hidden      = false
            });
            crcRepDefn.ParameterDefinitions.Add(new CrcParameterDefinition()
            {
                Name        = "ParamTwo",
                DisplayName = "ParamTwoDesc",
                Hidden      = true
            });

            var paramDictionary = crcRepDefn.GetAvailableParameterNames();

            Assert.AreEqual(1, paramDictionary.Count());
            Assert.IsTrue(paramDictionary.Keys.Contains("ParamOne"));
            Assert.AreEqual("ParamOneDesc", paramDictionary["ParamOne"]);
        }
コード例 #11
0
ファイル: CrcHistoryLogger.cs プロジェクト: pallu/crisscross
        public void LogToCrissCrossHistory(CrcReportDefinition repDef, string username, string executionId)
        {
            string crissCrossInstance = GetAppRootUrl(false);
            string reportPath = repDef.ReportPath;
            var converter = new CrcParameterConverter();
            List<string> parametersListForUser = converter.GetReportParametersForUser(repDef, 0);
            string parametersForUser = string.Join(Environment.NewLine, parametersListForUser.ToArray());

            logger.DebugFormat("Logging report run to CrissCrossExecutionLog - executionid {0}", executionId);

            string sql = "insert into CrissCrossExecutionLog(ExecutionId, CrissCrossInstance, ReportPath, UserName, ParametersForUser) "
                + "values(@ExecutionId, @CrissCrossInstance, @ReportPath, @UserName, @ParametersForUser)";
            using (SqlConnection conn = new SqlConnection(GetCrissCrossHistoryConnectionString()))
            {
                conn.Open();
                SqlCommand comm = new SqlCommand(sql, conn);
                comm.Parameters.Add("@ExecutionId", SqlDbType.NVarChar, 128).Value = executionId;
                comm.Parameters.Add("@CrissCrossInstance", SqlDbType.NVarChar, 250).Value = crissCrossInstance;
                comm.Parameters.Add("@ReportPath", SqlDbType.NVarChar, 850).Value = reportPath;
                comm.Parameters.Add("@UserName", SqlDbType.NVarChar, 520).Value = username;
                comm.Parameters.Add("@ParametersForUser", SqlDbType.NVarChar).Value = parametersForUser;
                comm.ExecuteNonQuery();
            }
        }
コード例 #12
0
 public List<viewer.ReportParameter> GetReportParametersForSsrsReportViewer(CrcReportDefinition reptDefn)
 {
     var convertedParams = new List<viewer.ReportParameter>();
     foreach (var paramDefn in reptDefn.ParameterDefinitions)
     {
         if (paramDefn.ParameterChoice != null)
         {
             var convParam = new viewer.ReportParameter();
             convParam.Name = paramDefn.Name;
             if (!string.IsNullOrEmpty(paramDefn.ParameterChoice.SingleValue))
             {
                 foreach (var valLoop in paramDefn.ParameterChoice.Values)
                     convParam.Values.Add(valLoop);
             }
             else
             {
                 // we want to record a null
                 convParam.Values.Add(null);
             }
             convertedParams.Add(convParam);
         }
     }
     return convertedParams;
 }
コード例 #13
0
        public void CheckRequiredFromUser(CrcReportDefinition repDef)
        {
            foreach (var crcParam in repDef.ParameterDefinitions)
            {
                bool hasDefault = (crcParam.ParameterChoice != null && crcParam.ParameterChoice.Values.Count() > 0);
                bool defaultIsNull = false;
                bool defaultIsBlank = false;
                if (hasDefault)
                {
                    defaultIsNull = crcParam.ParameterChoice.Values.Exists(v => v == null);
                    defaultIsBlank = crcParam.ParameterChoice.Values.Exists(v => v == string.Empty);
                }
                crcParam.RequiredFromUser = false;
                if (!crcParam.AllowNull && (!hasDefault || hasDefault && defaultIsNull))
                    crcParam.RequiredFromUser = true;

            }
        }
コード例 #14
0
        public CrcReportDefinition Create(string reportPath, rws.CatalogItem reportCatItem, rws.ReportParameter[] wsReportParameters, CrcExtraConfiguration extraConfig)
        {
            var repDef = new CrcReportDefinition();
            repDef.ReportPath = reportPath;
            if (reportCatItem != null)
            {
                repDef.DisplayName = reportCatItem.Name;
                repDef.Description = reportCatItem.Description;
            }
            if (string.IsNullOrEmpty(repDef.DisplayName))
            {
                repDef.DisplayName = CrcReportDefinition.ReportNameFromPath(repDef.ReportPath);
            }

            CrcReportConfig repConfig = null;
            if (extraConfig != null)
                repConfig = extraConfig.GetReportConfig(repDef.ReportPath);

            if (repConfig != null)
                repDef.ReportHint = repConfig.ReportHint;

            AddParameterDefinitions(wsReportParameters, repDef, extraConfig, repConfig);

            bool readSsrsDependantParams = false;
            if (extraConfig == null || !extraConfig.IgnoreSsrsParameterDependencies)
                readSsrsDependantParams = true;
            if (repConfig != null && repConfig.DependantParamsSpecified)
                readSsrsDependantParams = false;
            if (readSsrsDependantParams)
                AddSsrsDependentParams(wsReportParameters, repDef);

            CrossReferenceDependantParameters(repDef);
            ApplyParameterDefaults(wsReportParameters, repDef);
            CheckRequiredFromUser(repDef);

            return repDef;
        }
コード例 #15
0
        public CrcReportDefinition MakeTestReportDefn(string dateValue, string selectValue)
        {
            var repDefn = new CrcReportDefinition();
            repDefn.ReportPath = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";

            var dateParam = new CrcParameterDefinition();
            dateParam.Name = "PretendDateParam";
            dateParam.DisplayName = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;

            dateParam.ParameterChoice = new CrcParameterChoice("PretendDateParam");
            dateParam.ParameterChoice.SingleValue = dateValue;

            repDefn.ParameterDefinitions.Add(dateParam);

            var singleChoiceParam = new CrcParameterDefinition();
            singleChoiceParam.Name = "PretendSingleSelect";
            singleChoiceParam.DisplayName = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S1", Label = "Single1" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S2", Label = "Single2" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S3", Label = "Single3" });
            singleChoiceParam.ParameterChoice = new CrcParameterChoice("PretendSingleSelect");
            singleChoiceParam.ParameterChoice.SingleValue = selectValue;
            repDefn.ParameterDefinitions.Add(singleChoiceParam);

            return repDefn;
        }
コード例 #16
0
        /// <summary>
        /// applies the specified CrcParameterChoiceCollection to the specified report definition
        /// will set the ParameterChoice property of matching ParameterDefinitions as required
        /// </summary>
        /// <param name="repDefn"></param>
        /// <param name="paramChoices"></param>
        /// <returns>ParameterMapResult - if MappingValid is false, see Complaints collection</returns>
        public ParameterMapResult MapParameterChoices(CrcReportDefinition repDefn, CrcParameterChoiceCollection paramChoices)
        {
            var res = new ParameterMapResult();
            res.Complaints = new List<string>();
            string cultureForDateParsing = GetCultureForDateParsing();
            foreach (CrcParameterChoice choiceLoop in paramChoices.ParameterChoiceList)
            {
                var defnMatch = repDefn.ParameterDefinitions.FirstOrDefault(pd => pd.Name == choiceLoop.Name);
                if (defnMatch == null)
                {
                    res.Complaints.Add(String.Format("Param {0} not found", choiceLoop.Name));
                    continue;
                }
                if (defnMatch.ParameterType == CrcParameterType.Date)
                {
                    if (choiceLoop.SingleValue == null)
                    {
                        defnMatch.ParameterChoice = choiceLoop.DeepClone();
                        continue;
                    }

                    var parseResult = ParseDateStringVariousWays(choiceLoop.SingleValue, cultureForDateParsing);
                    if (parseResult.CouldParse)
                    {
                        var parsedChoice = new CrcParameterChoice(choiceLoop.Name);
                        parsedChoice.SingleValue = parseResult.DateTime.ToString("yyyy-MM-dd");
                        defnMatch.ParameterChoice = parsedChoice;
                        continue;
                    }
                    res.Complaints.Add(String.Format("Could not parse date {0} into Param {1}",
                        choiceLoop.SingleValue, choiceLoop.Name));
                }
                else if (defnMatch.ParameterType == CrcParameterType.Boolean)
                {
                    if (string.IsNullOrEmpty(choiceLoop.SingleValue) || choiceLoop.SingleValue == "True"
                        || choiceLoop.SingleValue == "False")
                    {
                        defnMatch.ParameterChoice = choiceLoop.DeepClone();
                        continue;
                    }
                    res.Complaints.Add(String.Format("Could not parse boolean {0} into Param {1}",
                        choiceLoop.SingleValue, choiceLoop.Name));
                }
                else if (defnMatch.ParameterType == CrcParameterType.Text)
                {
                    defnMatch.ParameterChoice = choiceLoop.DeepClone();
                    continue;
                }
                else if (defnMatch.ValidValues.Count() > 0)
                {
                    bool valuesOK = true;
                    foreach (string chosenValue in choiceLoop.Values)
                    {
                        if (defnMatch.ValidValues.FirstOrDefault(vv => vv.Value == chosenValue) == null)
                        {
                            res.Complaints.Add(String.Format("Could not apply value {0} into Param {1} because it is not a valid option",
                             chosenValue, choiceLoop.Name));
                            valuesOK = false;
                        }

                    }
                    if (valuesOK)
                    {
                        defnMatch.ParameterChoice = choiceLoop.DeepClone();
                        continue;
                    }
                }
            }
            res.MappingValid = (res.Complaints.Count() == 0);
            return res;
        }
コード例 #17
0
 public void CrossReferenceDependantParameters(CrcReportDefinition repDef)
 {
     foreach (var crParamLoop in repDef.ParameterDefinitions)
     {
         foreach (var dependantName in crParamLoop.DependantParameterNames)
         {
             var match = repDef.ParameterDefinitions.FirstOrDefault(p => p.Name == dependantName);
             if (match == null)
             {
                 logger.DebugFormat("Report {0} Param {1} specified Dependant Param {2} but cannot find it",
                     repDef.DisplayName, crParamLoop.Name, dependantName);
                 continue;
             }
             logger.DebugFormat("Report {0} Param {1} has Dependant ID {2} - found",
                     repDef.DisplayName, crParamLoop.Name, match.id);
             crParamLoop.DependantParameterIds.Add(match.id);
         }
     }
 }
コード例 #18
0
        public void AddParameterDefinitions(rws.ReportParameter[] wsReportParameters, CrcReportDefinition repDef, CrcExtraConfiguration extraConfig, CrcReportConfig reportConfig)
        {
            List<string> showByDefault = new List<string>();
            if (reportConfig != null)
                showByDefault = reportConfig.GetParamsToShowByDefault();
            List<string> defaultEmptyEquivalents = new List<string>();
            if (extraConfig != null && extraConfig.DefaultEmptyEquivalentValues != null)
                defaultEmptyEquivalents = extraConfig.DefaultEmptyEquivalentValues;

            foreach (var paramLoop in wsReportParameters)
            {
                CrcReportConfig.CrcParamConfig paramConfig = null;
                // get extra config for parameter, if there is any
                if (reportConfig != null)
                    paramConfig = reportConfig.CrcParamConfigs.FirstOrDefault(p => p.ParamName == paramLoop.Name);

                var crcParam = new CrcParameterDefinition();
                crcParam.Name = paramLoop.Name;
                crcParam.id = "param_" + paramLoop.Name.Replace(" ", "_");
                crcParam.AllowNull = paramLoop.Nullable;
                crcParam.AllowBlank = paramLoop.AllowBlank;

                if (string.IsNullOrEmpty(paramLoop.Prompt))
                {
                    // if Prompt is null or empty, it means Parameter is 'Hidden' in SSRS
                    crcParam.Hidden = true;
                    crcParam.DisplayName = paramLoop.Name;
                }
                else
                {
                    crcParam.DisplayName = paramLoop.Prompt;
                }
                if (string.IsNullOrEmpty(crcParam.DisplayName))
                    crcParam.DisplayName = crcParam.Name;
                // if PromptUser is false then Parameter is 'Internal' in SSRS
                if (!paramLoop.PromptUser)
                    crcParam.Hidden = true;
                if (paramLoop.Type == rws.ParameterTypeEnum.DateTime)
                    crcParam.ParameterType = CrcParameterType.Date;
                else if ((paramLoop.ValidValues != null && paramLoop.ValidValues.Count() > 0)
                    || paramLoop.ValidValuesQueryBased)
                {
                    if (paramLoop.MultiValue)
                        crcParam.ParameterType = CrcParameterType.MultiSelect;
                    else
                        crcParam.ParameterType = CrcParameterType.Select;
                }
                else if (paramLoop.Type == rws.ParameterTypeEnum.Boolean)
                    crcParam.ParameterType = CrcParameterType.Boolean;
                else
                    crcParam.ParameterType = CrcParameterType.Text;

                if (paramLoop.ValidValues != null)
                {
                    foreach (var valLoop in paramLoop.ValidValues)
                    {
                        crcParam.ValidValues.Add(new CrcValidValue() { Value = valLoop.Value, Label = valLoop.Label });
                    }
                    if (crcParam.ValidValues.Count() > 10)
                        crcParam.AllowListSearch = true;
                }

                // check config for dependencies
                if (paramConfig != null && paramConfig.DependantParams != null && paramConfig.DependantParams.Count() > 0)
                {
                    logger.DebugFormat("Param {0} has extraconfig dependancies: {1}",
                        paramLoop.Name, string.Join(", ", paramConfig.DependantParams.ToArray()));
                    foreach (string dpname in paramConfig.DependantParams)
                        crcParam.DependantParameterNames.Add(dpname);
                }

                foreach (string sloop in defaultEmptyEquivalents)
                {
                    AddEmptyEquivalent(crcParam, sloop);
                }

                // check for specific empty equivalents for this parameter
                if (paramConfig != null && paramConfig.EmptyEquivalentValues != null)
                {
                    foreach (string sloop in paramConfig.EmptyEquivalentValues)
                    {
                        AddEmptyEquivalent(crcParam, sloop);
                    }
                }

                if (showByDefault.Contains(crcParam.Name))
                    crcParam.AlwaysShow = true;

                repDef.ParameterDefinitions.Add(crcParam);
            }
        }
コード例 #19
0
        public void CanRefreshDependantParameters_Simple()
        {
            // make report defn
            var repDefn = new CrcReportDefinition();

            repDefn.ReportPath = "Test/Report";
            var pd1 = new CrcParameterDefinition();

            pd1.Name = "ParamOne";
            pd1.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label1", Value = "Value1"
            });
            pd1.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label2", Value = "Value2"
            });
            pd1.ValidValues.Add(new CrcValidValue()
            {
                Label = "Label3", Value = "Value3"
            });
            pd1.DependantParameterNames.Add("ParamTwo");
            var pd2 = new CrcParameterDefinition();

            pd2.Name = "ParamTwo";
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel1_1", Value = "SubValue1_1"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel1_2", Value = "SubValue1_2"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel2_1", Value = "SubValue2_1"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel2_2", Value = "SubValue2_2"
            });
            pd2.ValidValues.Add(new CrcValidValue()
            {
                Label = "SubLabel3_1", Value = "SubValue3_1"
            });
            repDefn.ParameterDefinitions.Add(pd1);
            repDefn.ParameterDefinitions.Add(pd2);


            // make choice collection
            var choiceCollection = new CrcParameterChoiceCollection();
            var paramChoice      = new CrcParameterChoice("ParamOne");

            paramChoice.Values.Add("Value2");
            choiceCollection.ParameterChoiceList.Add(paramChoice);

            // make server side params to return
            ItemParameter p1 = new ItemParameter();

            p1.Name        = "ParamOne";
            p1.ValidValues = new ValidValue[] { new ValidValue()
                                                {
                                                    Label = "Label1", Value = "Value1"
                                                },
                                                new ValidValue()
                                                {
                                                    Label = "Label2", Value = "Value2"
                                                },
                                                new ValidValue()
                                                {
                                                    Label = "Label3", Value = "Value3"
                                                } };
            p1.DefaultValues = new string[] { };
            ItemParameter p2 = new ItemParameter();

            p2.Name        = "ParamTwo";
            p2.ValidValues = new ValidValue[] { new ValidValue()
                                                {
                                                    Label = "SubLabel2_1", Value = "SubValue2_1"
                                                },
                                                new ValidValue()
                                                {
                                                    Label = "SubLabel2_2", Value = "SubValue2_2"
                                                } };
            p2.DefaultValues = new string[] { };
            ItemParameter[] paramArrayToReturn = new ItemParameter[] { p1, p2 };


            // make mocks for ccs
            var mf = new TestDoubles.MockSsrsWebServiceFactory();
            var soapClientFactory = mf.MakeMockSoapClientFactory(
                mf.MakeMockReportingService2010Soap("Value2", paramArrayToReturn));

            var cacheMock  = MockRepository.GenerateMock <CrcCacheManager>();
            var configMock = MockRepository.GenerateMock <CrcExtraConfiguration>();

            // make ccs
            var ccs = new CrissCrossServices(soapClientFactory, cacheMock, configMock, null);


            ccs.RefreshDependantParameters(repDefn, choiceCollection);

            Assert.AreEqual(2, repDefn.ParameterDefinitions.Count());
            var pd1check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamOne");

            Assert.IsNotNull(pd1check);
            Assert.AreEqual("Value2", pd1check.ParameterChoice.SingleValue);
            var pd2check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamTwo");

            Assert.IsNotNull(pd2check);
            Assert.AreEqual(2, pd2check.ValidValues.Count());
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault(vv => vv.Value == "SubValue2_1"));
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault(vv => vv.Value == "SubValue2_2"));
        }
コード例 #20
0
ファイル: Report.aspx.cs プロジェクト: pallu/crisscross
 private string BuildCombinedDescription(CrcReportDefinition repDefn)
 {
     string combDesc = "";
     if (!string.IsNullOrEmpty(repDefn.Description))
         combDesc = repDefn.Description;
     if (!string.IsNullOrEmpty(repDefn.ReportHint))
     {
         if (combDesc.Length > 0)
             combDesc += "<br/><br/>";
         combDesc += repDefn.ReportHint;
     }
     return combDesc;
 }
コード例 #21
0
        /// <summary>
        /// Applies the specified choices to the already-existing report definition
        /// and updates the dependant parameters
        /// </summary>
        public void RefreshDependantParameters(CrcReportDefinition repDefn, CrcParameterChoiceCollection newChoices)
        {
            var mapResult = repDefn.MapParameterChoices(newChoices);
            if (!mapResult.MappingValid)
            {
                // todo - friendlier message back to ui
                throw new ApplicationException(string.Format("invalid params - could not map supplied values to definitions for report {0}. complaints: {1}",
                    repDefn.DisplayName, string.Join(", ", mapResult.Complaints.ToArray())));
            }
            var conv = new CrcParameterConverter();
            List<ParameterValue> valueList = conv.GetParametersValuesForSsrsWebService(repDefn);
            // get new params from web service
            ReportingService2005Soap rService = m_ssrsSoapClientFactory.MakeSsrsSoapClient();
            logger.DebugFormat("RefreshDependantParameters: rep {0} calling WS to get new validvalid. Passing {1} values", repDefn.DisplayName, valueList.Count());

            var grpRequest = new GetReportParametersRequest(repDefn.ReportPath, null, true, valueList.ToArray(), null);
            var grpResponse = rService.GetReportParameters(grpRequest);

            // work out which params to refresh
            List<string> paramsToRefresh = new List<string>();
            foreach (string updatedParam in newChoices.ParameterChoiceList.Select(p => p.Name))
            {
                var paramDefn = repDefn.ParameterDefinitions.First(p => p.Name == updatedParam);
                paramsToRefresh = paramsToRefresh.Union(paramDefn.DependantParameterNames).ToList();
            }
            logger.DebugFormat("RefreshDependantParameters: rep {0} based on choices, have {1} parameters that need refreshing", repDefn.DisplayName, paramsToRefresh.Count());

            var refresher = new CrcParameterRefresher();
            foreach (string paramLoop in paramsToRefresh)
            {
                var paramDefn = repDefn.ParameterDefinitions.First(p => p.Name == paramLoop);
                var latestParamDetails = grpResponse.Parameters.FirstOrDefault(p => p.Name == paramLoop);
                if (latestParamDetails == null)
                    throw new ApplicationException(String.Format("Was expecting web service to return new details for parameter {0} but none found",
                        paramLoop));
                refresher.RefreshParameter(paramDefn, latestParamDetails);
            }
        }
コード例 #22
0
        public void ApplyParameterDefaults(rws.ReportParameter[] wsReportParameters, CrcReportDefinition repDef)
        {
            // first build up a choicecollection from the defaults
            var choiceCol = new CrcParameterChoiceCollection();
            foreach (var paramLoop in wsReportParameters)
            {
                if (paramLoop.DefaultValues != null)
                {
                    var crcChoice = new CrcParameterChoice(paramLoop.Name);
                    foreach (string valString in paramLoop.DefaultValues)
                        crcChoice.Values.Add(valString);

                    choiceCol.ParameterChoiceList.Add(crcChoice);
                }
            }
            // now apply it to the repdef
            var mapper = new CrcParameterChoiceMapper();
            var mapResult = mapper.MapParameterChoices(repDef, choiceCol);
            if (!mapResult.MappingValid)
                throw new ApplicationException(string.Format("Could not map report defaults for report {0}. Problems: {1}",
                    repDef.DisplayName, string.Join(", ", mapResult.Complaints.ToArray())));
        }
コード例 #23
0
 public List<string> GetReportParametersForUser(CrcReportDefinition reptDefn)
 {
     return GetReportParametersForUser(reptDefn, 0);
 }
コード例 #24
0
        public CrcReportDefinition MakeTestReportDefn()
        {
            var repDefn = new CrcReportDefinition();
            repDefn.ReportPath = "/Pretend/Path";
            repDefn.DisplayName = "Pretend Report";
            var dateParam = new CrcParameterDefinition();
            dateParam.Name = "PretendDateParam";
            dateParam.DisplayName = "Pretend Date Param";
            dateParam.ParameterType = CrcParameterType.Date;
            repDefn.ParameterDefinitions.Add(dateParam);
            var singleChoiceParam = new CrcParameterDefinition();
            singleChoiceParam.Name = "PretendSingleSelect";
            singleChoiceParam.DisplayName = "Pretend Single Select";
            singleChoiceParam.ParameterType = CrcParameterType.Select;
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S1", Label = "Single1" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S2", Label = "Single2" });
            singleChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "S3", Label = "Single3" });
            repDefn.ParameterDefinitions.Add(singleChoiceParam);
            var multiChoiceParam = new CrcParameterDefinition();
            multiChoiceParam.Name = "PretendMultiSelect";
            multiChoiceParam.DisplayName = "Pretend Multi Select";
            multiChoiceParam.ParameterType = CrcParameterType.MultiSelect;
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M1", Label = "Multi1" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M2", Label = "Multi2" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M3", Label = "Multi3" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M4", Label = "Multi4" });
            multiChoiceParam.ValidValues.Add(new CrcValidValue() { Value = "M5", Label = "Multi5" });
            repDefn.ParameterDefinitions.Add(multiChoiceParam);

            return repDefn;
        }
コード例 #25
0
        public void CanRefreshDependantParameters_Simple()
        {
            // make report defn
            var repDefn = new CrcReportDefinition();
            repDefn.ReportPath = "Test/Report";
            var pd1 = new CrcParameterDefinition();
            pd1.Name = "ParamOne";
            pd1.ValidValues.Add(new CrcValidValue() { Label = "Label1", Value = "Value1" });
            pd1.ValidValues.Add(new CrcValidValue() { Label = "Label2", Value = "Value2" });
            pd1.ValidValues.Add(new CrcValidValue() { Label = "Label3", Value = "Value3" });
            pd1.DependantParameterNames.Add("ParamTwo");
            var pd2 = new CrcParameterDefinition();
            pd2.Name = "ParamTwo";
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel1_1", Value = "SubValue1_1" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel1_2", Value = "SubValue1_2" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel2_1", Value = "SubValue2_1" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel2_2", Value = "SubValue2_2" });
            pd2.ValidValues.Add(new CrcValidValue() { Label = "SubLabel3_1", Value = "SubValue3_1" });
            repDefn.ParameterDefinitions.Add(pd1);
            repDefn.ParameterDefinitions.Add(pd2);

            // make choice collection
            var choiceCollection = new CrcParameterChoiceCollection();
            var paramChoice = new CrcParameterChoice("ParamOne");
            paramChoice.Values.Add("Value2");
            choiceCollection.ParameterChoiceList.Add( paramChoice);

            // make server side params to return
            ReportParameter p1 = new ReportParameter();
            p1.Name = "ParamOne";
            p1.ValidValues = new ValidValue[]{ new ValidValue(){Label = "Label1", Value = "Value1"},
                                    new ValidValue(){Label = "Label2", Value = "Value2"},
                                    new ValidValue(){Label = "Label3", Value = "Value3"}};
            p1.DefaultValues = new string[] { };
            ReportParameter p2 = new ReportParameter();
            p2.Name = "ParamTwo";
            p2.ValidValues = new ValidValue[]{ new ValidValue(){Label = "SubLabel2_1", Value = "SubValue2_1"},
                                    new ValidValue(){Label = "SubLabel2_2", Value = "SubValue2_2"}};
            p2.DefaultValues = new string[] { };
            ReportParameter[] paramArrayToReturn = new ReportParameter[] { p1, p2 };

            // make mocks for ccs
            var mf = new TestDoubles.MockSsrsWebServiceFactory();
            var soapClientFactory = mf.MakeMockSoapClientFactory(
                        mf.MakeMockReportingService2005Soap("Value2", paramArrayToReturn));

            var cacheMock = MockRepository.GenerateMock<CrcCacheManager>();
            var configMock = MockRepository.GenerateMock<CrcExtraConfiguration>();

            // make ccs
            var ccs = new CrissCrossServices(soapClientFactory, cacheMock, configMock, null);

            ccs.RefreshDependantParameters(repDefn, choiceCollection);

            Assert.AreEqual(2,repDefn.ParameterDefinitions.Count());
            var pd1check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamOne");
            Assert.IsNotNull(pd1check);
            Assert.AreEqual("Value2", pd1check.ParameterChoice.SingleValue);
            var pd2check = repDefn.ParameterDefinitions.FirstOrDefault(p => p.Name == "ParamTwo");
            Assert.IsNotNull(pd2check);
            Assert.AreEqual(2, pd2check.ValidValues.Count());
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault( vv => vv.Value == "SubValue2_1"));
            Assert.IsNotNull(pd2check.ValidValues.FirstOrDefault( vv => vv.Value == "SubValue2_2"));
        }
コード例 #26
0
        /// <summary>
        /// Gets a user-friendly list of report parameters
        /// </summary>
        /// <param name="reptDefn"></param>
        /// <param name="truncateListLimit">for multipicks, the max number of items to list (0 for all items)</param>
        /// <returns></returns>
        public List<string> GetReportParametersForUser(CrcReportDefinition reptDefn, int truncateListLimit)
        {
            var userParams = new List<string>();
            foreach (var paramDefn in reptDefn.ParameterDefinitions)
            {
                if (!paramDefn.IsEmptyEquivalent)
                {
                    string valueString = "";
                    if (paramDefn.ParameterType == CrcParameterType.Date)
                    {
                        valueString = DateTime.Parse(paramDefn.ParameterChoice.SingleValue).ToString("dd/MMM/yyyy");
                    }
                    else if (paramDefn.ParameterType == CrcParameterType.Boolean)
                    {
                        valueString = paramDefn.ParameterChoice.SingleValue;
                    }
                    else if (paramDefn.ParameterType == CrcParameterType.Text)
                    {
                        valueString = paramDefn.ParameterChoice.SingleValue;
                    }
                    else
                    {
                        valueString = SelectListAsString(paramDefn, truncateListLimit);
                    }
                    userParams.Add(String.Format("{0}: {1}", paramDefn.DisplayName, valueString));

                }
            }
            return userParams;
        }
コード例 #27
0
        /// <summary>
        /// Reads the dependent param info from the ssrs web service params and
        /// converts into dependAnt params (i.e. opposite way round)
        /// </summary>
        public void AddSsrsDependentParams(CrissCrossLib.ReportWebService.ReportParameter[] wsReportParameters, CrcReportDefinition repDef)
        {
            foreach (var paramLoop in wsReportParameters)
            {
                if (paramLoop.Dependencies != null)
                {
                    logger.DebugFormat("AddSsrsDependantParams: Param {0} has dependencies {1} according to web service", paramLoop.Name, string.Join(", ", paramLoop.Dependencies));
                    foreach (string dependentParam in paramLoop.Dependencies)
                    {
                        var match = repDef.ParameterDefinitions.FirstOrDefault(p => p.Name == dependentParam);
                        if (match == null)
                            throw new ApplicationException(String.Format("Ssrs says {0} has Dependent {1} but could not find CrcParameterDefintiion {1} during make stage",
                                paramLoop.Name, dependentParam));

                        match.DependantParameterNames.Add(paramLoop.Name);
                    }
                }
            }
        }