package ports

import (
	"context"

	"Yimaru-Backend/internal/domain"
)

type TeamStore interface {
	CreateTeamMember(ctx context.Context, member domain.TeamMember) (domain.TeamMember, error)
	GetTeamMemberByID(ctx context.Context, id int64) (domain.TeamMember, error)
	GetTeamMemberByEmail(ctx context.Context, email string) (domain.TeamMember, error)
	GetAllTeamMembers(
		ctx context.Context,
		teamRole, department, status *string,
		limit, offset int32,
	) ([]domain.TeamMember, int64, error)
	SearchTeamMembers(
		ctx context.Context,
		search string,
		teamRole, status *string,
	) ([]domain.TeamMember, error)
	UpdateTeamMember(ctx context.Context, req domain.UpdateTeamMemberReq) error
	UpdateTeamMemberStatus(ctx context.Context, req domain.UpdateTeamMemberStatusReq) error
	UpdateTeamMemberPassword(ctx context.Context, memberID int64, password string) error
	UpdateTeamMemberLastLogin(ctx context.Context, memberID int64) error
	DeleteTeamMember(ctx context.Context, memberID int64) error
	CheckTeamMemberEmailExists(ctx context.Context, email string) (bool, error)
	GetTeamMembersByDepartment(ctx context.Context, department string) ([]domain.TeamMember, error)
	GetTeamMembersByRole(ctx context.Context, role string) ([]domain.TeamMember, error)
	CountTeamMembersByStatus(ctx context.Context) (domain.TeamMemberStats, error)
	UpdateTeamMemberEmailVerified(ctx context.Context, memberID int64, verified bool) error
}
