import type { ProspectContact } from '../api/sales'; /** * Контактное лицо в форме: те же поля, но position всегда строка (v-model не любит null), * а телефоны — редактируемый список с пустыми заготовками. */ export interface ContactForm { name: string; position: string; phones: string[]; } export function emptyContact(): ContactForm { return { name: '', position: '', phones: [''] }; } /** Из сохранённых контактов делаем форму. Пусто → одна пустая строка, чтобы было куда писать. */ export function toForm(contacts: ProspectContact[] | null | undefined): ContactForm[] { if (!contacts || contacts.length === 0) return [emptyContact()]; return contacts.map((c) => ({ name: c.name ?? '', position: c.position ?? '', phones: c.phones && c.phones.length > 0 ? [...c.phones] : [''], })); } /** * Форма → то, что уходит на сервер: пустые телефоны выброшены, люди без имени * и без телефонов не отправляются. Сервер делает то же самое — здесь это чтобы * не гонять по сети заведомый мусор. */ export function cleanContacts(list: ContactForm[]): ProspectContact[] { const out: ProspectContact[] = []; for (const c of list) { const name = c.name.trim(); const phones = c.phones.map((p) => p.trim()).filter((p) => p !== ''); if (name === '' && phones.length === 0) continue; out.push({ name, position: c.position.trim() === '' ? null : c.position.trim(), phones }); } return out; }