package user

import (
	"context"
)

type Service interface {
	Create(context.Context, *CreateUserCommand) (*User, error)
	Delete(context.Context, *DeleteUserCommand) error
	GetByID(context.Context, *GetUserByIDQuery) (*User, error)
	GetByLogin(context.Context, *GetUserByLoginQuery) (*User, error)
	GetByEmail(context.Context, *GetUserByEmailQuery) (*User, error)
	Update(context.Context, *UpdateUserCommand) error
	ChangePassword(context.Context, *ChangeUserPasswordCommand) error
	UpdateLastSeenAt(context.Context, *UpdateUserLastSeenAtCommand) error
	SetUsingOrg(context.Context, *SetUsingOrgCommand) error
	GetSignedInUserWithCacheCtx(context.Context, *GetSignedInUserQuery) (*SignedInUser, error)
	GetSignedInUser(context.Context, *GetSignedInUserQuery) (*SignedInUser, error)
	Search(context.Context, *SearchUsersQuery) (*SearchUserQueryResult, error)
	Disable(context.Context, *DisableUserCommand) error
	BatchDisableUsers(context.Context, *BatchDisableUsersCommand) error
	UpdatePermissions(int64, bool) error
	SetUserHelpFlag(context.Context, *SetUserHelpFlagCommand) error
	GetUserProfile(context.Context, *GetUserProfileQuery) (UserProfileDTO, error)
}
