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'); $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 MACRO playback');
Agi::exec ('SET VARIABLE ARG1 out-of-ours'); Agi::exec ('SET VARIABLE ARG1 out-of-ours');
@ -65,8 +65,6 @@ if ($customer)
Agi::exec ('SET VARIABLE MACRO playback'); Agi::exec ('SET VARIABLE MACRO playback');
Agi::exec ('SET VARIABLE ARG1 busy'); 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. * Initial Release.

View File

@ -4,17 +4,18 @@
* @param v_phone The caller phone number * @param v_phone The caller phone number
* @return The customer id or %NULL if customer not exists or is inactive * @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 $$ DELIMITER $$
CREATE FUNCTION pbx.customer_from_phone (v_phone VARCHAR(255)) CREATE FUNCTION customer_from_phone (v_phone VARCHAR(255))
RETURNS INT RETURNS INT
DETERMINISTIC DETERMINISTIC
BEGIN BEGIN
DECLARE v_customer INT DEFAULT NULL; DECLARE v_customer INT DEFAULT NULL;
SET @phone = v_phone COLLATE 'utf8_unicode_ci'; SET @phone = v_phone COLLATE 'utf8_unicode_ci';
-- Searchs a customer associated to the phone number -- Searchs a customer associated to the phone number
DROP TEMPORARY TABLE IF EXISTS tmp.customer; DROP TEMPORARY TABLE IF EXISTS tmp.customer;
CREATE TEMPORARY TABLE tmp.customer CREATE TEMPORARY TABLE tmp.customer
@ -37,9 +38,9 @@ BEGIN
SELECT t.customer INTO v_customer SELECT t.customer INTO v_customer
FROM tmp.customer t FROM tmp.customer t
JOIN vn2008.Clientes c JOIN vn2008.Clientes c ON c.id_cliente = t.customer
WHERE c.activo WHERE c.activo
LIMIT 1; LIMIT 1;
DROP TEMPORARY TABLE tmp.customer; 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 * @param v_phone The phone to format
* @return The formated phone or %NULL if bad sintax * @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 $$ DELIMITER $$
CREATE FUNCTION pbx.phone_format (phone VARCHAR(255)) CREATE FUNCTION phone_format (phone VARCHAR(255))
RETURNS VARCHAR(255) RETURNS VARCHAR(255)
DETERMINISTIC DETERMINISTIC
BEGIN BEGIN
@ -16,19 +17,19 @@ BEGIN
DECLARE newPhone VARCHAR(255) DEFAULT ''; DECLARE newPhone VARCHAR(255) DEFAULT '';
WHILE i < len WHILE i < len
DO DO
SET chr = SUBSTR(phone, i+1, 1); SET chr = SUBSTR(phone, i+1, 1);
IF chr REGEXP '^[0-9]$' IF chr REGEXP '^[0-9]$'
THEN THEN
SET newPhone = CONCAT(newPhone, chr); SET newPhone = CONCAT(newPhone, chr);
ELSEIF chr = '+' AND i = 0 ELSEIF chr = '+' AND i = 0
THEN THEN
SET newPhone = CONCAT(newPhone, '00'); SET newPhone = CONCAT(newPhone, '00');
END IF; END IF;
SET i = i + 1; SET i = i + 1;
END WHILE; END WHILE;
IF newPhone REGEXP '^0+$' OR newPhone = '' THEN IF newPhone REGEXP '^0+$' OR newPhone = '' THEN
RETURN NULL; RETURN NULL;

View File

@ -4,21 +4,22 @@
* @param v_phone The phone to check format * @param v_phone The phone to check format
* @return %TRUE if it's well formated * @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 $$ DELIMITER $$
CREATE PROCEDURE pbx.phone_is_valid (v_phone VARCHAR(255)) CREATE PROCEDURE phone_is_valid (v_phone VARCHAR(255))
BEGIN BEGIN
DECLARE v_is_valid BOOLEAN; 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]+$' OR (v_phone REGEXP '^[0-9]+$'
AND v_phone NOT REGEXP '^0+$' AND v_phone NOT REGEXP '^0+$'
AND v_phone NOT REGEXP '^0034'); AND v_phone NOT REGEXP '^0034');
IF NOT v_is_valid IF NOT v_is_valid
THEN THEN
SIGNAL SQLSTATE '45000' SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'PHONE_INVALID_FORMAT'; SET MESSAGE_TEXT = 'PHONE_INVALID_FORMAT';
END IF; END IF;
END$$ END$$
DELIMITER ; 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 -- Updates the bad formated phones
UPDATE vn2008.Clientes UPDATE Clientes
SET telefono = pbx.phone_format (telefono), SET telefono = pbx.phone_format (telefono),
fax = pbx.phone_format (fax), fax = pbx.phone_format (fax),
movil = pbx.phone_format (movil); movil = pbx.phone_format (movil);
UPDATE vn2008.Consignatarios UPDATE Consignatarios
SET telefono = pbx.phone_format (telefono), SET telefono = pbx.phone_format (telefono),
movil = pbx.phone_format (movil); movil = pbx.phone_format (movil);
UPDATE vn2008.Contactos UPDATE Contactos
SET telefono = pbx.phone_format (telefono), SET telefono = pbx.phone_format (telefono),
fax = pbx.phone_format (fax), fax = pbx.phone_format (fax),
movil = pbx.phone_format (movil); movil = pbx.phone_format (movil);
-- Indexes the phone columns -- Indexes the phone columns
ALTER TABLE vn2008.`Clientes` ADD INDEX(`Telefono`); ALTER TABLE Clientes ADD INDEX(Telefono);
ALTER TABLE vn2008.`Clientes` ADD INDEX(`movil`); ALTER TABLE Clientes ADD INDEX(movil);
ALTER TABLE vn2008.`Consignatarios` ADD INDEX(`telefono`); ALTER TABLE Consignatarios ADD INDEX(telefono);
ALTER TABLE vn2008.`Consignatarios` ADD INDEX(`movil`); ALTER TABLE Consignatarios ADD INDEX(movil);
ALTER TABLE vn2008.`Contactos` ADD INDEX(`Telefono`); ALTER TABLE Contactos ADD INDEX(Telefono);
ALTER TABLE vn2008.`Contactos` ADD INDEX(`Movil`); ALTER TABLE Contactos ADD INDEX(Movil);
-- Returns all bad formated phones -- Returns all bad formated phones
SELECT telefono, movil c FROM vn2008.Clientes SELECT telefono, movil c FROM Clientes
WHERE telefono NOT REGEXP '^[0-9]+$' WHERE telefono NOT REGEXP '^[0-9]+$'
OR movil NOT REGEXP '^[0-9]+$' OR movil NOT REGEXP '^[0-9]+$'
UNION UNION
SELECT telefono, movil FROM vn2008.Consignatarios SELECT telefono, movil FROM Consignatarios
WHERE telefono NOT REGEXP '^[0-9]+$' WHERE telefono NOT REGEXP '^[0-9]+$'
OR movil NOT REGEXP '^[0-9]+$' OR movil NOT REGEXP '^[0-9]+$'
UNION UNION
SELECT telefono, movil FROM vn2008.Contactos SELECT telefono, movil FROM Contactos
WHERE telefono NOT REGEXP '^[0-9]+$' WHERE telefono NOT REGEXP '^[0-9]+$'
OR movil NOT REGEXP '^[0-9]+$'; OR movil NOT REGEXP '^[0-9]+$';