예제 #1
0
        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());
        }