예제 #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());
        }
예제 #2
0
        public override async Task <CommandResponse> HandleCommand(CreateDepositCommandModel request, CancellationToken cancellationToken)
        {
            var validModel = await CheckIfModelIsValid <CreateDepositCommandValidator>(request);

            if (!validModel)
            {
                return(ReplyFlowFailure());
            }

            var chargeValue = await TryTransformIntToDecimal(request.Value);

            if (chargeValue == 0M)
            {
                return(ReplyFlowFailure());
            }

            var charge  = new Charge(request.ProviderChargeId, chargeValue, request.CreatedAt);
            var deposit = new Depos(request.AccountId, charge);

            await _depositRepository.CreateAsync(deposit);

            await _depositRepository.Commit();

            return(ReplySuccessful(deposit.Id));
        }