public async Task SendNewCommentEmail(CommentVM comment,int teamId) { var subscribers = await userRepository.GetSubscribers(teamId, NotificationTypeCode.NewComment); var emailTemplate = emailTemplateRepository.GetEmailTemplate("NewComment"); if (emailTemplate != null) { string emailSubject = emailTemplate.Subject; string emailBody = emailTemplate.EmailBody; Email email = new Email(); string issueUrl = UrlBuilderHelper.SiteBaseUrl + "issues/" + comment.IssueId; var issueLink = "<a href='" + issueUrl + "'>" + "# " + comment.IssueId + " " + comment.IssueId + "</a>"; emailBody = emailBody.Replace("@author", comment.Author.Name); emailBody = emailBody.Replace("@link", issueLink); emailBody = emailBody.Replace("@comment", comment.CommentBody); emailBody = emailBody.Replace("@issueId", comment.IssueId.ToString()); email.Body = emailBody; emailSubject = emailSubject.Replace("@issueId", comment.IssueId.ToString()); email.Subject = emailSubject; foreach (var subscriber in subscribers) { email.ToAddress.Add(subscriber.EmailAddress); } email.Send(); } }
public int SaveComment(CommentVM comment) { comment.Author = new UserDto {Id = this._userSessionHelper.UserId}; int commentId= this._commentRepository.Save(comment); return commentId; }
public CommentVM GetCommentVM(int commentId) { var commentVM = new CommentVM(); var comment = repo.GetComment(commentId); if (comment != null) { commentVM.ID = comment.ID; commentVM.AuthorName = comment.Author.FirstName; commentVM.CommentBody = comment.CommentText.ConvertUrlsToLinks(); commentVM.CreativeDate = comment.CreatedDate; commentVM.AvatarHash = UserService.GetAvatarUrl(comment.Author.Avatar, 42); commentVM.CreatedDateRelative = comment.CreatedDate.ToShortDateString(); //.ToRelativeDateTime(); } return commentVM; }
public int Save(CommentVM comment) { using (var db = new TeamEntitiesConn()) { var commentEntity = new Comment(); commentEntity.IssueID = comment.IssueId; commentEntity.CommentText = comment.CommentBody; commentEntity.CreatedDate = DateTime.Now; commentEntity.CreatedByID = comment.Author.Id; ; db.Comments.Add(commentEntity); db.SaveChanges(); return commentEntity.ID; } }
public async Task<ActionResult> Comment(NewIssueCommentVM model, string Connection) { try { if (ModelState.IsValid) { model.CommentBody = HttpUtility.HtmlEncode(model.CommentBody); var comment = new CommentVM { CommentBody = model.CommentBody, IssueId = model.IssueID, Author = new UserDto { Id = UserID } }; var commentId = commentManager.SaveComment(comment); var newCommentVm = commentManager.GetComment(commentId); var context = GlobalHost.ConnectionManager.GetHubContext<IssuesHub>(); //Send to all other users except the Author. newCommentVm.IsOwner = false; string[] excludedConn = new string[] { Connection }; context.Clients.Groups(new string[] { TeamID.ToString() }, excludedConn).addNewComment(newCommentVm); //For Sending to the author newCommentVm.IsOwner = true; await commentManager.SendEmailNotificaionForNewComment(comment); return Json(new { Status = "Success", Data = newCommentVm }); } return Json(new { Status = "Error" }); } catch (Exception ex) { log.Error(ex); return Json(new { Status = "Error" }); } }
/// <summary> /// Send email to subscribers of the team about the new comment /// </summary> /// <param name="comment"></param> /// <returns></returns> public async Task SendEmailNotificaionForNewComment(CommentVM comment) { try { var subscibers = await _teamRepository.GetSubscribers(_userSessionHelper.TeamId, "NewComment"); if (subscibers.Any()) { var emailTemplate = await _emailRepository.GetEmailTemplate("NewComment"); if (emailTemplate != null) { var emailSubject = emailTemplate.Subject; var emailBody = emailTemplate.EmailBody; var email = new Email(); foreach (var subsciber in subscibers) { email.ToAddress.Add(subsciber.EmailAddress); } var issueUrl = this._settings.SiteUrl + "/issues/" + comment.IssueId; var issueLink = string.Format("<a href='{0}'>" + "#{1} {2}</a>", issueUrl, comment.IssueId, comment.Issue.Title); emailBody = emailBody.Replace("@author", comment.Author.Name); emailBody = emailBody.Replace("@issueId", comment.IssueId.ToString()); emailBody = emailBody.Replace("@link", issueLink); emailBody = emailBody.Replace("@comment", comment.CommentText); emailSubject = emailSubject.Replace("@issueId", comment.IssueId.ToString()); email.Body = emailBody; email.Subject = emailSubject; await this._emailManager.Send(email); } } } catch (Exception) { // Silently fail. We will log this. But we do not want to show an error to user because of this } }
public CommentVM GetIssueCommentVM(int currentUserId, Comment item) { var commentVM = new CommentVM { ID = item.ID, CommentBody = item.CommentText, AuthorName = item.Author.FirstName, CreativeDate = item.CreatedDate }; commentVM.CommentBody = commentVM.CommentBody.ConvertUrlsToLinks(); commentVM.AvatarHash = UserService.GetAvatarUrl(item.Author.Avatar, 42); commentVM.CreatedDateRelative = item.CreatedDate.ToJSONFriendlyDateTime();//.ToRelativeDateTime(); commentVM.IsOwner = item.CreatedByID == currentUserId; return commentVM; }
public async Task SendEmailNotificaionForNewComment(CommentVM comment) { await commentEmailManager.SendNewCommentEmail(comment,userSessionHelper.TeamId); }
public int SaveComment(CommentVM comment) { return commentRepository.Save(comment); }