public override async Task <CommandResponse> HandleCommand( CancelDepositChargeCommandModel request, CancellationToken cancellationToken) { var validModel = await CheckIfModelIsValid(request); if (!validModel) { return(ReplyFlowFailure()); } var charge = await GetCharge(request.DepositId); charge.Cancel(); await _depositRepository.UpdateChargeStatus(charge); var commited = await _depositRepository.Commit(); if (!commited) { throw new Exception($"Não foi possível cancelar a transação {charge.Id}."); } // todo: PublishDepositCanceledIntegrationEvent(); return(ReplySuccessful()); }