Newer
Older
MessageEncryption / src / ApplicationCore / Features / PlaceOrder / PlaceOrder.cs
@Derek Comartin Derek Comartin on 1 Dec 2021 1 KB Init
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate;
using Microsoft.eShopWeb.ApplicationCore.Interfaces;
using Microsoft.eShopWeb.ApplicationCore.Services;
using NServiceBus;
using NServiceBus.Encryption.MessageProperty;

namespace Microsoft.eShopWeb.Features.PlaceOrder
{
    public class PlaceOrderCommand : ICommand
    {
        public string BuyerId { get; set; }
        public Address Address { get; set; }
        public List<OrderItem> Items { get; set; }
        public CreditCardEncrypted CreditCard { get; set; }

        public class CreditCardEncrypted
        {
            public EncryptedString Number { get; set; }
            public EncryptedString Expiry { get; set; }
            public EncryptedString Cvv { get; set; }
        }
    }

    public class PlaceOrderHandler : IHandleMessages<PlaceOrderCommand>
    {
        private readonly IPaymentGateway _paymentGateway;

        public PlaceOrderHandler(IPaymentGateway paymentGateway)
        {
            _paymentGateway = paymentGateway;
        }

        public async Task Handle(PlaceOrderCommand message, IMessageHandlerContext context)
        {
            await _paymentGateway.ProcessCreditCard(message.CreditCard.Number.Value, message.CreditCard.Expiry.Value, message.CreditCard.Cvv.Value);
        }
    }
}