Example #1
0
        public ActionResult ImprimirPDFSimplificado(FiltroProntuarioViewModel filtro)
        {
            if (filtro.Valido())
            {
                List <Prontuario> prontuarios = this.ProntuarioRepository.ListarDetalhado(filtro.DataInicial, filtro.DataFinal, filtro.NumeroAtendimento, filtro.CodigoEspecialidade, null);
                List <EspecialidadeAtendimento> especialidades = this.EspecialidadeAtendimentoRepository.ListarAtivos().Where(_ => filtro.CodigoEspecialidade == null || _.CodigoEspecialidade == filtro.CodigoEspecialidade).ToList();
                List <TipoAtendimento>          tipos          = this.TipoAtendimentoRepository.ListarAtivos();

                List <AtendimentoSimplificadoPDFViewModel> lista = this.ConverterParaProntuarioSimplificadoViewModel(prontuarios, especialidades, tipos);

                LocalReport relatorio = new LocalReport();
                relatorio.ReportPath = Request.MapPath(Request.ApplicationPath) + @"\Reports\ReportProntuarioGeral.rdlc";
                relatorio.DataSources.Add(new ReportDataSource("Prontuario", lista));

                //parametros
                relatorio.SetParameters(new ReportParameter("DataImpressao", DateTime.Now.ToString("dd/MM/yyyy")));
                relatorio.SetParameters(new ReportParameter("Nome", UserAuthentication.ObterNome()));
                relatorio.SetParameters(new ReportParameter("Periodo", $"{filtro.DataInicial.ToString("dd/MM/yyyy")} a {filtro.DataFinal.ToString("dd/MM/yyyy")}"));

                string descricaoTipoAtendimento = "Todos";

                if (filtro.CodigoTipoAtendimento.HasValue)
                {
                    TipoAtendimento tipo = this.TipoAtendimentoRepository.Obter(filtro.CodigoTipoAtendimento.Value);

                    if (!(tipo == default(TipoAtendimento)))
                    {
                        descricaoTipoAtendimento = tipo.DescricaoTipoAtendimento;
                    }
                }

                relatorio.SetParameters(new ReportParameter("Atendimento", descricaoTipoAtendimento));
                string descricaoEspecialidade = "Todos";

                if (filtro.CodigoEspecialidade.HasValue)
                {
                    EspecialidadeAtendimento especialidade = this.EspecialidadeAtendimentoRepository.Obter(filtro.CodigoEspecialidade.Value);

                    if (!(especialidade == default(EspecialidadeAtendimento)))
                    {
                        descricaoEspecialidade = especialidade.DescricaoEspecialidade;
                    }
                }

                relatorio.SetParameters(new ReportParameter("Especialidade", descricaoEspecialidade));

                return(GerarArquivoPDF(relatorio));
            }

            return(View("BuscarAtendimentos", filtro));
        }
        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");
        }