import React from 'react';
import gql from 'graphql-tag';
import { inject } from 'mobx-react';

import { rateplanFragment } from '../fragments/rateplan';
import { settingFragment } from '../fragments/settings';

import { IMeQueryProps, MeQuery } from './types';

export const PROFILE_SETTINGS = gql`
  query settings($subscriptionId: ID, $accountInput: AccountInput) {
    me(input: $accountInput) {
      ssn
      profiles(subscriptionId: $subscriptionId) {
        subscriptionId
        subscriptionGuid
        ...RateplanFragment
        settings {
          ...SettingFragment
        }
      }
    }
  }
  ${settingFragment}
  ${rateplanFragment}
`;

export const CALL_FORWARDING = gql`
  query CallForwarding($input: SubscriptionInput!) {
    callForwarding(input: $input) {
      forwardingTo
      isActive
    }
  }
`;

export const MOBILE_SUBSCRIBER_STATUS = gql`
  query MobileSubscriberStatus($input: SubscriptionInput!) {
    mobileSubscriberStatus(input: $input) {
      description
      isRestrictedOnCreditControl
      isRestrictedOnCustomerRequest
      isRestrictedOnLifeCycleChange
      isRestrictedOnLostPhoneReported
      isRestrictedOnOperatorRequest
      isRestrictedOnUnpaidInvoice
      status
    }
  }
`;

@inject('authentication')
export default class Query extends React.Component<IMeQueryProps> {
  render() {
    const {
      authentication: { accountInput },
      variables,
      children,
      ...rest
    } = this.props;

    return (
      <MeQuery query={PROFILE_SETTINGS} variables={{ accountInput, ...variables }} {...rest}>
        {(result) => children(result)}
      </MeQuery>
    );
  }
}
