Пример #1
0
        /// <summary>
        /// Emulates credential authentication without requiring credentials.
        /// The Windows file system is consulted to see if a certain file was placed there
        /// during the stand-alone install process.
        /// </summary>
        /// <param name="login"></param>
        /// <returns></returns>
        public static LoginResponse AuthenticateStandalone(Login login)
        {
            int    userIdSO       = 100;
            string primaryEmailSO = "";

            // Read the file system for the LOCAL-INSTALLATION file put there at install time
            if (!IsLocalInstallation(login.Scope))
            {
                return(null);
            }


            String name = WindowsIdentity.GetCurrent().Name;

            name           = string.IsNullOrWhiteSpace(name) ? "Local" : name;
            primaryEmailSO = name + "@myorg.org";
            using (var db = new CSET_Context())
            {
                var user = db.USERS.Where(x => x.PrimaryEmail == primaryEmailSO).FirstOrDefault();
                if (user == null)
                {
                    UserManager um = new UserManager();
                    UserDetail  ud = new UserDetail()
                    {
                        Email     = primaryEmailSO,
                        FirstName = name,
                        LastName  = ""
                    };
                    UserCreateResponse userCreateResponse = um.CreateUser(ud);

                    db.SaveChanges();
                    //update the userid 1 to the new user
                    var tempu = db.USERS.Where(x => x.PrimaryEmail == primaryEmailSO).FirstOrDefault();
                    if (tempu != null)
                    {
                        userIdSO = tempu.UserId;
                    }
                    determineIfUpgradedNeededAndDoSo(userIdSO);
                }
                else
                {
                    userIdSO = user.UserId;
                }
            }

            if (string.IsNullOrEmpty(primaryEmailSO))
            {
                return(null);
            }


            // Generate a token for this user
            string token = TransactionSecurity.GenerateToken(userIdSO, login.TzOffset, -1, null, null, login.Scope);

            // Build response object
            LoginResponse resp = new LoginResponse
            {
                Token           = token,
                Email           = primaryEmailSO,
                UserFirstName   = name,
                UserLastName    = "",
                IsSuperUser     = false,
                ResetRequired   = false,
                ExportExtension = IOHelper.GetFileExtension(login.Scope)
            };


            return(resp);
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        public void IncludeStandards(ref AssessmentListResponse response)
        {
            // For each standard, list any assessments that use it.
            Dictionary <string, List <int> > selectedStandards = new Dictionary <string, List <int> >();
            DataTable dt = new DataTable();

            dt.Columns.Add("AssessmentName");
            dt.Columns.Add("AssessmentId", typeof(int));
            dt.Columns.Add("Alias");
            int startColumn = dt.Columns.Count;

            using (var db = new CSET_Context())
            {
                foreach (var a in response.Assessments)
                {
                    var info = db.INFORMATION.Where(x => x.Id == a.AssessmentId).FirstOrDefault();

                    DataRow rowAssess = dt.NewRow();
                    rowAssess["AssessmentId"]   = info.Id;
                    rowAssess["AssessmentName"] = info.Assessment_Name;
                    rowAssess["Alias"]          = a.Alias;
                    dt.Rows.Add(rowAssess);

                    List <AVAILABLE_STANDARDS> standards = db.AVAILABLE_STANDARDS
                                                           .Include(x => x.Set_NameNavigation)
                                                           .Where(x => x.Assessment_Id == a.AssessmentId && x.Selected).ToList();
                    foreach (var s in standards)
                    {
                        if (!dt.Columns.Contains(s.Set_NameNavigation.Short_Name))
                        {
                            dt.Columns.Add(s.Set_NameNavigation.Short_Name, typeof(bool));
                        }
                        rowAssess[s.Set_NameNavigation.Short_Name] = true;
                    }
                }

                // Build an alphabetical list of standards involved
                List <string> setNames = new List <string>();
                for (int i = startColumn; i < dt.Columns.Count; i++)
                {
                    setNames.Add(dt.Columns[i].ColumnName);
                }
                setNames.Sort();


                foreach (DataRow rowAssessment in dt.Rows)
                {
                    var assessment = response.Assessments.Where(x => x.AssessmentId == (int)rowAssessment["AssessmentId"]).FirstOrDefault();
                    if (assessment == null)
                    {
                        continue;
                    }

                    foreach (string setName in setNames)
                    {
                        var set = new SelectedStandards();
                        assessment.SelectedStandards.Add(new SelectedStandards()
                        {
                            StandardName = setName,
                            Selected     = rowAssessment[setName] == DBNull.Value ? false : (bool)rowAssessment[setName]
                        });
                    }
                }
            }
        }
Пример #3
0
        /// <summary>
        ///
        /// </summary>
        public MergeStructure GetAnswers(List <int> mergeCandidates)
        {
            if (mergeCandidates.Count == 0)
            {
                return(null);
            }


            MergeStructure mergeResponse = new MergeStructure
            {
                MergeID = Guid.NewGuid()
            };

            Dictionary <int, MergeQuestion> QuestionDictionary = new Dictionary <int, MergeQuestion>();

            using (var db = new CSET_Context())
            {
                // this is probably unnecessary because we just barely created the new merge ID
                var previousCombinedAnswers = db.COMBINED_ANSWER.Where(x => x.Merge_ID == mergeResponse.MergeID).ToList();
                db.COMBINED_ANSWER.RemoveRange(previousCombinedAnswers);
                db.SaveChanges();


                for (int i = 0; i < mergeCandidates.Count; i++)
                {
                    int assessmentID = mergeCandidates[i];

                    var myAnswers = RelevantAnswers.GetAnswersForAssessment(assessmentID);
                    foreach (var a in myAnswers)
                    {
                        MergeQuestion mq = null;

                        if (QuestionDictionary.ContainsKey(a.Question_Or_Requirement_ID))
                        {
                            mq = QuestionDictionary[a.Question_Or_Requirement_ID];
                        }
                        else
                        {
                            var query1 = from nq in db.NEW_QUESTION
                                         join usch in db.UNIVERSAL_SUB_CATEGORY_HEADINGS on nq.Heading_Pair_Id equals usch.Heading_Pair_Id
                                         join qgh in db.QUESTION_GROUP_HEADING on usch.Question_Group_Heading_Id equals qgh.Question_Group_Heading_Id
                                         where nq.Question_Id == a.Question_Or_Requirement_ID
                                         select new { nq, qgh };

                            var q = query1.FirstOrDefault();
                            if (q == null)
                            {
                                continue;
                            }

                            mq              = new MergeQuestion(mergeCandidates.Count);
                            mq.CategoryID   = (int)q.qgh.Question_Group_Heading_Id;
                            mq.CategoryText = q.qgh.Question_Group_Heading1;
                            mq.QuestionID   = q.nq.Question_Id;
                            mq.QuestionText = q.nq.Simple_Question;
                        }


                        mq.Is_Component = a.Is_Component;

                        var sourceAnswer = mq.SourceAnswers[i];
                        sourceAnswer.SourceAnswerID         = a.Answer_ID;
                        sourceAnswer.AnswerText             = a.Answer_Text == "U" ? "" : a.Answer_Text;
                        sourceAnswer.AlternateJustification = a.Alternate_Justification;
                        sourceAnswer.Comment = a.Comment;

                        QuestionDictionary[a.Question_Or_Requirement_ID] = mq;



                        // at this point we should probably build the COMBINED_ANSWER record, but only
                        // if one has not been built for this answer.
                        var ca = db.COMBINED_ANSWER.Where(x => x.Merge_ID == mergeResponse.MergeID && x.Question_Or_Requirement_Id == a.Question_Or_Requirement_ID).FirstOrDefault();
                        if (ca == null && a.Answer_Text != "U" && a.Answer_Text != "")
                        {
                            ca = new COMBINED_ANSWER()
                            {
                                Merge_ID                   = mergeResponse.MergeID,
                                Mark_For_Review            = a.Mark_For_Review,
                                Comment                    = a.Comment,
                                Alternate_Justification    = a.Alternate_Justification,
                                Question_Or_Requirement_Id = a.Question_Or_Requirement_ID,
                                Custom_Question_Guid       = a.Custom_Question_Guid,
                                Answer_Text                = a.Answer_Text,
                                Component_Guid             = a.Component_Guid,
                                Is_Component               = a.Is_Component
                                                             // Is_Resolved
                                                             // Type_Question
                            };

                            db.COMBINED_ANSWER.Add(ca);
                            db.SaveChanges();

                            mq.CombinedAnswerID = ca.AnswerID;
                        }
                    }
                }


                // sort the questions into their appropriate lists/categories
                foreach (MergeQuestion q in QuestionDictionary.Values)
                {
                    SetDefaultAnswer(q);

                    if (!q.Is_Component)
                    {
                        AddQuestionToStructure(mergeResponse, mergeResponse.QuestionsCategories, q);
                    }
                    else
                    {
                        if (q.SourceAnswers.Exists(x => x.ComponentGuid != Guid.Empty.ToString()))
                        {
                            AddQuestionToStructure(mergeResponse, mergeResponse.ComponentOverrideCategories, q);
                        }
                        else
                        {
                            AddQuestionToStructure(mergeResponse, mergeResponse.ComponentDefaultCategories, q);
                        }
                    }
                }

                mergeResponse.QuestionsCategories         = mergeResponse.QuestionsCategories.OrderBy(x => x.Category).ToList();
                mergeResponse.ComponentDefaultCategories  = mergeResponse.ComponentDefaultCategories.OrderBy(x => x.Category).ToList();
                mergeResponse.ComponentOverrideCategories = mergeResponse.ComponentOverrideCategories.OrderBy(x => x.Category).ToList();
            }

            // remove any empty categories
            mergeResponse.QuestionsCategories.RemoveAll(x => x.Questions.Count() == 0);
            mergeResponse.ComponentDefaultCategories.RemoveAll(x => x.Questions.Count() == 0);
            mergeResponse.ComponentOverrideCategories.RemoveAll(x => x.Questions.Count() == 0);

            return(mergeResponse);
        }
Пример #4
0
 public CSETtoExcelDataMappings(int assessment_id, CSET_Context assessmentEntity)
 {
     this.assessmentEntity = assessmentEntity;
     this.assessment_id    = assessment_id;
 }