/// <summary>
        /// Unsubscribed the asynchronous.
        /// </summary>
        /// <param name="payload">The payload.</param>
        /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
        public async Task UnsubscribedAsync(WebhookPayload payload)
        {
            var oldValue = this.subscriptionService.GetSubscriptionsBySubscriptionId(payload.SubscriptionId);

            this.subscriptionService.UpdateStateOfSubscription(payload.SubscriptionId, SubscriptionStatusEnumExtension.Unsubscribed.ToString(), false);
            this.applicationLogService.AddApplicationLog("Offer Successfully UnSubscribed.");

            if (oldValue != null)
            {
                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                {
                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                    SubscriptionId = oldValue.SubscribeId,
                    NewValue       = Convert.ToString(SubscriptionStatusEnum.Unsubscribed),
                    OldValue       = Convert.ToString(oldValue.SaasSubscriptionStatus),
                    CreateBy       = null,
                    CreateDate     = DateTime.Now,
                };
                this.subscriptionsLogRepository.Save(auditLog);
            }

            this.notificationStatusHandlers.Process(payload.SubscriptionId);

            await Task.CompletedTask;
        }
        public IActionResult FetchAllSubscriptions()
        {
            var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);

            try
            {
                this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository, currentUserId);

                //get all subscirptions from api
                var subscriptions = this.fulfillApiService.GetAllSubscriptionAsync().GetAwaiter().GetResult();
                foreach (SubscriptionResult subscription in subscriptions)
                {
                    if (this.subscriptionRepo.GetById(subscription.Id) == null)
                    {
                        //room for improvement to use AddRange rather making mulitple db trips
                        Offers offers = new Offers()
                        {
                            OfferId    = subscription.OfferId,
                            OfferName  = subscription.OfferId,
                            UserId     = currentUserId,
                            CreateDate = DateTime.Now,
                            OfferGuid  = Guid.NewGuid(),
                        };
                        Guid newOfferId = this.offersRepository.Add(offers);  // add offer

                        var subscriptionPlanDetail = this.fulfillApiService.GetAllPlansForSubscriptionAsync(subscription.Id).ConfigureAwait(false).GetAwaiter().GetResult();
                        subscriptionPlanDetail.ForEach(x =>
                        {
                            x.OfferId  = newOfferId;
                            x.PlanGUID = Guid.NewGuid();
                        });
                        this.subscriptionService.AddPlanDetailsForSubscription(subscriptionPlanDetail); // add plans

                        //var subscriptionData = this.fulfillApiService.GetSubscriptionByIdAsync(subscription.Id).ConfigureAwait(false).GetAwaiter().GetResult();
                        var subscribeId = this.subscriptionService.AddOrUpdatePartnerSubscriptions(subscription);  // add subscription
                        if (subscribeId > 0 && subscription.SaasSubscriptionStatus == SubscriptionStatusEnum.PendingFulfillmentStart)
                        {
                            SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                            {
                                Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                                SubscriptionId = subscribeId,
                                NewValue       = SubscriptionStatusEnum.PendingFulfillmentStart.ToString(),
                                OldValue       = "None",
                                CreateBy       = currentUserId,
                                CreateDate     = DateTime.Now,
                            };
                            this.subscriptionLogRepository.Save(auditLog);  // add audit log
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                this.logger.LogError("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
                return(this.View("Error", ex));
            }

            return(this.RedirectToAction(nameof(this.Subscriptions)));
        }
        /// <summary>
        /// Processes the specified subscription identifier.
        /// </summary>
        /// <param name="subscriptionID">The subscription identifier.</param>
        public override void Process(Guid subscriptionID)
        {
            this.logger?.LogInformation("PendingActivationStatusHandler {0}", subscriptionID);
            var subscription = this.GetSubscriptionById(subscriptionID);

            this.logger?.LogInformation("Result subscription : {0}", JsonSerializer.Serialize(subscription.AmpplanId));
            this.logger?.LogInformation("Get User");
            var    userdeatils = this.GetUserById(subscription.UserId);
            string oldstatus   = subscription.SubscriptionStatus;

            if (subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.PendingActivation.ToString())
            {
                try
                {
                    this.logger?.LogInformation("Get attributelsit");

                    var subscriptionData = this.fulfillmentApiClient.ActivateSubscriptionAsync(subscriptionID, subscription.AmpplanId).ConfigureAwait(false).GetAwaiter().GetResult();

                    this.logger?.LogInformation("UpdateWebJobSubscriptionStatus");

                    this.subscriptionsRepository.UpdateStatusForSubscription(subscriptionID, SubscriptionStatusEnumExtension.Subscribed.ToString(), true);

                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                    {
                        Attribute      = SubscriptionLogAttributes.Status.ToString(),
                        SubscriptionId = subscription.Id,
                        NewValue       = SubscriptionStatusEnumExtension.Subscribed.ToString(),
                        OldValue       = oldstatus,
                        CreateBy       = userdeatils.UserId,
                        CreateDate     = DateTime.Now,
                    };
                    this.subscriptionLogRepository.Save(auditLog);

                    this.subscriptionLogRepository.LogStatusDuringProvisioning(subscriptionID, "Activated", SubscriptionStatusEnumExtension.Subscribed.ToString());
                }
                catch (Exception ex)
                {
                    string errorDescriptin = string.Format("Exception: {0} :: Innser Exception:{1}", ex.Message, ex.InnerException);
                    this.subscriptionLogRepository.LogStatusDuringProvisioning(subscriptionID, errorDescriptin, SubscriptionStatusEnumExtension.ActivationFailed.ToString());
                    this.logger?.LogInformation(errorDescriptin);

                    this.subscriptionsRepository.UpdateStatusForSubscription(subscriptionID, SubscriptionStatusEnumExtension.ActivationFailed.ToString(), false);

                    // Set the status as ActivationFailed.
                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                    {
                        Attribute      = SubscriptionLogAttributes.Status.ToString(),
                        SubscriptionId = subscription.Id,
                        NewValue       = SubscriptionStatusEnumExtension.ActivationFailed.ToString(),
                        OldValue       = subscription.SubscriptionStatus,
                        CreateBy       = userdeatils.UserId,
                        CreateDate     = DateTime.Now,
                    };
                    this.subscriptionLogRepository.Save(auditLog);
                }
            }
        }
        /// <summary>
        /// Subscriptions the operation.
        /// </summary>
        /// <param name="subscriptionId">The subscription identifier.</param>
        /// <param name="planId">The plan identifier.</param>
        /// <param name="operation">The operation.</param>
        /// <param name="numberofProviders">The numberof providers.</param>
        /// <returns> The <see cref="IActionResult" />.</returns>
        public IActionResult SubscriptionOperation(Guid subscriptionId, string planId, string operation, int numberofProviders)
        {
            this.logger.LogInformation("Home Controller / SubscriptionOperation subscriptionId:{0} :: planId : {1} :: operation:{2} :: NumberofProviders : {3}", JsonSerializer.Serialize(subscriptionId), JsonSerializer.Serialize(planId), JsonSerializer.Serialize(operation), JsonSerializer.Serialize(numberofProviders));
            try
            {
                var userDetails = this.userRepository.GetPartnerDetailFromEmail(this.CurrentUserEmailAddress);
                var oldValue    = this.subscriptionService.GetSubscriptionsBySubscriptionId(subscriptionId);
                SubscriptionProcessQueueModel queueObject = new SubscriptionProcessQueueModel();
                if (operation == "Activate")
                {
                    if (oldValue.SubscriptionStatus.ToString() != SubscriptionStatusEnumExtension.PendingActivation.ToString())
                    {
                        this.subscriptionRepository.UpdateStatusForSubscription(subscriptionId, SubscriptionStatusEnumExtension.PendingActivation.ToString(), true);

                        SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                        {
                            Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                            SubscriptionId = oldValue.SubscribeId,
                            NewValue       = SubscriptionStatusEnumExtension.PendingActivation.ToString(),
                            OldValue       = oldValue.SubscriptionStatus.ToString(),
                            CreateBy       = userDetails.UserId,
                            CreateDate     = DateTime.Now,
                        };
                        this.subscriptionLogRepository.Save(auditLog);
                    }

                    this.pendingActivationStatusHandlers.Process(subscriptionId);
                }

                if (operation == "Deactivate")
                {
                    this.subscriptionRepository.UpdateStatusForSubscription(subscriptionId, SubscriptionStatusEnumExtension.PendingUnsubscribe.ToString(), true);
                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                    {
                        Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                        SubscriptionId = oldValue.SubscribeId,
                        NewValue       = SubscriptionStatusEnumExtension.PendingUnsubscribe.ToString(),
                        OldValue       = oldValue.SubscriptionStatus.ToString(),
                        CreateBy       = userDetails.UserId,
                        CreateDate     = DateTime.Now,
                    };
                    this.subscriptionLogRepository.Save(auditLog);

                    this.unsubscribeStatusHandlers.Process(subscriptionId);
                }

                this.notificationStatusHandlers.Process(subscriptionId);

                return(this.RedirectToAction(nameof(this.ActivatedMessage)));
            }
            catch (Exception ex)
            {
                this.logger.LogInformation("Message:{0} :: {1}", ex.Message, ex.InnerException);
                return(this.View("Error"));
            }
        }
Пример #5
0
 /// <summary>
 /// Adds the specified subscription logs.
 /// </summary>
 /// <param name="subscriptionLogs">The subscription logs.</param>
 /// <returns></returns>
 public int Add(SubscriptionAuditLogs subscriptionLogs)
 {
     try
     {
         Context.SubscriptionAuditLogs.Add(subscriptionLogs);
         Context.SaveChanges();
         return(subscriptionLogs.Id);
     }
     catch (Exception) {}
     return(0);
 }
        /// <summary>
        /// Processes the specified subscription identifier.
        /// </summary>
        /// <param name="subscriptionID">The subscription identifier.</param>
        public override void Process(Guid subscriptionID)
        {
            this.logger?.LogInformation("PendingActivationStatusHandler {0}", subscriptionID);
            var subscription = this.GetSubscriptionById(subscriptionID);

            this.logger?.LogInformation("Result subscription : {0}", JsonSerializer.Serialize(subscription.AmpplanId));
            this.logger?.LogInformation("Get User");
            var userdetails = this.GetUserById(subscription.UserId);

            if (subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.PendingFulfillmentStart.ToString())
            {
                try
                {
                    this.subscriptionsRepository.UpdateStatusForSubscription(subscriptionID, SubscriptionStatusEnumExtension.PendingActivation.ToString(), true);

                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                    {
                        Attribute      = SubscriptionLogAttributes.Status.ToString(),
                        SubscriptionId = subscription.Id,
                        NewValue       = SubscriptionStatusEnumExtension.PendingActivation.ToString(),
                        OldValue       = SubscriptionStatusEnumExtension.PendingFulfillmentStart.ToString(),
                        CreateBy       = userdetails.UserId,
                        CreateDate     = DateTime.Now,
                    };
                    this.subscriptionLogRepository.Save(auditLog);
                }
                catch (Exception ex)
                {
                    string errorDescription = string.Format("Exception: {0} :: Innser Exception:{1}", ex.Message, ex.InnerException);

                    this.logger?.LogInformation(errorDescription);

                    this.subscriptionsRepository.UpdateStatusForSubscription(subscriptionID, SubscriptionStatusEnumExtension.PendingActivation.ToString(), true);

                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                    {
                        Attribute      = SubscriptionLogAttributes.Status.ToString(),
                        SubscriptionId = subscription.Id,
                        NewValue       = SubscriptionStatusEnumExtension.PendingActivation.ToString(),
                        OldValue       = subscription.SubscriptionStatus,
                        CreateBy       = userdetails.UserId,
                        CreateDate     = DateTime.Now,
                    };
                    this.subscriptionLogRepository.Save(auditLog);
                }
            }
        }
        /// <summary>
        /// Unsubscribed the asynchronous.
        /// </summary>
        /// <param name="payload">The payload.</param>
        /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
        public async Task UnsubscribedAsync(WebhookPayload payload)
        {
            var oldValue = this.subscriptionService.GetSubscriptionsBySubscriptionId(payload.SubscriptionId);

            this.subscriptionService.UpdateStateOfSubscription(payload.SubscriptionId, SubscriptionStatusEnumExtension.Unsubscribed.ToString(), false);
            this.applicationLogService.AddApplicationLog("Offer Successfully UnSubscribed.");

            if (oldValue != null)
            {
                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                {
                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                    SubscriptionId = oldValue.SubscribeId,
                    NewValue       = Convert.ToString(SubscriptionStatusEnum.Unsubscribed),
                    OldValue       = Convert.ToString(oldValue.SaasSubscriptionStatus),
                    CreateBy       = null,
                    CreateDate     = DateTime.Now,
                };
                this.subscriptionsLogRepository.Save(auditLog);
            }

            SubscriptionProcessQueueModel queueObject = new SubscriptionProcessQueueModel();

            queueObject.SubscriptionID = payload.SubscriptionId;
            queueObject.TriggerEvent   = "Unsubscribe";
            queueObject.UserId         = 0;
            queueObject.PortalName     = "Admin";
            await Task.CompletedTask;

            string queueMessage                = JsonSerializer.Serialize(queueObject);
            string storageConnectionString     = this.cloudConfigs.AzureWebJobsStorage ?? this.azureWebJobsStorage;
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);

            //// Create the queue client.
            CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
            CloudQueue       queue       = queueClient.GetQueueReference("saas-provisioning-queue");

            ////Create the queue if it doesn't already exist
            queue.CreateIfNotExistsAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            //// Create a message and add it to the queue.
            CloudQueueMessage message = new CloudQueueMessage(queueMessage);

            queue.AddMessageAsync(message).ConfigureAwait(false).GetAwaiter().GetResult();
        }
Пример #8
0
        /// <summary>
        /// Reinstated is followed by Suspend.
        /// This is called when customer fixed their billing issues and partner can choose to reinstate the suspened subscription to subscribed.
        /// And resume the software access to the customer.
        /// </summary>
        /// <param name="payload">The payload.</param>
        /// <returns> Exception.</returns>
        /// <exception cref="NotImplementedException"> Not Implemented Exception. </exception>
        public async Task ReinstatedAsync(WebhookPayload payload)
        {
            var oldValue = this.subscriptionService.GetSubscriptionsBySubscriptionId(payload.SubscriptionId);
            SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
            {
                Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                SubscriptionId = oldValue?.SubscribeId,
                OldValue       = Convert.ToString(oldValue?.SubscriptionStatus),
                CreateBy       = null,
                CreateDate     = DateTime.Now,
            };

            //gets the user setting from appconfig, if key doesnt exist, add to control the behavior.
            //_acceptSubscriptionUpdates should be true and subscription should be in db to accept subscription updates
            var _acceptSubscriptionUpdates = Convert.ToBoolean(this.applicationConfigRepository.GetValueByName(AcceptSubscriptionUpdates));

            if (_acceptSubscriptionUpdates && oldValue != null)
            {
                this.subscriptionService.UpdateStateOfSubscription(payload.SubscriptionId, SubscriptionStatusEnumExtension.Subscribed.ToString(), false);
                await this.applicationLogService.AddApplicationLog("Reinstated Successfully.").ConfigureAwait(false);

                auditLog.NewValue = Convert.ToString(SubscriptionStatusEnum.Subscribed);
            }
            else
            {
                var patchOperation = await fulfillApiService.PatchOperationStatusResultAsync(payload.SubscriptionId, payload.OperationId, SaaS.Models.UpdateOperationStatusEnum.Failure);

                if (patchOperation != null && patchOperation.Status != 200)
                {
                    await this.applicationLogService.AddApplicationLog($"Reinstate operation PATCH failed with status statuscode {patchOperation.Status} {patchOperation.ReasonPhrase}.").ConfigureAwait(false);

                    //partner trying to fail update operation from customer but PATCH on operation didnt succeced, hence throwing an error
                    throw new Exception(patchOperation.ReasonPhrase);
                }

                await this.applicationLogService.AddApplicationLog("Reinstate Change Request Rejected Successfully.").ConfigureAwait(false);

                auditLog.NewValue = Convert.ToString(oldValue?.SubscriptionStatus);
            }

            this.subscriptionsLogRepository.Save(auditLog);

            await Task.CompletedTask;
        }
Пример #9
0
        /// <summary>
        /// Unsubscribed the asynchronous.
        /// </summary>
        /// <param name="payload">The payload.</param>
        public async Task UnsubscribedAsync(WebhookPayload payload)
        {
            var oldValue = subscriptionService.GetSubscriptionsForSubscriptionId(payload.SubscriptionId);

            subscriptionService.UpdateStateOfSubscription(payload.SubscriptionId, SubscriptionStatusEnum.Unsubscribed, false);
            applicationLogService.AddApplicationLog("Offer Successfully UnSubscribed.");

            if (oldValue != null)
            {
                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                {
                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                    SubscriptionId = oldValue.SubscribeId,
                    NewValue       = Convert.ToString(SubscriptionStatusEnum.Unsubscribed),
                    OldValue       = Convert.ToString(oldValue.SaasSubscriptionStatus),
                    CreateBy       = null,
                    CreateDate     = DateTime.Now
                };
                SubscriptionsLogRepository.Add(auditLog);
            }
            await Task.CompletedTask;
        }
Пример #10
0
        /// <summary>
        /// Changes the plan asynchronous.
        /// </summary>
        /// <param name="payload">The payload.</param>
        public async Task ChangePlanAsync(WebhookPayload payload)
        {
            var oldValue = subscriptionService.GetSubscriptionsForSubscriptionId(payload.SubscriptionId);

            subscriptionService.UpdateSubscriptionPlan(payload.SubscriptionId, payload.PlanId);
            applicationLogService.AddApplicationLog("Plan Successfully Changed.");

            if (oldValue != null)
            {
                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                {
                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Plan),
                    SubscriptionId = oldValue.SubscribeId,
                    NewValue       = payload.PlanId,
                    OldValue       = oldValue.PlanId,
                    CreateBy       = null,
                    CreateDate     = DateTime.Now
                };
                SubscriptionsLogRepository.Add(auditLog);
            }
            await Task.CompletedTask;
        }
        public IActionResult SubscriptionOperation(Guid subscriptionId, string planId, string operation, int NumberofProviders)
        {
            this.logger.LogInformation("Home Controller / SubscriptionOperation subscriptionId:{0} :: planId : {1} :: operation:{2} :: NumberofProviders : {3}", JsonConvert.SerializeObject(subscriptionId), JsonConvert.SerializeObject(planId), JsonConvert.SerializeObject(operation), JsonConvert.SerializeObject(NumberofProviders));
            try
            {
                bool isSuccess = false;
                if (subscriptionId != default)
                {
                    SubscriptionResult subscriptionDetail = new SubscriptionResult();
                    this.logger.LogInformation("GetPartnerSubscription");
                    var oldValue = this.webSubscriptionService.GetSubscriptionsByScheduleId(subscriptionId);
                    this.logger.LogInformation("GetUserIdFromEmailAddress");
                    var currentUserId = userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);

                    if (operation == "Activate")
                    {
                        var response = this.fulfillApiClient.ActivateSubscriptionAsync(subscriptionId, planId).ConfigureAwait(false).GetAwaiter().GetResult();
                        this.webSubscriptionService.UpdateStateOfSubscription(subscriptionId, SubscriptionStatusEnum.Subscribed, true);

                        isSuccess = true;
                        this.logger.LogInformation("GetPartnerSubscription");
                        this.logger.LogInformation("GetAllSubscriptionPlans");
                        subscriptionDetail          = this.webSubscriptionService.GetSubscriptionsByScheduleId(subscriptionId);
                        subscriptionDetail.PlanList = this.webSubscriptionService.GetAllSubscriptionPlans();
                        var  subscriptionData = this.fulfillApiClient.GetSubscriptionByIdAsync(subscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                        bool checkIsActive    = emailTemplateRepository.GetIsActive(subscriptionDetail.SaasSubscriptionStatus.ToString()).HasValue ? emailTemplateRepository.GetIsActive(subscriptionDetail.SaasSubscriptionStatus.ToString()).Value : false;
                        this.logger.LogInformation("sendEmail");
                        if (Convert.ToBoolean(applicationConfigRepository.GetValuefromApplicationConfig(EmailTriggerConfigurationConstants.ISEMAILENABLEDFORSUBSCRIPTIONACTIVATION)) == true)
                        {
                            EmailHelper.SendEmail(subscriptionDetail, applicationConfigRepository, emailTemplateRepository);
                        }
                    }

                    if (operation == "Deactivate")
                    {
                        try
                        {
                            this.logger.LogInformation("operation == Deactivate");
                            this.logger.LogInformation("DeleteSubscriptionAsync");
                            var response = this.fulfillApiClient.DeleteSubscriptionAsync(subscriptionId, planId).ConfigureAwait(false).GetAwaiter().GetResult();
                            this.logger.LogInformation("UpdateStateOfSubscription");
                            this.webSubscriptionService.UpdateStateOfSubscription(subscriptionId, SubscriptionStatusEnum.Unsubscribed, false);
                            subscriptionDetail = this.webSubscriptionService.GetSubscriptionsByScheduleId(subscriptionId, true);
                            subscriptionDetail.SaasSubscriptionStatus = SubscriptionStatusEnum.Unsubscribed;
                            isSuccess = true;
                            this.logger.LogInformation("GetIsActive");
                            bool checkIsActive = emailTemplateRepository.GetIsActive(subscriptionDetail.SaasSubscriptionStatus.ToString()).HasValue ? emailTemplateRepository.GetIsActive(subscriptionDetail.SaasSubscriptionStatus.ToString()).Value : false;

                            if (Convert.ToBoolean(applicationConfigRepository.GetValuefromApplicationConfig(EmailTriggerConfigurationConstants.ISEMAILENABLEDFORUNSUBSCRIPTION)) == true)
                            {
                                this.logger.LogInformation("SendEmail to {0} :: Template{1} ", JsonConvert.SerializeObject(applicationConfigRepository), JsonConvert.SerializeObject(emailTemplateRepository));

                                EmailHelper.SendEmail(subscriptionDetail, applicationConfigRepository, emailTemplateRepository);
                            }
                        }
                        catch (FulfillmentException fex)
                        {
                            this.logger.LogError($"Deactive Subscription plan Error - {fex.Message} with StackTrace- {fex.StackTrace}.");
                            this.TempData["ErrorMsg"] = fex.Message;
                        }
                    }

                    var newValue = this.webSubscriptionService.GetSubscriptionsByScheduleId(subscriptionId, true);
                    if (isSuccess)
                    {
                        if (oldValue != null && newValue != null)
                        {
                            SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                            {
                                Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                                SubscriptionId = newValue.SubscribeId,
                                NewValue       = Convert.ToString(newValue.SaasSubscriptionStatus),
                                OldValue       = Convert.ToString(oldValue.SaasSubscriptionStatus),
                                CreateBy       = currentUserId,
                                CreateDate     = DateTime.Now
                            };
                            this.subscriptionLogRepository.Add(auditLog);

                            //auditLog = new SubscriptionAuditLogs()
                            //{
                            //    Attribute = Convert.ToString(SubscriptionLogAttributes.ProviderCount),
                            //    SubscriptionId = newValue.SubscribeId,
                            //    NewValue = Convert.ToString(newValue.NumberofProviders),
                            //    OldValue = Convert.ToString(oldValue.NumberofProviders),
                            //    CreateBy = currentUserId,
                            //    CreateDate = DateTime.Now
                            //};
                            //this.subscriptionLogRepository.Add(auditLog);
                        }
                    }
                }
                return(this.RedirectToAction(nameof(this.ActivatedMessage)));
            }
            catch (Exception ex)
            {
                this.logger.LogInformation("Message:{0} :: {1}", ex.Message, ex.InnerException);
                return(View("Error"));
            }
        }
