package repositories

import (
	"gitea.zjmud.xyz/phyer/rbac/models"
	// "gorm.io/gorm"
)

func CheckUserPermission(userID string, permission string) (bool, error) {
	var user models.User
	result := db.Preload("Roles.Permissions").Where("id = ?", userID).First(&user)
	if result.Error != nil {
		return false, result.Error
	}

	for _, role := range user.Roles {
		for _, perm := range role.Permissions {
			if perm.Name == permission {
				return true, nil
			}
		}
	}
	return false, nil
}

func GetAllUsers() ([]models.User, error) {
	var users []models.User
	result := db.Find(&users)
	return users, result.Error
}

func GetUserByID(id string) (*models.User, error) {
	var user models.User
	result := db.First(&user, "id = ?", id)
	return &user, result.Error
}

func GetUserByUsername(username string) (*models.User, error) {
	var user models.User
	result := db.First(&user, "username = ?", username)
	return &user, result.Error
}

func CreateUser(user *models.User) (*models.User, error) {
	result := db.Create(user)
	return user, result.Error
}

func UpdateUser(id string, updateData map[string]interface{}) (*models.User, error) {
	var user models.User
	result := db.Model(&user).Where("id = ?", id).Updates(updateData)
	if result.Error != nil {
		return nil, result.Error
	}
	return GetUserByID(id)
}

func DeleteUser(id string) error {
	result := db.Delete(&models.User{}, "id = ?", id)
	return result.Error
}