public async Task <int> AddFieldDataAnswerToQuestionAnswerAsync(int surveyId, int questionAnswerId, string input, string minLabel, string maxLabel) { var surveyReport = await _surveyReportRepository.GetBySurveyIdAsync(surveyId); var questionAnswer = await _questionAnswerRepository.GetByIdAsync(questionAnswerId); switch (questionAnswer.Select) { case "short-answer": { var fieldDataAnswer = new FieldDataAnswer(input); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); var questionReport = await _questionReportRepository.GetBySurveyReportAsync(surveyReport.Id, questionAnswer.Content, questionAnswer.Select); foreach (var dataSet in questionReport.DataSets) { if (!questionAnswer.IsRequired) { if (input == "") { questionReport.DeleteAnswer(); } } dataSet.AddData(fieldDataAnswer.Input); await _dataSetRepository.UpdateAsync(dataSet); } return(fieldDataAnswer.Id); } case "long-answer": { var fieldDataAnswer = new FieldDataAnswer(input); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); var questionReport = await _questionReportRepository.GetBySurveyReportAsync(surveyReport.Id, questionAnswer.Content, questionAnswer.Select); foreach (var dataSet in questionReport.DataSets) { if (!questionAnswer.IsRequired) { if (input == "") { questionReport.DeleteAnswer(); } } dataSet.AddData(fieldDataAnswer.Input); await _dataSetRepository.UpdateAsync(dataSet); } return(fieldDataAnswer.Id); } case "single-choice": { var fieldDataAnswer = new FieldDataAnswer(); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); return(fieldDataAnswer.Id); } case "multiple-choice": { var fieldDataAnswer = new FieldDataAnswer(); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); return(fieldDataAnswer.Id); } case "dropdown-menu": { var fieldDataAnswer = new FieldDataAnswer(); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); return(fieldDataAnswer.Id); } case "linear-scale": { var fieldDataAnswer = new FieldDataAnswer(minLabel, maxLabel); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); return(fieldDataAnswer.Id); } case "single-grid": { var fieldDataAnswer = new FieldDataAnswer(); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); return(fieldDataAnswer.Id); } case "multiple-grid": { var fieldDataAnswer = new FieldDataAnswer(); questionAnswer.AddFieldDataAnswer(fieldDataAnswer); await _fieldDataAnswerRepository.AddAsync(fieldDataAnswer); return(fieldDataAnswer.Id); } default: throw new Exception("invalid select value"); } }
public async Task AddAsync(FieldDataAnswer fieldDataAnswer) { await _context.FieldDataAnswers.AddAsync(fieldDataAnswer); await _context.SaveChangesAsync(); }