private static EmailCobrancaAvaliacao GetEmailCompleto()
 {
     EmailCobrancaAvaliacao emailCompleto = new EmailCobrancaAvaliacao()
     {
         Avaliacao = new Avaliacao()
         {
             Id = 1,
             Solicitacao = new Solicitacao()
             {
                 Id = 1,
                 Seq = 1,
                 Ano = 2012,
                 User = new User() { Email = "*****@*****.**", FullName = "Paolo Haji de Carvalho Bueno" }
             },
             DataLimite = DateTime.Now
             //, SolicitacaoId = 1
         },
     };
     return emailCompleto;
 }
 private static MailViewModel MapViewModel(EmailCobrancaAvaliacao email)
 {
     var viewModel = new MailViewModel();
     //viewModel.Email = email.Email;
     //viewModel.Ano = email.Avaliacao.Solicitacao.Ano;
     //viewModel.Seq = email.Avaliacao.Solicitacao.Seq;
     //viewModel.DataLimite = email.Avaliacao.DataLimite;
     //viewModel.FullName = email.Avaliacao.Solicitacao.User.FullName;
     //viewModel.IdAvaliacao = email.Avaliacao.Id;
     //viewModel.IdSolicitacao = email.Avaliacao.Solicitacao.Id;
     viewModel.InjectFrom<FlatLoopValueInjection>(email);
     return viewModel;
 }
        static private IEnumerable<EmailCobrancaAvaliacao> PreencherFila()
        {
            List<EmailCobrancaAvaliacao> result = new List<EmailCobrancaAvaliacao>();
            using (var db = new ReprografiaContext())
            {
                //Colocar na fila de emails avaliacoes com menos de 2 dias ate o prazo final
                //DateTime dateFilter = DateTime.Now.AddDays(100);
                DateTime dateFilter = DateTime.Now.AddDays(2);
                var avaliacoesPrestesAExpirar = db.Avaliacoes
                    .Where(a => a.DataLimite <= dateFilter);

                foreach (var avaliacao in avaliacoesPrestesAExpirar)
                {
                    EmailCobrancaAvaliacao email = new EmailCobrancaAvaliacao(avaliacao);
                    result.Add(email);
                    db.Emails.Add(email);
                }
                db.SaveChanges();
            }
            return result;
        }
 public void EnviarEmailsTest()
 {
     EmailCobrancaAvaliacao emailCompleto = GetEmailCompleto();
     IEnumerable<EmailCobrancaAvaliacao> emails = new EmailCobrancaAvaliacao[]{
         emailCompleto
     };
     Program_Accessor.EnviarEmails(emails);
     foreach (var email in emails)
     {
         Assert.IsTrue(email.Enviado, "Email deve ser marcado como enviado");
         Assert.IsTrue(DateTime.Now.Subtract(email.EnviadoEm) < new TimeSpan(0, 2, 0),
             "Tempo desde o envio deve ser menor que 2 min");
     }
 }