Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ----------------------------------------------------------------
- -- agenda uma explicacao (utilizado pra o botao agendar)
- -- ----------------------------------------------------------------
- DELIMITER //
- CREATE PROCEDURE sp_agendar_secundario(IN _nome varchar(45),IN mail varchar(255),IN id_localidade BIGINT, IN disponibilidade_inicio VARCHAR(45), IN disponibilidade_fim VARCHAR(45), IN id_cadeira BIGINT, IN domicilito TINYINT)
- BEGIN
- declare id_utilizador BIGINT;
- declare password_user VARCHAR(45);
- declare event_id BIGINT;
- -- vamos ver se este user ja se encontra registado
- IF(exists (select * from Utilizador WHERE uti_email=mail)) THEN
- -- se sim vamos buscar o seu id (assim o user nem precisa de fzer login para agendar, e pode agendar quer seja ja user ou nao)
- SET id_utilizador = (select uti_id from Utilizador WHERE uti_email=mail);
- ELSE
- -- caso contrario vamos criar uma conta com os dados recebidos e uma password gerada random
- SET password_user = LEFT(UUID(), 8);
- CALL sp_criar_utilizador(_nome,'',mail, password_user,'',id_localidade,id_utilizador);
- -- aqui deveriamos emitir mensagem
- CALL sp_emitir_mensagem(id_utilizador,concat('Bem vindo ao portal da sabedoria, com os seus dados foi criada uma conta:\n email: ',mail,'\n password: ',password_user));
- END IF;
- -- vamos verificar se existe algum explicador para o nosso aluno
- IF(NOT EXISTS(SELECT * FROM v_dados_evento_explicacao_e_explicador
- WHERE cad_id = id_cadeira and uti_loc_id = id_localidade
- and evc_data_inicio >= STR_TO_DATE(disponibilidade_inicio, '%Y-%m-%d %H:%i:%s')
- and evc_data_inicio <= DATE_SUB(STR_TO_DATE(disponibilidade_fim, '%Y-%m-%d %H:%i:%s'), INTERVAL 1 HOUR))) THEN
- -- nao existe
- -- aqui vamos ter de mandar o tal mail
- SELECT 1;
- ELSE
- -- existe
- -- vai buscar o melhor evento consoante o melhor explicador (semi testado)
- SET event_id = (SELECT
- *
- FROM
- v_dados_evento_explicacao_e_explicador vde,
- v_media_explicadores_por_cadeira vme
- WHERE
- cad_id = id_cadeira
- AND uti_loc_id = id_localidade
- AND evc_data_inicio >= STR_TO_DATE(disponibilidade_inicio, '%Y-%m-%d %H:%i:%s')
- AND evc_data_inicio <= DATE_SUB(STR_TO_DATE(disponibilidade_fim, '%Y-%m-%d %H:%i:%s'), INTERVAL 1 HOUR)
- AND vme.cad_id = id_cadeira
- AND vme.expl_id = vde.expl_id
- ORDER BY Media_Avaliaçao desc, vde.expl_data_inscricao asc LIMIT 1);
- -- agenda a explicacao
- CALL sp_pedido_explicacao(id_utilizador,event_id,id_cadeira);
- END IF;
- END;//
- DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement