-- call init
CREATE TABLE IF NOT EXISTS user_alias_$mid
(   
	login_id int(11) NOT NULL default '0',
	login_alias  char(128) NOT NULL default '',
	KEY alias_not_u (login_alias),
	KEY login_id ( login_id ) 
);			

CREATE TABLE IF NOT EXISTS nas_$mid
(	 
	id int(11) NOT NULL auto_increment,
	identifier varchar(32) NOT NULL default '',
	secret varchar(16) NOT NULL default '',
	ipaddr int(10) unsigned NOT NULL default '0',
	type tinyint(4) NOT NULL default '0',
	date1 date default NULL,
	date2 date default NULL,
	comment varchar(255) NOT NULL default '',
	config_id int(11) NOT NULL default '0', 
    vendor int(11) NOT NULL default '0', 
    script text not null, 
	PRIMARY KEY  (id) 
);

CREATE TABLE IF NOT EXISTS nas_config_$mid
( 
	id int(11) NOT NULL auto_increment,
    nas_id int(11) NOT NULL default '0',
    dt datetime NOT NULL default '0000-00-00 00:00:00',
    title varchar(150) NOT NULL default '',
    uid int(11) NOT NULL default '0',
    config text NOT NULL,
    PRIMARY KEY  (id) 
);

CREATE TABLE IF NOT EXISTS radius_pair_$mid
( 
	id int(11) NOT NULL default '0',
	pair_name char(50) NOT NULL default '', 
	pair_value char(255) NOT NULL default '', 
	pair_realm char(15) NOT NULL default '', 
	KEY id (id) 
);
        
CREATE TABLE radius_pair_set_$mid
( 
	id int(11) NOT NULL default '0', 
    set_id int(11) NOT NULL default '0',
    realm char(15) NOT NULL default '', 
    KEY id (id) 
);
     
CREATE TABLE IF NOT EXISTS user_login_limit_$mid
( 
	id int(10) unsigned NOT NULL auto_increment, 
    num int(11) unsigned default '0', 
    lid int(10) unsigned NOT NULL default '0', 
    sid int(10) unsigned NOT NULL default '0', 
    param1 varchar(255) NOT NULL, 
    param2 varchar(255) NOT NULL, 
    date1 date default NULL, 
    date2 date default NULL, 
    comment varchar(255) NOT NULL default '', 
    type_con int(1) unsigned NOT NULL default '0', 
    PRIMARY KEY  (id), 
	KEY lid ( lid ) 
);

CREATE TABLE IF NOT EXISTS user_login_condition_$mid
( 
	llid int(11) NOT NULL default '0', 
    hh int(11) NOT NULL default '0', 
    dw int(11) NOT NULL default '0', 
    dm int(11) NOT NULL default '0', 
    mm int(11) NOT NULL default '0', 
	KEY llid ( llid ) 
);
        
CREATE TABLE IF NOT EXISTS login_parameter_$mid
(
	value varchar(255) NOT NULL,
	name varchar(255) NOT NULL,
	lid int(11) NOT NULL,
    KEY lid (lid) 
);
-- end of call init

CREATE TABLE IF NOT EXISTS user_login_$mid
( 
	id int(11) NOT NULL auto_increment,
	cid int(11) NOT NULL default '0',
	object_id int NOT NULL,
	login int(11) NOT NULL default '0',
	pswd char(32) NOT NULL default '',
	date1 date default NULL,
	date2 date default NULL,
	status tinyint(4) NOT NULL default '0',
	session smallint(6) NOT NULL default '0',
	comment char(255) NOT NULL default '',
	type TINYINT NOT NULL default '0',
	attrs VARCHAR(255) NOT NULL default '',
	PRIMARY KEY  (id),
	KEY login_not_u ( login ),
	KEY cid ( cid ),
	KEY object_id ( object_id ),
	KEY date1 ( date1 ),
	KEY date2 ( date2 ),
	KEY type (type) 
);

