12. Черно-белые списки.

Опционально доступен функционал черно-белых списков. Включить его можно в конфигурации. Пользователь сам может определять номера, вызовы с которых на его телефонный номер запрещены (черный список) или, наоборот, разрешены (белый список). На одном номере абонента можно включить либо черный, либо белый список. Управление оборудованием (АТС) осуществляется глобальным скриптом поведения, запускаемым по таймеру, который разрабатывается уже под конкретную АТС.

При редактировании поинта в клиенте доступна вкладка "Управление списками"

Тут можно добавлять/удалять/редактировать номера телефонов и выбрать тип списка - черный или белый.

Аналогичный интерфейс доступен абоненту в личном кабинете:

Синхронизация черно-белых списков с АТС осуществляется с помощью глобального скрипта поведения. Вот примерная структура скрипта:

import bitel.billing.server.util.*;
import ru.bitel.bgbilling.modules.phone.server.bean.*;
import ru.bitel.bgbilling.modules.phone.common.bean.*;
import java.util.*;
import java.net.*;
import java.io.*;

int mid = 0;
public void main( setup, con, conSlave )
{
	con.setAutoCommit( false );
	PhoneItemListManager pilm = new PhoneItemListManager( mid, con );
	
	//получаем измененные режимы
	List changedModes = pilm.getToUpdateModes();
	for( PhoneItemListMode mode : changedModes )
	{
		updateModeOnBackend( mode );
		mode.setNewMode( false );
		pilm.updateMode( mode );
	}

	//получаем далее удаленные из списка номера
	List deletedNumbers = pilm.getToDeleteNumbers();
	for( PhoneItemListNumber number : deletedNumbers )
	{
		deleteNumberOnBackend( number );
		pilm.deleteNumber( number );
	}

	//наконец, получаем добавленные номера
	List addedNumbers = pilm.getToUpdateNumbers();
	for( PhoneItemListNumber number : addedNumbers )
	{
		addNumberOnBackend( number );
		number.setNewNumber( false );
		pilm.updateNumber( number );
	}
	con.commit();
}

//функция реального изменения состояния на АТС
private void updateModeOnBackend( PhoneItemListMode mode )
{
	URL example = new URL("http://www.example.com/");
	URLConnection yc = example.openConnection();
 	//TODO
}

//фунцкия реального удаления номера на АТС
private void deleteNumberOnBackend( PhoneItemListNumber number )
{
	URL example = new URL("http://www.example.com/");
	URLConnection yc = example.openConnection();
	//TODO
}

//функция реального добавления номера на АТС
private void addNumberOnBackend( PhoneItemListNumber number )
{
	URL example = new URL("http://www.example.com/");
	URLConnection yc = example.openConnection();
	//TODO
}