package dao

import (
	"errors"

	"github.com/pingcap/errcode"
	"github.com/tidbcloud/account/internel/dao/entity"
	"gorm.io/gorm"
)

// TagNotFound wraps the `gorm.ErrRecordNotFound` to a new error type.
func TagNotFound(err error) error {
	if err == gorm.ErrRecordNotFound {
		return errcode.NewNotFoundErr(err)
	}
	return err
}

func CheckResourceOrgIDAndProjectID(orgID, resourceOrgID, projectID, resourceProjectID entity.ID) error {
	if orgID != resourceOrgID || projectID != resourceProjectID {
		return errcode.NewForbiddenErr(errors.New("you do not have permission to access this resource"))
	}
	return nil
}

func UserInProject(userProjects []entity.Project, projectID entity.ID) bool {
	userInProject := false
	for _, project := range userProjects {
		if project.ID == projectID {
			userInProject = true
		}
	}
	return userInProject
}

func CheckProjectID(userProjects []entity.Project, projectID entity.ID) error {
	userInProject := UserInProject(userProjects, projectID)
	if userInProject {
		return nil
	}

	return errcode.NewForbiddenErr(errors.New("you do not have permission to access this project"))
}