CREATE TABLE IF NOT EXISTS voiceip_login_type_$mid
( 
	id int(11) NOT NULL auto_increment,
	title varchar(200) NOT NULL DEFAULT '',
	comment varchar(250) NOT NULL DEFAULT '',
	brm tinyint(3) NOT NULL DEFAULT '0',
	pswd_check tinyint(3) NOT NULL DEFAULT '0',
	fm_aci tinyint(3) NOT NULL DEFAULT '0',
	fm_aco tinyint(3) NOT NULL DEFAULT '0',
	fm_aui tinyint(3) NOT NULL DEFAULT '0',
	fm_auo tinyint(3) NOT NULL DEFAULT '0',
	dc_filter tinyint(3) NOT NULL DEFAULT '0',
	out_tariff_mode tinyint(4) NOT NULL DEFAULT '0',
	in_tariff_mode tinyint(4) NOT NULL DEFAULT '0',
	ignore_account tinyint(4) NOT NULL DEFAULT '0',
	attrs VARCHAR(255) NOT NULL default '',
	PRIMARY KEY (id) 
);

CREATE TABLE IF NOT EXISTS voiceip_dest_$mid 
( 
	id int(11) NOT NULL auto_increment,
	title char(100) NOT NULL default '',
	PRIMARY KEY  (id) 
);

CREATE TABLE IF NOT EXISTS voiceip_tariff_zone_$mid
(
	id int(11) NOT NULL auto_increment,
	title varchar(100) NOT NULL default '',
	PRIMARY KEY  (id) 
);

CREATE TABLE IF NOT EXISTS voiceip_geographic_code_$mid
(
	code varchar(20) NOT NULL,
	dest_id int(11) NOT NULL,
	start_level TINYINT NOT NULL,
	end_level TINYINT NOT NULL,
	PRIMARY KEY  (code) 
);

CREATE TABLE IF NOT EXISTS voiceip_zone_map_$mid
(
	id int(11) NOT NULL auto_increment,
	title varchar(200) NOT NULL,
	PRIMARY KEY (id) 
);

CREATE TABLE IF NOT EXISTS voiceip_zone_map_item_$mid
(
	map_id int(11) NOT NULL,
	code varchar(20) NOT NULL,
	zone_id int(11) NOT NULL,
	UNIQUE KEY map_code (map_id,code),
	KEY zone_id (zone_id) 
);

-- #BLOCK#
CREATE TEMPORARY TABLE user_dispatch_reference_temp (mid int(3) unsigned DEFAULT '0', module varchar(30) NOT NULL DEFAULT '', title varchar(100) NOT NULL DEFAULT '', class_name varchar(200) NOT NULL DEFAULT '', web_action varchar(200) NOT NULL DEFAULT '', client_class_name varchar(200) NOT NULL DEFAULT '');
INSERT INTO `user_dispatch_reference_temp` VALUES ($mid,'voiceip','Сессии логина','bitel.billing.server.voiceip.bean.DispatchLoginSessions','DispatchSession','bitel.billing.module.services.voiceip.ContractDispatchLoginSessionsVoipEditor');
INSERT INTO `user_dispatch_reference_temp` VALUES ($mid,'voiceip','Наработка по логинам','bitel.billing.server.voiceip.bean.DispatchLoginsAmount','DispatchAmount','bitel.billing.module.services.voiceip.ContractDispatchAmountVoipEditor');
INSERT INTO `user_dispatch_reference_temp` VALUES ($mid,'voiceip','Наработка по направлениям','bitel.billing.server.voiceip.bean.DispatchLoginDirect','DispatchDirect','bitel.billing.module.services.voiceip.ContractDispatchDirectVoipEditor');
DELETE FROM user_dispatch_reference WHERE mid=$mid;
INSERT INTO user_dispatch_reference (mid, module, title, class_name, web_action, client_class_name) SELECT t.mid, t.module, t.title, t.class_name, t.web_action FROM user_dispatch_reference_temp as t LEFT OUTER JOIN user_dispatch_reference as r on r.mid=t.mid AND r.module=t.module AND r.title=t.title AND r.class_name=t.class_name AND r.web_action=t.web_action AND r.client_class_name=t.client_class_name WHERE r.mid IS NULL;
-- #ENDB#

