// To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://aka.ms/RazorPagesCRUD. public async Task <IActionResult> OnPostAsync(string[] selectedGroups) { var newQuestionnaire = new Questionnaire(); if (selectedGroups != null) { newQuestionnaire.Targets = new List <QuestionnaireGroup>(); foreach (var group in selectedGroups) { var groupToAdd = new QuestionnaireGroup { GroupID = int.Parse(group) }; newQuestionnaire.Targets.Add(groupToAdd); } } if (await TryUpdateModelAsync <Questionnaire>( newQuestionnaire, "Questionnaire", q => q.Title, q => q.Description, q => q.DueDate, q => q.Questions, q => q.Targets)) { _context.Questionnaires.Add(newQuestionnaire); await _context.SaveChangesAsync(); return(RedirectToPage("./Index")); } PopulateAssignedQuestionnaireGroupData(_context, newQuestionnaire); return(Page()); }
public static bool ContainsQuestions(this QuestionnaireGroup group) { foreach (QuestionnaireQuestion question in group.Questions) { if (question.ContainsIssues() || question.IsNote) { return(true); } } return(false); }
/// <summary> /// Method creating an example Questionnaire datastructure for test purpose4s. /// </summary> /// <returns> example Questionnaire datastructure </returns> internal QuestionnaireData createExampleQuestionnaireData() { QuestionItem q1 = new QuestionItem(1, "How do you feel?"); q1.group = "A"; QuestionItem q2 = new QuestionItem(2, "Do you like games?"); q2.group = "A"; QuestionItem q3 = new QuestionItem(3, "Do you like fast cars?"); q3.group = "A"; QuestionItem q4 = new QuestionItem(4, "Do you enjoy silence?"); q4.group = "A"; QuestionItem q5 = new QuestionItem(5, "Do you like swimming?"); q5.group = "A"; QuestionItem[] qia = { q1, q2, q3, q4, q5 }; List <QuestionItem> qil = new List <QuestionItem>(qia); ChoiceItem c1 = new ChoiceItem(0, "Very good/much."); ChoiceItem c2 = new ChoiceItem(1, "I do not know."); ChoiceItem c3 = new ChoiceItem(2, "Very bad/Not very much."); ChoiceItem[] cia = { c1, c2, c3 }; List <ChoiceItem> cil = new List <ChoiceItem>(cia); QuestionnaireData qd = new QuestionnaireData(qil, cil); qd.title = "Fancy questionnaire:"; qd.instructions = "Please fill in the following form."; qd.groupList = new QuestionnaireGroupList(); QuestionnaireGroup qg1 = new QuestionnaireGroup("A", "SUM/5"); QuestionnaireGroup[] qga = { qg1 }; qd.groupList.groups = new List <QuestionnaireGroup>(qga); return(qd); }
public void UpdateQuestionnaireTargets(ApplicationDbContext context, string[] selectedGroups, Questionnaire questionnaireToUpdate) { if (selectedGroups == null) { questionnaireToUpdate.Targets = new List <QuestionnaireGroup>(); return; } var selectedGroupsHS = new HashSet <string>(selectedGroups); var questionnaireTargets = new HashSet <int> (questionnaireToUpdate.Targets.Select(q => q.GroupID)); foreach (var group in context.Groups) { if (selectedGroupsHS.Contains(group.ID.ToString())) { if (!questionnaireTargets.Contains(group.ID)) { questionnaireToUpdate.Targets.Add( new QuestionnaireGroup { QuestionnaireID = questionnaireToUpdate.ID, GroupID = group.ID }); } } else { if (questionnaireTargets.Contains(group.ID)) { QuestionnaireGroup groupToRemove = questionnaireToUpdate .Targets .SingleOrDefault(g => g.GroupID == group.ID); context.Remove(groupToRemove); } } } }
public static void Initialize(ApplicationDbContext context, UserManager <User> userManager) { UserManager <User> _userManager = userManager; // Look for any users. if (!context.Users.Any()) { // password for all dummy users string password = "******"; var users = new User[] { new User { FirstName = "Marcin", LastName = "Kowalski", Email = "*****@*****.**", PhoneNumber = "000000000", EmailConfirmed = true, Gender = Genders.Male }, new User { FirstName = "Piotr", LastName = "Dydo", Email = "*****@*****.**", PhoneNumber = "111111111", EmailConfirmed = true, Gender = Genders.Male }, new User { FirstName = "Marcin", LastName = "Hajdo", Email = "*****@*****.**", PhoneNumber = "222222222", EmailConfirmed = true, Gender = Genders.Male }, new User { FirstName = "Konrad", LastName = "Dydo", Email = "*****@*****.**", PhoneNumber = "333333333", EmailConfirmed = true, Gender = Genders.Male }, new User { FirstName = "Daniel", LastName = "Piskorski", Email = "*****@*****.**", PhoneNumber = "444444444", EmailConfirmed = true, Gender = Genders.Male }, new User { FirstName = "Miyuki", LastName = "Sawashiro", Email = "*****@*****.**", PhoneNumber = "555555555", EmailConfirmed = true, Gender = Genders.Female }, new User { FirstName = "Konomi", LastName = "Suzuki", Email = "*****@*****.**", PhoneNumber = "666666666", EmailConfirmed = true, Gender = Genders.Female }, new User { FirstName = "Hisako", LastName = "Kanemoto", Email = "*****@*****.**", PhoneNumber = "77777777", EmailConfirmed = true, Gender = Genders.Female }, new User { FirstName = "Yukari", LastName = "Tamura", Email = "*****@*****.**", PhoneNumber = "888888888", EmailConfirmed = true, Gender = Genders.Female }, new User { FirstName = "Eri", LastName = "Kitamura", Email = "*****@*****.**", PhoneNumber = "999999999", EmailConfirmed = true, Gender = Genders.Female }, new User { FirstName = "Test1", LastName = "Test1", Email = "*****@*****.**", PhoneNumber = "123123123", EmailConfirmed = true, Gender = Genders.Other }, new User { FirstName = "Test2", LastName = "Test2", Email = "*****@*****.**", PhoneNumber = "456456456", EmailConfirmed = true, Gender = Genders.Other } }; // set the email as username for every dummy user foreach (User u in users) { u.UserName = u.Email; } // create users using password variable and users array foreach (User u in users) { _userManager.CreateAsync(u, password).Wait(); } // save created users to the database context.SaveChanges(); } // Look for any groups. if (!context.Groups.Any()) { // get all existing users form db context var allExistingUsers = context.Users; // create gender-based groups var groups = new Group[] { new Group { Name = "Females" }, new Group { Name = "Males" }, new Group { Name = "Others" } }; // query db for the users of each gender and then add them to the correct groups foreach (var group in groups) { group.UserGroups = new List <UserGroup>(); } IQueryable <string> femaleQuery = from u in allExistingUsers where u.Gender.Equals(Genders.Female) select u.Id; List <string> femaleIDs = femaleQuery.ToList(); foreach (string id in femaleIDs) { var userToAdd = new UserGroup { UserID = id }; groups[0].UserGroups.Add(userToAdd); } IQueryable <string> maleQuery = from u in allExistingUsers where u.Gender.Equals(Genders.Male) select u.Id; List <string> maleIDs = maleQuery.ToList(); foreach (string id in maleIDs) { var userToAdd = new UserGroup { UserID = id }; groups[1].UserGroups.Add(userToAdd); } IQueryable <string> otherQuery = from u in allExistingUsers where u.Gender.Equals(Genders.Other) select u.Id; List <string> otherIDs = otherQuery.ToList(); foreach (string id in otherIDs) { var userToAdd = new UserGroup { UserID = id }; groups[2].UserGroups.Add(userToAdd); } // add groups to the db context foreach (var group in groups) { context.Groups.Add(group); } // update db context.SaveChanges(); } // look for any questionnaires if (!context.Questionnaires.Any()) { // get all existing groups form db context var allExistingGroups = context.Groups; // create gender based questionnaires var questionnaires = new List <Questionnaire> { new Questionnaire { Title = "For Men", Description = "Questionnaire targeted towards our male users.", DueDate = DateTime.Now.Date.AddDays(10) }, new Questionnaire { Title = "For Women", Description = "Integrating women into previously closed military occupations.", DueDate = DateTime.Now.Date.AddDays(10) }, new Questionnaire { Title = "For Others", Description = "Questionnaire targeted towards our other users.", DueDate = DateTime.Now.Date.AddDays(10) }, new Questionnaire { Title = "General Survey", Description = "Questionnaire targeted towards all users.", DueDate = DateTime.Now.Date.AddDays(10) } }; foreach (var questionnaire in questionnaires) { questionnaire.Targets = new List <QuestionnaireGroup>(); questionnaire.Questions = new List <Question>(); } #region maleQuestionnaire var maleQuestions = new Question[] { // q1 new Question { Content = "Do you shave?", QuestionType = QuestionTypes.SingleChoice, Number = 1, Answers = new List <Answer>() { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 } } }, // q2 new Question { Content = "Select brands of shaving foam that you use(leave blank if you don't use foam):", QuestionType = QuestionTypes.MultipleChoice, Number = 2, Answers = new List <Answer>() { new Answer { Content = "NIVEA", Number = 1 }, new Answer { Content = "Gillette", Number = 2 }, new Answer { Content = "L'Oréal Paris", Number = 3 }, new Answer { Content = "Other", Number = 4 } } }, // q3 new Question { Content = "Do you use aftershave?", QuestionType = QuestionTypes.SingleChoice, Number = 3, Answers = new List <Answer>() { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 } } }, // q4 new Question { Content = "Select brands of aftershave that you use(leave blank if you don't use aftershave):", QuestionType = QuestionTypes.MultipleChoice, Number = 4, Answers = new List <Answer>() { new Answer { Content = "NIVEA", Number = 1 }, new Answer { Content = "adidas", Number = 2 }, new Answer { Content = "BOSS", Number = 3 }, new Answer { Content = "DAVIDOFF", Number = 4 }, new Answer { Content = "JOOP!", Number = 5 }, new Answer { Content = "DENIM", Number = 6 }, new Answer { Content = "Other", Number = 7 } } }, // q5 new Question { Content = "Do you drink alcohol?", QuestionType = QuestionTypes.SingleChoice, Number = 5, Answers = new List <Answer>() { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 } } }, // q6 new Question { Content = "Select types of alcohol that you drink(leave blank if you don't drink alcohol):", QuestionType = QuestionTypes.MultipleChoice, Number = 6, Answers = new List <Answer>() { new Answer { Content = "Beer", Number = 1 }, new Answer { Content = "Wine", Number = 2 }, new Answer { Content = "Sake", Number = 3 }, new Answer { Content = "Mead", Number = 4 }, new Answer { Content = "Liquor", Number = 5 }, new Answer { Content = "Spirit", Number = 6 }, new Answer { Content = "Other", Number = 7 } } }, }; // get male group id int malesGroupID = allExistingGroups.Where(g => g.Name == "Males").Select(g => g.ID).FirstOrDefault(); var groupToAdd = new QuestionnaireGroup { GroupID = malesGroupID }; // add group to the questionnaire targets questionnaires[0].Targets.Add(groupToAdd); // add generated questions to the questionnaire foreach (var q in maleQuestions) { questionnaires[0].Questions.Add(q); } #endregion #region femaleQuestionnaire var femaleQuestions = new List <Question> { // q1 new Question { Content = "How did you end up in this occupation/career field?", QuestionType = QuestionTypes.SingleChoice, Number = 1, Answers = new List <Answer>() { new Answer { Content = "I was recruited for it", Number = 1 }, new Answer { Content = "I volunteered for it, and it was my first choice", Number = 2 }, new Answer { Content = "I volunteered for it, but it wasn’t my first choice", Number = 3 }, new Answer { Content = "I was assigned to it/it was the only job open to me", Number = 4 } } }, // q2 new Question { Content = "Were you interested in serving in this occupation/career field?", QuestionType = QuestionTypes.SingleChoice, Number = 2, Answers = new List <Answer>() { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 }, new Answer { Content = "I didn't care", Number = 3 } } }, // q3 new Question { Content = "If yes, why?", QuestionType = QuestionTypes.MultipleChoice, Number = 3, Answers = new List <Answer>() { new Answer { Content = "Pay/enlistment bonus", Number = 1 }, new Answer { Content = "Learn these job skills", Number = 2 }, new Answer { Content = "Thought it would be a promising career track", Number = 3 }, new Answer { Content = "Wanted to continue a family tradition in this field", Number = 4 }, new Answer { Content = "Thought this job would be more challenging than others", Number = 5 } } }, // q4 new Question { Content = "What are your future plans?", QuestionType = QuestionTypes.SingleChoice, Number = 4, Answers = new List <Answer>() { new Answer { Content = "I would like to stay in the service in this occupation/career field", Number = 1 }, new Answer { Content = "I would like to stay in the service but transfer into a different occupation/career field", Number = 2 }, new Answer { Content = "I would like to leave the service", Number = 3 } } }, // q5 new Question { Content = "Has serving in this unit made you more or less interested in staying inthe military?", QuestionType = QuestionTypes.SingleChoice, Number = 5, Answers = new List <Answer>() { new Answer { Content = "It has made me more interested in staying in", Number = 1 }, new Answer { Content = "It has made little difference", Number = 2 }, new Answer { Content = "It has made me less interested in staying in", Number = 3 } } }, // q6 new Question { Content = "How do you rank your overall work performance compared to the others that youwork with?", QuestionType = QuestionTypes.SingleChoice, Number = 6, Answers = new List <Answer>() { new Answer { Content = "Top 15%", Number = 1 }, new Answer { Content = "Above average", Number = 2 }, new Answer { Content = "Average", Number = 3 }, new Answer { Content = "Below average", Number = 4 }, new Answer { Content = "Bottom 15%", Number = 5 } } } }; // get male group id int femalesGroupID = allExistingGroups.Where(g => g.Name == "Females").Select(g => g.ID).FirstOrDefault(); groupToAdd = new QuestionnaireGroup { GroupID = femalesGroupID }; // add group to the questionnaire targets questionnaires[1].Targets.Add(groupToAdd); // add generated questions to the questionnaire foreach (var q in femaleQuestions) { questionnaires[1].Questions.Add(q); } #endregion #region othersQuestionnaire var othersQuestions = new List <Question> { // q1 new Question { Content = "Czy posiadasz telefon komórkowy?", QuestionType = QuestionTypes.SingleChoice, Number = 1, Answers = new List <Answer> { new Answer { Content = "Tak", Number = 1 }, new Answer { Content = "Nie", Number = 2 } } }, // q2 new Question { Content = "Jakiej marki jest Twój telefon?", QuestionType = QuestionTypes.SingleChoice, Number = 2, Answers = new List <Answer> { new Answer { Content = "Apple", Number = 1 }, new Answer { Content = "HTC", Number = 2 }, new Answer { Content = "Samsung", Number = 3 }, new Answer { Content = "Sony", Number = 4 }, new Answer { Content = "LG", Number = 5 }, new Answer { Content = "Xiaomi", Number = 6 }, new Answer { Content = "Huawei", Number = 7 }, new Answer { Content = "Inna", Number = 8 } } }, // q3 new Question { Content = "Do jakich czynności najczęściej wykorzystujesz swój telefon?", QuestionType = QuestionTypes.MultipleChoice, Number = 3, Answers = new List <Answer> { new Answer { Content = "Dzwonienie", Number = 1 }, new Answer { Content = "SMSy", Number = 2 }, new Answer { Content = "E-mail", Number = 3 }, new Answer { Content = "Przeglądanie stron www", Number = 4 }, new Answer { Content = "Robienie zdjęć i kręcenie filmów", Number = 5 }, new Answer { Content = "Granie", Number = 6 }, new Answer { Content = "Słuchanie muzyki/radia", Number = 7 } } }, // q4 new Question { Content = "Które z poniższych czynników są dla Ciebie ważne przy podejmowaniu decyzji o zakupie telefonu?", QuestionType = QuestionTypes.MultipleChoice, Number = 4, Answers = new List <Answer> { new Answer { Content = "Wygląd", Number = 1 }, new Answer { Content = "Cena", Number = 2 }, new Answer { Content = "Funkcjonalności", Number = 3 }, new Answer { Content = "Marka", Number = 4 }, new Answer { Content = "Jakość wykonania", Number = 5 }, } }, // q5 new Question { Content = "Wielkość miejsca zamieszkania", QuestionType = QuestionTypes.SingleChoice, Number = 5, Answers = new List <Answer> { new Answer { Content = "wieś", Number = 1 }, new Answer { Content = "miasto do 20 tys. mieszkańców", Number = 2 }, new Answer { Content = "miasto od 20 tys. do 100 tys. mieszkańców", Number = 3 }, new Answer { Content = "miasto od 100 tys. do 500 tys. mieszkańców", Number = 4 }, new Answer { Content = "miasto pow. 500 tys. mieszkańców", Number = 5 } } }, // q6 new Question { Content = "Czy jesteś osobą pełnoletnią?", QuestionType = QuestionTypes.SingleChoice, Number = 6, Answers = new List <Answer> { new Answer { Content = "Tak", Number = 1 }, new Answer { Content = "Nie", Number = 2 } } } }; // get male group id int otherssGroupID = allExistingGroups.Where(g => g.Name == "Others").Select(g => g.ID).FirstOrDefault(); groupToAdd = new QuestionnaireGroup { GroupID = otherssGroupID }; // add group to the questionnaire targets questionnaires[2].Targets.Add(groupToAdd); // add generated questions to the questionnaire foreach (var q in othersQuestions) { questionnaires[2].Questions.Add(q); } #endregion #region generalQuestionnaire var generalQuestions = new List <Question> { // q1 new Question { Content = "Do you play video games?", QuestionType = QuestionTypes.SingleChoice, Number = 1, Answers = new List <Answer> { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 } } }, // q2 new Question { Content = "What game genres do you enjoy the most?(leave blank if you don't play games)", QuestionType = QuestionTypes.MultipleChoice, Number = 2, Answers = new List <Answer> { new Answer { Content = "Action", Number = 1 }, new Answer { Content = "Action-adventure", Number = 2 }, new Answer { Content = "Adventure", Number = 3 }, new Answer { Content = "Role-playing", Number = 4 }, new Answer { Content = "Simulation", Number = 5 }, new Answer { Content = "Strategy", Number = 6 }, new Answer { Content = "Sports", Number = 7 } } }, // q3 new Question { Content = "Do you listen to music?", QuestionType = QuestionTypes.SingleChoice, Number = 3, Answers = new List <Answer> { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 } } }, // q4 new Question { Content = "What music genres do you listen to?(leave blank if you don't listen to music)", QuestionType = QuestionTypes.MultipleChoice, Number = 4, Answers = new List <Answer> { new Answer { Content = "Metal", Number = 1 }, new Answer { Content = "Rock", Number = 2 }, new Answer { Content = "Pop", Number = 3 }, new Answer { Content = "Classical", Number = 4 }, new Answer { Content = "Country", Number = 5 }, new Answer { Content = "Jazz", Number = 6 }, new Answer { Content = "Blues", Number = 7 }, new Answer { Content = "Techno", Number = 8 }, new Answer { Content = "Reggae", Number = 9 }, new Answer { Content = "Electronic dance music", Number = 10 }, new Answer { Content = "Disco", Number = 11 } } }, // q5 new Question { Content = "Do you watch anime?", QuestionType = QuestionTypes.SingleChoice, Number = 5, Answers = new List <Answer> { new Answer { Content = "Yes", Number = 1 }, new Answer { Content = "No", Number = 2 } } }, // q6 new Question { Content = "Select your favourite anime genres(leave blank if you don't watch anime):", QuestionType = QuestionTypes.MultipleChoice, Number = 6, Answers = new List <Answer> { new Answer { Content = "Shounen", Number = 1 }, new Answer { Content = "Shoujo", Number = 2 }, new Answer { Content = "Comedy", Number = 3 }, new Answer { Content = "Action", Number = 4 }, new Answer { Content = "Adventure", Number = 5 }, new Answer { Content = "Fantasy", Number = 6 }, new Answer { Content = "Sports", Number = 7 }, new Answer { Content = "School", Number = 8 }, new Answer { Content = "Super Power", Number = 9 }, new Answer { Content = "Romance", Number = 10 }, new Answer { Content = "Josei", Number = 11 } } } }; // get all group ids List <int> allGroupIDs = allExistingGroups.Select(g => g.ID).ToList(); foreach (var id in allGroupIDs) { groupToAdd = new QuestionnaireGroup { GroupID = id }; // add group to the questionnaire targets questionnaires[3].Targets.Add(groupToAdd); } // add generated questions to the questionnaire foreach (var q in generalQuestions) { questionnaires[3].Questions.Add(q); } #endregion // add questionnaires to the db context foreach (var q in questionnaires) { context.Questionnaires.Add(q); } // update db context.SaveChanges(); } }