public async Task <IActionResult> PostQuestions([FromBody] AssessmentScore assessmentScore) { var person = await this.assessmentContext.Persons.FirstOrDefaultAsync(p => p.Name == this.CurrentUserId); if (person == null) { person = new Person { Name = this.CurrentUserId }; this.assessmentContext.Persons.Add(person); await this.assessmentContext.SaveChangesAsync(); } var previousAssessment = await this.assessmentContext.PersonAssessments.Where( assess => assess.Person.Name == this.CurrentUserId && assess.AssessmentId == assessmentScore.AssessmentId) .Include(assess => assess.Answers) .Include(assess => assess.Person) .FirstOrDefaultAsync(); if (previousAssessment == null) { var newAssessment = new PersonAssessment { Person = person, AssessmentId = assessmentScore.AssessmentId }; this.assessmentContext.PersonAssessments.Add(newAssessment); await this.assessmentContext.SaveChangesAsync(); if (assessmentScore.Questions != null) { foreach (var score in assessmentScore.Questions) { if (score.Score.HasValue) { newAssessment.Answers.Add( new Answers { Rating = (float)score.Score, Comments = score.Comments, QuestionId = score.Id, PersonAssessmentId = newAssessment.Id }); } } } } else { if (assessmentScore.Questions != null) { foreach (var score in assessmentScore.Questions) { if (score.Score.HasValue) { var targetQuestion = previousAssessment.Answers.FirstOrDefault(answer => answer.QuestionId == score.Id); if (targetQuestion != null) { targetQuestion.Rating = (float)score.Score; targetQuestion.Comments = score.Comments; } else { previousAssessment.Answers.Add( new Answers { Rating = (float)score.Score, Comments = score.Comments, QuestionId = score.Id }); } } } } } await this.assessmentContext.SaveChangesAsync(); return(this.Ok()); }
public string FormattedScore() { return(AssessmentScore?.ToString("0.0") ?? "-"); }