import { Id } from '@win2win/shared';
import { useFetch } from '@win2win/shared-ui';
import { omit } from 'lodash';
import { computed } from 'vue';
import { usePartnerLite } from '../useStoreLite';

export function usePartnerData(customId?: Id) {
  const { id: localId, idGama } = usePartnerLite();
  const id = computed(() => customId ?? localId.value);
  const key = computed(() => ['partners', { id: id.value, idGama: idGama.value }, 'data']);
  const query = computed(() => `w2w-query/partner(${id.value})->(links, partners_paises->pais(id=partners_paises.id_pais))`);
  const { data, fetching, invalidate } = useFetch<PartnerLite>(
    key,
    query,
    undefined,
    (data) => ({ ...omit(data, ['links', 'partners_paises']), servicios: data.links, paises: data.partners_paises.filter((p) => !!p.pais).map((p) => p.pais) || [] } as PartnerLite)
  );

  return {
    data,
    fetching,
    invalidate,
    id,
  };
}

export interface PartnerLite {
  id?: Id;
  nombre: string;
  codigo: string;
  url: string;
  fecha_creado?: string;
  paises: Id[] | { id_pais: Id; nombre: string }[];
  servicios: {
    id?: Id;
    name: string;
    description: string;
    code: string;
    url: string;
  }[];
}
