private User LoadLdapUser(string userName, string key) { lock (_writeLock) { User user; using (var db = new IdeasDb()) { user = db.Users.FirstOrDefault(x => x.DomainName == userName); if (user == null) { user = db.Users.Create(); user.CreatedDate = DateTime.Now; db.Users.Add(user); } if (user.LastUpdateDate < DateTime.Now.AddDays(-1)) { var ldapUser = _userRepository.GetUser(userName); _mapper.Map(ldapUser, user); user.DomainName = userName; user.LastUpdateDate = DateTime.Now; } db.SaveChanges(); } UpdateCacheElement(key, user, 3600); return(user); } }
public void InformAboutComment(Comment comment) { try { using (var db = new IdeasDb()) { var entry = db.Entries.Include(x => x.User).First(x => x.Comments.Any(y => y.Id == comment.Id)); if (comment.UserId != entry.UserId) { NotifyAuthor(entry); } var interestedUsers = db.Users.Where(x => x.Comments.Any(y => y.Entry.Id == entry.Id) && x.Id != comment.UserId && x.Id != entry.UserId); foreach (var ur in interestedUsers) { if (ur?.Email == null) { return; } var message = new MailMessage(); message.From = new MailAddress("*****@*****.**"); message.To.Add(new MailAddress(ur.Email)); message.Subject = "Comment on idea you have commented on too"; message.Body = $"There's a new comment on idea '{entry.Title}'"; var client = new SmtpClient(); client.Send(message); } } } catch (Exception ex) { Logger.Error(ex); } }