export type FindClientsParams = {
    _id?: string;
    companyId?: string;
    email?: string;
    firstName?: string;
    lastName?: string;
    userId?: string;
    status?: boolean;
};

export type FindClientByIdParams = {
    id: string;
    companyId: string;
    sessionUser: string;
};

export type PaginateOrganizationClientsParams = FindClientsParams & {
    page: number;
    limit: number;
};

export type OrganizationClientsResults = {
    data: OrganizationClientView[];
    page: number;
    pages: number;
};

export type CreateCustomClientParams = {
    companyId: string;
    sessionUser: string;
    firstName?: string;
    lastName?: string;
    phoneNumber?: string;
    phoneCountryCode?: string;
    phoneAreaCode?: string;
    email?: string;
    banned?: boolean;
};

export type UpdateClientParams = CreateCustomClientParams & {
    id: string;
};

export type ClientMergeParams = {
    fromClientId: string;
    toClientId: string;
    sessionUser: string;
};

export type DeleteClientParams = {
    clientId: string;
    sessionUser: string;
};

export interface OrganizationClientView {
    id: string;
    firstName: string;
    lastName: string;
    fullName: string;
    phoneNumber: string;
    phoneCountryCode: string;
    phoneAreaCode: string;
    email: string;
    avatar: string;
    banned?: boolean;
}

export interface IClient {
    id?: string;
    companyId: string;
    userId: string;
    fromClientId: string;
    status: boolean;
    firstName: string;
    lastName: string;
    phoneNumber: string;
    phoneCountryCode: string;
    phoneAreaCode: string;
    email: string;
    banned?: boolean;
}
