Errores solucionados

This commit is contained in:
Juan Ferrer Toribio 2016-04-24 13:23:34 +02:00
parent 2cd108ea3a
commit 5a1ef1a0a6
8 changed files with 90 additions and 40 deletions

View File

@ -32,7 +32,7 @@ if ($db->getValue ('SELECT COUNT(*) > 0 FROM blacklist WHERE phone = #', [$calle
$sundayFestive = $db->getValue ('SELECT sunday_festive FROM config');
if (date ('N') == 6 && $sundayFestive)
if (date ('N') == 7 && $sundayFestive)
{
Agi::exec ('SET VARIABLE MACRO playback');
Agi::exec ('SET VARIABLE ARG1 out-of-ours');
@ -65,8 +65,6 @@ if ($customer)
Agi::exec ('SET VARIABLE MACRO playback');
Agi::exec ('SET VARIABLE ARG1 busy');
}
exit ();
}
?>

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
vn-asterisk (1.004-deb7) stable; urgency=low
vn-asterisk (1.005-deb7) stable; urgency=low
* Initial Release.

View File

@ -4,17 +4,18 @@
* @param v_phone The caller phone number
* @return The customer id or %NULL if customer not exists or is inactive
**/
DROP FUNCTION IF EXISTS pbx.customer_from_phone;
USE pbx;
DROP FUNCTION IF EXISTS customer_from_phone;
DELIMITER $$
CREATE FUNCTION pbx.customer_from_phone (v_phone VARCHAR(255))
CREATE FUNCTION customer_from_phone (v_phone VARCHAR(255))
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE v_customer INT DEFAULT NULL;
SET @phone = v_phone COLLATE 'utf8_unicode_ci';
-- Searchs a customer associated to the phone number
DECLARE v_customer INT DEFAULT NULL;
SET @phone = v_phone COLLATE 'utf8_unicode_ci';
-- Searchs a customer associated to the phone number
DROP TEMPORARY TABLE IF EXISTS tmp.customer;
CREATE TEMPORARY TABLE tmp.customer
@ -34,12 +35,12 @@ BEGIN
JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto
WHERE telefono = @phone
OR movil = @phone;
SELECT t.customer INTO v_customer
FROM tmp.customer t
JOIN vn2008.Clientes c
JOIN vn2008.Clientes c ON c.id_cliente = t.customer
WHERE c.activo
LIMIT 1;
LIMIT 1;
DROP TEMPORARY TABLE tmp.customer;

View File

@ -0,0 +1,24 @@
/**
* Checks whether a passed extension number has valid sintax
*
* @param v_extension The extension to check format
* @return %TRUE if it's well formated
**/
USE pbx;
DROP PROCEDURE IF EXISTS extension_is_valid;
DELIMITER $$
CREATE PROCEDURE extension_is_valid (v_extension VARCHAR(255))
BEGIN
DECLARE v_is_valid BOOLEAN;
SET v_is_valid = v_extension IS NULL
OR (v_extension REGEXP '^[0-9]{4}$'
AND MOD(v_extension, 100) != 0);
IF NOT v_is_valid
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'EXTENSION_INVALID_FORMAT';
END IF;
END$$
DELIMITER ;

View File

@ -4,9 +4,10 @@
* @param v_phone The phone to format
* @return The formated phone or %NULL if bad sintax
**/
DROP FUNCTION IF EXISTS pbx.phone_format;
USE pbx;
DROP FUNCTION IF EXISTS phone_format;
DELIMITER $$
CREATE FUNCTION pbx.phone_format (phone VARCHAR(255))
CREATE FUNCTION phone_format (phone VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
@ -16,19 +17,19 @@ BEGIN
DECLARE newPhone VARCHAR(255) DEFAULT '';
WHILE i < len
DO
DO
SET chr = SUBSTR(phone, i+1, 1);
IF chr REGEXP '^[0-9]$'
THEN
THEN
SET newPhone = CONCAT(newPhone, chr);
ELSEIF chr = '+' AND i = 0
THEN
THEN
SET newPhone = CONCAT(newPhone, '00');
END IF;
SET i = i + 1;
END WHILE;
SET i = i + 1;
END WHILE;
IF newPhone REGEXP '^0+$' OR newPhone = '' THEN
RETURN NULL;

View File

@ -4,21 +4,22 @@
* @param v_phone The phone to check format
* @return %TRUE if it's well formated
**/
DROP PROCEDURE IF EXISTS pbx.phone_is_valid;
USE pbx;
DROP PROCEDURE IF EXISTS phone_is_valid;
DELIMITER $$
CREATE PROCEDURE pbx.phone_is_valid (v_phone VARCHAR(255))
CREATE PROCEDURE phone_is_valid (v_phone VARCHAR(255))
BEGIN
DECLARE v_is_valid BOOLEAN;
SET v_is_valid = v_phone IS NULL
SET v_is_valid = v_phone IS NULL
OR (v_phone REGEXP '^[0-9]+$'
AND v_phone NOT REGEXP '^0+$'
AND v_phone NOT REGEXP '^0034');
IF NOT v_is_valid
THEN
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'PHONE_INVALID_FORMAT';
END IF;
END IF;
END$$
DELIMITER ;

23
sql/queue_is_valid.sql Normal file
View File

@ -0,0 +1,23 @@
/**
* Checks whether a passed queue number has valid sintax
*
* @param v_queue The queue to check format
* @return %TRUE if it's well formated
**/
USE pbx;
DROP PROCEDURE IF EXISTS queue_is_valid;
DELIMITER $$
CREATE PROCEDURE queue_is_valid (v_queue VARCHAR(255))
BEGIN
DECLARE v_is_valid BOOLEAN;
SET v_is_valid = v_queue IS NULL
OR v_queue REGEXP '^[1-9][0-9]00$';
IF NOT v_is_valid
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'QUEUE_INVALID_FORMAT';
END IF;
END$$
DELIMITER ;

View File

@ -1,42 +1,44 @@
USE vn2008;
-- Updates the bad formated phones
UPDATE vn2008.Clientes
UPDATE Clientes
SET telefono = pbx.phone_format (telefono),
fax = pbx.phone_format (fax),
movil = pbx.phone_format (movil);
UPDATE vn2008.Consignatarios
UPDATE Consignatarios
SET telefono = pbx.phone_format (telefono),
movil = pbx.phone_format (movil);
UPDATE vn2008.Contactos
UPDATE Contactos
SET telefono = pbx.phone_format (telefono),
fax = pbx.phone_format (fax),
movil = pbx.phone_format (movil);
-- Indexes the phone columns
ALTER TABLE vn2008.`Clientes` ADD INDEX(`Telefono`);
ALTER TABLE vn2008.`Clientes` ADD INDEX(`movil`);
ALTER TABLE Clientes ADD INDEX(Telefono);
ALTER TABLE Clientes ADD INDEX(movil);
ALTER TABLE vn2008.`Consignatarios` ADD INDEX(`telefono`);
ALTER TABLE vn2008.`Consignatarios` ADD INDEX(`movil`);
ALTER TABLE Consignatarios ADD INDEX(telefono);
ALTER TABLE Consignatarios ADD INDEX(movil);
ALTER TABLE vn2008.`Contactos` ADD INDEX(`Telefono`);
ALTER TABLE vn2008.`Contactos` ADD INDEX(`Movil`);
ALTER TABLE Contactos ADD INDEX(Telefono);
ALTER TABLE Contactos ADD INDEX(Movil);
-- Returns all bad formated phones
SELECT telefono, movil c FROM vn2008.Clientes
SELECT telefono, movil c FROM Clientes
WHERE telefono NOT REGEXP '^[0-9]+$'
OR movil NOT REGEXP '^[0-9]+$'
UNION
SELECT telefono, movil FROM vn2008.Consignatarios
SELECT telefono, movil FROM Consignatarios
WHERE telefono NOT REGEXP '^[0-9]+$'
OR movil NOT REGEXP '^[0-9]+$'
UNION
SELECT telefono, movil FROM vn2008.Contactos
SELECT telefono, movil FROM Contactos
WHERE telefono NOT REGEXP '^[0-9]+$'
OR movil NOT REGEXP '^[0-9]+$';