// GET: InqueritoAssistenteSocial/Edit/5 public async Task <IActionResult> Edit() { var questionario = await _context.Questionario.Where(q => q.Area.Equals(AreaQuestionarioEnum.AssistenteSocial)).SingleOrDefaultAsync(); if (questionario == null) { return(NotFound()); } var perguntas = await _context.Pergunta.Where(p => p.QuestionarioId == questionario.QuestionarioId).ToListAsync(); InqueritoAssistenteSocialViewModel iasVM = new InqueritoAssistenteSocialViewModel { QuestionarioId = questionario.QuestionarioId, Perguntas = perguntas }; return(View(iasVM)); }
public async Task <IActionResult> Edit(int id, [Bind("Nome,DocIdentificacao,QuestionarioId,Perguntas,Respostas")] InqueritoAssistenteSocialViewModel inqueritoAssistenteSocialViewModel) { if (id != inqueritoAssistenteSocialViewModel.QuestionarioId) { return(NotFound()); } if (ModelState.IsValid) { try { IList <Dador> todosDadores = _encryptorDador.DecryptDataList(await _context.Dador.ToListAsync()); Dador dador = todosDadores.Where(d => d.Nome == inqueritoAssistenteSocialViewModel.Nome).Where(d => d.DocIdentificacao == inqueritoAssistenteSocialViewModel.DocIdentificacao).SingleOrDefault(); //Dador dadorInit = await _context.Dador.Where(d => d.Nome == encryptNome).Where(d => d.DocIdentificacao == encryptDocId).SingleOrDefaultAsync(); if (dador == null) { return(RedirectToAction(nameof(NotRegistered))); } List <Pergunta> perguntas = await _context.Pergunta.Where(p => p.QuestionarioId == inqueritoAssistenteSocialViewModel.QuestionarioId).Include(p => p.Respostas).ToListAsync(); bool rExists = perguntas.Any(p => p.Respostas.Where(r => r.DadorId == dador.DadorId).Any()); if (rExists) { return(RedirectToAction(nameof(AlreadyAnswered))); } for (int i = 0; i < perguntas.Count; i++) { Resposta resposta = new Resposta { DadorId = dador.DadorId, Dador = dador, PerguntaId = perguntas[i].PerguntaId, Pergunta = perguntas[i], TextoResposta = inqueritoAssistenteSocialViewModel.Respostas[i] }; _context.Add(resposta); } //Analyze sentiment CORRIGIR bool valido = await ValidarSentimentosAsync(inqueritoAssistenteSocialViewModel.Perguntas, inqueritoAssistenteSocialViewModel.Respostas); if (valido) { List <double?> sentimentScores = _textEmotionService.AnalyzeEmotion(inqueritoAssistenteSocialViewModel.Respostas.FindAll(r => !r.Equals("Sim") && !r.Equals("Nao"))); // Invalid if (sentimentScores.Exists(s => s < 0.3)) { //Invalido dador.ValidacaoInqueritoAS = ValidacaoEnum.Rejeitado; _context.Update(_encryptorDador.EncryptData(dador)); } else { // Valido dador.ValidacaoInqueritoAS = ValidacaoEnum.Aceite; _context.Update(_encryptorDador.EncryptData(dador)); } } else { dador.ValidacaoInqueritoAS = ValidacaoEnum.Rejeitado; _context.Update(_encryptorDador.EncryptData(dador)); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuestionarioExists(inqueritoAssistenteSocialViewModel.QuestionarioId)) { return(NotFound()); } else { throw; } } return(RedirectToAction("IndexAnsweredAS", "Home")); } return(View(inqueritoAssistenteSocialViewModel)); }