// resources/assets/ts/ContactsPage/types.ts

//ccurently these types are for ContactsAddressView.tsx


// Option interface for dropdown items
export interface Option {
  label: string;
  value: number | string;
  checked: boolean;
}

// Contact data interface from backend
export interface Contact {
          id: number;
          firmenname: string;
          abkuerzungAlternativeNamen: string;
          kategorieID: number;
          kategorieName: string;
          brancheID: number;
          brancheName: string;
          ersteller: string;
          verantwortlicher: string;
          prioritaetID: number;
          prioritaetName: string;
          prioritaetFarbe: string;
          mitarbeiter: ContactEmployee[];
          firmaPostanschrift: string;
          firmaLieferadresse: string;
          firmaTelefon: string;
          firmaEmail: string;
          firmaURL: string;
          firmaBemerkung: string;
          mitarbeiterEmail: string;
          mitarbeiterTelefon1: string;
          mitarbeiterTelefon2: string;
          mitarbeiterTelefon3: string;
          mitarbeiterTelefon4: string;
          mitarbeiterFax: string;
          mitarbeiterBemerkung: string;
}

export interface ContactEmployee {
  name: string;
  email?: string | null;
  dw1?: string | null;
  dw2?: string | null;
  dw3?: string | null;
  dw4?: string | null;
  fax?: string | null;
  bemerkung?: string | null;
}


export interface Employee {
  ma_id: number;
  MW: string;
  name: string;
  vorname: string;
  bemerkung: string;
  dw1: string;
  dw2: string;
  dw3: string;
  dw4: string;
  email: string;
  fax: string;
  kma_brf: boolean;
}



export interface MitarbeiterTabProps {
  adresses: {
    id: number;
    employer?: Employee[];
  }[];
  adrId?: number;
  csrfToken: string;
}






export interface Address {
  id: number;
  kurzname: string;
  firmenname: string;
  firmenname2: string;
  strasse: string;
  plz: string;
  ORT: string;
  telefon1: string;
  fax1: string;
  telefon2: string;
  fax2: string;
  Web: string;
  email: string;
  Bemerkung: string;
  adr_kunde: number;
  adr_branche: number;
  adr_potiential: number;
  adr_user: string;
  employer: Employee[];
  comments: Comment[];
  agbs: Agb[];
}

export interface Agb {
  id: number;
  datum: string;
  bemerkung: string;
  agb_text: string;
  bearbeiter: string;
  agb_feld1: string; 
  agb_feld2: string; 
  kostenstelle: string;
  recreatendyas: number;
  kdb_agbdyn: number;
  erl: number;
}




export interface Props {
  adresses: Address[];
  userOptions: { [key: string]: string };
  orderTypes: Array<{ name: string; agb_counter: number; pattern: string }>;
  dyns: { [key: string]: string };
  csrfToken: string;
}


export interface ContactsAddressViewProps {
  adresses: Address[];
  userOptions: { [key: string]: string };
  orderTypes: Array<{ name: string; agb_counter: number; pattern: string }>;
  dyns: { [key: string]: string };
  csrfToken: string;
  currentUser?: string;
}


export interface MeineAufgaben {
    id: number;
    status: number;
    potenzial: number;
    datum: string;
    bemerkung: string;
    bearbeiter: string;
    adrs?: {
        adr_kunde?: number; //status
        firmenname?: string; //Firma
        adr_branche?: number; //branche
        adr_potiential?: number; //potenzial
        id?: number; //firmanummer
    };
}

export interface MeineAufgabenContactsProps {
    aufgaben: MeineAufgaben[];
    statusMap: Record<number, string>;
    potenzialMap: Record<number, string>;
    brancheMap: Record<number, string>;
}


//for NotizenTab component

export interface Comment  {
  notiz_id: number;
  adressid: number;
  ntz_timestamp: string;
  Mitarbeiter: string;
  bearbeiter: string;
  beschreibung: string;
  langtext: string | null;
}

export interface NotizenTabProps {
  adresses: {
    id: number;
    comments?: (Comment | null)[];
  }[];
  adrId?: number;
  csrfToken: string;
  currentUser: string;
}