import gql from 'graphql-tag';

export const CUSTOMER_NAME = gql`
  query CustomerName($input: CustomerInput!) {
    customer(input: $input) {
      id
      nationalId
      name
      nickname
      email
      title
      isCompany
    }
  }
`;

export const CUSTOMER_ID = gql`
  query CustomerIdByNationalId($input: CustomerByNationalIdInput!) {
    customerByNationalId(input: $input) {
      id
    }
  }
`;

export const CUSTOMER_NATIONALID = gql`
  query CustomerNationalId($input: CustomerInput!) {
    customer(input: $input) {
      nationalId
    }
  }
`;

export const CUSTOMER_NAME_BY_NATIONAL_ID = gql`
  query CustomerNameByNationalId($input: CustomerByNationalIdInput!) {
    customerByNationalId(input: $input) {
      id
      name
      nationalId
      email
      businessCategory
      primaryPhoneNumber
    }
  }
`;

export const CUSTOMER_INFO_BY_NATIONAL_ID = gql`
  query CustomerInfoByNationalId($input: CustomerByNationalIdInput!) {
    customerByNationalId(input: $input) {
      id
      name
      nationalId
      email
      businessCategory
      primaryPhoneNumber
      legalEntity {
        ... on Person {
          address
        }
      }
    }
  }
`;

export const CUSTOMER_IS_VERIFIED_FIELDS = gql`
  query CustomerVerifiedFields($input: CustomerInput!) {
    customer(input: $input) {
      id
      isEmailVerified
      isPhoneNumberVerified
    }
  }
`;

export const CUSTOMER_DELEGATES = gql`
  query customerDelegates($input: CustomerInput!) {
    customer(input: $input) {
      id
      name
      delegates {
        customer {
          id
          email
          nationalId
          name
        }
        id
        roleEmail
        roleTitle
        rolePhoneNumber
        roleTypes
      }
    }
  }
`;

export const CUSTOMER_ROLES = gql`
  query CustomerRoles($input: CustomerInput!) {
    customer(input: $input) {
      id
      nationalId
      name
      roles {
        id
        roleTypes
        subject {
          id
          email
          nationalId
          name
        }
      }
    }
  }
`;

export const CUSTOMER = gql`
  query customer($input: CustomerInput!) {
    customer(input: $input) {
      id
      nationalId
      name
      nickname
      title
      email
      primaryPhoneNumber
      isPhoneNumberVerified
      created
      isEmailVerified
      delegates {
        customer {
          id
          email
          nationalId
          name
        }
        id
        roleEmail
        roleTitle
        rolePhoneNumber
        roleTypes
      }
      legalEntity {
        ... on Person {
          name
          nationalId
          address
          postCode
          city
          country
          isSystemId
          hasBannedDirectMarketing
          dateOfBirth
          maritalStatus
          nationality
          familyRegistrationCode
          spouseNationalId
          guardianNationalId
          linkedNationalId
          status
        }
        ... on Organization {
          name
          nationalId
          address
          postCode
          operationDescription
          city
          country
          organizationType
          chairmanNationalId
          deregistered
          deregistrationType
          deregistrationDate
          operationDescription
          industryCode
          vatNumber
          organizationNationalId
          lastModified
        }
      }
    }
  }
`;

export const CUSTOMER_IS_COMPANY = gql`
  query CustomerIsCompany($input: CustomerInput!) {
    customer(input: $input) {
      isCompany
    }
  }
`;

export const CUSTOMER_HAS_FIBER = gql`
  query CustomerHasFiber($input: CustomerHasFiberInput!) {
    isPayerOrUserOfFiber(input: $input)
  }
`;

export const ELIGIBLE_FOR_NET_NET = gql`
  query isEligibleForNetNet($input: CustomerInput!) {
    isEligibleForNetNet(input: $input)
  }
`;

export const CUSTOMER_CONTACTS = gql`
  query CustomerContacts($input: CustomerContactsInput!) {
    customerContacts(input: $input) {
      canPurchaseOnCredit
      contactEmail
      contactName
      contactPhone
      contactSsn
      contactTitle
      hasPortalAccess
      id
      receivesInvoiceEmails
    }
  }
`;

export const ADD_CUSTOMER_CONTACT = gql`
  mutation AddCustomerContact($input: CustomerContactInput!) {
    addCustomerContact(input: $input) {
      message
    }
  }
`;

export const CHANGE_CUSTOMER_CONTACT = gql`
  mutation ChangeCustomerContact($input: CustomerContactInput!) {
    changeCustomerContact(input: $input) {
      message
    }
  }
`;

export const REMOVE_CUSTOMER_CONTACT = gql`
  mutation RemoveCustomerContact($input: RemoveCustomerContactInput!) {
    removeCustomerContact(input: $input) {
      message
    }
  }
`;