Пример #12
0
 /// <summary>
 /// Removes the specified entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 public void Remove(SubscriptionAuditLogs entity)
 {
     this.context.SubscriptionAuditLogs.Remove(entity);
     this.context.SaveChanges();
 }
Пример #13
0
 /// <summary>
 /// Adds the specified entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns> entity id.</returns>
 public int Save(SubscriptionAuditLogs entity)
 {
     this.context.SubscriptionAuditLogs.Add(entity);
     this.context.SaveChanges();
     return(entity.Id);
 }
Пример #14
0
        /// <summary>
        /// Get All Subscription List for Current Logged in User.
        /// </summary>
        /// <param name="token">The MS Token<see cref="string" />..</param>
        /// <returns>
        /// The <see cref="IActionResult" />.
        /// </returns>
        public IActionResult Index(string token = null)
        {
            try
            {
                this.logger.LogInformation($"Landing page with token {token}");
                SubscriptionResult          subscriptionDetail    = new SaasKitModels.SubscriptionResult();
                SubscriptionResultExtension subscriptionExtension = new SubscriptionResultExtension();

                if (this.User.Identity.IsAuthenticated)
                {
                    var userId        = this.userService.AddUser(this.GetCurrentUserDetail());
                    var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);
                    this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository, userId);
                    this.logger.LogInformation("User authenticated successfully");
                    if (!string.IsNullOrEmpty(token))
                    {
                        this.TempData["ShowWelcomeScreen"] = null;
                        token = token.Replace(' ', '+');
                        var newSubscription = this.apiClient.ResolveAsync(token).ConfigureAwait(false).GetAwaiter().GetResult();
                        if (newSubscription != null && newSubscription.SubscriptionId != default)
                        {
                            var    subscriptionPlanDetail = this.apiClient.GetAllPlansForSubscriptionAsync(newSubscription.SubscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                            Offers offers = new Offers()
                            {
                                OfferId    = newSubscription.OfferId,
                                OfferName  = newSubscription.OfferId,
                                UserId     = currentUserId,
                                CreateDate = DateTime.Now,
                                OfferGuid  = Guid.NewGuid(),
                            };
                            Guid newOfferId = this.offersRepository.Add(offers);
                            List <PlanDetailResultExtension> planList = new List <PlanDetailResultExtension>();
                            var serializedPlans = JsonSerializer.Serialize(subscriptionPlanDetail);
                            planList = JsonSerializer.Deserialize <List <PlanDetailResultExtension> >(serializedPlans);
                            planList.ForEach(x =>
                            {
                                x.OfferId  = newOfferId;
                                x.PlanGUID = Guid.NewGuid();
                            });
                            this.subscriptionService.AddPlanDetailsForSubscription(planList);
                            var currentPlan      = this.planRepository.GetById(newSubscription.PlanId);
                            var subscriptionData = this.apiClient.GetSubscriptionByIdAsync(newSubscription.SubscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                            var subscribeId      = this.subscriptionService.AddOrUpdatePartnerSubscriptions(subscriptionData);
                            if (subscribeId > 0 && subscriptionData.SaasSubscriptionStatus == SubscriptionStatusEnum.PendingFulfillmentStart)
                            {
                                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                                {
                                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                                    SubscriptionId = subscribeId,
                                    NewValue       = SubscriptionStatusEnum.PendingFulfillmentStart.ToString(),
                                    OldValue       = "None",
                                    CreateBy       = currentUserId,
                                    CreateDate     = DateTime.Now,
                                };
                                this.subscriptionLogRepository.Save(auditLog);
                            }

                            subscriptionExtension = this.subscriptionService.GetSubscriptionsBySubscriptionId(newSubscription.SubscriptionId, true);
                            subscriptionExtension.ShowWelcomeScreen      = false;
                            subscriptionExtension.CustomerEmailAddress   = this.CurrentUserEmailAddress;
                            subscriptionExtension.CustomerName           = this.CurrentUserName;
                            subscriptionExtension.SubscriptionParameters = this.subscriptionService.GetSubscriptionsParametersById(newSubscription.SubscriptionId, currentPlan.PlanGuid);
                        }
                    }
                    else
                    {
                        this.TempData["ShowWelcomeScreen"]      = "True";
                        subscriptionExtension.ShowWelcomeScreen = true;
                        return(this.View(subscriptionExtension));
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(token))
                    {
                        return(this.Challenge(
                                   new AuthenticationProperties
                        {
                            RedirectUri = "/?token=" + token,
                        }, OpenIdConnectDefaults.AuthenticationScheme));
                    }
                    else
                    {
                        this.TempData["ShowWelcomeScreen"]      = "True";
                        subscriptionExtension.ShowWelcomeScreen = true;
                        return(this.View(subscriptionExtension));
                    }
                }

                return(this.View(subscriptionExtension));
            }
            catch (Exception ex)
            {
                this.logger.LogError("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
                return(this.View("Error", ex));
            }
        }
Пример #15
0
 /// <summary>
 /// Adds the specified entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns></returns>
 /// <exception cref="NotImplementedException"></exception>
 public int Add(SubscriptionAuditLogs entity)
 {
     context.SubscriptionAuditLogs.Add(entity);
     context.SaveChanges();
     return(entity.Id);
 }
Пример #16
0
        public async Task <IActionResult> ChangeSubscriptionQuantity(SubscriptionResult subscriptionDetail)
        {
            this.logger.LogInformation("Home Controller / ChangeSubscriptionPlan  subscriptionDetail:{0}", JsonSerializer.Serialize(subscriptionDetail));
            if (this.User.Identity.IsAuthenticated)
            {
                try
                {
                    if (subscriptionDetail != null && subscriptionDetail.Id != default && subscriptionDetail.Quantity > 0)
                    {
                        try
                        {
                            var subscriptionId = subscriptionDetail.Id;
                            var quantity       = subscriptionDetail.Quantity;

                            var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);

                            var jsonResult = await this.fulfillApiClient.ChangeQuantityForSubscriptionAsync(subscriptionId, quantity).ConfigureAwait(false);

                            var changeQuantityOperationStatus = OperationStatusEnum.InProgress;
                            if (jsonResult != null && jsonResult.OperationId != default)
                            {
                                while (OperationStatusEnum.InProgress.Equals(changeQuantityOperationStatus) || OperationStatusEnum.NotStarted.Equals(changeQuantityOperationStatus))
                                {
                                    var changeQuantityOperationResult = await this.fulfillApiClient.GetOperationStatusResultAsync(subscriptionId, jsonResult.OperationId).ConfigureAwait(false);

                                    changeQuantityOperationStatus = changeQuantityOperationResult.Status;

                                    this.logger.LogInformation("changeQuantity Operation Status :  " + changeQuantityOperationStatus + " For SubscriptionId " + subscriptionId + "Model SubscriptionID): {0} :: quantity:{1}", JsonSerializer.Serialize(subscriptionId), JsonSerializer.Serialize(quantity));
                                    this.applicationLogService.AddApplicationLog("Operation Status :  " + changeQuantityOperationStatus + " For SubscriptionId " + subscriptionId);
                                }

                                var oldValue = this.subscriptionService.GetSubscriptionsBySubscriptionId(subscriptionId, true);

                                this.subscriptionService.UpdateSubscriptionQuantity(subscriptionId, quantity);
                                this.logger.LogInformation("Quantity Successfully Changed.");
                                this.applicationLogService.AddApplicationLog("Quantity Successfully Changed.");

                                if (oldValue != null)
                                {
                                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                                    {
                                        Attribute      = Convert.ToString(SubscriptionLogAttributes.Quantity),
                                        SubscriptionId = oldValue.SubscribeId,
                                        NewValue       = quantity.ToString(),
                                        OldValue       = oldValue.Quantity.ToString(),
                                        CreateBy       = currentUserId,
                                        CreateDate     = DateTime.Now,
                                    };
                                    this.subscriptionLogRepository.Save(auditLog);
                                }
                            }
                        }
                        catch (FulfillmentException fex)
                        {
                            this.TempData["ErrorMsg"] = fex.Message;
                            this.logger.LogError("Message:{0} :: {1}   ", fex.Message, fex.InnerException);
                        }
                    }

                    return(this.RedirectToAction(nameof(this.Subscriptions)));
                }
                catch (Exception ex)
                {
                    this.logger.LogError("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
                    return(this.View("Error", ex));
                }
            }
            else
            {
                return(this.RedirectToAction(nameof(this.Index)));
            }
        }
Пример #17
0
 /// <summary>
 /// Adds the specified subscription logs.
 /// </summary>
 /// <param name="subscriptionLogs">The subscription logs.</param>
 /// <returns> log Id.</returns>
 public int Save(SubscriptionAuditLogs subscriptionLogs)
 {
     this.context.SubscriptionAuditLogs.Add(subscriptionLogs);
     this.context.SaveChanges();
     return(subscriptionLogs.Id);
 }
        public async Task <IActionResult> ChangeSubscriptionPlan(SubscriptionResult subscriptionDetail)
        {
            this.logger.LogInformation("Home Controller / ChangeSubscriptionPlan  subscriptionDetail:{0}", JsonConvert.SerializeObject(subscriptionDetail));
            try
            {
                var subscriptionId = new Guid();
                var planId         = string.Empty;
                if (Convert.ToBoolean(applicationConfigRepository.GetValuefromApplicationConfig(MainMenuStatusEnum.IsLicenseManagementEnabled.ToString())) == true)
                {
                    this.TempData["ShowLicensesMenu"] = true;
                }
                if (subscriptionDetail != null)
                {
                    subscriptionId = subscriptionDetail.Id;
                    planId         = subscriptionDetail.PlanId;
                }

                if (subscriptionId != default && !string.IsNullOrEmpty(planId))
                {
                    try
                    {
                        var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);

                        var jsonResult = await this.fulfillApiClient.ChangePlanForSubscriptionAsync(subscriptionId, planId).ConfigureAwait(false);

                        var changePlanOperationStatus = OperationStatusEnum.InProgress;
                        if (jsonResult != null && jsonResult.OperationId != default)
                        {
                            while (OperationStatusEnum.InProgress.Equals(changePlanOperationStatus) || OperationStatusEnum.NotStarted.Equals(changePlanOperationStatus))
                            {
                                var changePlanOperationResult = await this.fulfillApiClient.GetOperationStatusResultAsync(subscriptionId, jsonResult.OperationId).ConfigureAwait(false);

                                changePlanOperationStatus = changePlanOperationResult.Status;
                                this.logger.LogInformation("Operation Status :  " + changePlanOperationStatus + " For SubscriptionId " + subscriptionId + "Model SubscriptionID): {0} :: planID:{1}", JsonConvert.SerializeObject(subscriptionId), JsonConvert.SerializeObject(planId));
                                this.applicationLogService.AddApplicationLog("Operation Status :  " + changePlanOperationStatus + " For SubscriptionId " + subscriptionId);
                            }

                            var oldValue = this.subscriptionService.GetSubscriptionsForSubscriptionId(subscriptionId);
                            this.subscriptionService.UpdateSubscriptionPlan(subscriptionId, planId);
                            this.logger.LogInformation("Plan Successfully Changed.");
                            this.applicationLogService.AddApplicationLog("Plan Successfully Changed.");

                            if (oldValue != null)
                            {
                                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                                {
                                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Plan),
                                    SubscriptionId = oldValue.SubscribeId,
                                    NewValue       = planId,
                                    OldValue       = oldValue.PlanId,
                                    CreateBy       = currentUserId,
                                    CreateDate     = DateTime.Now
                                };
                                this.subscriptionLogRepository.Add(auditLog);
                            }
                        }
                    }
                    catch (FulfillmentException fex)
                    {
                        this.TempData["ErrorMsg"] = fex.Message;
                    }
                }

                return(this.RedirectToAction(nameof(this.Subscriptions)));
            }
            catch (Exception ex)
            {
                this.logger.LogError("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
                return(View("Error"));
            }
        }
        /// <summary>
        /// Get All Subscription List for Current Logged in User
        /// </summary>
        /// <param name="token">The MS Token<see cref="string" /></param>
        /// <returns>
        /// The <see cref="IActionResult" />
        /// </returns>
        public IActionResult Index(string token = null)
        {
            this.log.Info("Initializing Index Page");
            SubscriptionResult subscriptionDetail = new SaasKitModels.SubscriptionResult();

            if (User.Identity.IsAuthenticated)
            {
                var userId        = this.userService.AddPartnerDetail(GetCurrentUserDetail());
                var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);
                this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository, userId);

                this.log.Info("User authenticate successfully");

                if (!string.IsNullOrEmpty(token))
                {
                    this.TempData["ShowWelcomeScreen"] = null;
                    token = token.Replace(' ', '+');
                    var newSubscription = this.apiClient.ResolveAsync(token).ConfigureAwait(false).GetAwaiter().GetResult();

                    if (newSubscription != null && newSubscription.SubscriptionId != default)
                    {
                        var subscriptionPlanDetail = this.apiClient.GetAllPlansForSubscriptionAsync(newSubscription.SubscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                        this.subscriptionService.AddPlanDetailsForSubscription(subscriptionPlanDetail);

                        // GetSubscriptionBy SubscriptionId
                        var subscriptionData = this.apiClient.GetSubscriptionByIdAsync(newSubscription.SubscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                        var subscribeId      = this.subscriptionService.AddUpdatePartnerSubscriptions(subscriptionData);

                        if (subscribeId > 0 && subscriptionData.SaasSubscriptionStatus == SubscriptionStatusEnum.PendingFulfillmentStart)
                        {
                            SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                            {
                                Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                                SubscriptionId = subscribeId,
                                NewValue       = "Pending Activation",
                                OldValue       = "None",
                                CreateBy       = currentUserId,
                                CreateDate     = DateTime.Now
                            };
                            this.subscriptionLogRepository.Add(auditLog);
                        }

                        subscriptionDetail = subscriptionData;
                        subscriptionDetail.ShowWelcomeScreen    = false;
                        subscriptionDetail.CustomerEmailAddress = this.CurrentUserEmailAddress;
                        subscriptionDetail.CustomerName         = this.CurrentUserName;
                    }
                }
                else
                {
                    this.TempData["ShowWelcomeScreen"]   = "True";
                    subscriptionDetail.ShowWelcomeScreen = true;
                    return(this.View(subscriptionDetail));
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(token))
                {
                    return(this.Challenge(new AuthenticationProperties {
                        RedirectUri = "/?token=" + token
                    }, OpenIdConnectDefaults.AuthenticationScheme));
                }
                else
                {
                    this.TempData["ShowWelcomeScreen"]   = "True";
                    subscriptionDetail.ShowWelcomeScreen = true;
                    return(this.View(subscriptionDetail));
                }
            }

            return(this.View(subscriptionDetail));
        }
