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