Ejemplo n.º 1
0
        /// <summary>
        /// Update a subscription
        /// </summary>
        /// <param name="subscriptionId">The subscription id</param>
        /// <param name="planId">The plan id</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <FulfillmentManagerOperationResult> RequestUpdateSubscriptionAsync(
            Guid subscriptionId,
            string planId,
            CancellationToken cancellationToken = default)
        {
            try
            {
                _logger.LogInformation(
                    LoggingUtils.ComposeHttpClientLogMessage(
                        _fulfillmentClient.GetType().Name,
                        nameof(_fulfillmentClient.UpdateSubscriptionAsync),
                        subscriptionId));

                Guid requestId     = Guid.NewGuid();
                Guid correlationId = Guid.NewGuid();

                ActivatedSubscriptionResult activatedSubscription = new ActivatedSubscriptionResult {
                    PlanId = planId
                };

                UpdateOrDeleteSubscriptionRequestResult response = await _fulfillmentClient.UpdateSubscriptionAsync(
                    subscriptionId,
                    activatedSubscription,
                    requestId,
                    correlationId,
                    cancellationToken);

                _logger.LogInformation(
                    LoggingUtils.ComposeSubscriptionActionMessage(
                        "Updated",
                        subscriptionId,
                        activatedSubscription.PlanId,
                        activatedSubscription.Quantity));

                SubscriptionOperation operation = await _fulfillmentClient.GetSubscriptionOperationAsync(
                    subscriptionId,
                    response.OperationId,
                    requestId,
                    correlationId,
                    cancellationToken);

                FulfillmentManagerOperationResult returnResult = FulfillmentManagerOperationResult.Success;
                returnResult.Operation = operation;

                return(returnResult);
            }
            catch (Exception e)
            {
                var errorMessage = $"Cannot update subscription {subscriptionId}.";
                throw new LunaFulfillmentException(errorMessage, e);
            }
        }
        // Summary:
        // Creates an CustomerUserResult indicating a failed customer user
        // operation, with a list of errors if applicable.
        // Parameters:
        // errors:
        // An optional array of CustomerUserResultError which caused
        // the operation to fail.
        // Returns:
        // An CustomerUserResult indicating a failed customer user
        // operation, with a list of errors if applicable.
        public static FulfillmentManagerOperationResult Failed(params FulfillmentManagementError[] errors)
        {
            var result = new FulfillmentManagerOperationResult {
                Succeeded = false
            };

            if (errors != null)
            {
                result.errors.AddRange(errors);
            }

            return(result);
        }
Ejemplo n.º 3
0
 public FulfillmentManagerException(FulfillmentManagerOperationResult fulfillmentManagerOperationResult)
 {
     this.OperationResult = fulfillmentManagerOperationResult;
 }