ALTER TABLE nas_$mid ADD script TEXT NOT NULL;

ALTER TABLE user_login_$mid ADD object_id INT NOT NULL;
ALTER TABLE user_login_$mid ADD KEY object_id(object_id);

ALTER TABLE user_alias_$mid ADD KEY login_id(login_id);
ALTER TABLE user_login_$mid ADD UNIQUE KEY login(login);

ALTER TABLE user_login_$mid ADD type TINYINT NOT NULL DEFAULT "0";
ALTER TABLE user_login_$mid ADD INDEX type (type);

CREATE TABLE IF NOT EXISTS voiceip_login_type_$mid (
  id int(11) NOT NULL auto_increment,
  title varchar(200) NOT NULL DEFAULT '' ,
  comment varchar(250) NOT NULL DEFAULT '' ,
  brm tinyint(3) NOT NULL DEFAULT '0' ,
  pswd_check tinyint(3) NOT NULL DEFAULT '0' ,
  fm_aci tinyint(3) NOT NULL DEFAULT '0' ,
  fm_aco tinyint(3) NOT NULL DEFAULT '0' ,
  fm_aui tinyint(3) NOT NULL DEFAULT '0' ,
  fm_auo tinyint(3) NOT NULL DEFAULT '0' ,
  dc_filter tinyint(3) NOT NULL DEFAULT '0' ,
  out_tariff_mode tinyint(4) NOT NULL DEFAULT '0' ,
  in_tariff_mode tinyint(4) NOT NULL DEFAULT '0' ,
  ignore_account tinyint(4) NOT NULL DEFAULT '0' ,
  PRIMARY KEY (id)
);

ALTER TABLE voiceip_login_type_$mid ADD attrs VARCHAR(255) NOT NULL default '';

CREATE TABLE IF NOT EXISTS radius_pair_$mid ( id int(11) NOT NULL default '0',
 pair_name char(50) NOT NULL default '', 
 pair_value char(255) NOT NULL default '', 
 pair_realm char(15) NOT NULL default '', 
 KEY id (id)
);

CREATE TABLE IF NOT EXISTS voiceip_geographic_code_$mid (
  code varchar(20) NOT NULL DEFAULT '' ,
  dest_id int(11) NOT NULL DEFAULT '' ,
  PRIMARY KEY (code)
);

