// GraphQL queries for platform entities
// Platform remaps SDK field names — all LINKS/PHONES fields need subfield selection

export const LEADS_QUERY = `{ leads(first: 100, orderBy: [{ createdAt: DescNullsLast }]) { edges { node {
    id name createdAt updatedAt
    contactName { firstName lastName }
    contactPhone { primaryPhoneNumber primaryPhoneCallingCode }
    contactEmail { primaryEmail }
    source status priority interestedService assignedAgent
    utmSource utmMedium utmCampaign utmContent utmTerm landingPage { primaryLinkUrl } referrerUrl
    leadScore spamScore isSpam isDuplicate
    firstContacted lastContacted contactAttempts convertedAt
    patientId campaignId
    aiSummary aiSuggestedAction
} } } }`;

export const CAMPAIGNS_QUERY = `{ campaigns(first: 50, orderBy: [{ createdAt: DescNullsLast }]) { edges { node {
    id name createdAt updatedAt
    campaignName typeCustom status platform
    startDate endDate
    budget { amountMicros currencyCode }
    amountSpent { amountMicros currencyCode }
    impressions clicks targetCount contacted converted leadsGenerated
    externalCampaignId platformUrl { primaryLinkUrl }
} } } }`;

export const ADS_QUERY = `{ ads(first: 100, orderBy: [{ createdAt: DescNullsLast }]) { edges { node {
    id name createdAt updatedAt
    adName externalAdId status format
    headline adDescription destinationUrl { primaryLinkUrl } previewUrl { primaryLinkUrl }
    impressions clicks conversions
    spend { amountMicros currencyCode }
    campaignId
} } } }`;

export const FOLLOW_UPS_QUERY = `{ followUps(first: 50, orderBy: [{ scheduledAt: DescNullsLast }]) { edges { node {
    id name createdAt
    typeCustom status scheduledAt completedAt
    priority assignedAgent
    patientId
} } } }`;

export const LEAD_ACTIVITIES_QUERY = `{ leadActivities(first: 200, orderBy: [{ occurredAt: DescNullsLast }]) { edges { node {
    id name createdAt
    activityType summary occurredAt performedBy
    previousValue newValue
    channel durationSec outcome
    leadId
} } } }`;

export const CALLS_QUERY = `{ calls(first: 100, orderBy: [{ startedAt: DescNullsLast }]) { edges { node {
    id name createdAt
    direction callStatus callerNumber { primaryPhoneNumber } agentName
    startedAt endedAt durationSec
    recording { primaryLinkUrl } disposition
    patientId appointmentId leadId
} } } }`;

export const DOCTORS_QUERY = `{ doctors(first: 20) { edges { node {
    id name fullName { firstName lastName }
    department specialty qualifications yearsOfExperience
    visitingHours
    consultationFeeNew { amountMicros currencyCode }
    consultationFeeFollowUp { amountMicros currencyCode }
    active registrationNumber
    clinic { id name clinicName }
} } } }`;

export const PATIENTS_QUERY = `{ patients(first: 50) { edges { node {
    id name fullName { firstName lastName }
    phones { primaryPhoneNumber }
    emails { primaryEmail }
    dateOfBirth gender patientType
} } } }`;
