import { computed } from 'vue'
import type { ComputedRef } from 'vue'

export interface RechazoRecord {
  tipo: 'chibolita' | 'perico' | 'vano' | 'picadillo' | 'magalla' | 'pinta'
  cantidad: number // libras para chibolita, perico, pinta; galones para vano, picadillo, magalla
  precio_unitario: number
  total_cobrado: number
}

export interface RechazoMetrics {
  totalCantidad: number
  precioPromedio: number
  totalCobrado: number
}

export interface RechazosMetrics {
  chibolita: ComputedRef<RechazoMetrics>
  perico: ComputedRef<RechazoMetrics>
  vano: ComputedRef<RechazoMetrics>
  picadillo: ComputedRef<RechazoMetrics>
  magalla: ComputedRef<RechazoMetrics>
  pinta: ComputedRef<RechazoMetrics>
  totalRechazos: ComputedRef<number>
}

export function useRechazosMetrics(rechazos: ComputedRef<RechazoRecord[]>) {
  const calcularMetricasPorTipo = (tipo: RechazoRecord['tipo']): ComputedRef<RechazoMetrics> => {
    return computed(() => {
      const registros = rechazos.value.filter(r => r.tipo === tipo)

      const totalCantidad = registros.reduce((sum, r) => sum + (r.cantidad || 0), 0)
      // const totalCobrado = registros.reduce((sum, r) => sum + (r.total_cobrado || 0), 0) DESACTIVADO HASTA NORMALIZAR LOS DATOS DE LA TABLA ORIGINAL, MENCIONAR SI TE TOPAS CON ESTO UN MES DESPUES ESTAMOS EN 1 OCTUBRE 2025
      // const precioPromedio = totalCantidad > 0 ? totalCobrado / totalCantidad : 0  DESACTIVADO HASTA NORMALIZAR LOS DATOS DE LA TABLA ORIGINAL, MENCIONAR SI TE TOPAS CON ESTO UN MES DESPUES ESTAMOS EN 1 OCTUBRE 2025
      const precioPromedio = 10
      const totalCobrado = 100

      return {
        totalCantidad,
        precioPromedio,
        totalCobrado
      }
    })
  }

  const chibolita = calcularMetricasPorTipo('chibolita')
  const perico = calcularMetricasPorTipo('perico')
  const vano = calcularMetricasPorTipo('vano')
  const picadillo = calcularMetricasPorTipo('picadillo')
  const magalla = calcularMetricasPorTipo('magalla')
  const pinta = calcularMetricasPorTipo('pinta')

  const totalRechazos = computed(() => {
    return chibolita.value.totalCobrado +
           perico.value.totalCobrado +
           vano.value.totalCobrado +
           picadillo.value.totalCobrado +
           magalla.value.totalCobrado +
           pinta.value.totalCobrado
  })

  return {
    chibolita,
    perico,
    vano,
    picadillo,
    magalla,
    pinta,
    totalRechazos
  }
}