public async Task <IProgramResponse> AddOrUpdateApplicationAnswerAsync(ProgramAnswerViewModel model) { try { //if (model.Answers.Count == 0) //{ // List<ApplicationAnswerViewModel> _model = new List<ApplicationAnswerViewModel>(); // _model.Add(new ApplicationAnswerViewModel() { // QuestionId = 165, // QuestionType = ApplicationQuestionType.Text, // Text = "Test Answer" // }); // _model.Add(new ApplicationAnswerViewModel() // { // QuestionId = 141, // QuestionType = ApplicationQuestionType.MultiSelect, // SelectedOptionId = 134 // }); // _model.Add(new ApplicationAnswerViewModel() // { // QuestionId = 170, // QuestionType = ApplicationQuestionType.MultipleChoice, // MultipleChoice = "158,159" // }); // model.Answers = _model; //} var userInfo = await _appDbContext.UserInfos.FirstOrDefaultAsync(k => k.Id == model.ProfileId); if (userInfo == null) { return(new ProgramResponse(ClientMessageConstant.ProfileNotExist, HttpStatusCode.NotFound)); } var isExist = true; var appId = await GetApplicationIdAsync(model.ProfileId, model.BatchId, userInfo); foreach (var answer in model.Answers) { var questionAnswer = await _appDbContext.QuestionAnswers.Include(a => a.Questionansweroptions).FirstOrDefaultAsync(k => k.ProfileId == model.ProfileId && k.ApplicationId == appId && k.QuestionId == answer.QuestionId) ?? GetQuestionAnswer(answer, model.ProfileId, appId, ref isExist); questionAnswer.ModifiedBy = userInfo.Email; questionAnswer.CreatedBy = userInfo.Email; switch (answer.QuestionType) { case ApplicationQuestionType.Text: questionAnswer.Text = answer.Text; break; case ApplicationQuestionType.MultiSelect: //questionAnswer.SelectedOptionId = answer.SelectedOptionId; break; case ApplicationQuestionType.TrueOrFalse: questionAnswer.YnquestionAnswer = answer.YesNoAnswer; break; case ApplicationQuestionType.Scale: questionAnswer.Scale = answer.Scale; break; case ApplicationQuestionType.File: questionAnswer.AnswerFileId = (await SaveFileAsync(answer.AnswerFile, model.ProfileId, (int)ApplicationQuestionType.File)).Id; break; case ApplicationQuestionType.VideoAttachment: questionAnswer.AnswerFileId = (await SaveFileAsync(answer.AnswerFile, model.ProfileId, (int)ApplicationQuestionType.VideoAttachment)).Id; break; } if (!isExist) { await _appDbContext.QuestionAnswers.AddAsync(questionAnswer); await _appDbContext.SaveChangesAsync(); switch (answer.QuestionType) { case ApplicationQuestionType.MultiSelect: _appDbContext.QuestionAnswerOptions.Add(new QuestionAnswerOption() { QuestionanswerID = questionAnswer.Id, optionID = answer.SelectedOptionId ?? 0 }); break; case ApplicationQuestionType.MultipleChoice: // questionAnswer.YnquestionAnswer = answer.YesNoAnswer; char[] spearator = { ',' }; var Ids = answer.MultipleChoice.Split(spearator); foreach (var item in Ids) { if (item != "") { _appDbContext.QuestionAnswerOptions.Add(new QuestionAnswerOption() { QuestionanswerID = questionAnswer.Id, optionID = Convert.ToInt32(item) }); } } break; } //await _appDbContext.SaveChangesAsync(); } else { switch (answer.QuestionType) { case ApplicationQuestionType.MultiSelect: if (questionAnswer.Questionansweroptions != null) { List <QuestionAnswerOption> _optionsdata = new List <QuestionAnswerOption>(); _optionsdata = questionAnswer.Questionansweroptions.ToList(); foreach (var item in _optionsdata) { _appDbContext.QuestionAnswerOptions.Remove(item); await _appDbContext.SaveChangesAsync(); } } _appDbContext.QuestionAnswerOptions.Add(new QuestionAnswerOption() { QuestionanswerID = questionAnswer.Id, optionID = answer.SelectedOptionId ?? 0 }); await _appDbContext.SaveChangesAsync(); break; case ApplicationQuestionType.MultipleChoice: // questionAnswer.YnquestionAnswer = answer.YesNoAnswer; if (questionAnswer.Questionansweroptions != null) { List <QuestionAnswerOption> _optionsdata = new List <QuestionAnswerOption>(); _optionsdata = questionAnswer.Questionansweroptions.ToList(); foreach (var item in _optionsdata) { _appDbContext.QuestionAnswerOptions.Remove(item); await _appDbContext.SaveChangesAsync(); } } char[] spearator = { ',' }; var Ids = answer.MultipleChoice.Split(spearator); foreach (var item in Ids) { if (item != "") { _appDbContext.QuestionAnswerOptions.Add(new QuestionAnswerOption() { QuestionanswerID = questionAnswer.Id, optionID = Convert.ToInt32(item) }); } } break; } } await _appDbContext.SaveChangesAsync(); } await _applicationProgressService.UpdateApplicationProgressAsync(appId, model.ProfileId, model.BatchId); return(new ProgramResponse()); } catch (Exception e) { return(new ProgramResponse(e.Message, HttpStatusCode.InternalServerError)); } }
public async Task <IActionResult> AddOrUpdateApplicationAnswerAsync([FromForm] ProgramAnswerViewModel answerViewModel) { var data = await _programService.AddOrUpdateApplicationAnswerAsync(answerViewModel); return(Ok(data)); }