/// <summary> /// Add a private message /// </summary> /// <param name="message"></param> /// <returns></returns> public PrivateMessage Add(PrivateMessage message) { // This is the message that the other user sees message = SanitizeMessage(message); message.DateSent = DateTime.UtcNow; message.IsSentMessage = false; var e = new PrivateMessageEventArgs { PrivateMessage = message }; EventManager.Instance.FireBeforePrivateMessage(this, e); if (!e.Cancel) { message = _context.PrivateMessage.Add(message); // We create a sent message that sits in the users sent folder, this is // so that if the receiver deletes the message - The sender still has a record of it. var sentMessage = new PrivateMessage { IsSentMessage = true, DateSent = message.DateSent, Message = message.Message, UserFrom = message.UserFrom, UserTo = message.UserTo }; _context.PrivateMessage.Add(sentMessage); EventManager.Instance.FireAfterPrivateMessage(this, new PrivateMessageEventArgs { PrivateMessage = message }); } // Return the main message return message; }
/// <summary> /// Add a private message /// </summary> /// <param name="message"></param> /// <returns></returns> public PrivateMessage Add(PrivateMessage message) { // This is the message that the other user sees message = SanitizeMessage(message); message.DateSent = DateTime.UtcNow; message.IsSentMessage = false; var origMessage = _privateMessageRepository.Add(message); // We create a sent message that sits in the users sent folder, this is // so that if the receiver deletes the message - The sender still has a record of it. var sentMessage = new PrivateMessage { IsSentMessage = true, DateSent = message.DateSent, Message = message.Message, UserFrom = message.UserFrom, UserTo = message.UserTo }; _privateMessageRepository.Add(sentMessage); // Return the main message return origMessage; }
/// <summary> /// Save a private message /// </summary> /// <param name="message"></param> public void Save(PrivateMessage message) { message = SanitizeMessage(message); _privateMessageRepository.Update(message); }
public PrivateMessage SanitizeMessage(PrivateMessage privateMessage) { privateMessage.Message = StringUtils.GetSafeHtml(privateMessage.Message); return privateMessage; }
/// <summary> /// Delete a private message /// </summary> /// <param name="message"></param> public void DeleteMessage(PrivateMessage message) { _privateMessageRepository.Delete(message); }
public void Delete(PrivateMessage item) { _context.PrivateMessage.Remove(item); }
public PrivateMessage Add(PrivateMessage item) { return _context.PrivateMessage.Add(item); }
public ActionResult Create(CreatePrivateMessageViewModel createPrivateMessageViewModel) { if (!SettingsService.GetSettings().EnablePrivateMessages || LoggedOnUser.DisablePrivateMessages == true) { return ErrorToHomePage(LocalizationService.GetResourceString("Errors.GenericMessage")); } using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { if (ModelState.IsValid) { var userTo = createPrivateMessageViewModel.UserToUsername; // first check they are not trying to message themself! if (userTo.ToLower() != LoggedOnUser.UserName.ToLower()) { // Map the view model to message var privateMessage = new PrivateMessage { UserFrom = LoggedOnUser, Subject = createPrivateMessageViewModel.Subject, Message = createPrivateMessageViewModel.Message, }; // now get the user its being sent to var memberTo = MembershipService.GetUser(userTo); // check the member if (memberTo != null) { // Check in box size // First check sender var receiverCount = _privateMessageService.GetAllReceivedByUser(memberTo.Id).Count; if (receiverCount > SettingsService.GetSettings().MaxPrivateMessagesPerMember) { ModelState.AddModelError(string.Empty, string.Format(LocalizationService.GetResourceString("PM.ReceivedItemsOverCapcity"), memberTo.UserName)); } else { // Good to go send the message! privateMessage.UserTo = memberTo; _privateMessageService.Add(privateMessage); try { TempData[AppConstants.MessageViewBagName] = new GenericMessageViewModel { Message = LocalizationService.GetResourceString("PM.MessageSent"), MessageType = GenericMessages.success }; unitOfWork.Commit(); // Finally send an email to the user so they know they have a new private message // As long as they have not had notifications disabled if (memberTo.DisableEmailNotifications != true) { var email = new Email { EmailFrom = SettingsService.GetSettings().NotificationReplyEmail, EmailTo = memberTo.Email, Subject = LocalizationService.GetResourceString("PM.NewPrivateMessageSubject"), NameTo = memberTo.UserName }; var sb = new StringBuilder(); sb.AppendFormat("<p>{0}</p>", string.Format(LocalizationService.GetResourceString("PM.NewPrivateMessageBody"), LoggedOnUser.UserName)); email.Body = _emailService.EmailTemplate(email.NameTo, sb.ToString()); _emailService.SendMail(email); } return RedirectToAction("Index"); } catch (Exception ex) { unitOfWork.Rollback(); LoggingService.Error(ex); ModelState.AddModelError(string.Empty, LocalizationService.GetResourceString("Errors.GenericMessage")); } } } else { // Error send back to user ModelState.AddModelError(string.Empty, LocalizationService.GetResourceString("PM.UnableFindMember")); } } else { ModelState.AddModelError(string.Empty, LocalizationService.GetResourceString("PM.TalkToSelf")); } } TempData[AppConstants.MessageViewBagName] = null; return View(createPrivateMessageViewModel); } }
public void Update(PrivateMessage item) { // Check there's not an object with same identifier already in context if (_context.PrivateMessage.Local.Select(x => x.Id == item.Id).Any()) { throw new ApplicationException("Object already exists in context - you do not need to call Update. Save occurs on Commit"); } _context.Entry(item).State = EntityState.Modified; }
public ActionResult Create(CreatePrivateMessageViewModel createPrivateMessageViewModel) { if (!SettingsService.GetSettings().EnablePrivateMessages || LoggedOnUser.DisablePrivateMessages == true) { throw new Exception(LocalizationService.GetResourceString("Errors.GenericMessage")); } using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { if (ModelState.IsValid) { // Check flood control var lastMessage = _privateMessageService.GetLastSentPrivateMessage(LoggedOnUser.Id); if (lastMessage != null && DateUtils.TimeDifferenceInMinutes(DateTime.UtcNow, lastMessage.DateSent) < SettingsService.GetSettings().PrivateMessageFloodControl) { throw new Exception(LocalizationService.GetResourceString("PM.SendingToQuickly")); } var memberTo = MembershipService.GetUser(createPrivateMessageViewModel.To); // first check they are not trying to message themself! if (memberTo != null) { // Map the view model to message var privateMessage = new PrivateMessage { UserFrom = LoggedOnUser, Message = createPrivateMessageViewModel.Message, }; // check the member if (!String.Equals(memberTo.UserName, LoggedOnUser.UserName, StringComparison.CurrentCultureIgnoreCase)) { // Check in box size for both var receiverCount = _privateMessageService.GetAllReceivedByUser(memberTo.Id).Count; if (receiverCount > SettingsService.GetSettings().MaxPrivateMessagesPerMember) { throw new Exception(string.Format(LocalizationService.GetResourceString("PM.ReceivedItemsOverCapcity"), memberTo.UserName)); } // If the receiver is about to go over the allowance them let then know too if (receiverCount > (SettingsService.GetSettings().MaxPrivateMessagesPerMember - SiteConstants.PrivateMessageWarningAmountLessThanAllowedSize)) { // Send user a warning they are about to exceed var sb = new StringBuilder(); sb.AppendFormat("<p>{0}</p>", LocalizationService.GetResourceString("PM.AboutToExceedInboxSizeBody")); var email = new Email { EmailTo = memberTo.Email, NameTo = memberTo.UserName, Subject = LocalizationService.GetResourceString("PM.AboutToExceedInboxSizeSubject") }; email.Body = _emailService.EmailTemplate(email.NameTo, sb.ToString()); _emailService.SendMail(email); } // Good to go send the message! privateMessage.UserTo = memberTo; _privateMessageService.Add(privateMessage); try { // Finally send an email to the user so they know they have a new private message // As long as they have not had notifications disabled if (memberTo.DisableEmailNotifications != true) { var email = new Email { EmailTo = memberTo.Email, Subject = LocalizationService.GetResourceString("PM.NewPrivateMessageSubject"), NameTo = memberTo.UserName }; var sb = new StringBuilder(); sb.AppendFormat("<p>{0}</p>", string.Format(LocalizationService.GetResourceString("PM.NewPrivateMessageBody"), LoggedOnUser.UserName)); email.Body = _emailService.EmailTemplate(email.NameTo, sb.ToString()); _emailService.SendMail(email); } unitOfWork.Commit(); return PartialView("_PrivateMessage", privateMessage); } catch (Exception ex) { unitOfWork.Rollback(); LoggingService.Error(ex); throw new Exception(LocalizationService.GetResourceString("Errors.GenericMessage")); } } else { throw new Exception(LocalizationService.GetResourceString("PM.TalkToSelf")); } } else { // Error send back to user throw new Exception(LocalizationService.GetResourceString("PM.UnableFindMember")); } } throw new Exception(LocalizationService.GetResourceString("Errors.GenericMessage")); } }
public PrivateMessage SanitizeMessage(PrivateMessage privateMessage) { privateMessage.Message = StringUtils.GetSafeHtml(privateMessage.Message); privateMessage.Subject = StringUtils.SafePlainText(privateMessage.Subject); return privateMessage; }
/// <summary> /// Delete a private message /// </summary> /// <param name="message"></param> public void DeleteMessage(PrivateMessage message) { _context.PrivateMessage.Remove(message); }
/// <summary> /// Add a private message /// </summary> /// <param name="message"></param> /// <returns></returns> public PrivateMessage Add(PrivateMessage message) { message = SanitizeMessage(message); message.DateSent = DateTime.UtcNow; return _privateMessageRepository.Add(message); }