import { Id, toCurrency } from '@win2win/shared';
import { useFetch } from '@win2win/shared-ui';
import { sum } from 'lodash';
import { ContactoLite } from 'src/models';
import { computed, ComputedRef } from 'vue';
import { calculateMonthlyAmount } from '../helpers/functions';

export function useTitulares(idCaptacion: ComputedRef<Id | null>) {
  const key = computed(() => ['captacion', idCaptacion.value, 'ingresos', 'detalle']);
  const query = computed(() => `w2w-query/contactos(id_captacion=${idCaptacion.value})->ingresos->archivos)`);
  const { data, fetching, invalidate } = useFetch<ContactoLite[]>(key, query);
  const titulares = computed(() => data?.value?.filter((t) => t.roles?.includes('titular')) || []);
  const total = computed(() => toCurrency(sum(titulares.value?.flatMap((c) => c.ingresos?.map(calculateMonthlyAmount) || [])), 'EUR'));

  return {
    titulares,
    fetching,
    invalidate,
  };
}
