Esempio n. 1
0
 public Task SendMessage(int noticeId, ISendingNotice sendingNotice)
 {
     return(Task.Factory.StartNew(() =>
     {
         var notice = Db.Notices.First(n => n.idNotice == noticeId);
         var users = notice.Users.Where(u => u.idState == 1);
         var locker = new object();
         Parallel.ForEach(users, ((user, state) =>
         {
             try
             {
                 sendingNotice.Send(notice, user);
                 lock (locker)
                 {
                     Db.Histories.Add(new Histories()
                     {
                         idNotice = noticeId,
                         idState = 3,
                         idUser = user.idUser,
                         Date = DateTime.Now
                     });
                     Db.SaveChanges();
                 }
             }
             catch (Exception e)
             {
                 lock (locker)
                 {
                     Db.Histories.Add(new Histories()
                     {
                         idNotice = noticeId,
                         idState = 4,
                         Comment = e.Message,
                         idUser = user.idUser,
                         Date = DateTime.Now
                     });
                     Db.SaveChanges();
                 }
             }
         }));
     }));
 }
 public HomeController(IRepository repository, ISendingNotice sendingNotice)
 {
     Repository    = repository;
     SendingNotice = sendingNotice;
 }
Esempio n. 3
0
 public Task SendMessage(int noticeId, ISendingNotice sendingNotice)
 {
     throw new System.NotImplementedException();
 }