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 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(); }