public TokenAtendimento Cadastrar(TokenAtendimento novoTokenAtendimento) { TokenAtendimento tokenAtendimento = new TokenAtendimento(novoTokenAtendimento.NumeroAtendimento, novoTokenAtendimento.Token); this.Context.Tokens.Add(tokenAtendimento); this.Context.SaveChanges(); return(tokenAtendimento); }
public ActionResult Cadastrar(AtendimentoViewModel viewModel) { ViewBag.NomePagina = "Finalização de Atendimento - Token"; if (viewModel.Valido()) { // Cadastro de Atendimento. Atendimento atendimento = Mapper.Map<AtendimentoViewModel, Atendimento>(viewModel); atendimento.DataAtendimento = DateTime.Now; atendimento.CodigoMedico = Convert.ToInt32(UserAuthentication.ObterCodigoInternoUsuarioLogado()); atendimento = this.AtendimentoRepository.Cadastrar(atendimento); // Geração do Token. string codigoToken = Utils.GenerateRandomNumber(); string codigoTokenBase64 = Utils.Base64Encode(codigoToken); TokenAtendimento token = new TokenAtendimento(atendimento.NumeroAtendimento, codigoTokenBase64); this.TokenAtendimentoRepository.Cadastrar(token); // Envio de Email para paciente com token de verificação PessoaFisica pessoa = this.PessoaFisicaRepository.Obter(atendimento.CodigoPessoaFisica); EspecialidadeAtendimento especialidade = this.EspecialidadeAtendimentoRepository.Obter(atendimento.CodigoEspecialidade); Medico medico = this.MedicoRepository.Obter(atendimento.CodigoMedico); if (pessoa == default(PessoaFisica)) return Json("Paciente não encontrado"); if (especialidade == default(EspecialidadeAtendimento)) return Json("Especialidade não encontrado"); if (medico == default(Medico)) return Json("Médico não encontrado"); Utils.SendEmail(pessoa.Email, $"Olá, {pessoa.Nome}, seu atendimento realidado com o(a) Dr(a). {medico.NomeGuerra} da especialidade {especialidade.DescricaoEspecialidade} realidado dia {atendimento.DataAtendimento.ToString("dd/MM/yyyy HH:mm:ss")} gerou um token de validação: {codigoToken}", $" #{atendimento.NumeroAtendimento} Atendimento Realizado"); ViewBag.CodigoAtendimento = atendimento.NumeroAtendimento; ViewBag.NomePessoa = pessoa.Nome; return View("FinalizarCadastro"); } return RedirectToAction("Index", "Atendimento"); }
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(); }