public async Task <AccountResponse> CreateSubscription(SubscriptionCreate subscriptionModel)
        {
            var account = _billingPaymentProvider.CreateSubscriptionViaPurchase(subscriptionModel);
            await _messageSession.Send(account);

            var accountResponse = _mapper.Map <AccountResponse>(account);

            return(accountResponse);
        }
示例#2
0
        public async Task <IActionResult> CreateSubscription(SubscriptionCreate subscriptionModel)
        {
            var accountModel = await _billingPaymentMediator.CreateSubscriptionAsync(subscriptionModel);

            if (accountModel == null)
            {
                return(BadRequest("Account doesn't exist"));
            }
            return(Created(Request?.Path.Value, accountModel));
        }
        public Account CreateSubscriptionViaPurchase(SubscriptionCreate subscriptionModel)
        {
            var purchaseCreate    = SubscriptionPlanContainer.subscriptionPlanDictionary[subscriptionModel.PlanCode].CreatePurchase(subscriptionModel);
            var invoiceCollection = _recurlyAdapter.CreateSubscriptionViaPurchase(purchaseCreate);
            var invoiceDto        = _mapper.Map <InvoiceResponse>(invoiceCollection);
            var account           = _accountRepository.GetBy(x => x.Code == subscriptionModel.AccountCode);

            account.Invoices = account.Invoices ?? new List <InvoiceResponse>();
            account.Invoices.Add(invoiceDto);
            return(account);
        }
        public async Task <AccountResponse> CreateSubscriptionAsync(SubscriptionCreate subscriptionModel)
        {
            var account = _billingPaymentProvider.CreateSubscription(subscriptionModel);

            if (account == null)
            {
                return(null);
            }
            var accountResponse = _mapper.Map <AccountResponse>(account);
            await _messageSession.Send(account);

            return(accountResponse);
        }
        public Account CreateSubscription(SubscriptionCreate subscriptionModel)
        {
            var account = _accountRepository.GetBy(x => x.Code == subscriptionModel.AccountCode);

            if (account == null)
            {
                return(null);
            }
            var subscriptionDto = _mapper.Map <SubscriptionResponse>(_recurlyAdapter.CreateSubscription(subscriptionModel));

            account.Subscriptions = account.Subscriptions ?? new List <SubscriptionResponse>();
            account.Subscriptions.Add(subscriptionDto);
            return(account);
        }
        public async Task CreateSubscription_AccountDoesntExist_ReturnNull()
        {
            var request = new SubscriptionCreate
            {
                AccountCode = "testCode",
                PlanCode    = "monthly_plan",
                UnitAmount  = 99999
            };

            _mockBillingPaymentProvider.Setup(x => x.CreateSubscription(It.IsAny <SubscriptionCreate>()))
            .Returns(() => null);

            var result = await _billingPaymentMediator
                         .CreateSubscriptionAsync(request);

            Assert.Null(result);
        }
        public async Task CreateSubscription_SuccessfullCreate_SentMessage()
        {
            var request = new SubscriptionCreate
            {
                AccountCode = "testCode",
                PlanCode    = "monthly_plan",
                UnitAmount  = 99999
            };
            var account = new Account
            {
                Code          = "testCode",
                FirstName     = "testName",
                LastName      = "testlastName",
                Invoices      = new List <InvoiceResponse>(),
                Subscriptions = new List <SubscriptionResponse>
                {
                    new SubscriptionResponse
                    {
                        CollectionMethod = "manual",
                        PlanCode         = "monthly_plan"
                    }
                },
            };

            _mockBillingPaymentProvider.Setup(m =>
                                              m.CreateSubscription(It.IsAny <SubscriptionCreate>()))
            .Returns(account);

            var result = await _billingPaymentMediator
                         .CreateSubscriptionAsync(request);

            var message = (Account)_testableMessageSession.SentMessages[0].Message;

            Assert.NotNull(result);
            Assert.Single(_testableMessageSession.SentMessages);
            Assert.Equal(request.PlanCode, result.Subscriptions[0].PlanCode);
            Assert.Equal(request.AccountCode, message.Code);
        }
示例#8
0
        public IActionResult CreateSubscriptionViaPurchase(SubscriptionCreate subscriptionModel)
        {
            _billingPaymentMediator.CreateSubscription(subscriptionModel);

            return(Ok());
        }
示例#9
0
 public SubscriptionCreateCommand(SubscriptionCreate data, User user) : base(user)
 {
     Data = data;
 }