// 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));
        }