/// <summary> /// Executa o tratamento do comando /// </summary> /// <param name="message">Comando de Compra</param> public async Task <Response> Handle(PurchaseCommand message) { try { var wallet = await _walletRepository.GetWalletByUser(_authenticatedUser.UserId); wallet.Buy(message.Amount); foreach (var creditCard in wallet.CreditCards) { await _creditCardRepository.ChangeCardLimits(creditCard); } return(new Response($"Compra realizada com sucesso no valor de {message.Amount:C}")); } catch (Exception ex) { return(new Response().AddError(ex.Message)); } }
/// <summary> /// Executa o tratamento do comando /// </summary> /// <param name="message">Comando de Pagamento de Cartão de Crédito</param> public async Task <Response> Handle(PayCreditCardCommand message) { try { var creditCard = await _creditCardRepository.Get(message.CardId); creditCard.ReleaseCredit(message.Amount); await _creditCardRepository.ChangeCardLimits(creditCard); var response = new { amountPaid = message.Amount, creditCard.AvailableCredit, creditCard.PendingPayment }; return(new Response(response)); } catch (Exception ex) { return(new Response().AddError(ex.Message)); } }