Пример #1
0
        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");
            }
        }
Пример #2
0
        public async Task AddAsync(FieldDataAnswer fieldDataAnswer)
        {
            await _context.FieldDataAnswers.AddAsync(fieldDataAnswer);

            await _context.SaveChangesAsync();
        }