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));
        }
Exemple #2
0
        public async Task ConsumeAsync(CharityUpdatedEvent message)
        {
            var charityToUpdate = await _context.Charities.FirstOrDefaultAsync(a => a.CharityKey == message.CharityKey);

            if (charityToUpdate != null)
            {
                _context.Entry(charityToUpdate).CurrentValues.SetValues(message);
            }

            await _context.SaveChangesAsync();
        }