58 lines
1.5 KiB
SQL
58 lines
1.5 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `account`.`account_enable`(vSelf INT)
|
|
BEGIN
|
|
/**
|
|
* Enables a worker's account and sets up email configurations.
|
|
*/
|
|
UPDATE user
|
|
SET active = TRUE
|
|
WHERE id = vSelf;
|
|
|
|
INSERT IGNORE INTO account
|
|
SET id = vSelf;
|
|
|
|
INSERT IGNORE INTO mailAliasAccount (mailAlias, account)
|
|
SELECT id, vSelf
|
|
FROM mailAlias
|
|
WHERE alias = 'general';
|
|
|
|
INSERT IGNORE INTO mailForward (account, forwardTo)
|
|
SELECT vSelf, email
|
|
FROM user
|
|
WHERE id = vSelf;
|
|
END$$
|
|
DELIMITER ;
|
|
|
|
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`worker_updateBusiness`(vSelf INT)
|
|
BEGIN
|
|
/**
|
|
* Activates an account and configures its email settings.
|
|
*
|
|
* @param vSelf account id.
|
|
*/
|
|
DECLARE vOldBusinessFk INT;
|
|
DECLARE vNewBusinessFk INT;
|
|
|
|
SELECT businessFk INTO vOldBusinessFk FROM worker WHERE id = vSelf;
|
|
|
|
SELECT id INTO vNewBusinessFk
|
|
FROM business
|
|
WHERE workerFk = vSelf
|
|
AND util.VN_CURDATE() BETWEEN started AND IFNULL(ended, util.VN_CURDATE());
|
|
|
|
UPDATE worker
|
|
SET businessFk = vNewBusinessFk
|
|
WHERE id = vSelf;
|
|
|
|
IF NOT (vOldBusinessFk <=> vNewBusinessFk) THEN
|
|
IF vNewBusinessFk IS NULL THEN
|
|
CALL workerDisable(vSelf);
|
|
END IF;
|
|
IF vOldBusinessFk IS NULL THEN
|
|
CALL account.account_enable(vSelf);
|
|
END IF;
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|