Example #1
0
 protected override void OnStart(string[] args)
 {
     using (UnitOfWork Unit = UOW.GetInstanceForJobs())
     {
         Unit.LogError(new Exception(" MainService Start"));
     }
     EmailsSenderJobTimer.Elapsed += new ElapsedEventHandler(ESJ.StartSending);
     EmailsSenderJobTimer.Interval = int.Parse(ConfigurationManager.AppSettings["EmailServiceTimer"].ToString());
     EmailsSenderJobTimer.Enabled  = true;
     EmailsSenderJobTimer.Start();
 }
Example #2
0
        public void StartSending(object sender, System.Timers.ElapsedEventArgs e)
        {
            using (UnitOfWork Unit = UOW.GetInstanceForJobs())
            {
                Unit.LogError(new Exception(" StartSending Start"));
                UserManager             UserMgr = new UserManager(Unit);
                Manager <OutgoingEmail> Mgr     = new Manager <OutgoingEmail>(Unit);
                Expression <Func <OutgoingEmail, bool> > Filter = x => !x.IsDeleted && !x.IsProcessing;
                List <OutgoingEmail> OutGoingMails = Mgr.FindAll(Filter, "Id", null, null);

                //Set IsProcessing To True
                OutGoingMails.ForEach((outGoingMail) =>
                {
                    outGoingMail.State        = BaseState.Modified;
                    outGoingMail.IsProcessing = true;
                });

                Mgr.AddUpdate(OutGoingMails);
                Unit.SaveChanges();

                foreach (OutgoingEmail outgoingEmail in OutGoingMails)
                {
                    try
                    {
                        var           EmailBody  = this.GetEmailTemplateBody(outgoingEmail);
                        List <string> EmailsList = UserMgr.GetUserEmails(outgoingEmail.MailReceiverType);
                        //MailSender.SendEmail(outgoingEmail.Subject, EmailBody, user.Email);
                        foreach (var email in EmailsList)
                        {
                            try
                            {
                                MailSender.SendEmail(outgoingEmail.Subject, EmailBody, email);
                            }
                            catch (Exception ex)
                            {
                                Unit.LogError(new Exception("Error Send Email Id: " + outgoingEmail.Id + " ----- To:" + email));
                                Unit.LogError(ex);
                            }
                        }
                        outgoingEmail.State     = BaseState.Modified;
                        outgoingEmail.IsSuccess = true;
                        Mgr.AddUpdate(outgoingEmail);
                        Unit.SaveChanges();
                    }
                    catch (Exception ex2)
                    {
                        Unit.LogError(new Exception("Error Send Email Id: " + outgoingEmail.Id));
                        Unit.LogError(ex2);
                        throw;
                    }
                }
            }
        }