Advertisement
Guest User

Untitled

a guest
Jul 9th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.47 KB | None | 0 0
  1. -- ----------------------------------------------------------------
  2. -- agenda uma explicacao (utilizado pra o botao agendar)
  3. -- ----------------------------------------------------------------
  4. DELIMITER //
  5. 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)
  6. BEGIN
  7.  
  8. declare id_utilizador BIGINT;
  9. declare password_user VARCHAR(45);
  10. declare event_id BIGINT;
  11.  
  12. -- vamos ver se este user ja se encontra registado
  13. IF(exists (select * from Utilizador WHERE uti_email=mail)) THEN
  14. -- 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)
  15. SET id_utilizador = (select uti_id from Utilizador WHERE uti_email=mail);
  16. ELSE
  17. -- caso contrario vamos criar uma conta com os dados recebidos e uma password gerada random
  18. SET password_user = LEFT(UUID(), 8);
  19. CALL sp_criar_utilizador(_nome,'',mail, password_user,'',id_localidade,id_utilizador);
  20. -- aqui deveriamos emitir mensagem
  21. 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));
  22.  
  23. END IF;
  24.  
  25. -- vamos verificar se existe algum explicador para o nosso aluno
  26. IF(NOT EXISTS(SELECT * FROM v_dados_evento_explicacao_e_explicador
  27. WHERE cad_id = id_cadeira and uti_loc_id = id_localidade
  28. and evc_data_inicio >= STR_TO_DATE(disponibilidade_inicio, '%Y-%m-%d %H:%i:%s')
  29. and evc_data_inicio <= DATE_SUB(STR_TO_DATE(disponibilidade_fim, '%Y-%m-%d %H:%i:%s'), INTERVAL 1 HOUR))) THEN
  30.  
  31. -- nao existe
  32. -- aqui vamos ter de mandar o tal mail
  33. SELECT 1;
  34. ELSE
  35.  
  36. -- existe
  37. -- vai buscar o melhor evento consoante o melhor explicador (semi testado)
  38. SET event_id = (SELECT
  39.     *
  40. FROM
  41.     v_dados_evento_explicacao_e_explicador vde,
  42.     v_media_explicadores_por_cadeira vme
  43. WHERE
  44.     cad_id = id_cadeira
  45.         AND uti_loc_id = id_localidade
  46.         AND evc_data_inicio >= STR_TO_DATE(disponibilidade_inicio, '%Y-%m-%d %H:%i:%s')
  47.         AND evc_data_inicio <= DATE_SUB(STR_TO_DATE(disponibilidade_fim, '%Y-%m-%d %H:%i:%s'), INTERVAL 1 HOUR)
  48.         AND vme.cad_id = id_cadeira
  49.         AND vme.expl_id = vde.expl_id
  50. ORDER BY Media_Avaliaçao desc, vde.expl_data_inscricao asc LIMIT 1);
  51.  
  52. -- agenda a explicacao
  53. CALL sp_pedido_explicacao(id_utilizador,event_id,id_cadeira);
  54.  
  55.  
  56. END IF;
  57.  
  58.  
  59.  
  60. END;//
  61. DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement