public TokenAtendimento ConfirmarToken(int codigo)
        {
            TokenAtendimento token = this.Context.Tokens.SingleOrDefault(_ => _.CodigoTokenAtendimento == codigo);

            if (token == default(TokenAtendimento))
            {
                throw new Exception("Token não encontrado.");
            }

            token.ConfirmarToken();

            var entry = Context.Entry(token);

            entry.State = EntityState.Modified;
            this.Context.SaveChanges();

            return(token);
        }
        public ActionResult ValidarToken(TokenViewModel tokenViewModel)
        {
            if (tokenViewModel.Valido())
            {
                // Validação do Token.
                string tokenBase64 = Utils.Base64Encode(tokenViewModel.Token);
                TokenAtendimento token = this.TokenAtendimentoRepository.Obter(tokenBase64, tokenViewModel.NumeroAtendimento.Value);

                if (token == default(TokenAtendimento))
                    return Json("Token inválido.");

                if (!token.Valido())
                    return Json("Token inválido.");

                token.ConfirmarToken();
                token = this.TokenAtendimentoRepository.ConfirmarToken(token.CodigoTokenAtendimento);

                // Envia e-mail para médico informando que a consulta foi autenticada com sucesso

                Atendimento atendimento = this.AtendimentoRepository.Obter(tokenViewModel.NumeroAtendimento.Value);

                if (atendimento == default(Atendimento))
                    return Json("Atendimento não encontrado.");

                atendimento.Token = tokenBase64;
                this.AtendimentoRepository.AlterarToken(atendimento);

                Medico medico = this.MedicoRepository.Obter(atendimento.CodigoMedico);

                if (medico == default(Medico))
                    return Json("Médico não encontrado.");

                Utils.SendEmail(medico.Email, $"Olá {medico.NomeGuerra}, o atendimento #{atendimento.NumeroAtendimento} realizado às {atendimento.DataAtendimento.ToString("HH:mm tt")} do dia {atendimento.DataAtendimento.ToString("dd/MM/yyyy")} foi autenticado com sucesso.", "Atendimento autenticado por Token com sucesso!");

                return RedirectToAction("Index", "Atendimento");
            }

            return View();
        }