так и есть alias указывается внутри {} а далее по коду к нему обращается. На версии 5,1 отрабатывало без ошибок
Код:
if( cmds.get("set-ani") != null ) {
// ставим аон или сбрасываем
if( "1".equals(cmds.get("set-ani")) ) {
//alias = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id );
alias = request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" );
} else {
alias = "x";
}
if( login == null || alias == null || alias.equals("") ) {
// ошибка
print("Error: "+login+" cid:"+alias);
response.setPacketType((byte)3); // Reject
} else {
print("Updating alias_"+event.moduleID+" "+login.getId()+" to:"+alias);
// ищем у чел логин тип == 3 (авторизация по номеру)
int loginType=3;
loginid=0;
lid=0;
isOk = true;
if(! "x".equals(alias)) {
// первым делом проверяем есть ли у когото уже такой алиас
// и активен ли он
ps = con.prepareStatement("select cid,login_id,date1,date2 from user_alias_"+event.moduleID+" a join user_login_"+event.moduleID+" l on l.id=a.login_id where (date1 is null or date1 <= now()) and (date2 is null or date2>=now()) and login_alias = ?");
ps.setString(1, alias);
ResultSet rs=ps.executeQuery();
if(rs.next()) {
// если активен и не наш то облом...
if( rs.getInt(1) != contract.getId() ) {
print("Active and in use on cid="+rs.getInt(1));
response.setPacketType((byte)3); // Reject
//response.setVendorStringAttribute( 103, String.valueOf(113));
response.setStringAttribute(9, 103, String.valueOf(113));
isOk=false;
}
} else {
// убиваем не наши активные алиасы (если есть)
ps = con.prepareStatement("delete from user_alias_"+event.moduleID+" where login_alias = ?");
ps.setString(1, alias);
ps.executeUpdate();
}
ps.close();
}
if(isOk) {
ps = con.prepareStatement("SELECT login,id FROM user_login_"+event.moduleID+" WHERE cid=? and type=? order by login");
ps.setInt(1, contract.getId());
ps.setInt(2, loginType);
ResultSet rs=ps.executeQuery();
if(rs.next()) { loginid = rs.getInt(1); lid = rs.getInt(2); }
ps.close();
if ( loginid == 0 ) {
// нет старого логина ... создаем новый логин
int loginid=1000000;
ps = con.prepareStatement("SELECT max(login) FROM user_login_"+event.moduleID+" WHERE login>"+loginid);
ResultSet rs=ps.executeQuery();
if(rs.next()) loginid = rs.getInt(1);
if(loginid < 1000000) loginid=1000000;
loginid++;
ps.close();
print("Create new login "+loginid);
ps = con.prepareStatement("INSERT INTO user_login_"+event.moduleID+" ( cid, login, date1, date2, status, comment, type ) VALUES (?,?,?,?,?,?,?)");
ps.setInt(1, contract.getId());
ps.setInt(2, loginid);
// ps.setDate(3,TimeUtils.convertCalendarToSqlDate(contract.getDate1()));
ps.setDate(3, contract.getDateFrom());
// ps.setDate(4,TimeUtils.convertCalendarToSqlDate(contract.getDate2()));
ps.setDate(4, contract.getDateTo());
ps.setInt(5, 0);
ps.setString(6, "set via IVR ");
ps.setInt(7, loginType);
ps.executeUpdate();
int lid = Utils.lastInsertId(con);
ps.close();
} else {
print("Using old login "+loginid);
}
ps = con.prepareStatement("DELETE FROM user_alias_"+event.moduleID+" WHERE login_id=?");
ps.setInt(1, lid);
ps.executeUpdate();
ps.close();
if(! "x".equals(alias)) {
ps = con.prepareStatement("REPLACE INTO user_alias_"+event.moduleID+" VALUES ( ?, ? )");
ps.setInt(1, lid);
ps.setString(2, alias);
ps.executeUpdate();
print("Set lod="+lid+" alias="+alias);
}
response.setPacketType((byte)2); // Accept
}
}
}