Пример #20
0
        /// <summary>
        /// Subscriptions the operation.
        /// </summary>
        /// <param name="subscriptionId">The subscription identifier.</param>
        /// <param name="planId">The plan identifier.</param>
        /// <param name="operation">The operation.</param>
        /// <param name="numberofProviders">The numberof providers.</param>
        /// <returns> The <see cref="IActionResult" />.</returns>
        public IActionResult SubscriptionOperation(Guid subscriptionId, string planId, string operation, int numberofProviders)
        {
            this.logger.LogInformation("Home Controller / SubscriptionOperation subscriptionId:{0} :: planId : {1} :: operation:{2} :: NumberofProviders : {3}", JsonSerializer.Serialize(subscriptionId), JsonSerializer.Serialize(planId), JsonSerializer.Serialize(operation), JsonSerializer.Serialize(numberofProviders));
            try
            {
                var userDetails = this.userRepository.GetPartnerDetailFromEmail(this.CurrentUserEmailAddress);
                var oldValue    = this.subscriptionService.GetSubscriptionsBySubscriptionId(subscriptionId);
                SubscriptionProcessQueueModel queueObject = new SubscriptionProcessQueueModel();
                if (operation == "Activate")
                {
                    if (oldValue.SubscriptionStatus.ToString() != SubscriptionStatusEnumExtension.PendingActivation.ToString())
                    {
                        this.subscriptionRepository.UpdateStatusForSubscription(subscriptionId, SubscriptionStatusEnumExtension.PendingActivation.ToString(), true);

                        SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                        {
                            Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                            SubscriptionId = oldValue.SubscribeId,
                            NewValue       = SubscriptionStatusEnumExtension.PendingActivation.ToString(),
                            OldValue       = oldValue.SubscriptionStatus.ToString(),
                            CreateBy       = userDetails.UserId,
                            CreateDate     = DateTime.Now,
                        };
                        this.subscriptionLogRepository.Save(auditLog);
                    }

                    queueObject.SubscriptionID = subscriptionId;
                    queueObject.TriggerEvent   = "Activate";
                    queueObject.UserId         = userDetails.UserId;
                    queueObject.PortalName     = "Admin";
                }

                if (operation == "Deactivate")
                {
                    this.subscriptionRepository.UpdateStatusForSubscription(subscriptionId, SubscriptionStatusEnumExtension.PendingUnsubscribe.ToString(), true);
                    SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                    {
                        Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                        SubscriptionId = oldValue.SubscribeId,
                        NewValue       = SubscriptionStatusEnumExtension.PendingUnsubscribe.ToString(),
                        OldValue       = oldValue.SubscriptionStatus.ToString(),
                        CreateBy       = userDetails.UserId,
                        CreateDate     = DateTime.Now,
                    };
                    this.subscriptionLogRepository.Save(auditLog);

                    queueObject.SubscriptionID = subscriptionId;
                    queueObject.TriggerEvent   = "Unsubscribe";
                    queueObject.UserId         = userDetails.UserId;
                    queueObject.PortalName     = "Admin";
                }

                string queueMessage                = JsonSerializer.Serialize(queueObject);
                string storageConnectionString     = this.cloudConfigs.AzureWebJobsStorage ?? this.azureWebJobsStorage;
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);

                //// Create the queue client.
                CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
                CloudQueue       queue       = queueClient.GetQueueReference("saas-provisioning-queue");

                ////Create the queue if it doesn't already exist
                queue.CreateIfNotExistsAsync();

                //// Create a message and add it to the queue.
                CloudQueueMessage message = new CloudQueueMessage(queueMessage);
                queue.AddMessageAsync(message);

                return(this.RedirectToAction(nameof(this.ActivatedMessage)));
            }
            catch (Exception ex)
            {
                this.logger.LogInformation("Message:{0} :: {1}", ex.Message, ex.InnerException);
                return(this.View("Error"));
            }
        }
