export type FindEmployeesParams = {
    _id?: string;
    name?: string;
    companyId?: string;
    userId?: string;
};

export type FindEmployeesByServiceParams = {
    serviceId?: string;
};

export enum EmployeeRoles {
    ADMIN = "admin",
    OWNER = "owner",
    EMPLOYEE = "employee",
}

export interface IEmployee {
    id?: string;
    companyId: string;
    userId: string;
    roles?: EmployeeRoles[];
    guestOk?: boolean;
    hostOk?: boolean;
}

export interface CompanyEmployeesView {
    id: string;
    companyId: string;
    userId: string;
    firstName: string;
    lastName: string;
    fullName: string;
    avatar: string;
    email: string;
    roles: EmployeeRoles[];
    guestOk: boolean;
    hostOk: boolean;
    fullOk: boolean;
    calendarColor: string;
}

export type CreateEmployeeParams = {
    companyId: string;
    userId: string;
    roles?: EmployeeRoles[];
    sessionUser: string;
};

export type UpdateEmployeeParams = {
    id: string;
    calendarColor?: string;
    limit?: number;
    sessionUser: string;
};

export type UpdateEmployeeRolesParams = {
    employeeId: string;
    companyId: string;
    roles: EmployeeRoles[];
    sessionUser: string;
};

export type ValidateEmployeeParams = {
    employeeId: string;
    sessionUser: string;
};

export type FindEmployeesByIdParams = {
    id?: string;
};

export type FindCollaboratorServicesParams = {
    companyId: string;
    employeeId: string;
    sessionUser: string;
};

export type FindEmployeesServicesParams = {
    _id?: string;
    companyId?: string;
    employeeId?: string;
    serviceId?: string;
};

export type UpdateCollaboratorServicesParams = {
    companyId: string;
    employeeId: string;
    services: ServiceStatusItem[];
    sessionUser: string;
};

export interface CollaboratorServiceItems {
    id: string;
    name: string;
    description: string;
    length: number;
    price: number;
    limit: number;
    active: boolean;
}

export interface CollaboratorServiceView {
    companyId: string;
    employeeId: string;
    fullName: string;
    avatar: string;
    services: CollaboratorServiceItems[];
}

export interface ServiceStatusItem {
    serviceId: string;
    active: boolean;
}

export type ScheduleItem = {
    from: string;
    to: string;
    disabled: boolean;
};

export type FindSchedulesParams = {
    _id?: string;
    companyId?: string;
    employeeId?: string;
    weekDay?: number;
};

export interface CollaboratorSchedulesView {
    companyId: string;
    employeeId: string;
    scheduleId: string;
    weekDay: number;
    fullName: string;
    avatar: string;
    schedules: ScheduleItem[];
}

export type UpdateScheduleParams = {
    companyId: string;
    employeeId: string;
    schedules: Array<ScheduleItem>;
    weekDay: number;
    sessionUser: string;
};
