// src/server/features/reference_books/db/contractors.table.ts
// Contractors table schema for tracking external contractors

import { mysqlTable, varchar, text, timestamp, boolean } from 'drizzle-orm/mysql-core';
import { randomUUID } from 'node:crypto';

export const contractors = mysqlTable('contractors', {
  id: varchar('id', { length: 36 }).primaryKey().$defaultFn(() => randomUUID()),
  name: varchar('name', { length: 100 }).notNull(), // Название
  category: varchar('category', { length: 50 }).notNull(), // Категория
  contractNumber: varchar('contract_number', { length: 100 }), // № Договора / ID
  phone: varchar('phone', { length: 20 }).notNull(), // Телефон
  email: varchar('email', { length: 100 }), // Email
  webLink: varchar('web_link', { length: 500 }), // Web Link
  managerName: varchar('manager_name', { length: 100 }), // Имя ответственного менеджера
  managerPhone: varchar('manager_phone', { length: 20 }), // Телефон менеджера
  managerEmail: varchar('manager_email', { length: 100 }), // Email менеджера
  comment: text('comment'), // Комментарий
  isApproved: boolean('is_approved').notNull().default(true), // Статус согласования
  createdAt: timestamp('created_at').notNull().defaultNow(),
  updatedAt: timestamp('updated_at').notNull().defaultNow().onUpdateNow(),
  archivedAt: timestamp('archived_at'), // Soft delete для архивации
});

// Таблица для модерации записей контрагентов перед попаданием в основной список
export const contractorsPending = mysqlTable('contractors_pending', {
  id: varchar('id', { length: 36 }).primaryKey().$defaultFn(() => randomUUID()),
  name: varchar('name', { length: 100 }).notNull(), // Название
  category: varchar('category', { length: 50 }).notNull(), // Категория
  contractNumber: varchar('contract_number', { length: 100 }), // № Договора / ID
  phone: varchar('phone', { length: 20 }).notNull(), // Телефон
  email: varchar('email', { length: 100 }), // Email
  webLink: varchar('web_link', { length: 500 }), // Web Link
  managerName: varchar('manager_name', { length: 100 }), // Имя ответственного менеджера
  managerPhone: varchar('manager_phone', { length: 20 }), // Телефон менеджера
  managerEmail: varchar('manager_email', { length: 100 }), // Email менеджера
  comment: text('comment'), // Комментарий
  status: varchar('status', { length: 20 }).notNull().default('pending'), // Статус: pending, approved, rejected, to_delete
  targetId: varchar('target_id', { length: 36 }), // ID оригинальной записи в таблице contractors (для редактирования)
  createdBy: varchar('created_by', { length: 36 }), // ID пользователя, создавшего запись
  reviewedBy: varchar('reviewed_by', { length: 36 }), // ID пользователя, одобрившего/отклонившего запись
  reviewedAt: timestamp('reviewed_at'), // Время рассмотрения
  rejectionReason: text('rejection_reason'), // Причина отклонения
  createdAt: timestamp('created_at').notNull().defaultNow(),
  updatedAt: timestamp('updated_at').notNull().defaultNow().onUpdateNow(),
});
