Пример #1
0
 public SubscriptionView Map(Subscription source)
 {
     return(new SubscriptionView(
                source.Id,
                userViewMapper.Map(source.User),
                spaceViewMapper.Map(source.Space)
                ));
 }
Пример #2
0
        public PostView Map(Post post)
        {
            UserView  userView  = userMapper.Map(post.User);
            SpaceView spaceView = spaceMapper.Map(post.Space);
            VoteView? voteView  = post.Vote != null?voteMapper.Map(post.Vote) : null;

            return(new PostView(post.Id, post.Type, post.Title, post.Body, userView, spaceView, post.CreationDate, post.CommentCount, post.WasUpdated, post.WasDeleted, post.Upvotes, post.Downvotes, voteView));
        }
Пример #3
0
        protected override async Task <SpaceView?> HandleInput(FindByValueParams <string> input)
        {
            using (var connection = database.GetConnection()) {
                ISpaceRepo spaceRepo = database.GetRepo <ISpaceRepo>(connection);

                Space?s = await spaceRepo.FindByName(input.Value);

                return(s != null?spaceMapper.Map(s) : null);
            }
        }
Пример #4
0
        protected override async Task <PagedResultSet <SpaceView> > HandleInput(FindParams input)
        {
            using (var connection = database.GetConnection()) {
                ISpaceRepo spaceRepo = database.GetRepo <ISpaceRepo>(connection);

                PagedResultSet <Space> spaces = await spaceRepo.Find(input.Pagination?.PageNumber ?? 0, input.Pagination?.PageSize ?? Post.PageSize);

                return(new PagedResultSet <SpaceView>(spaces.Select(s => mapper.Map(s)), spaces.Pagination));
            }
        }
Пример #5
0
        protected override async Task <IEnumerable <SpaceView> > HandleInput(FindByValueParams <string> input)
        {
            using (var connection = database.GetConnection()) {
                ISubscriptionRepo subRepo = database.GetRepo <ISubscriptionRepo>(connection);

                IEnumerable <Subscription> subs = await subRepo.FindByUser(input.Value);

                return(subs.Select(s => spaceMapper.Map(s.Space)));
            }
        }
Пример #6
0
        protected override async Task <IEnumerable <SpaceView> > HandleInput(FindParams input)
        {
            using (var connection = database.GetConnection()) {
                ISpaceRepo spaceRepo = database.GetRepo <ISpaceRepo>(connection);

                IEnumerable <Space> spaces = await spaceRepo.FindDefault();

                return(spaces.Select(s => spaceMapper.Map(s)));
            }
        }
Пример #7
0
        protected override async Task <SpaceView> HandleInput(SpaceUpdateParams input)
        {
            using (var connection = database.GetConnection()) {
                ISpaceRepo spaceRepo = database.GetRepo <ISpaceRepo>(connection);

                Space?s = await spaceRepo.FindByName(input.Name);

                if (s == null)
                {
                    throw new InvalidOperationException();
                }

                if (!(await this.spacePermissionHandler.HasPermission(input.User, PermissionAction.UpdateSpace, s)))
                {
                    throw new AuthorizationException();
                }

                s.Description = input.Description;
                await spaceRepo.Update(s);

                return(spaceMapper.Map(s));
            }
        }
Пример #8
0
        protected override async Task <SpaceView> HandleInput(SpaceCreateParams input)
        {
            using (var connection = database.GetConnection()) {
                ISpaceRepo spaceRepo = database.GetRepo <ISpaceRepo>(connection);
                Space?     existing  = await spaceRepo.FindByName(input.Name);

                if (existing != null)
                {
                    throw new InvalidOperationException($"Space name {input.Name} is already taken.");
                }

                Space s = new Space()
                {
                    Name         = input.Name,
                    Description  = input.Description,
                    User         = input.User,
                    CreationDate = DateTime.UtcNow
                };

                await spaceRepo.Add(s);

                return(spaceMapper.Map(s));
            }
        }