import gql from 'graphql-tag';

export const CONTRACT = gql`
  query Contract($input: ContractInput!) {
    contract(input: $input) {
      id
      payerId
      legacySummaryId
      status
      payerName
      invoiceExplanation
      departmentId
      departmentName
      payer {
        name
        nationalId
        email
        id
      }
      paymentMethod {
        id
        type
        ... on CreditCardPaymentMethod {
          id
          maskedNumber
        }
      }
      invoices {
        id
      }
      variant {
        id
        name
        productName
        monthlyCharge
        ... on SubscriptionVariant {
          monthlyCharge
          eesDataVolume
          slug
          startDate
          planType
        }
        ... on Variant {
          productName
          monthlyCharge
          startDate
        }
      }
      extraPayers {
        id
        payerId
        contractId
        status
        amount
        paymentCategory
      }
      contractItems {
        id
        type
        variantId
        status
        creditControlSettings {
          id
          contractItemId
          canToggle
          isToggledOn
        }
        ... on ServiceContractItem {
          serviceId
          serviceInfo {
            id
            type
            nickname
            userId
            userName
          }
        }
        ... on DeviceContractItem {
          trackingCode
          rentalInfo {
            status
            trackingCode
            externalOrderId
          }
        }
        ... on SignupContractItem {
          signupOrderItemId
        }
        variant {
          id
          name
          price
          monthlyCharge
          isHidden
        }
        created
        updated
      }
      created
      latestPeriodEnd
      hasActiveDefault
    }
  }
`;

export const CONTRACT_DATE = gql`
  query ContractDate($input: ContractInput!) {
    contract(input: $input) {
      id
      latestPeriodEnd
      variant {
        monthlyCharge
      }
    }
  }
`;

export const CONTRACT_PAYMENT = gql`
  query ContractPaymentMethod($input: ContractInput!) {
    contractPaymentMethod(input: $input) {
      id
      type
      ... on CreditCardPaymentMethod {
        customerId
        expiry
        id
        isDefault
        issuer
        maskedNumber
        name
        nick
        status
        type
      }
      ... on BankClaimPaymentMethod {
        id
        customerId
        type
        status
        isDefault
        name
      }
    }
  }
`;

export const CONTRACT_AVAILABLE_PAYMENT_METHODS = gql`
  query ContractAvailablePaymentMethods($input: AvailablePaymentMethodsInput!) {
    availablePaymentMethods(input: $input)
  }
`;
