Example #1
0
        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()
            });
        }
Example #2
0
 public SuggestionDetailResource Post(ViewSugestionRequest request)
 {
     return(_service.ViewSuggestion(User, request));
 }
 public HttpResponseMessage Post(ViewSugestionRequest request)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, _service.ViewSuggestion(User, request)));
 }