CREATE TABLE IF NOT EXISTS `dispatch_dispatch` (
  `id` int  NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(100)  NOT NULL,
  `sender_type_id` INT NOT NULL,
  `repeat_time` VARCHAR(150)  NOT NULL,
  `contact_type_id` INT NOT NULL,
  `conditions` BLOB NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `dispatch_message` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `dispatch_id` INT NOT NULL,
  `create_date` DATETIME NOT NULL,
  `send_date` DATETIME NOT NULL,
  `is_sent` INT(3) NOT NULL,
  `msg_body` TEXT NOT NULL,
  `msg_title` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `dispatch_contact_type` (
  `id` INT  NOT NULL AUTO_INCREMENT,
  `title` varchar(100)  NOT NULL,
  `pattern` VARCHAR(100)  NOT NULL,
  `description` TEXT NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `dispatch_contact` (
  `id` INT  NOT NULL AUTO_INCREMENT,
  `contract_id` INT  NOT NULL,
  `type_id` INT  NOT NULL,
  `val` VARCHAR(100)  NOT NULL,
  PRIMARY KEY (`id`),
  KEY contract_id(contract_id)
);

CREATE TABLE IF NOT EXISTS `dispatch_sender_type` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `class_name` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `dispatch_subscription` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `dispatch_id` INT NOT NULL,
  `contract_id` INT NOT NULL,
  `comment` TEXT NOT NULL,
  `data` BLOB NOT NULL,
  PRIMARY KEY (`id`),
  KEY contract_id(contract_id)
);

CREATE TABLE IF NOT EXISTS `dispatch_subscription_contact` (
  `subscription_id` INT NOT NULL,
  `contact_id` INT NOT NULL,
  PRIMARY KEY (`subscription_id`,`contact_id`)
);

ALTER TABLE `dispatch_dispatch` ADD COLUMN `active` BOOLEAN  NOT NULL DEFAULT 1 AFTER `sender_type_id`;

ALTER TABLE `dispatch_dispatch` ADD COLUMN `personal` BOOLEAN  NOT NULL DEFAULT 0 AFTER `active`;
ALTER TABLE `dispatch_subscription` ADD COLUMN `repeat_time` VARCHAR(150)  NOT NULL AFTER `data`;
ALTER TABLE `dispatch_dispatch` ADD COLUMN `only_one_contact` BOOLEAN  NOT NULL DEFAULT 0 AFTER `personal`;

ALTER TABLE `dispatch_subscription` ADD COLUMN `active` BOOLEAN  NOT NULL DEFAULT 1 AFTER `repeat_time`;

ALTER TABLE `dispatch_dispatch` ADD COLUMN `do_not_mark_sended` BOOLEAN  NOT NULL DEFAULT 0 AFTER `personal`;

ALTER TABLE `dispatch_subscription` ADD COLUMN `date_from` DATE NULL  AFTER `contract_id` , 
									ADD COLUMN `date_to` DATE NULL  AFTER `date_from`;

-- Обновление задачи планировщика 
UPDATE scheduled_class SET class='ru.bitel.bgbilling.plugins.dispatch.server.task.DispatchWorker' where class='ru.bitel.bgbilling.plugins.dispatch.server.DispatchWorker';

-- 6.3
ALTER TABLE `dispatch_dispatch` 
ADD COLUMN `user` INT(11) NULL DEFAULT '-2' AFTER `only_one_contact`,
ADD COLUMN `create_date` DATETIME NULL AFTER `user`,
ADD COLUMN `last_modify_date` DATETIME NULL AFTER `create_date`;
ALTER TABLE `dispatch_subscription_contact` ADD COLUMN `hash` VARCHAR(32) DEFAULT NULL;

ALTER TABLE `dispatch_contact_type`	ADD COLUMN `pid` INT NOT NULL DEFAULT '-1' AFTER `description`;

-- 7.1
ALTER TABLE `dispatch_dispatch` ADD COLUMN `wo_contact_type` BOOLEAN NOT NULL DEFAULT 0;

-- 7.3 (8.1)

CREATE TABLE IF NOT EXISTS `dispatch_message_statistic` (
	`id` int not null auto_increment,
	`dispatchId` int not null,
	`contractId` int(10) unsigned not null,
	`messageId` int not null,
	`contactId` int not null,
	`sendDate` datetime not null,
	PRIMARY KEY (`id`),
	KEY `dispatch_key` (`dispatchId`),
	KEY `message_key` (`messageId`),
	KEY `senddate_key` (`sendDate`),
	KEY `contract_key` (`contractId`),
	CONSTRAINT `statistic_dispatch_fk` FOREIGN KEY (`dispatchId`) REFERENCES `dispatch_dispatch` (`id`) ON DELETE CASCADE,
	CONSTRAINT `statistic_message_fk` FOREIGN KEY (`messageId`) REFERENCES `dispatch_message` (`id`) ON DELETE CASCADE,
	CONSTRAINT `statistic_contract_fk` FOREIGN KEY (`contractId`) REFERENCES `contract` (`id`) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS `dispatch_message_content` (
    `statisticId` int,
    `text` text,
    CONSTRAINT `dispatch_content_statistic_fk` FOREIGN KEY (`statisticId`) REFERENCES dispatch_message_statistic (`id`) ON DELETE CASCADE
);

-- убрал для вставки статистики, иначе падало при апдейте статистики при рассылке по контактам из параметров договора
alter table `dispatch_message_statistic` drop foreign key `statistic_contact_fk`;

alter table `dispatch_message_statistic` add column contractValue varchar(250) not null default '';
ALTER TABLE `filestorage_files_list_dispatch` ADD COLUMN `uuid` VARCHAR(50) NOT NULL AFTER `comment`;
ALTER TABLE `filestorage_files_list_dispatch_message` ADD COLUMN `uuid` VARCHAR(50) NOT NULL AFTER `comment`;

-- события
-- #BLOCK#
DELETE FROM script_event_type WHERE mid="p$mid";
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES ('p$mid', 'ru.bitel.bgbilling.plugins.dispatch.server.event.DispatchSubscriptionEvent', 1, 'Подписка на рассылку');
-- #ENDB#
