public async Task Consume(ConsumeContext <PaymentCreatedEvent> context)
        {
            PaymentCreatedEvent paymentCreatedEvent = context.Message;
            long orderId = long.Parse(paymentCreatedEvent.CorrelationId);

            await _distributedLockManager.LockAsync(OrderOperationKey(orderId),
                                                    async() =>
            {
                IOrderStateMachine orderStateMachine = await _orderStateMachineFactory.BuildOrderStateMachineAsync(orderId);
                orderStateMachine.SetAsPaymentStarted();
            });
        }
Esempio n. 2
0
 public Payment(PaymentCreatedEvent @event)
 {
     Id = @event.Id;
     AcquiringBankId = @event.AcquiringBankId;
     Amount          = @event.Amount;
     CardNumber      = @event.CardNumber;
     Cvv             = @event.Cvv;
     ExpiryYear      = @event.ExpiryYear;
     ExpiryMonth     = @event.ExpiryMonth;
     Currency        = @event.Currency;
     Status          = @event.Status;
 }
Esempio n. 3
0
 private void When(PaymentCreatedEvent @event)
 {
     Id                    = @event.Id;
     CardNumber            = @event.CardNumber;
     CardExpiryMonth       = @event.CardExpiryMonth;
     CardExpiryYear        = @event.CardExpiryYear;
     Amount                = @event.Amount;
     Currency              = @event.Currency;
     CVV                   = @event.CVV;
     EncriptionKey         = @event.EncriptionKey;
     BankPaymentIdentifier = @event.BankPaymentIdentifier;
     PaymentStatus         = @event.PaymentStatus;
     CreatedDate           = @event.OccurredOn;
 }
Esempio n. 4
0
        public Payment(string cardNumber,
                       string cardExpiryMonth,
                       string cardExpiryYear,
                       decimal amount,
                       string currency,
                       string cvv,
                       string encriptionKey,
                       string bankPaymentIdentifier, string paymentStatus)
        {
            var @event = new PaymentCreatedEvent(cardNumber,
                                                 cardExpiryMonth,
                                                 cardExpiryYear,
                                                 amount,
                                                 currency, cvv, encriptionKey, bankPaymentIdentifier, paymentStatus);

            AddDomainEvent(@event);
            Apply(@event);
        }
        public Task Process(string method, decimal amount)
        {
            var tEvent = new PaymentCreatedEvent();

            switch (method)
            {
            case "Cash":
                BasePayment cashPayment = new CashPayment();
                cashPayment.Execute(tEvent);
                break;

            case "Credit":
                BasePayment creditPayment = new CreditPayment();
                creditPayment.Execute(tEvent);
                break;
            }
            return(Task.CompletedTask);
        }
Esempio n. 6
0
        public async Task <Unit> Handle(AddNewPaymentCommand request, CancellationToken cancellationToken)
        {
            var payment = Domain.Payments.Payment.Factory.NewPayment(request.AggregateId, request.UserId, request.CardNumber,
                                                                     request.ExpiryMonth, request.ExpiryYear, request.Amount, request.CurrencyCode, request.CVV);

            var response = await _repository.CreateFromRequestAsync(payment);

            if (!response.Success)
            {
                var errorEvent = new AddNewPaymentErrorEvent();
                await _mediator.Send(errorEvent);
            }

            var createdEvent = new PaymentCreatedEvent(request.AggregateId, payment.UserId, payment.CardNumber, payment.ExpiryMonth, payment.ExpiryYear, payment.Amount, payment.CurrencyCode, payment.CVV);
            await _mediator.Publish(createdEvent);

            return(Unit.Value);
        }
 public PaymentCreatedNotification(PaymentCreatedEvent domainEvent) : base(domainEvent)
 {
     this.PaymentId = domainEvent.PaymentId;
 }
Esempio n. 8
0
 public void Apply(PaymentCreatedEvent @event)
 {
     When((dynamic)@event);
 }