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