/// <summary> /// Mark a topic as solved /// </summary> /// <param name="topic"></param> /// <param name="post"></param> /// <param name="marker"></param> /// <param name="solutionWriter"></param> /// <returns>True if topic has been marked as solved</returns> public async Task <bool> SolveTopic(Topic topic, Post post, MembershipUser marker, MembershipUser solutionWriter) { var solved = false; var e = new MarkedAsSolutionEventArgs { Topic = topic, Post = post, Marker = marker, SolutionWriter = solutionWriter }; EventManager.Instance.FireBeforeMarkedAsSolution(this, e); if (!e.Cancel) { // Make sure this user owns the topic or this is an admin, if not do nothing if (topic.User.Id == marker.Id || marker.Roles.Any(x => x.RoleName == Constants.AdminRoleName)) { // Update the post post.IsSolution = true; //_postRepository.Update(post); // Update the topic topic.Solved = true; //SaveOrUpdate(topic); // Assign points // Do not give points to the user if they are marking their own post as the solution if (marker.Id != solutionWriter.Id) { var result = await _membershipUserPointsService.Add(new MembershipUserPoints { Points = _settingsService.GetSettings().PointsAddedForSolution, User = solutionWriter, PointsFor = PointsFor.Solution, PointsForId = post.Id }); if (!result.Successful) { // Just log don't throw _loggingService.Error(result.ProcessLog.FirstOrDefault()); } } EventManager.Instance.FireAfterMarkedAsSolution(this, new MarkedAsSolutionEventArgs { Topic = topic, Post = post, Marker = marker, SolutionWriter = solutionWriter }); solved = true; } } return(solved); }
/// <summary> /// Mark a topic as solved /// </summary> /// <param name="topic"></param> /// <param name="post"></param> /// <param name="marker"></param> /// <param name="solutionWriter"></param> /// <returns>True if topic has been marked as solved</returns> public bool SolveTopic(Topic topic, Post post, MembershipUser marker, MembershipUser solutionWriter) { var solved = false; var e = new MarkedAsSolutionEventArgs { Topic = topic, Post = post, Marker = marker, SolutionWriter = solutionWriter, Api = _api }; EventManager.Instance.FireBeforeMarkedAsSolution(this, e); if (!e.Cancel) { // Make sure this user owns the topic, if not do nothing if (topic.User.Id == marker.Id) { // Update the post post.IsSolution = true; //_postRepository.Update(post); // Update the topic topic.Solved = true; //SaveOrUpdate(topic); // Assign points // Do not give points to the user if they are marking their own post as the solution if (marker.Id != solutionWriter.Id) { _membershipUserPointsService.Add(new MembershipUserPoints { Points = _settingsService.GetSettings().PointsAddedForSolution, User = solutionWriter }); } EventManager.Instance.FireAfterMarkedAsSolution(this, new MarkedAsSolutionEventArgs { Topic = topic, Post = post, Marker = marker, SolutionWriter = solutionWriter, Api = _api }); solved = true; } } return(solved); }
/// <summary> /// Mark a topic as solved /// </summary> /// <param name="topic"></param> /// <param name="post"></param> /// <param name="marker"></param> /// <param name="solutionWriter"></param> /// <returns>True if topic has been marked as solved</returns> public bool SolveTopic(Topic topic, Post post, MembershipUser marker, MembershipUser solutionWriter) { var solved = false; var e = new MarkedAsSolutionEventArgs { Topic = topic, Post = post, Marker = marker, SolutionWriter = solutionWriter }; EventManager.Instance.FireBeforeMarkedAsSolution(this, e); if (!e.Cancel) { // Make sure this user owns the topic or this is an admin, if not do nothing if (topic.User.Id == marker.Id || marker.Roles.Any(x => x.RoleName == AppConstants.AdminRoleName)) { // Update the post post.IsSolution = true; //_postRepository.Update(post); // Update the topic topic.Solved = true; //SaveOrUpdate(topic); // Assign points // Do not give points to the user if they are marking their own post as the solution if (marker.Id != solutionWriter.Id) { _membershipUserPointsService.Add(new MembershipUserPoints { Points = _settingsService.GetSettings().PointsAddedForSolution, User = solutionWriter, PointsFor = PointsFor.Solution, PointsForId = post.Id }); } EventManager.Instance.FireAfterMarkedAsSolution(this, new MarkedAsSolutionEventArgs { Topic = topic, Post = post, Marker = marker, SolutionWriter = solutionWriter }); solved = true; } } return solved; }
private void eventsService_AfterMarkedAsSolution(object sender, MarkedAsSolutionEventArgs args) { args.SolutionWriter.Email = TestString; }
private void eventsService_BeforeMarkedAsSolutionAllow(object sender, MarkedAsSolutionEventArgs args) { args.Cancel = false; }
private void eventsService_BeforeMarkedAsSolutionCancel(object sender, MarkedAsSolutionEventArgs args) { args.Cancel = true; }