public async Task <ApproveStoryResponse> Handle(ApproveStoryRequest message)
        {
            var story = await _context.Stories.FirstOrDefaultAsync(b => b.StoryKey.Equals(message.StoryKey));

            if (story != null)
            {
                if (story.IsApproved)
                {
                    return new ApproveStoryResponse
                           {
                               ErrorType = ErrorType.AlreadyActive
                           }
                }
                ;

                story.IsApproved = true;

                return(await _context.TrySaveChangesAsync <ApproveStoryResponse>());
            }

            return(new ApproveStoryResponse
            {
                ErrorType = ErrorType.NotFound
            });
        }
    }
Example #2
0
        public async Task <UpdateStoryResponse> Handle(UpdateStoryRequest message)
        {
            var story = await _context.Stories.IncludeImages().FirstOrDefaultAsync(s => s.StoryKey == message.StoryKey);

            if (story == null)
            {
                return(new UpdateStoryResponse
                {
                    ErrorType = ErrorType.NotFound
                });
            }

            _context.Entry(story).CurrentValues.SetValues(message);
            _context.Images.RemoveRange(story.Images);
            story.Images.Clear();

            if (message.Images != null)
            {
                var images = message.Images.Select(i => new Image {
                    Base64 = i
                }).ToList();
                _context.Images.AddRange(images);
                story.Images = images;
            }

            return(await _context.TrySaveChangesAsync <UpdateStoryResponse>());
        }
        public override async Task <CreateStoryResponse> Handle(CreateStoryRequest message)
        {
            var story = _mapper.Map <Story>(message);

            if (story.StoryKey == default)
            {
                return(Error(ErrorType.InvalidKey));
            }

            if (message.AuthorUserKey.HasValue)
            {
                var user = await _context.Users.FirstOrDefaultAsync(u => u.UserKey == message.AuthorUserKey);

                if (user != null)
                {
                    story.Author = user;
                }
                else
                {
                    return(Error(ErrorType.InvalidUserKey));
                }
            }

            var charity = await _context.Charities.FirstOrDefaultAsync(c => c.CharityKey == message.CharityKey);

            if (charity == null)
            {
                return(Error(ErrorType.CharityNotFound));
            }

            story.Charity = charity;
            _context.Stories.Add(story);

            return(await _context.TrySaveChangesAsync <CreateStoryResponse>());
        }