import {
  createDisciplinaire,
  deleteDisciplinaireById,
  getDisciplinaireById,
  listDisciplinaires,
  listDisciplinairesByEmployeCos,
  listDisciplinairesDashboard,
  updateDisciplinaireById,
} from '@/services/disciplinaires.service'
import { getEmployeByCos } from '@/services/employes.service'
import type {
  DisciplinaireCreateInput,
  DisciplinaireUpdateInput,
} from '@/validators/disciplinaires'

export async function getDisciplinairesByEmployeCosFeed(cos: number) {
  const employe = await getEmployeByCos(cos)

  if (!employe) {
    return { employe: null, items: [], count: 0 }
  }

  const items = await listDisciplinairesByEmployeCos(cos)

  return {
    employe,
    items,
    count: items.length,
  }
}

export async function getDisciplinairesFeed(limit: number, offset: number) {
  return listDisciplinaires(limit, offset)
}

export async function getDisciplinairesDashboardFeed() {
  const items = await listDisciplinairesDashboard()

  return {
    items,
    count: items.length,
  }
}

export async function getDisciplinaireDetails(id: number) {
  const disciplinaire = await getDisciplinaireById(id)
  return { disciplinaire }
}

export async function createDisciplinaireFeed(data: DisciplinaireCreateInput) {
  const disciplinaire = await createDisciplinaire(data)
  return { disciplinaire }
}

export async function updateDisciplinaireFeed(
  id: number,
  data: DisciplinaireUpdateInput,
) {
  const disciplinaire = await updateDisciplinaireById(id, data)
  return { disciplinaire }
}

export async function deleteDisciplinaireFeed(id: number) {
  const disciplinaire = await deleteDisciplinaireById(id)
  return { disciplinaire }
}