import { BaseRepositoryPort } from '@humand-packages/common';
import { TimeTrackingUserSetting, TimeTrackingUserSettingForCreation } from '../../../business/models/timeTracking/timeTrackingUserSetting';

export default abstract class TimeTrackingUserSettingRepositoryPort extends BaseRepositoryPort {
    abstract getByInstanceIdAndUserId(instanceId: number, userId: number): Promise<TimeTrackingUserSetting | null>;
    abstract getByInstanceIdAndKioskPin(instanceId: number, kioskPin: string): Promise<TimeTrackingUserSetting | null>;
    abstract getByInstanceIdAndKioskPinList(instanceId: number, kioskPinList: string[]): Promise<TimeTrackingUserSetting[]>;
    abstract existsByInstanceIdAndKioskPin(instanceId: number, kioskPin: string, excludeUserId?: number): Promise<boolean>;
    abstract create(create: TimeTrackingUserSettingForCreation): Promise<TimeTrackingUserSetting>;
    abstract update(updated: TimeTrackingUserSetting): Promise<TimeTrackingUserSetting>;
    abstract delete(id: number): Promise<void>;
    abstract bulkUpsert(userSettings: TimeTrackingUserSettingForCreation[]): Promise<TimeTrackingUserSetting[]>;
    abstract bulkNullifyKioskPin(instanceId: number, userIds: number[]): Promise<void>;
    abstract deleteUserSettings(userIds: number[]): Promise<void>;
    abstract getByInstanceIdAndUserIds(instanceId: number, userIds: number[]): Promise<TimeTrackingUserSetting[]>;
    abstract getByInstanceId(instanceId: number): Promise<TimeTrackingUserSetting[]>;
}
