CREATE TABLE IF NOT EXISTS `partners` (
  `id` int(11) NOT NULL,
  `name` varchar(64) NOT NULL COMMENT 'Наименование партнёра',
  `address` varchar(255) NOT NULL COMMENT 'Адрес отделения',
  `resident` varchar(255) DEFAULT NULL COMMENT 'Жилой комплекс',
  `details` text COMMENT 'Банковские реквизиты компании-партнёра',
  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Статус партнёра (0 - не активен, 1 - активен)',
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания (добавления) партнёра',
  `created_by` mediumint(9) NOT NULL COMMENT 'Пользователь, который добавил партнёра',
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата обновления (редактирования) партнёра',
  `updated_by` mediumint(9) NOT NULL COMMENT 'Пользователь, который изменил данные партнёра'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='Таблица компаний-партнёров';

ALTER TABLE `partners`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_partners` (`name`,`address`,`resident`,`status`);

ALTER TABLE `partners`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK';


CREATE TABLE IF NOT EXISTS `partners_employees` (
  `id` int(11) NOT NULL,
  `partner_id` int(11) NOT NULL COMMENT 'ID компании-партнёра, к которой принадлежит сотрудник',
  `name` varchar(255) NOT NULL COMMENT 'Ф.И.О. сотрудника',
  `birthday` datetime DEFAULT NULL COMMENT 'Дата рождения сотрудника',
  `birthday_notify` tinyint(4) NOT NULL DEFAULT '0',
  `phone` varchar(255) DEFAULT NULL COMMENT 'Контактный телефон сотрудника',
  `email` varchar(255) NOT NULL COMMENT 'Адрес эл. почты сотрудника',
  `instagram` varchar(255) DEFAULT NULL COMMENT 'Профиль сотрудника в Инстаграм',
  `vkontakte` varchar(255) DEFAULT NULL COMMENT 'Профиль сотрудника в вКонтакте',
  `telegram` varchar(255) DEFAULT NULL COMMENT 'Профиль сотрудника в Телеграм',
  `position` varchar(64) NOT NULL COMMENT 'Занимаемая должность сотрудника',
  `is_head` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Флаг руководителя (0 - обычный сотрудник, 1 - руководитель)',
  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Статус сотрудника (0 - не активен, 1 - активен)',
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания (добавления) сотрудника',
  `created_by` mediumint(9) NOT NULL COMMENT 'Пользователь, который добавил сотрудника',
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата обновления (редактирования) сотрудника',
  `updated_by` mediumint(9) NOT NULL COMMENT 'Пользователь, который изменил данные сотрудника'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='Таблица сотрудников компании-партнёра';

ALTER TABLE `partners_employees`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_employees_to_partners` (`partner_id`),
  ADD KEY `idx_employees` (`name`,`birthday`,`phone`,`email`,`position`,`is_head`,`status`);

ALTER TABLE `partners_employees`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK';

ALTER TABLE `partners_employees`
  ADD CONSTRAINT `fk_employees_to_partners`
  FOREIGN KEY (`partner_id`) REFERENCES `partners` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;

ALTER TABLE `clients` ADD `employee_id` INT(11) NULL DEFAULT NULL COMMENT 'ID сотрудника компании-партёнра' AFTER `step_id`,
  ADD INDEX `idx_partner_employee` (`employee_id`);

CREATE TABLE IF NOT EXISTS `partners_files` (
  `id` INT(11) NOT NULL COMMENT 'PK',
  `employee_id` INT(11) NOT NULL COMMENT 'ID сотрудника партнёра, к которому прикреплён файл',
  `filename` VARCHAR(128) NOT NULL COMMENT 'Название файла',
  `path` VARCHAR(255) NOT NULL COMMENT 'Путь к файлу на сервере',
  `created_at` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания (загрузки) файла',
  `created_by` MEDIUMINT(9) NOT NULL COMMENT 'Пользователь, который загрузил файл'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='Таблица прикреплённых файлов сотрудников компании-партнёра';

ALTER TABLE `partners_files`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_files_to_employees` (`employee_id`),
  ADD KEY `idx_files` (`filename`,`path`);

ALTER TABLE `partners_files`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK';

ALTER TABLE `partners_files`
  ADD CONSTRAINT `fk_files_to_employees` FOREIGN KEY (`employee_id`) REFERENCES `partners_employees` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;