package handlers

import (
	"github.com/gin-gonic/gin"
	"gitea.maison43.duckdns.org/gilles/matosbox/internal/data/ent"
)

// RegisterRoutes enregistre les routes v1.
func RegisterRoutes(r *gin.Engine, client *ent.Client) {
	h := &Handler{client: client}

	v1 := r.Group("/v1")
	{
		v1.GET("/objets", h.ListObjets)
		v1.POST("/objets", h.CreateObjet)
		v1.GET("/objets/:id", h.GetObjet)
		v1.PUT("/objets/:id", h.UpdateObjet)
		v1.DELETE("/objets/:id", h.DeleteObjet)
		v1.POST("/objets/:id/pieces_jointes", h.UploadPiecesJointes)
		v1.GET("/objets/:id/pieces_jointes", h.ListPiecesJointes)
		v1.DELETE("/pieces_jointes/:id", h.DeletePieceJointe)
		v1.PUT("/pieces_jointes/:id/principale", h.SetPieceJointePrincipale)
		v1.GET("/objets/:id/champs_personnalises", h.ListChampsPersonnalises)
		v1.POST("/objets/:id/champs_personnalises", h.CreateChampPersonnalise)
		v1.PUT("/champs_personnalises/:id", h.UpdateChampPersonnalise)
		v1.DELETE("/champs_personnalises/:id", h.DeleteChampPersonnalise)
		v1.GET("/objets/:id/liens_emplacements", h.ListLiensEmplacements)
		v1.POST("/objets/:id/liens_emplacements", h.CreateLienEmplacement)
		v1.PUT("/liens_emplacements/:id", h.UpdateLienEmplacement)
		v1.DELETE("/liens_emplacements/:id", h.DeleteLienEmplacement)
		v1.POST("/analyse-hardware", h.AnalyseHardware)
		v1.POST("/imports/achats", h.ImportAchats)
		v1.GET("/config", h.GetConfig)
		v1.PUT("/config", h.UpdateConfig)
		v1.GET("/debug/logs", h.GetDebugLogs)

		v1.GET("/categories", h.ListCategories)
		v1.POST("/categories", h.CreateCategorie)
		v1.GET("/categories/:id", h.GetCategorie)
		v1.PUT("/categories/:id", h.UpdateCategorie)
		v1.DELETE("/categories/:id", h.DeleteCategorie)

		v1.GET("/emplacements", h.ListEmplacements)
		v1.POST("/emplacements", h.CreateEmplacement)
		v1.GET("/emplacements/:id", h.GetEmplacement)
		v1.PUT("/emplacements/:id", h.UpdateEmplacement)
		v1.DELETE("/emplacements/:id", h.DeleteEmplacement)
	}
}
