示例#1
0
 public ActionResult PrivateMessages(DialoguePage page)
 {
     if (CurrentMember.DisablePrivateMessages)
     {
         var message = new GenericMessageViewModel
         {
             Message     = Lang("Errors.NoPermission"),
             MessageType = GenericMessages.Danger
         };
         ShowMessage(message);
         return(Redirect(Settings.ForumRootUrl));
     }
     using (UnitOfWorkManager.NewUnitOfWork())
     {
         var pageIndex     = AppHelpers.ReturnCurrentPagingNo();
         var pagedMessages = PrivateMessageService.GetPagedReceivedMessagesByUser(pageIndex, DialogueConfiguration.Instance.PrivateMessageListSize, CurrentMember);
         var viewModel     = new PageListPrivateMessageViewModel(page)
         {
             ListPrivateMessageViewModel = new ListPrivateMessageViewModel
             {
                 Messages   = pagedMessages,
                 PageIndex  = pageIndex,
                 TotalCount = pagedMessages.TotalCount
             },
             PageTitle = Lang("PM.ReceivedPrivateMessages")
         };
         return(View(PathHelper.GetThemeViewPath("PrivateMessages"), viewModel));
     }
 }
示例#2
0
        public ActionResult Delete(DeletePrivateMessageViewModel deletePrivateMessageViewModel)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                if (Request.IsAjaxRequest())
                {
                    var privateMessage = PrivateMessageService.Get(deletePrivateMessageViewModel.Id);
                    if (privateMessage.MemberToId == CurrentMember.Id | privateMessage.MemberFromId == CurrentMember.Id)
                    {
                        PrivateMessageService.DeleteMessage(privateMessage);
                    }
                    else
                    {
                        throw new Exception(Lang("Errors.NoPermission"));
                    }
                }

                try
                {
                    unitOfWork.Commit();
                }
                catch (Exception ex)
                {
                    unitOfWork.Rollback();
                    LogError(ex);
                    throw new Exception(Lang("Errors.GenericMessage"));
                }
            }

            return(null);
        }
        private PrivateMessageService GetService()
        {
            _mockPMRepo    = new Mock <IPrivateMessageRepository>();
            _mockSettings  = new Mock <ISettingsManager>();
            _mockTextParse = new Mock <ITextParsingService>();
            var service = new PrivateMessageService(_mockPMRepo.Object, _mockSettings.Object, _mockTextParse.Object);

            return(service);
        }
        public void BeforeEachTest()
        {
            _botServiceMock           = new Mock <IBotService>();
            _withdrawalService        = new Mock <IWithdrawalService>();
            _walletUserRepositoryMock = new Mock <IWalletUserRepository>();
            _settingsServiceMock      = new Mock <ISettingsService>();
            _botConfigurationMock     = new BotConfiguration();
            var botConfigurationOptions = Options.Create(_botConfigurationMock);

            _sut = new PrivateMessageService(botConfigurationOptions, _botServiceMock.Object,
                                             _walletUserRepositoryMock.Object, _withdrawalService.Object, _settingsServiceMock.Object);
        }
示例#5
0
        public ActionResult ViewPrivateMessage(DialoguePage page)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                var id = Request["id"];
                if (string.IsNullOrEmpty(id))
                {
                    return(ErrorToHomePage(Lang("Errors.GenericMessage")));
                }

                var message = PrivateMessageService.Get(new Guid(id));

                if (message.MemberToId == CurrentMember.Id | message.MemberFromId == CurrentMember.Id)
                {
                    //Mark as read if this is the receiver of the message
                    if (message.MemberToId == CurrentMember.Id)
                    {
                        // Update message as read
                        message.IsRead = true;

                        // Get the sent version and update that too
                        var sentMessage = PrivateMessageService.GetMatchingSentPrivateMessage(message.Subject, message.DateSent, message.MemberFromId, message.MemberToId);
                        if (sentMessage != null)
                        {
                            sentMessage.IsRead = true;
                        }

                        try
                        {
                            unitOfWork.Commit();
                        }
                        catch (Exception ex)
                        {
                            unitOfWork.Rollback();
                            LogError(ex);
                        }
                    }
                    var viewModel = new ViewPrivateMessageViewModel(page)
                    {
                        Message   = message,
                        PageTitle = message.Subject
                    };
                    return(View(PathHelper.GetThemeViewPath("PrivateMessageView"), viewModel));
                }

                return(ErrorToHomePage(Lang("Errors.NoPermission")));
            }
        }
