import { Types, Document } from 'mongoose';

import { IPaginateModel } from '@/shared/interfaces/model.interface';
import { AuditFields } from '@/shared/types/common';

export interface ISubCompanyBase {
  name: string;
  description?: string;
  address?: string;
  phone?: string;
  company: Types.ObjectId;
}

export interface ISubCompany extends ISubCompanyBase, AuditFields {}

export interface ISubCompanyDoc extends ISubCompany, Document {}

export interface ISubCompanyModel extends IPaginateModel<ISubCompanyDoc> {
  isSubCompanyNameTaken(
    name: string,
    excludeCompanyId?: Types.ObjectId,
  ): Promise<boolean>;
}

export type NewCreatedSubCompany = ISubCompanyBase &
  Partial<Pick<AuditFields, 'createdBy' | 'updatedBy'>>;
export type UpdateSubCompanyBody = Partial<ISubCompany>;
