public virtual SuggestionDetailResource ViewSuggestion(IPrincipal principal, ViewSugestionRequest request) { var user = _dependencies.UserService.GetGuaranteedAuthenticatedUser(principal); var suggestion = _dependencies.StorageService.SetOf <Suggestion>().FirstOrDefault(s => s.AuthorMember.Organisation.Members.Any(m => m.MemberAuth0Users.Any(a => a.Auth0UserId == user.Id)) && s.Id == request.SuggestionId); if (suggestion == null) { return(new SuggestionDetailResource { HasError = true, Error = "Suggestion not found." }); } var member = _dependencies.OrganisationService.GetGuaranteedMember(principal, suggestion.AuthorMember.OrganisationId); var vote = suggestion.Votes.SingleOrDefault(v => v.VoterMemberId == member.Id); return(new SuggestionDetailResource { OrganisationId = suggestion.AuthorMember.OrganisationId, Suggestion = suggestion.FullText, SuggestionSummary = BuildSummarySuggestion(suggestion, member), UserVoteId = vote?.Id, UserVoteIsSupporting = vote?.MemberIsSupportingSuggestion, MemberPermissions = _dependencies.OrganisationService.GetMemberPermissions(user, member.Organisation), UsersOwnSuggestion = suggestion.AuthorMemberId == member.Id, VotesFor = GetVoteCount(suggestion, true), VotesAgainst = GetVoteCount(suggestion, false), AbstentionCount = GetAbstentionCount(suggestion), VoteByLeader = vote?.VotingLeaderMemberId.HasValue, Comments = suggestion.Comments.Where(c => !c.IsCensored || c.CommentingMemberId == member.Id).Select(BuildCommentResource).ToList() }); }
public SuggestionDetailResource Post(ViewSugestionRequest request) { return(_service.ViewSuggestion(User, request)); }
public HttpResponseMessage Post(ViewSugestionRequest request) { return(Request.CreateResponse(HttpStatusCode.OK, _service.ViewSuggestion(User, request))); }