public static EvaluationSectionViewModel AsSection(this Debriefing debrief, string formType, IQueryable<Question> questions) { EvaluationSectionViewModel esvm = new EvaluationSectionViewModel(formType); EvaluationCategoryViewModel ecvm = new EvaluationCategoryViewModel(); esvm.Categories.Add(ecvm); Category qCategory = null; bool first = true; foreach (var question in questions.OrderBy(q => q.Number)) { if (first) { ecvm.Title = question.Category.Description; qCategory = question.Category; first = false; } // When category changes... if (qCategory != question.Category) { // 'Close' current category ecvm = new EvaluationCategoryViewModel() { Title = question.Category.Description }; esvm.Categories.Add(ecvm); // DnE (Did Not Encounter) is a shortcut that applies to the entire category if (question.Constraint == Constraint.DefaultWithDne) { ecvm.HasDidNotEncounter = true; } qCategory = question.Category; } EvaluationQuestionViewModel eqvm = new EvaluationQuestionViewModel() { Number = question.Number, Text = question.Description, AnswerConstraints = question.Constraint }; var answer = ( from e in debrief.Evaluations where e.QuestionNumber == question.Number select e).FirstOrDefault(); if (null != answer) { if (!answer.HasAnswer()) { eqvm.DefaultAnswer = DefaultAnswer(question.Constraint); } eqvm.Notes = answer.Notes; eqvm.Answer = answer.Decode(question.Constraint); } ecvm.Questions.Add(eqvm); } return esvm; }
public JsonResult AddSection(EvaluationSectionViewModel evaluationSectionViewModel) { try { var token = _tokenValidator.Validate(HttpContext); if (!token.Success) { return(Json(new ReturnData <string> { Success = false, NotAuthenticated = true, Message = $"Unauthorized:-{token.Message}", })); } if (!string.IsNullOrEmpty(evaluationSectionViewModel.SectionName)) { var evaluationSection = new EvaluationSection { SectionName = evaluationSectionViewModel.SectionName, EvaluationId = evaluationSectionViewModel.EvaluationId, EvaluationQuestions = evaluationSectionViewModel.EvaluationQuestions }; if (evaluationSectionViewModel.Id.HasValue && evaluationSectionViewModel.Id.Value > 0) { evaluationSection.Id = (int)evaluationSectionViewModel.Id; _context.EvaluationSections.Update(evaluationSection); } else { _context.EvaluationSections.Add(evaluationSection); } _context.SaveChangesAsync(); return(Json(new ReturnData <string> { Success = true, Message = "Section name saved successfully" })); } return(Json(new ReturnData <string> { Success = false, Message = "Section name cannot be empty" })); } catch (Exception ex) { return(Json(new ReturnData <string> { Success = false, Message = "An error occurred,please retry : " + ex.Message })); } }