public ClinicaServicoDeAplicacao(IClinicaRepositorio clinicaRepositorio, IRepresentanteRepositorio representanteRepositorio,
            IRepresentanteRegionalRepositorio representanteRegionalRepositorio, IGerenteRepositorio gerenteRepositorio, ServicoDeEmail servicoDeEmail,
            IProgramaRepositorio programaRepositorio, IFuncionarioRepositorio funcionarioRepositorio, IUnitOfWork unitOfWork)
        {
            _clinicaRepositorio = clinicaRepositorio;
            _representanteRepositorio = representanteRepositorio;
            _representanteRegionalRepositorio = representanteRegionalRepositorio;
            _gerenteRepositorio = gerenteRepositorio;
            _servicoDeEmail = servicoDeEmail;
            _programaRepositorio = programaRepositorio;
            _funcionarioRepositorio = funcionarioRepositorio;
            _unitOfWork = unitOfWork;

            _clinicaServico = new ClinicaServico(_clinicaRepositorio);
        }
        public RespostaBase EnviarPreviaPorEmail(int idClinica, int mes, int ano, string email)
        {
            var clinica = _clinicaRepositorio.ObterPor(idClinica);
            var infusoes = _infusaoRepositorio.ObterTodasInfusoesDaClinicaNoMes(idClinica, mes, ano);

            var html = new StringBuilder();
            html.Append("Segue abaixo a prévia de faturamento referente ao mês: <b>" + new DateTime(ano, mes == 13 ? 1 : mes, 1).ToString("MM/yyyy") + "</b></br></br>");
            html.Append("Clínica: <b>" + clinica.Nome + "</b></br></br>");

            html.Append("<table style='border-spacing:0px;border: 1px solid #dddddd;position: relative;display: inline-block;margin-right: 4px;color: #555;content: '\f0dc';font-weight: normal;font-size: 13px;font-family: FontAwesome;'><thead>");
            html.Append("<tr style='background-color:lightgray'><th style='color: #307ECC;'>Data da infusão</th><th style='color: #307ECC;'>Paciente</th><th style='color: #307ECC;'>Localizador</th><th style='color: #307ECC;'>Lote</th><th style='color: #307ECC;'>Valor</th></tr>");
            html.Append("</thead><tbody>");

            foreach (var infusao in infusoes)
            {
                html.Append("<tr style='background-color:lightblue'>");
                html.Append("<td>" + infusao.DataInfusao.ToString("dd/MM/yyyy") + "</td>");
                html.Append("<td>" + (infusao.NomePaciente.Split('|').Length - 1 > 0 ? infusao.NomePaciente.Split('|')[0] : infusao.NomePaciente) + "</td>");
                html.Append("<td style='text-align: center;'>" + infusao.Localizador + "</td>");
                html.Append("<td>" + infusao.Lote + "</td>");
                html.Append("<td>" + infusao.Clinica.ValorDeInfusao + "</td>");
                html.Append("</tr>");
            }
            html.Append("</tbody></table>");
            html.Append("</br>");

            html.Append("Quantidade: " + infusoes.Count().ToString(CultureInfo.InvariantCulture));
            html.Append("</br>");
            html.Append("Total: R$ " + string.Format("{0:#.00}", Convert.ToDecimal(infusoes.Sum(inf => inf.Clinica.ValorDeInfusao).ToString(CultureInfo.InvariantCulture)) / 100));
            html.Append("</br></br>");

            html.Append("<ul style='list-style-type: circle'>");
            html.Append("<li>Nota Fiscal deverá ser encaminhada para o Programa Essencial” através do e-mail [email protected] ou via correios “junto com as <b>AUTORIZAÇÕES DE INFUSÃO</b>” </br>");
            html.Append("até o   dia 10 de cada mês para a ÍNTEGRA MEDICAL – A/C PROGRAMA ESSENCIAL.</li>");
            html.Append("<br>");
            html.Append("<li><b style='color:red;'>Ressaltamos para que o pgamento seja realizado, será obrigatório o envio das AUTORIZAÇÕES DE INFUSÃO. Caso não sejam enviadas, o Programa Essencial poderá cancelar o pagamento, até que seja enviado o documento, conforme contrato </br>vigente com a clínica.</b></li>");
            html.Append("</ul>");

            html.Append("</br>");
            html.Append("<img src='http://www.integrawebservice.com.br/Site_PainelDeControle/Content/images/LogoEssencial.fw.png' />");

            var servicoDeEmail = new ServicoDeEmail();
            servicoDeEmail.EnviarEmailInfusao(email, "Programa Essencial - Prévia de Faturamento", html.ToString());
            return new RespostaBase { Sucesso = true };
        }
 public RecuperarSenhaResposta RecuperarSenha(RecuperarSenhaRequisicao requisicao)
 {
     var resposta = new RecuperarSenhaResposta();
     try
     {
         var pessoa = _pessoaRepositorio.ObterPeloNomeDeUsuario(requisicao.NomeDoUsuario);
         if (pessoa != null)
         {
             var senha = DateTime.Now.ToString("MddYYffffmmss");
             pessoa.Usuario.AlterarSenha(Crypto.HashPassword(senha));
             var servicoDeEmail = new ServicoDeEmail(pessoa.Usuario.NomeDeUsuario);
             servicoDeEmail.EnviarEmail("Acesso Painel de Controle - Recuperar Senha",
                 String.Format(@"Prezado usuário, <br /><br /><br />Sua nova senha para utilização do Painel de Controle.<br /><br />O endereço é: http://www.integramedical.com.br/paineldecontrole <br />Seu login é: {0}<br />Sua senha é: {1}<br /><br /><br />Atenciosamente, <br /><br />Íntegra Medical<br />(11) 5054-9199<br />[email protected]", requisicao.NomeDoUsuario, senha));
             _unitOfWork.Commit();
             resposta.Sucesso = true;
         }
         else
         {
             resposta.Erros.Add(new RegraDeNegocioBase("Usuário não encontrado!"));
         }
     }
     catch (RegraException regraException)
     {
         resposta.Erros = regraException.Erros;
     }
     return resposta;
 }
 public OuvidoriaServicoDeAplicacao(ServicoDeEmail servicoDeEmail)
 {
     _servicoDeEmail = servicoDeEmail;
 }