import gql from 'graphql-tag';

import { errorFragment } from '../fragments/error';

export const UPDATE_SUBSCRIPTION = gql`
  mutation updateSubscription($input: UpdateSubscriptionInput, $subscriptionId: ID) {
    updateSubscription(input: $input, subscriptionId: $subscriptionId) {
      subscription {
        name
        ssn
        email
        allowMarketing
        isVisibleInPhonebook
        phoneNumber
        rateplan {
          typeId
        }
      }
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const CANCEL_SUBSCRIPTION = gql`
  mutation cancelSubscription($input: CancelSubscriptionInput!) {
    cancelSubscription(input: $input) {
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const ACTIVATE_SUBSCRIPTION = gql`
  mutation activate($subscriptionId: ID!) {
    activate(subscriptionId: $subscriptionId) {
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const POSTPONE_PERIOD = gql`
  mutation postponePeriod($input: PostponePeriodInput!) {
    postponePeriod(input: $input) {
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const REGISTER_SUBSCRIPTION = gql`
  mutation registerSubscription($input: RegisterSubscriptionInput!) {
    registerSubscription(input: $input) {
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const CHANGE_SUBSCRIPTION_PERIOD = gql`
  mutation changeSubscriptionPeriod($input: ChangeSubscriptionPeriodInput!) {
    changeSubscriptionPeriod(input: $input) {
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const CALCULATE_PERIODS = gql`
  mutation calculatePeriods($input: CalculatePeriodsInput!) {
    calculatePeriods(input: $input) {
      data {
        amount
        periodStart
        periodEnd
        discount
      }
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const SUBSCRIPTION_PERIOD_DISCOUNT = gql`
  mutation subscriptionPeriodDiscount($input: SubscriptionPeriodDiscountInput!) {
    subscriptionPeriodDiscount(input: $input) {
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;

export const SUBSCRIPTION_PERIOD_CHARGE = gql`
  mutation performSubscriptionPeriodCharge($input: PerformSubscriptionPeriodChargeInput!) {
    performSubscriptionPeriodCharge(input: $input) {
      subscriptionPeriod {
        order {
          payments {
            message
            status
          }
        }
      }
      error {
        ...ErrorFragment
      }
    }
  }
  ${errorFragment}
`;
