Ejemplo n.º 1
0
        public async Task <InvokeResult> AddSubscriptionAsync(Subscription subscription, EntityHeader org, EntityHeader user)
        {
            await AuthorizeAsync(user, org, "addSubscription", subscription);

            if (String.IsNullOrEmpty(subscription.PaymentToken))
            {
                subscription.PaymentTokenStatus = Subscription.PaymentTokenStatus_Empty;
                subscription.Status             = Subscription.Status_NoPaymentDetails;
            }
            else
            {
                var result = await _paymentCustomers.CreateCustomerAsync(subscription.Id.ToString(), subscription.PaymentToken);

                if (!result.Successful)
                {
                    return(result.ToInvokeResult());
                }

                subscription.CustomerId         = result.Result;
                subscription.PaymentTokenStatus = Subscription.PaymentTokenStatus_OK;
                subscription.Status             = Subscription.Status_OK;
                subscription.PaymentTokenDate   = DateTime.UtcNow;
            }

            await _subscriptionRepo.AddSubscriptionAsync(subscription);

            return(new InvokeResult());
        }
Ejemplo n.º 2
0
        public async Task <InvokeResult> AddSubscriptionAsync(Subscription subscription, EntityHeader org, EntityHeader user)
        {
            if (subscription.Key == Subscription.SubscriptionKey_Trial)
            {
                var subscriptions = await GetSubscriptionsForOrgAsync(org.Id, user);

                if (subscriptions.Where(sub => sub.Key == Subscription.SubscriptionKey_Trial).Any())
                {
                    throw new ValidationException("Invalid Data", new List <ErrorMessage>()
                    {
                        new ErrorMessage("Organization already has one trial subscription.")
                    });
                }
                else
                {
                    subscription.Status             = Subscription.Status_OK;
                    subscription.PaymentTokenStatus = Subscription.PaymentTokenStatus_Waived;
                }
            }
            else
            {
                if (String.IsNullOrEmpty(subscription.PaymentToken))
                {
                    subscription.PaymentTokenStatus = Subscription.PaymentTokenStatus_Empty;
                    subscription.Status             = Subscription.Status_NoPaymentDetails;
                }
                else
                {
                    var result = await _paymentCustomers.CreateCustomerAsync(subscription.Id.ToString(), subscription.PaymentToken);

                    if (!result.Successful)
                    {
                        return(result.ToInvokeResult());
                    }

                    subscription.CustomerId         = result.Result;
                    subscription.PaymentTokenStatus = Subscription.PaymentTokenStatus_OK;
                    subscription.Status             = Subscription.Status_OK;
                    subscription.PaymentTokenDate   = DateTime.UtcNow;
                }
            }

            await _subscriptionRepo.AddSubscriptionAsync(subscription);

            return(new InvokeResult());
        }