Subversion Repositories Sigmater

Rev

Blame | Last modification | View Log | Download | RSS feed

CREATE OR REPLACE PACKAGE PCK_GESTIONE_UTENTE IS
   
  PROCEDURE CREAUTENTE(P_USERNAME VARCHAR2,P_PASSWORD VARCHAR2,P_NOME VARCHAR2,P_COGNOME VARCHAR2,P_EMAIL VARCHAR2,P_TIPOUTENTE NUMBER,P_RAGGRENTE NUMBER,P_ID_ENTE NUMBER,P_ID_LOGO NUMBER,P_FLAG_PLAN NUMBER,RESULT OUT VARCHAR2 );
  
  PROCEDURE ABILITA_UTENTE_ENTE(P_USERNAME VARCHAR2,P_TIPOUTENTE NUMBER,P_RAGGRENTE NUMBER,P_ID_ENTE NUMBER,P_ID_LOGO NUMBER,RESULT OUT VARCHAR2);

END PCK_GESTIONE_UTENTE;
/
CREATE OR REPLACE PACKAGE BODY PCK_GESTIONE_UTENTE IS


PROCEDURE CREAUTENTE(P_USERNAME VARCHAR2,P_PASSWORD VARCHAR2,P_NOME VARCHAR2,P_COGNOME VARCHAR2,P_EMAIL VARCHAR2,P_TIPOUTENTE NUMBER,P_RAGGRENTE NUMBER,P_ID_ENTE NUMBER,P_ID_LOGO NUMBER,P_FLAG_PLAN NUMBER,RESULT OUT VARCHAR2 )  IS
  USER_PRESENTE NUMBER;
  BEGIN
       RESULT := 'OK';
       -- CONTROLLO SE L'UTENTE È PRESENTE
       SELECT COUNT(*) INTO USER_PRESENTE 
       FROM WS_UTENTI S
       WHERE S.USERNAME = P_USERNAME;
  
       IF USER_PRESENTE = 1 THEN
          RESULT:= 'UTENTE PRESENTE';
          RETURN;
       END IF; 
       
       -- INSERIMENTO UTENTE
       INSERT INTO WS_UTENTI (USERNAME,PASSWORD,COGNOME,NOME,
                              EMAIL,LOGIN,USR_LOGO,USR_FLAG_PLAN,
                              USR_CREATE_DATE,USR_EXPIRATION_DATE)
                     VALUES    (P_USERNAME,P_PASSWORD,P_COGNOME,P_NOME,
                                P_EMAIL,UPPER(P_USERNAME),P_ID_LOGO,P_FLAG_PLAN,
                                SYSDATE,SYSDATE+365);
  
  
       ABILITA_UTENTE_ENTE(P_USERNAME,P_TIPOUTENTE,P_RAGGRENTE,P_ID_ENTE,P_ID_LOGO,RESULT);                         
  
  EXCEPTION 
            WHEN OTHERS THEN
                 RESULT:= 'ERRORE INSERIMENTO UTENTE: '|| SQLCODE ||' - '||SQLERRM;
                 ROLLBACK;
            
END CREAUTENTE;


PROCEDURE ABILITA_UTENTE_ENTE(P_USERNAME VARCHAR2,P_TIPOUTENTE NUMBER,P_RAGGRENTE NUMBER,P_ID_ENTE NUMBER,P_ID_LOGO NUMBER,RESULT OUT VARCHAR2 ) IS
  -- CURSORE SULLE COMUNITÀ MONTANE
  CURSOR CUR_RAGG_COMUNI (R_ID_ENTE NUMBER) IS  
    SELECT D.ID_ENTE 
    FROM WS_RAGGR_ENTI S, WS_CROSS_RAGGR_ENTI D 
    WHERE S.ID_RAGGR = D.ID_RAGG AND
          S.TIPO_UTENTE = P_TIPOUTENTE AND
          S.ID_RAGGR = R_ID_ENTE;
  -- CODICE BELFIORE DEL COMUNE
  LOC_ID_ENTE WS_CROSS_RAGGR_ENTI.ID_ENTE%TYPE;
  
  V_ID_ENTE NUMBER;
  
  BEGIN
       RESULT := 'OK';
       -- delete
       DELETE FROM WS_CROSS_ENTI_UTENTI where USERNAME = P_USERNAME;
       
       IF P_TIPOUTENTE = 4 THEN 
         -- INSERISCO L'ABILITAZIONE  
         INSERT INTO WS_CROSS_ENTI_UTENTI VALUES(P_USERNAME,P_ID_ENTE);
       ELSE
         IF P_ID_ENTE IS NULL THEN
            V_ID_ENTE := 1;
         ELSE
            V_ID_ENTE := P_ID_ENTE;
         END IF;
         OPEN CUR_RAGG_COMUNI(V_ID_ENTE);
         LOOP
             FETCH CUR_RAGG_COMUNI INTO LOC_ID_ENTE;
             EXIT WHEN CUR_RAGG_COMUNI%NOTFOUND;
             INSERT INTO WS_CROSS_ENTI_UTENTI VALUES(P_USERNAME,LOC_ID_ENTE); 
         END LOOP;
         CLOSE CUR_RAGG_COMUNI; 
       END IF;
         
       -- update tipo utente
       UPDATE WS_UTENTI 
       SET USR_LEVEL = P_TIPOUTENTE, 
           USR_RAGGR_ENTI = P_RAGGRENTE,
           USR_LOGO = P_ID_LOGO
       WHERE USERNAME = P_USERNAME;
       COMMIT;
  EXCEPTION 
            WHEN OTHERS THEN
                 RESULT:= 'ERRORE INSERIMENTO UTENTE: '|| SQLCODE ||' - '||SQLERRM;
                 ROLLBACK;

END ABILITA_UTENTE_ENTE;
 

END PCK_GESTIONE_UTENTE;
/