コード例 #1
0
ファイル: ModuleImporter.cs プロジェクト: vcubefame/CSET
        /// <summary>
        /// Imports a Module/Standard.
        /// </summary>
        /// <param name="externalStandard"></param>
        public static void ProcessStandard(IExternalStandard externalStandard)
        {
            log.Info("ModuleImporter.ProcessStandard - basic");


            LogManager.Instance.LogDebugMessage("ModuleImporter.ProcessStandard");

            SETS_CATEGORY category;
            int?          categoryOrder = 0;
            var           setname       = Regex.Replace(externalStandard.ShortName, @"\W", "_");

            var documentImporter = new DocumentImporter();
            var set = new SETS();

            var db = new CSET_Context();

            var existingSet = db.SETS.FirstOrDefault(s => s.Set_Name == setname);

            if (existingSet != null)
            {
                // result.LogError("Module already exists.  If this is a new version, please change the ShortName field to reflect this.");
            }
            category = db.SETS_CATEGORY.FirstOrDefault(s => s.Set_Category_Name.Trim().ToLower() == externalStandard.Category.Trim().ToLower());

            if (category == null)
            {
                // result.LogError("Module Category is invalid.  Please check the spelling and try again.");
            }
            else
            {
                categoryOrder = category.SETS.Max(s => s.Order_In_Category);
            }

            set.Set_Category_Id       = category?.Set_Category_Id;
            set.Order_In_Category     = categoryOrder;
            set.Short_Name            = externalStandard.ShortName;
            set.Set_Name              = setname;
            set.Full_Name             = externalStandard.Name;
            set.Is_Custom             = true;
            set.Is_Question           = true;
            set.Is_Requirement        = true;
            set.Is_Displayed          = true;
            set.IsEncryptedModuleOpen = true;
            set.IsEncryptedModule     = false;
            set.Is_Deprecated         = false;

            set.Standard_ToolTip = externalStandard.Summary;

            db.SETS.Add(set);
            db.SaveChanges();


            ProcessRequirements(externalStandard, set);
        }
コード例 #2
0
        public static async Task <ConverterResult <SETS> > ToSet(this IExternalStandard externalStandard, ILogger logger)
        {
            var questionDictionary = new Dictionary <string, NEW_QUESTION>();
            var requirementList    = new List <string>();

            var           categoryDictionary = new Dictionary <string, STANDARD_CATEGORY>();
            var           result             = new ConverterResult <SETS>(logger);
            SETS_CATEGORY category;
            int?          categoryOrder = 0;
            var           setname       = Regex.Replace(externalStandard.ShortName, @"\W", "_");

            try
            {
                var documentImporter = new DocumentImporter();
                var set = result.Result;
                using (var db = new CSET_Context())
                {
                    var existingSet = db.SETS.FirstOrDefault(s => s.Set_Name == setname);
                    if (existingSet != null)
                    {
                        result.LogError("Module already exists.  If this is a new version, please change the ShortName field to reflect this.");
                    }
                    category = db.SETS_CATEGORY.FirstOrDefault(s => s.Set_Category_Name.Trim().ToLower() == externalStandard.Category.Trim().ToLower());

                    if (category == null)
                    {
                        result.LogError("Module Category is invalid.  Please check the spelling and try again.");
                    }
                    else
                    {
                        categoryOrder = category.SETS.Max(s => s.Order_In_Category);
                    }
                }
                set.Set_Category_Id       = category?.Set_Category_Id;
                set.Order_In_Category     = categoryOrder;
                set.Short_Name            = externalStandard.ShortName;
                set.Set_Name              = setname;
                set.Full_Name             = externalStandard.Name;
                set.Is_Custom             = true;
                set.Is_Question           = true;
                set.Is_Requirement        = true;
                set.Is_Displayed          = true;
                set.IsEncryptedModuleOpen = true;
                set.IsEncryptedModule     = false;
                set.Is_Deprecated         = false;

                set.Standard_ToolTip = externalStandard.Summary;
                set.NEW_REQUIREMENT  = new List <NEW_REQUIREMENT>();
                var requirements = set.NEW_REQUIREMENT;
                int counter      = 0;
                foreach (var requirement in externalStandard.Requirements)
                {
                    //skip duplicates
                    if (!requirementList.Any(s => s == requirement.Identifier.Trim().ToLower() + "|||" + requirement.Text.Trim().ToLower()))
                    {
                        counter++;
                        var requirementResult = await requirement.ToRequirement(set.Set_Name, new ConsoleLogger());

                        if (requirementResult.IsSuccess)
                        {
                            requirementResult.Result.REQUIREMENT_SETS.FirstOrDefault().Requirement_Sequence = counter;
                            if (requirementResult.Result.Standard_CategoryNavigation != null)
                            {
                                STANDARD_CATEGORY tempCategory;
                                if (categoryDictionary.TryGetValue(requirementResult.Result.Standard_CategoryNavigation.Standard_Category1, out tempCategory))
                                {
                                    requirementResult.Result.Standard_CategoryNavigation = tempCategory;
                                }
                                else
                                {
                                    categoryDictionary.Add(requirementResult.Result.Standard_CategoryNavigation.Standard_Category1, requirementResult.Result.Standard_CategoryNavigation);
                                }
                            }
                            foreach (var question in requirementResult.Result.NEW_QUESTIONs().ToList())
                            {
                                NEW_QUESTION existingQuestion;
                                if (questionDictionary.TryGetValue(question.Simple_Question, out existingQuestion))
                                {
                                    requirementResult.Result.REQUIREMENT_QUESTIONS.Remove(new REQUIREMENT_QUESTIONS()
                                    {
                                        Question_Id = question.Question_Id, Requirement_Id = requirementResult.Result.Requirement_Id
                                    });
                                }
                                else
                                {
                                    questionDictionary.Add(question.Simple_Question, question);
                                }
                            }
                            requirementList.Add(requirementResult.Result.Requirement_Title.Trim().ToLower() + "|||" + requirementResult.Result.Requirement_Text.Trim().ToLower());
                            requirements.Add(requirementResult.Result);
                        }
                        else
                        {
                            requirementResult.ErrorMessages.ToList().ForEach(s => result.LogError(s));
                        }
                    }
                }
                var questions = requirements.SelectMany(s => s.NEW_QUESTIONs()).ToList();
                for (var i = 1; i <= questions.Count(); i++)
                {
                    var question = questions[i - 1];
                    question.Std_Ref_Number = i;
                    question.Std_Ref_Id     = question.Std_Ref + question.Std_Ref_Number;
                }
            }
            catch
            {
                result.LogError("Module could not be added.");
            }
            return(result);
        }
