public IEnumerable <QuestionSetViewModel> GetQuestionSets() { try { var contextSets = _context.Sets; var sets = contextSets .Include(b => b.Questions) .Where(d => d.Questions.Any()) .ToList(); var viewSets = new QuestionSetMapper().GetViewSets(sets); // TODO inject... return(viewSets); } catch (Exception e) { Trace.TraceError($"GetQuestionSets: {e}"); } return(new List <QuestionSetViewModel> ()); }
internal void SaveQuestionSet(QuestionSetViewModel questionSet) { var previousDatabaseSet = _context.Sets.Include(d => d.Questions).FirstOrDefault(set => set.SetId == questionSet.Id); var isNewQuestionSet = previousDatabaseSet == null; var newSet = new QuestionSetMapper().GetSet(questionSet); // TODO inject... if (isNewQuestionSet) { AddNewQuestionSet(newSet); return; } var questionsToSave = newSet.Questions.Select(question => question.QuestionId).Where(d => d > 0); var removeQuestions = _context.Questions.Where(q => q.FkSetId == questionSet.Id && !questionsToSave.Contains(q.QuestionId)); foreach (var item in removeQuestions) { _context.Questions.Remove(item); } //set database properties.... newSet.CreatedDate = previousDatabaseSet.CreatedDate; newSet.ModifiedDate = DateTime.Now; foreach (var item in newSet.Questions) { item.CreatedDate = DateTime.Now; item.ModifiedDate = DateTime.Now; item.FkSetId = newSet.SetId; var previousQuestion = _context.Questions.FirstOrDefault(q => q.QuestionId == item.QuestionId); if (previousQuestion == null) { _context.Questions.Add(item); } else { _context.Entry(previousQuestion).CurrentValues.SetValues(item); } } _context.Entry(previousDatabaseSet).CurrentValues.SetValues(newSet); _context.SaveChanges(); }