CREATE TABLE IF NOT EXISTS voiceip_tariff_zone_$mid (
  id int(11) NOT NULL auto_increment,
  title varchar(100) NOT NULL DEFAULT '' ,
  PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS voiceip_zone_map_$mid (
  id int(11) NOT NULL auto_increment,
  title varchar(200) NOT NULL DEFAULT '' ,
  PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS voiceip_zone_map_item_$mid (
  map_id int(11) NOT NULL DEFAULT '' ,
  code varchar(20) NOT NULL DEFAULT '' ,
  zone_id int(11) NOT NULL DEFAULT '' ,
  UNIQUE KEY map_code (map_id,code),
   KEY zone_id (zone_id)
);

ALTER TABLE voiceip_geographic_code_$mid ADD start_level TINYINT NOT NULL;
ALTER TABLE voiceip_geographic_code_$mid ADD end_level TINYINT NOT NULL;

ALTER TABLE user_login_$mid DROP KEY login;
ALTER TABLE user_login_$mid ADD KEY login_not_u(login);
ALTER TABLE user_login_$mid DROP KEY fm_auo;
ALTER TABLE user_login_$mid DROP KEY fm_aui;
ALTER TABLE user_login_$mid DROP KEY fm_aco;
ALTER TABLE user_login_$mid DROP KEY fm_aci;

CREATE TABLE IF NOT EXISTS login_parameter_$mid (
	value varchar(255) NOT NULL,
    name varchar(255) NOT NULL,
    lid int(11) NOT NULL,
    KEY lid (lid) );
    
ALTER TABLE user_alias_$mid DROP KEY alias;
ALTER TABLE user_alias_$mid DROP KEY login_alias;
ALTER TABLE user_alias_$mid ADD KEY alias_not_u (login_alias);    

DROP TABLE IF EXISTS radius_pair_ip_$mid;

CREATE TABLE IF NOT EXISTS `voiceip_cost_map_$mid` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `voiceip_cost_map_item_$mid` (
  `map_id` int(11) NOT NULL,
  `code` varchar(20) NOT NULL,
  `cost` decimal(10,6) NOT NULL,
  UNIQUE KEY `map_code` (`map_id`,`code`)
);

ALTER TABLE nas_$mid ADD common_config_id VARCHAR(255) NOT NULL;

ALTER TABLE voiceip_cost_map_item_$mid MODIFY code VARCHAR(255) NOT NULL;
ALTER TABLE voiceip_cost_map_item_$mid MODIFY cost decimal(10,6) NULL;

ALTER TABLE voiceip_cost_map_item_$mid ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE voiceip_cost_map_item_$mid ADD title VARCHAR(255) NULL;
ALTER TABLE voiceip_cost_map_item_$mid ADD comment VARCHAR(255) NULL;

ALTER TABLE user_login_$mid CHANGE COLUMN `login` `login` BIGINT(20) NOT NULL ;

UPDATE `scheduled_tasks` SET `class`='ru.bitel.bgbilling.modules.voiceip.server.task.BalanceSetter' WHERE `class`='bitel.billing.server.voiceip.BalanceSetter';

-- #BLOCK#
DELETE FROM script_event_type WHERE mid=$mid;

SET @mid=$mid, @old_event_id=100, @new_event_id='ru.bitel.bgbilling.modules.call.server.event.BeforeLoginDeleteEvent', @event_title='Перед удалением логина';
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES (@mid, @new_event_id, 1, @event_title);
INSERT INTO script_function_event_type(fid, mid, event_id) SELECT sfet1.fid, sfet1.mid, @new_event_id FROM script_function_event_type AS sfet1 LEFT JOIN script_function_event_type AS sfet2 ON sfet1.fid=sfet2.fid AND sfet1.mid=sfet2.mid AND sfet2.event_id=@new_event_id WHERE sfet1.mid=@mid AND sfet1.event_id=@old_event_id AND sfet2.fid IS NULL;

SET @mid=$mid, @old_event_id=101, @new_event_id='ru.bitel.bgbilling.modules.call.server.event.LoginUpdateEvent', @event_title='Изменение/добавление логина ';
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES (@mid, @new_event_id, 1, @event_title);
INSERT INTO script_function_event_type(fid, mid, event_id) SELECT sfet1.fid, sfet1.mid, @new_event_id FROM script_function_event_type AS sfet1 LEFT JOIN script_function_event_type AS sfet2 ON sfet1.fid=sfet2.fid AND sfet1.mid=sfet2.mid AND sfet2.event_id=@new_event_id WHERE sfet1.mid=@mid AND sfet1.event_id=@old_event_id AND sfet2.fid IS NULL;

SET @mid=$mid, @old_event_id=120, @new_event_id='ru.bitel.bgbilling.modules.voiceip.server.event.radius.RadiusAuthenticationEvent', @event_title='RADIUS-аутентификация';
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES (@mid, @new_event_id, 1, @event_title);
INSERT INTO script_function_event_type(fid, mid, event_id) SELECT sfet1.fid, sfet1.mid, @new_event_id FROM script_function_event_type AS sfet1 LEFT JOIN script_function_event_type AS sfet2 ON sfet1.fid=sfet2.fid AND sfet1.mid=sfet2.mid AND sfet2.event_id=@new_event_id WHERE sfet1.mid=@mid AND sfet1.event_id=@old_event_id AND sfet2.fid IS NULL;

INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES ($mid, 'ru.bitel.bgbilling.modules.voiceip.server.event.radius.SessionCreatingEvent', 1, 'Перед сохранением сессии');
-- #ENDB#
