public override async Task <UpdateCharityActionResponse> Handle(UpdateCharityActionRequest message)
        {
            var charityAction = await _context.CharityActions.Include(b => b.UserKeys).FirstOrDefaultAsync(b => b.CharityActionKey.Equals(message.CharityActionKey));

            if (charityAction == null)
            {
                return(Error(ErrorType.NotFound));
            }

            _context.Entry(charityAction).CurrentValues.SetValues(message);
            _context.UserKeys.RemoveRange(charityAction.UserKeys);
            var mappedKeys = _mapper.Map <List <UserKey> >(message.UserKeys);

            _context.UserKeys.AddRange(mappedKeys);
            charityAction.UserKeys = mappedKeys;

            if (await _context.TrySaveChangesAsync())
            {
                await _bus.PublishAsync(_mapper.Map <CharityActionUpdatedEvent>(charityAction));

                return(Success());
            }

            return(Error(ErrorType.DatabaseError));
        }
        public override async Task <ApproveCharityActionResponse> Handle(ApproveCharityActionRequest message)
        {
            var charityAction =
                await _context.CharityActions.FirstOrDefaultAsync(b =>
                                                                  b.CharityActionKey.Equals(message.CharityActionKey));

            if (charityAction != null)
            {
                if (charityAction.IsApproved)
                {
                    return(Error(ErrorType.AlreadyActive));
                }

                charityAction.IsApproved = true;

                if (await _context.TrySaveChangesAsync())
                {
                    await _bus.PublishAsync(_mapper.Map <CharityActionCreatedEvent>(charityAction));

                    return(Success());
                }

                return(Error(ErrorType.DatabaseError));
            }

            return(Error(ErrorType.NotFound));
        }
Beispiel #3
0
        public async Task <ApproveCharityActionResponse> Handle(ApproveCharityActionRequest message)
        {
            var charityAction = await _context.CharityActions.FirstOrDefaultAsync(b => b.CharityActionKey.Equals(message.CharityActionKey));

            if (charityAction != null)
            {
                if (charityAction.IsApproved)
                {
                    return new ApproveCharityActionResponse
                           {
                               ErrorType = ErrorType.AlreadyActive
                           }
                }
                ;

                charityAction.IsApproved = true;
                if (!await _context.TrySaveChangesAsync())
                {
                    return(new ApproveCharityActionResponse());
                }

                var charityActionCreatedEvent = _mapper.Map <CharityActionCreatedEvent>(charityAction);
                await _bus.PublishAsync(charityActionCreatedEvent);

                return(ApproveCharityActionResponse.Success());
            }

            return(new ApproveCharityActionResponse
            {
                ErrorType = ErrorType.NotFound
            });
        }
    }
Beispiel #4
0
        public async Task <CreateCharityActionResponse> Handle(CreateCharityActionRequest message)
        {
            var charityAction = _mapper.Map <CharityAction>(message);

            if (charityAction.CharityActionKey == default)
            {
                return(new CreateCharityActionResponse
                {
                    ErrorType = ErrorType.InvalidKey
                });
            }

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

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

            charityAction.Charity = charity;
            _context.CharityActions.Add(charityAction);

            return(await _context.TrySaveChangesAsync <CreateCharityActionResponse>());
        }
Beispiel #5
0
        public async Task <DeleteCharityActionResponse> Handle(DeleteCharityActionRequest message)
        {
            var charityAction = await _context.CharityActions.Include(b => b.UserKeys).FirstOrDefaultAsync(b => b.CharityActionKey.Equals(message.CharityActionKey));

            if (charityAction == null)
            {
                return(new DeleteCharityActionResponse());
            }

            _context.CharityActions.Remove(charityAction);
            _context.UserKeys.RemoveRange(charityAction.UserKeys);

            if (!await _context.TrySaveChangesAsync())
            {
                return(new DeleteCharityActionResponse());
            }

            var charityActionDeletedEvent = _mapper.Map <CharityActionDeletedEvent>(charityAction);
            await _bus.PublishAsync(charityActionDeletedEvent);

            return(DeleteCharityActionResponse.Success());
        }