コード例 #3
0
 public static async Task <ConverterResult <SETS> > ToSet(this IExternalStandard externalStandard)
 {
     return(await externalStandard.ToSet(new ConsoleLogger()));
 }
コード例 #4
0
ファイル: ModuleImporter.cs プロジェクト: itcms/cset
        /// <summary>
        /// Save all Requirements in the specified module.
        /// </summary>
        /// <param name="set"></param>
        /// <param name="db"></param>
        private static void ProcessRequirements(IExternalStandard externalStandard, SETS set)
        {
            var jsonStandard = JsonConvert.SerializeObject(externalStandard, Formatting.Indented);

            var questionDictionary = new Dictionary <string, NEW_QUESTION>();
            var categoryDictionary = new Dictionary <string, STANDARD_CATEGORY>();
            var requirementList    = new List <string>();

            set.NEW_REQUIREMENT = new List <NEW_REQUIREMENT>();
            var requirements = set.NEW_REQUIREMENT;
            int reqSequence  = 0;

            foreach (var requirement in externalStandard.Requirements)
            {
                //skip duplicates
                if (!requirementList.Any(s => s == requirement.Identifier.Trim().ToLower() + "|||" + requirement.Text.Trim().ToLower()))
                {
                    reqSequence++;
                    var requirementResult = SaveRequirement(requirement, set.Set_Name, reqSequence, new ConsoleLogger());


                    if (requirementResult != null)
                    {
                        if (requirementResult.Standard_CategoryNavigation != null)
                        {
                            STANDARD_CATEGORY tempCategory;
                            if (categoryDictionary.TryGetValue(requirementResult.Standard_CategoryNavigation.Standard_Category1, out tempCategory))
                            {
                                requirementResult.Standard_CategoryNavigation = tempCategory;
                            }
                            else
                            {
                                categoryDictionary.Add(requirementResult.Standard_CategoryNavigation.Standard_Category1, requirementResult.Standard_CategoryNavigation);
                            }
                        }

                        foreach (var question in requirementResult.NEW_QUESTIONs().ToList())
                        {
                            NEW_QUESTION existingQuestion;
                            if (questionDictionary.TryGetValue(question.Simple_Question, out existingQuestion))
                            {
                                requirementResult.REQUIREMENT_QUESTIONS.Remove(new REQUIREMENT_QUESTIONS()
                                {
                                    Question_Id = question.Question_Id, Requirement_Id = requirementResult.Requirement_Id
                                });
                            }
                            else
                            {
                                questionDictionary.Add(question.Simple_Question, question);
                            }
                        }
                        requirementList.Add(requirementResult.Requirement_Title.Trim().ToLower() + "|||" + requirementResult.Requirement_Text.Trim().ToLower());
                        requirements.Add(requirementResult);
                    }
                    else
                    {
                        // requirementResult.ErrorMessages.ToList().ForEach(s => result.LogError(s));
                    }
                }
            }
        }