import Service from "@ember/service";
import { tracked } from "@glimmer/tracking";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { equal } from "@ember/object/computed";

const PRODUCT_PAGE = "https://custom-wizard.pavilion.tech";
const SUPPORT_MESSAGE =
  "https://coop.pavilion.tech/new-message?username=support&title=Custom%20Wizard%20Support";
const MANAGER_CATEGORY =
  "https://discourse.pluginmanager.org/c/discourse-custom-wizard";

export default class SubscriptionService extends Service {
  @tracked subscribed = false;
  @tracked subscriptionType = "";
  @tracked businessSubscription = false;
  @tracked communitySubscription = false;
  @tracked standardSubscription = false;
  @tracked subscriptionAttributes = {};
  subscriptionLandingUrl = PRODUCT_PAGE;

  init() {
    super.init(...arguments);
    this.retrieveSubscriptionStatus();
  }

  retrieveSubscriptionStatus() {
    ajax("/admin/wizards/subscription")
      .then((result) => {
        this.subscribed = result.subscribed;
        this.subscriptionType = result.subscription_type;
        this.subscriptionAttributes = result.subscription_attributes;
        this.businessSubscription = equal(this.subscriptionType, "business");
        this.communitySubscription = equal(this.subscriptionType, "community");
        this.standardSubscription = equal(this.subscriptionType, "standard");
      })
      .catch(popupAjaxError);
  }

  get subscriptionLink() {
    return this.subscriptionLandingUrl;
  }

  get subscriptionCtaLink() {
    switch (this.subscriptionType) {
      case "none":
        return PRODUCT_PAGE;
      case "standard":
        return SUPPORT_MESSAGE;
      case "business":
        return SUPPORT_MESSAGE;
      case "community":
        return MANAGER_CATEGORY;
      default:
        return PRODUCT_PAGE;
    }
  }
}