Example #1
0
        public async Task AddChoiceOptionsAnswerToFieldDataAnswerAsync(int surveyId, int fieldDataAnswerId,
                                                                       int optionPosition,
                                                                       bool value, string viewValue)
        {
            var fieldDataAnswer = await _fieldDataAnswerRepository.GetByIdAsync(fieldDataAnswerId);

            var choiceOptionAnswer = new ChoiceOptionAnswer(optionPosition, value, viewValue);

            fieldDataAnswer.AddChoiceOptionAnswer(choiceOptionAnswer);
            await _choiceOptionAnswerRepository.AddAsync(choiceOptionAnswer);

            var questionAnswer = await _questionAnswerRepository.GetByIdAsync(fieldDataAnswer.QuestionAnswerId);

            var surveyReport = await _surveyReportRepository.GetBySurveyIdAsync(surveyId);

            var questionReport =
                await _questionReportRepository.GetBySurveyReportContentAndPositionAsync(surveyReport.Id,
                                                                                         questionAnswer.QuestionPosition,
                                                                                         questionAnswer.Select);

            if (!questionAnswer.IsRequired)
            {
                var counter = 0;
                foreach (var ChoiceOptionAnswer in fieldDataAnswer.ChoiceOptionAnswers)
                {
                    if (ChoiceOptionAnswer.Value)
                    {
                        counter++;
                    }
                }
                if (counter == 0)
                {
                    questionReport.DeleteAnswer();
                    await Task.CompletedTask;
                }
            }
            if (choiceOptionAnswer.Value)
            {
                if (questionAnswer.Content != "")
                {
                    foreach (var dataSet in questionReport.DataSets)
                    {
                        var index        = dataSet._data[choiceOptionAnswer.OptionPosition];
                        var labelCounter = int.Parse(index);
                        labelCounter++;
                        dataSet._data[choiceOptionAnswer.OptionPosition] = labelCounter.ToString();
                        await _dataSetRepository.UpdateAsync(dataSet);
                    }
                }
            }
        }
        public async Task AddAsync(ChoiceOptionAnswer choiceOptionAnswer)
        {
            await _context.ChoiceOptionsAnswers.AddAsync(choiceOptionAnswer);

            await _context.SaveChangesAsync();
        }