public HttpResponseMessage EmailTeste()
        {
            try
            {
                var template = _service.GetTemplateByIdentifier("AGENDAMENTO_ONLINE");
                if (template == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possivel recuperar o Templete de e-mail."));
                }

                var obj = new JsonTemplate()
                {
                    SUBJECT = new JsonTemplateSubject()
                    {
                        PROTOCOLO = "12346789"
                    },
                    BODY = new JsonTemplateBody()
                    {
                        PACIENTE  = "RENATO AYRES",
                        CLINICA   = "CLINICA TESTE",
                        DATA_HORA = DateTime.Now.ToShortDateString() + " - " + DateTime.Now.ToShortTimeString(),
                        TELEFONE  = "(31) 3355-6688",
                        PROTOCOLO = "12346789",
                    }
                };
                var json = new JavaScriptSerializer().Serialize(obj);

                _service.AddToQueue(new MailQueue(template, "*****@*****.**", json));
                _service.AddToQueue(new MailQueue(template, "*****@*****.**", json));

                _service.ProcessQueue();

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public HttpResponseMessage ResetarSenha(string login)
        {
            try
            {
                var user = _usuarioService.ObterUsuarioLogin(login);
                if (user == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possivel recuperar dados do usuário."));
                }

                var template = _service.GetTemplateByIdentifier("ESQUECI_MINHA_SENHA");
                if (template == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possivel recuperar o Templete de e-mail."));
                }

                user.ResetarSenha();

                _usuarioService.SalvarUsuario(user);

                string protocolo = user.IdUsuario.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();
                var    obj       = new JsonTemplateSenha()
                {
                    SUBJECT = new JsonTemplateSubjectSenha()
                    {
                        PROTOCOLO = protocolo
                    },
                    BODY = new JsonTemplateBodySenha()
                    {
                        NOVA_SENHA = user.Senha,
                        USUARIO    = user.Login
                    }
                };
                var json = new JavaScriptSerializer().Serialize(obj);

                _service.AddToQueue(new MailQueue(template, user.Login, json));
                _service.ProcessQueue();
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public HttpResponseMessage Marcado(NovoAgendamentoViewModel agenda)
        {
            try
            {
                var paciente = _cadastroService.ObterPacienteById(agenda.idpaciente);
                if (paciente == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possivel recuperar dados do paciente."));
                }

                var clinica = _cadastroService.ObterClinicaById(base.GetUsuarioLogado().IdClinica);
                var unidade = _cadastroService.ObterUnidadeAtendimentoPorId(base.GetUsuarioLogado().IdUnidadeAtendimento);
                if (clinica == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possivel recuperar dados da clinica."));
                }


                _serviceAgenda.Marcar(agenda.idagenda, agenda.idpaciente, agenda.idprofissional,
                                      agenda.idespecialidade, agenda.idprocedimento, agenda.idconvenio, agenda.tipo, agenda.observacoes,
                                      agenda.solicitante, agenda.valor, agenda.valorProfissional, agenda.idtipoatendimento, base.GetUsuarioLogado().IdUsuario, agenda.idUnidadeAtendimento);



                if (!String.IsNullOrEmpty(paciente.Pessoa?.Email))
                {
                    var template = _serviceAgenda.GetTemplateByIdentifier("AGENDAMENTO_ONLINE");
                    if (template == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possivel recuperar o Templete de e-mail."));
                    }

                    string endereco  = unidade.Logradouro + ", " + unidade.Numero + "Bairro: " + unidade.Bairro;
                    string protocolo = agenda.idagenda.ToString() + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();

                    var obj = new JsonTemplate()
                    {
                        SUBJECT = new JsonTemplateSubject()
                        {
                            PROTOCOLO = protocolo
                        },
                        BODY = new JsonTemplateBody()
                        {
                            PACIENTE  = paciente.Pessoa.Nome.ToUpper(),
                            CLINICA   = clinica.Nome + " - " + endereco,
                            DATA_HORA = DateTime.Now.ToShortDateString() + " - " + DateTime.Now.ToShortTimeString(),
                            TELEFONE  = unidade.Telefone1,
                            PROTOCOLO = protocolo,
                        }
                    };
                    var json = new JavaScriptSerializer().Serialize(obj);

                    _serviceAgenda.AddToQueue(new MailQueue(template, paciente.Pessoa.Email, json));
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }