import { gql } from '@apollo/client'

// Получение реферальной ссылки
export const GET_MY_REFERRAL_LINK = gql`
  query GetMyReferralLink {
    myReferralLink
  }
`

// Получение партнерской ссылки
export const GET_MY_PARTNER_LINK = gql`
  query GetMyPartnerLink {
    myPartnerLink
  }
`

// Получение статистики по рефералам
export const GET_MY_REFERRAL_STATS = gql`
  query GetMyReferralStats {
    myReferralStats {
      totalPartners
      totalSpheres
      monthlyPartners
      monthlySpheres
      referralsByType {
        type
        count
        spheres
      }
      referralsBySource {
        source
        count
        spheres
      }
    }
  }
`

// Получение списка рефералов
export const GET_MY_REFERRALS = gql`
  query GetMyReferrals(
    $dateFrom: DateTime
    $dateTo: DateTime
    $type: OrganizationType
    $source: ReferralSource
    $search: String
    $limit: Int
    $offset: Int
  ) {
    myReferrals(
      dateFrom: $dateFrom
      dateTo: $dateTo
      type: $type
      source: $source
      search: $search
      limit: $limit
      offset: $offset
    ) {
      referrals {
        id
        organization {
          id
          name
          fullName
          inn
          type
          createdAt
        }
        source
        spheresEarned
        registeredAt
        status
      }
      totalCount
      totalPages
    }
  }
`

// Получение истории транзакций
export const GET_MY_REFERRAL_TRANSACTIONS = gql`
  query GetMyReferralTransactions($limit: Int, $offset: Int) {
    myReferralTransactions(limit: $limit, offset: $offset) {
      transactions {
        id
        spheres
        type
        description
        createdAt
        referral {
          id
          name
          fullName
          inn
          type
        }
      }
      totalCount
    }
  }
`

// Получение данных для дашборда рефералов (комбинированный запрос)
export const GET_REFERRAL_DASHBOARD_DATA = gql`
  query GetReferralDashboardData {
    myReferralLink
    myReferralStats {
      totalPartners
      totalSpheres
      monthlyPartners
      monthlySpheres
      referralsByType {
        type
        count
        spheres
      }
      referralsBySource {
        source
        count
        spheres
      }
    }
    myReferrals(limit: 50) {
      referrals {
        id
        organization {
          id
          name
          fullName
          inn
          type
          createdAt
        }
        source
        spheresEarned
        registeredAt
        status
      }
      totalCount
    }
  }
`