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") ?? "-");
 }