/// <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); }
/// <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] }); } } } }
/// <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); }
public CSETtoExcelDataMappings(int assessment_id, CSET_Context assessmentEntity) { this.assessmentEntity = assessmentEntity; this.assessment_id = assessment_id; }