public async Task <ActionResult> CompleteOperation(Guid subscriptionId)
        {
            string activatedBy = this.HttpContext.User.Identity.Name;

            AADAuthHelper.VerifyUserAccess(this.HttpContext, _logger, true);
            _logger.LogInformation($"Complete current operation for subscription {subscriptionId}. Operated by {activatedBy}.");

            if (!await _subscriptionService.ExistsAsync(subscriptionId))
            {
                throw new LunaNotFoundUserException($"The specified subscription {subscriptionId} doesn't exist or you don't have permission to access it.");
            }

            Subscription sub = await _subscriptionService.GetAsync(subscriptionId);

            if (!ProvisioningHelper.IsErrorOrWarningProvisioningState(sub.ProvisioningStatus))
            {
                throw new LunaConflictUserException($"Can not complete operation manually when provisioning in {sub.ProvisioningStatus} state.");
            }

            if (string.IsNullOrEmpty(activatedBy))
            {
                throw new LunaBadRequestUserException("Need to specify the operation who is activating this subscription.", UserErrorCode.InvalidParameter);
            }

            return(Ok(await _provisioningService.UpdateOperationCompletedAsync(subscriptionId, activatedBy)));
        }
Пример #2
0
        /// <summary>
        /// Get warnings from subscription
        /// </summary>
        /// <param name="subscriptionId">Subscription id. Get all warnings if not specified</param>
        /// <returns>warnings</returns>
        public async Task <List <SubscriptionWarning> > GetWarnings(Guid?subscriptionId = null)
        {
            var subList = _context.Subscriptions.ToList().Where(s => ProvisioningHelper.IsErrorOrWarningProvisioningState(s.ProvisioningStatus) &&
                                                                (subscriptionId == null || s.SubscriptionId == subscriptionId)).ToList();

            List <SubscriptionWarning> warnings = new List <SubscriptionWarning>();

            foreach (var sub in subList)
            {
                warnings.Add(new SubscriptionWarning(sub.SubscriptionId,
                                                     string.Format("Subscription in error state {0} since {1}.", sub.ProvisioningStatus, sub.LastUpdatedTime),
                                                     string.Format("Last exception: {0}.", sub.LastException)));
            }

            return(warnings);
        }