示例#6
0
 public ActionResult PrivateMessagesSent(DialoguePage page)
 {
     using (UnitOfWorkManager.NewUnitOfWork())
     {
         var pageIndex     = AppHelpers.ReturnCurrentPagingNo();
         var pagedMessages = PrivateMessageService.GetPagedSentMessagesByUser(pageIndex, DialogueConfiguration.Instance.PrivateMessageListSize, CurrentMember);
         var viewModel     = new PageListPrivateMessageViewModel(page)
         {
             ListPrivateMessageViewModel = new ListPrivateMessageViewModel
             {
                 Messages = pagedMessages
             },
             PageTitle = Lang("PM.SentPrivateMessages")
         };
         return(View(PathHelper.GetThemeViewPath("PrivateMessagesSent"), viewModel));
     }
 }
示例#7
0
        public void CreateShouldCreateVote()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "CreateShouldCreateVote_DB")
                          .Options;

            var dbContext = new ApplicationDbContext(options);

            var privateMessageService = new PrivateMessageService(dbContext);

            var pm = new PrivateMessage();

            privateMessageService.Create(pm);

            var pmTest = dbContext.PrivateMessages.ToList();

            Assert.Single(pmTest);
        }
        private static void MemberServiceOnDeleting(IMemberService sender, DeleteEventArgs <IMember> deleteEventArgs)
        {
            var memberService     = new Services.MemberService();
            var unitOfWorkManager = new UnitOfWorkManager(ContextPerRequest.Db);

            var uploadedFileService         = new UploadedFileService();
            var postService                 = new PostService();
            var memberPointsService         = new MemberPointsService();
            var pollService                 = new PollService();
            var topicService                = new TopicService();
            var topicNotificationService    = new TopicNotificationService();
            var activityService             = new ActivityService();
            var privateMessageService       = new PrivateMessageService();
            var badgeService                = new BadgeService();
            var voteService                 = new VoteService();
            var categoryNotificationService = new CategoryNotificationService();

            using (var unitOfWork = unitOfWorkManager.NewUnitOfWork())
            {
                try
                {
                    foreach (var member in deleteEventArgs.DeletedEntities)
                    {
                        var canDelete = memberService.DeleteAllAssociatedMemberInfo(member.Id, unitOfWork, uploadedFileService, postService, memberPointsService, pollService, topicService,
                                                                                    topicNotificationService, activityService, privateMessageService, badgeService, voteService, categoryNotificationService);
                        if (!canDelete)
                        {
                            deleteEventArgs.Cancel = true;
                            //TODO - THIS DOESN'T WORK - JUST LOG IT
                            //var clientTool = new ClientTools((Page)HttpContext.Current.CurrentHandler);
                            //clientTool.ShowSpeechBubble(SpeechBubbleIcon.Error, "Error", "Unable to delete member. Check logfile for further information");
                            AppHelpers.LogError($"There was an error attemping to delete member {member.Name} and all of their associated data (Posts, Topics etc...)");

                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    AppHelpers.LogError("Error attempting to delete members", ex);
                }
            }
        }
示例#9
0
 public PartialViewResult SideAdminPanel()
 {
     using (UnitOfWorkManager.NewUnitOfWork())
     {
         var count = 0;
         if (CurrentMember != null)
         {
             count = PrivateMessageService.NewPrivateMessageCount(CurrentMember.Id);
         }
         if (count > 0)
         {
             ShowMessage(new GenericMessageViewModel
             {
                 Message     = Lang("Member.HasNewPrivateMessages"),
                 MessageType = GenericMessages.Info
             });
         }
         return(PartialView(PathHelper.GetThemePartialViewPath("SideAdminPanel"),
                            new ViewAdminSidePanelViewModel {
             CurrentUser = CurrentMember, NewPrivateMessageCount = count
         }));
     }
 }
示例#10
0
        public ActionResult Create(CreatePrivateMessageViewModel createPrivateMessageViewModel)
        {
            if (!Settings.AllowPrivateMessages || CurrentMember.DisablePrivateMessages)
            {
                return(ErrorToHomePage(Lang("Errors.GenericMessage")));
            }
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                if (ModelState.IsValid)
                {
                    var userTo = createPrivateMessageViewModel.UserToUsername;

                    // first check they are not trying to message themself!
                    if (!string.Equals(userTo, CurrentMember.UserName, StringComparison.CurrentCultureIgnoreCase))
                    {
                        // Map the view model to message
                        var privateMessage = new PrivateMessage
                        {
                            MemberFrom   = CurrentMember,
                            MemberFromId = CurrentMember.Id,
                            Subject      = createPrivateMessageViewModel.Subject,
                            Message      = createPrivateMessageViewModel.Message
                        };
                        // now get the user its being sent to
                        var memberTo = MemberService.Get(userTo);

                        // check the member
                        if (memberTo != null)
                        {
                            // Check in box size
                            // First check sender
                            var receiverCount = PrivateMessageService.GetAllReceivedByUser(memberTo.Id).Count;
                            if (receiverCount > Settings.PrivateMessageInboxSize)
                            {
                                ModelState.AddModelError(string.Empty, string.Format(Lang("PM.ReceivedItemsOverCapcity"), memberTo.UserName));
                            }
                            else
                            {
                                // Good to go send the message!
                                privateMessage.MemberTo   = memberTo;
                                privateMessage.MemberToId = memberTo.Id;
                                PrivateMessageService.Add(privateMessage);

                                try
                                {
                                    ShowMessage(new GenericMessageViewModel
                                    {
                                        Message     = Lang("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 = Settings.NotificationReplyEmailAddress,
                                            EmailTo   = memberTo.Email,
                                            Subject   = Lang("PM.NewPrivateMessageSubject"),
                                            NameTo    = memberTo.UserName
                                        };

                                        var sb = new StringBuilder();
                                        sb.AppendFormat("<p>{0}</p>", string.Format(Lang("PM.NewPrivateMessageBody"), CurrentMember.UserName));
                                        email.Body = EmailService.EmailTemplate(email.NameTo, sb.ToString());
                                        EmailService.SendMail(email);
                                    }

                                    return(Redirect(Urls.GenerateUrl(Urls.UrlType.MessageInbox)));
                                }
                                catch (Exception ex)
                                {
                                    unitOfWork.Rollback();
                                    LogError(ex);
                                    ModelState.AddModelError(string.Empty, Lang("Errors.GenericMessage"));
                                }
                            }
                        }
                        else
                        {
                            // Error send back to user
                            ModelState.AddModelError(string.Empty, Lang("PM.UnableFindMember"));
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, Lang("PM.TalkToSelf"));
                    }
                }
                ShowMessage();
                return(Redirect(Urls.GenerateUrl(Urls.UrlType.MessageCreate)));
            }
        }
示例#11
0
        public ActionResult PrivateMessagesCreate(DialoguePage page)
        {
            var to = Request["to"];
            var id = Request["id"];

            // Check if private messages are enabled
            if (!Settings.AllowPrivateMessages || CurrentMember.DisablePrivateMessages)
            {
                return(ErrorToHomePage(Lang("Errors.GenericMessage")));
            }

            // Check flood control
            var lastMessage = PrivateMessageService.GetLastSentPrivateMessage(CurrentMember.Id);

            if (lastMessage != null && AppHelpers.TimeDifferenceInMinutes(DateTime.UtcNow, lastMessage.DateSent) < Settings.PrivateMessageFloodControl)
            {
                ShowMessage(new GenericMessageViewModel
                {
                    Message     = Lang("PM.SendingToQuickly"),
                    MessageType = GenericMessages.Danger
                });
                return(Redirect(Urls.GenerateUrl(Urls.UrlType.MessageInbox)));
            }

            // Check outbox size
            var senderCount = PrivateMessageService.GetAllSentByUser(CurrentMember.Id).Count;

            if (senderCount > Settings.PrivateMessageInboxSize)
            {
                ShowMessage(new GenericMessageViewModel
                {
                    Message     = Lang("PM.SentItemsOverCapcity"),
                    MessageType = GenericMessages.Danger
                });
                return(Redirect(Urls.GenerateUrl(Urls.UrlType.MessageInbox)));
            }

            var viewModel = new PageCreatePrivateMessageViewModel(page)
            {
                CreatePrivateMessageViewModel = new CreatePrivateMessageViewModel(),
                PageTitle = Lang("PM.CreatePrivateMessage")
            };

            // add the username to the to box if available
            if (to != null)
            {
                var userTo = MemberService.Get(Convert.ToInt32(to));
                viewModel.CreatePrivateMessageViewModel.UserToUsername = userTo.UserName;
            }

            // See if this is a reply or not
            if (id != null)
            {
                var previousMessage = PrivateMessageService.Get(new Guid(id));
                // Its a reply, get the details
                viewModel.CreatePrivateMessageViewModel.UserToUsername  = previousMessage.MemberFrom.UserName;
                viewModel.CreatePrivateMessageViewModel.Subject         = previousMessage.Subject;
                viewModel.CreatePrivateMessageViewModel.PreviousMessage = previousMessage.Message;
            }
            return(View(PathHelper.GetThemeViewPath("PrivateMessagesCreate"), viewModel));
        }
示例#12
0
 public PrivateMessageController(PrivateMessageService privateMessageService)
 {
     _privateMessageService = privateMessageService;
 }