public IActionResult SubscriptionOperation()

in src/AdminSite/Controllers/HomeController.cs [438:493]


    public IActionResult SubscriptionOperation(Guid subscriptionId, string planId, string operation, int numberofProviders)
    {
        this.logger.Info(HttpUtility.HtmlEncode($"Home Controller / SubscriptionOperation subscriptionId:{subscriptionId} :: planId : {planId} :: operation:{operation} :: NumberofProviders : {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.LogError($"Message:{ex.Message} :: {ex.InnerException}");
            return this.View("Error");
        }
    }