Пример #21
0
        /// <summary>
        /// Get All Subscription List for Current Logged in User
        /// </summary>
        /// <param name="token">The MS Token<see cref="string" /></param>
        /// <returns>
        /// The <see cref="IActionResult" />
        /// </returns>
        public IActionResult Index(string token = null)
        {
            try
            {
                this.logger.LogInformation($"Landing page with token {token}");
                SubscriptionResultExtension subscriptionDetail = new SubscriptionResultExtension();

                if (User.Identity.IsAuthenticated)
                {
                    if (Convert.ToBoolean(applicationConfigRepository.GetValuefromApplicationConfig(MainMenuStatusEnum.IsLicenseManagementEnabled.ToString())) == true)
                    {
                        this.TempData["ShowLicensesMenu"] = true;
                    }
                    var userId        = this.userService.AddPartnerDetail(GetCurrentUserDetail());
                    var currentUserId = this.userService.GetUserIdFromEmailAddress(this.CurrentUserEmailAddress);
                    this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository, userId);

                    this.logger.LogInformation("User authenticated successfully");

                    if (!string.IsNullOrEmpty(token))
                    {
                        this.TempData["ShowWelcomeScreen"] = null;
                        token = token.Replace(' ', '+');
                        var newSubscription = this.apiClient.ResolveAsync(token).ConfigureAwait(false).GetAwaiter().GetResult();
                        if (newSubscription != null && newSubscription.SubscriptionId != default)
                        {
                            var subscriptionPlanDetail = this.apiClient.GetAllPlansForSubscriptionAsync(newSubscription.SubscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                            this.subscriptionService.AddPlanDetailsForSubscription(subscriptionPlanDetail);
                            // GetSubscriptionBy SubscriptionId
                            var subscriptionData = this.apiClient.GetSubscriptionByIdAsync(newSubscription.SubscriptionId).ConfigureAwait(false).GetAwaiter().GetResult();
                            subscriptionData.Quantity = 0;
                            var subscribeId = this.subscriptionService.AddUpdatePartnerSubscriptions(subscriptionData);
                            if (subscribeId > 0 && subscriptionData.SaasSubscriptionStatus == SubscriptionStatusEnum.PendingFulfillmentStart)
                            {
                                SubscriptionAuditLogs auditLog = new SubscriptionAuditLogs()
                                {
                                    Attribute      = Convert.ToString(SubscriptionLogAttributes.Status),
                                    SubscriptionId = subscribeId,
                                    NewValue       = SubscriptionStatusEnum.PendingFulfillmentStart.ToString(),
                                    OldValue       = "None",
                                    CreateBy       = currentUserId,
                                    CreateDate     = DateTime.Now
                                };
                                this.subscriptionLogRepository.Add(auditLog);
                            }
                            var serializedParent = JsonConvert.SerializeObject(subscriptionData);
                            subscriptionDetail = JsonConvert.DeserializeObject <SubscriptionResultExtension>(serializedParent);
                            subscriptionDetail.ShowWelcomeScreen    = false;
                            subscriptionDetail.CustomerEmailAddress = this.CurrentUserEmailAddress;
                            subscriptionDetail.CustomerName         = this.CurrentUserName;
                        }
                    }
                    else
                    {
                        this.TempData["ShowWelcomeScreen"]   = "True";
                        subscriptionDetail.ShowWelcomeScreen = true;
                        return(this.View(subscriptionDetail));
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(token))
                    {
                        return(this.Challenge(new AuthenticationProperties {
                            RedirectUri = "/?token=" + token
                        }, OpenIdConnectDefaults.AuthenticationScheme));
                    }
                    else
                    {
                        this.TempData["ShowWelcomeScreen"]   = "True";
                        subscriptionDetail.ShowWelcomeScreen = true;
                        return(this.View(subscriptionDetail));
                    }
                }
                return(this.View(subscriptionDetail));
            }
            catch (Exception ex)
            {
                logger.LogInformation("Message:{0} :: {1}   ", ex.Message, ex.InnerException);
                return(View("Error"));
            }
        }