public object Post(CommentGetAllByPlayerIdRequest request) { var comments = CommentRepository.GetAllByPlayerId(request.PlayerId).OrderByDescending(c => c.CreateDate).ToList(); SetCommentViewProperties(request, comments); return comments; }
private void SetCommentViewProperties(CommentGetAllByPlayerIdRequest request, IEnumerable<CommentView> comments) { int editOrDeleteTolerance; var editOrDeleteToleranceValueExists = int.TryParse(ConfigurationManager.AppSettings[ApplicationSettingsKeys.EditOrDeleteToleranceInMinutes], out editOrDeleteTolerance); if (editOrDeleteToleranceValueExists == false) { throw new ConfigurationErrorsException(String.Format("{0} does not exist in web.config", ApplicationSettingsKeys.EditOrDeleteToleranceInMinutes)); } if (String.IsNullOrEmpty(request.AuthToken) == false) { try { var googleId = UserService.GetGoogleId(request.AuthToken, AuthTokenRepository, UserRepository); var user = UserRepository.GetUserByGoogleId(googleId); foreach (var commentView in comments) { if (user.IsAdmin || (googleId.Equals(commentView.GoogleId, StringComparison.OrdinalIgnoreCase) && (commentView.UpdateDate.HasValue ? DateTimeOffset.Now.Subtract(commentView.UpdateDate.Value).TotalMinutes : DateTimeOffset.Now.Subtract(commentView.CreateDate).TotalMinutes) < editOrDeleteTolerance ) ) { commentView.CanEditOrDelete = true; } if (user.IsAdmin == false && googleId.Equals(commentView.GoogleId, StringComparison.OrdinalIgnoreCase) == false && FlaggedCommentRepository.GetUnhandledCommentsByFlaggedCommentByCommentIdAndGoogleId(commentView.CommentId, googleId).Any() == false) { commentView.CanFlag = true; } } } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } } }