package users

import (
	db "ttime/internal/database"
	"ttime/internal/types"

	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/fiber/v2/log"
)

// Register is a simple handler that registers a new user
//
//	@Summary		Register
//	@Description	Register a new user
//	@Tags			User
//	@Accept			json
//	@Produce		plain
//	@Param			NewUser	body		types.NewUser	true	"User to register"
//	@Success		200		{string}	string			"User added"
//	@Failure		400		{string}	string			"Bad request"
//	@Failure		500		{string}	string			"Internal server error"
//	@Router			/register [post]
func Register(c *fiber.Ctx) error {
	u := new(types.NewUser)
	if err := c.BodyParser(u); err != nil {
		log.Warn("Error parsing body")
		return c.Status(400).SendString(err.Error())
	}

	log.Info("Adding user:", u.Username)
	if err := db.GetDb(c).AddUser(u.Username, u.Password); err != nil {
		log.Warn("Error adding user:", err)
		return c.Status(500).SendString(err.Error())
	}

	log.Info("User added:", u.Username)
	return c.Status(200).SendString("User added")
}