import { Document, Types } from 'mongoose';
import { IPaginateModel } from '@/shared/interfaces/model.interface';
import { AuditFields } from '@/shared/types/common';
import { Status } from '@/modules/partnerNetwork/partnerNetwork.constant';

export interface QueryFilter {
  search?: string;
  senderId?: string;
  receiverId?: string;
  companyId?: string;
  status?: Status;
  [key: string]: unknown;
}

export interface IPartnerNetworkBase {
  senderId: Types.ObjectId | string;
  receiverId: Types.ObjectId | string;
  companyId: Types.ObjectId | string;
  status?: Status;
}

export interface IPartnerNetwork extends IPartnerNetworkBase, AuditFields {}

export interface IPartnerNetworkDoc extends IPartnerNetwork, Document {}

export interface IPartnerNetworkModel
  extends IPaginateModel<IPartnerNetworkDoc> {}

export type NewCreatedPartnerNetwork = IPartnerNetworkBase &
  Partial<Pick<AuditFields, 'createdBy' | 'updatedBy'>>;

export type UpdatePartnerNetworkBody = Partial<IPartnerNetwork>;

export type PopulatedPartnerNetwork = {
  _id: Types.ObjectId;
  firstName: string;
  lastName: string;
  email: string;
  profileImage: string;
  companyId: { name: string; address: string; _id: Types.ObjectId };
  senderId: { email: string; firstName: string; lastName: string; profileImage: string; _id: Types.ObjectId };
  receiverId: { email: string , firstName: string, lastName: string, profileImage: string, _id: Types.ObjectId };
};
