import { IconType } from '@nova-hf/ui';
import { ServiceType } from 'typings/graphql';

export type NavItem = {
  id: string;
  text: string;
  href: string;
  icon?: IconType;
  openInNewTab?: boolean;
};

// Navigation for /thjonustur/{service-id}/...
export function getServiceShortcuts(
  serviceType: string,
  customerId: string,
  serviceId: string,
  subscriptionType?: string,
  parentId?: string,
): NavItem[] {
  /* Hraðleið */
  const hradleidParent: NavItem = {
    id: 'changePack',
    text: 'common:navigation.shortCuts.changePack',
    href: parentId ? `/beta/${customerId}/askrift/${parentId}` : `/${customerId}/thjonustur`,
    icon: 'mobileGlobe',
  };

  /* Top Level Navigation */
  const settingsPayment: NavItem = {
    id: 'settingsPayment',
    text: 'common:navigation.shortCuts.paymentType',
    href: `/beta/${customerId}/stillingar/payment`,
    icon: 'creditcard',
  };

  /* Settings */
  const settingsMove: NavItem = {
    id: 'move',
    text: 'stillingar:sideMenu.move',
    href: `/beta/${customerId}/thjonustur/${serviceId}/flutningur`,
    icon: 'refresh',
  };

  const settingsUser: NavItem = {
    id: 'user',
    text: 'stillingar:sideMenu.user',
    href: `/beta/${customerId}/thjonustur/${serviceId}/stillingar?settings=user`,
    icon: 'profile',
  };

  /* Help links */
  const fiberSingleHelp: NavItem = {
    id: 'fiberSingleHelp',
    text: 'common:navigation.shortCuts.help',
    href: 'https://support.nova.is/hc/is/sections/360003360897-Lj%C3%B3slei%C3%B0ari',
    openInNewTab: true,
    icon: 'info',
  };

  const fiberAlltSamanHelp: NavItem = {
    id: 'fiberAlltSamanHelp',
    text: 'common:navigation.shortCuts.help',
    href: 'https://support.nova.is/hc/is/sections/360003360917-AlltSaman',
    openInNewTab: true,
    icon: 'info',
  };

  const fiberHradleidHelp: NavItem = {
    id: 'fiberHradleidHelp',
    text: 'common:navigation.shortCuts.help',
    href: 'https://support.nova.is/hc/is/sections/4406980818705-Hra%C3%B0lei%C3%B0',
    openInNewTab: true,
    icon: 'info',
  };

  const novaTVHelp: NavItem = {
    id: 'novaTVHelp',
    text: 'common:navigation.shortCuts.helpTwo',
    href: 'https://support.nova.is/hc/is/categories/360002584798-Nova-TV',
    openInNewTab: true,
    icon: 'novaLogo',
  };

  /* Signup links */
  const accespointSignup: NavItem = {
    id: 'accespointSignup',
    text: 'common:navigation.shortCuts.accesspoint',
    href: 'https://www.nova.is/netid/kastarinn',
    openInNewTab: true,
    icon: 'wifi',
  };

  const alltsamanSignup: NavItem = {
    id: 'alltsamanSignup',
    text: 'common:navigation.shortCuts.alltsaman',
    href: 'https://www.nova.is/alltsaman',
    openInNewTab: true,
    icon: 'novaLogo',
  };

  const hradleidSignup: NavItem = {
    id: 'hradleidSignup',
    text: 'common:navigation.shortCuts.hradleid',
    href: 'https://www.nova.is/hradleid',
    openInNewTab: true,
    icon: 'novaLogo',
  };

  /* NovaTV links */

  const buySubscription: NavItem = {
    id: 'buySubscription',
    text: 'common:navigation.shortCuts.buySubscription',
    href: 'https://www.nova.is/nova-tv/kaupa',
    openInNewTab: true,
    icon: 'userCircle',
  };

  const events: NavItem = {
    id: 'events',
    text: 'common:navigation.shortCuts.events',
    href: 'https://www.novatv.is/page/vidburdir',
    openInNewTab: true,
    icon: 'wallet',
  };

  switch (serviceType) {
    case ServiceType.Mobile:
      return [alltsamanSignup];
      break;
    case ServiceType.MobileInternet:
      return [alltsamanSignup];
      break;
    case ServiceType.Landline:
      return [alltsamanSignup];
      break;
    case ServiceType.Fiber && subscriptionType === 'hradljos':
      return [settingsMove, settingsUser, hradleidParent, fiberHradleidHelp];
      break;
    case ServiceType.Fiber && subscriptionType === 'alltsaman':
      return [settingsMove, fiberAlltSamanHelp, accespointSignup, settingsPayment];
      break;
    case ServiceType.Fiber && subscriptionType === 'hradleid':
      return [settingsMove, settingsUser, accespointSignup, hradleidSignup];
      break;
    case ServiceType.Fiber:
      return [settingsMove, fiberSingleHelp, accespointSignup, alltsamanSignup];
      break;
    case ServiceType.Tv:
      return [buySubscription, events, novaTVHelp];
      break;

    default:
      return [];
      break;
  }
}
