package account

import (
	"api_yal/internal/logger"
	"api_yal/internal/middleware"
	"api_yal/internal/repository"

	"github.com/go-chi/chi/v5"
	"gorm.io/gorm"
)

// RegisterRoutes регистрирует маршруты для работы с аккаунтами
func RegisterRoutes(r chi.Router, db *gorm.DB, jwtSecret string) {
	l := logger.Get()
	l.Debug("Регистрация маршрутов аккаунтов")
	
	// Создаем репозиторий и сервис
	accountRepo := repository.NewAccountRepository(db)
	accountService := NewService(accountRepo)
	accountHandler := NewHandler(accountService)
	
	// Защищенные маршруты (требуют аутентификации)
	r.Group(func(r chi.Router) {
		r.Use(middleware.AuthMiddleware(jwtSecret))
		
		r.Get("/profile", accountHandler.GetAccountProfile)
		r.Get("/me", accountHandler.GetAccountByID)
		r.Put("/me", accountHandler.UpdateAccount)
		r.Delete("/me", accountHandler.DeleteAccount)
		r.Post("/change-password", accountHandler.ChangePassword)
	})
	
	// Административные маршруты (требуют прав администратора)
	r.Group(func(r chi.Router) {
		r.Use(middleware.AuthMiddleware(jwtSecret))
		r.Use(middleware.AdminOnlyMiddleware)
		
		r.Get("/accounts", accountHandler.ListAccounts)
		r.Get("/account", accountHandler.GetAccountByIDAdmin)
		r.Put("/account/verify", accountHandler.VerifyAccount)
		r.Put("/account/status", accountHandler.UpdateAccountStatus)
	})
	
	l.Info("Маршруты аккаунтов зарегистрированы")
}