예제 #1
0
 public static void salvaInserimentoUtenteProfDimFasc(DocsPaVO.ProfilazioneDinamica.Templates template, string idProject)
 {
     using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
     {
         try
         {
             DocsPaDB.Query_DocsPAWS.ModelFasc modelFascDB = new DocsPaDB.Query_DocsPAWS.ModelFasc();
             modelFascDB.salvaInserimentoUtenteProfDimFasc(template, idProject);
             transactionContext.Complete();
         }
         catch (Exception e)
         {
             logger.Debug("Errore in ProfilazioneFascicoli  - metodo: salvaInserimentoUtenteProfDimFasc", e);
         }
     }
 }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="classifica"></param>
        /// <param name="fascicolo"></param>
        /// <param name="ruolo"></param>
        /// <param name="enableUfficioReferente"></param>
        /// <param name="result"></param>
        /// <param name="ruoliSuperiori"></param>
        /// <returns></returns>
        public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori)
        {
            logger.Info("BEGIN");
            bool retValue = false;

            ruoliSuperiori = null;

            using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider())
            {
                using (System.Data.IDataReader reader = dbProvider.ExecuteReader("select a.CHA_STATO from project a where a.SYSTEM_ID in (select b.ID_TITOLARIO from project b where b.SYSTEM_ID =" + classifica.systemID + ")"))
                {
                    if (reader.FieldCount > 0)
                    {
                        while (reader.Read())
                        {
                            string valorechiave = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FASC_TUTTI_TIT");
                            if (string.IsNullOrEmpty(valorechiave) || !valorechiave.Equals("1"))
                            {
                                if (reader.GetString(reader.GetOrdinal("CHA_STATO")).ToUpper().Equals("C"))
                                {
                                    logger.Debug("sottofascilo chiuso");
                                    throw new Exception("sottofascilo chiuso");
                                }
                            }
                        }
                    }
                }

                logger.Debug(" *** INIZIO TRANSAZIONE CREAZIONE FASCICOLO ***");
                dbProvider.BeginTransaction();

                fascicolo.idClassificazione = classifica.systemID;

                result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK;
                DocsPaVO.fascicolazione.Folder             folder    = new DocsPaVO.fascicolazione.Folder();
                DocsPaDB.Query_DocsPAWS.AmministrazioneXml objAX     = new DocsPaDB.Query_DocsPAWS.AmministrazioneXml();
                DocsPaDB.Query_DocsPAWS.Fascicoli          fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli();

                try
                {
                    fascicolo.stato = "A";
                    fascicolo.tipo  = "P";

                    // 6 - Si aggiorna il codUltimo relativo al fascicolo (solo per ora perchè andrà tolta questa gestione)
                    if (!fascicoli.aggiornaDpaRegFasc(ref fascicolo.codUltimo, fascicolo.idClassificazione, fascicolo.idRegistro, dbProvider))
                    {
                        throw new Exception("Errore nell'aggiornamento della tabella dpa_reg_fasc");
                    }

                    //prova per verifica codice univoco
                    string format = DocsPaDB.Utils.Personalization.getInstance(this.UserInfo.idAmministrazione).FormatoFascicolatura;
                    if (format == null || format.Equals(""))
                    {
                        //in alcuni casi, l'oggetto Personalization non è not null, ma il formato segnatura è null!!
                        //per evitare il blocco della protocollazione a meno di un iisreset inserisco questo codice.
                        logger.Debug("Ricalcolo Personalization");
                        DocsPaDB.Utils.Personalization.Reset();
                        format = DocsPaDB.Utils.Personalization.getInstance(this.UserInfo.idAmministrazione).FormatoFascicolatura;
                        if (format == null || format.Equals(""))
                        {
                            throw new FormatoFascicolaturaException();
                        }
                    }

                    //string codiceFasc = this.CalcolaCodiceFascicolo(this.UserInfo.idAmministrazione, classifica.codice, fascicolo.apertura, classifica.systemID, ref fascicolo.codUltimo, true, dbProvider);
                    string codiceFasc = this.CalcolaCodiceFascicolo(this.UserInfo.idAmministrazione, classifica, fascicolo.apertura, ref fascicolo.codUltimo, true, dbProvider);
                    string idReg      = fascicolo.idRegistro;

                    if (idReg != null && idReg == "")
                    {
                        idReg = classifica.registro.systemId;
                    }

                    // 4 - Si verifica che il codice sia univoco
                    if (!objAX.CheckUniqueCode("PROJECT", "VAR_CODICE", codiceFasc, "AND ((ID_REGISTRO IS NULL OR ID_REGISTRO=" + idReg + " ) ) AND ID_AMM =" + this.UserInfo.idAmministrazione + " AND ID_PARENT = " + classifica.systemID + "", dbProvider))
                    {
                        // 4 - Si verifica se il codice è già presente vienelanciata una eccezione
                        //codiceFascNew = calcolaCodiceFascicolo(infoUtente.idAmministrazione,classificazione.codice, fascicolo.apertura, classificazione.systemID, ref fascicolo.codUltimo, false, dbProvider);
                        throw new FascicoloPresenteException();
                    }

                    // Creazione fascicolo
                    string idPeopleDelegato = string.Empty;
                    if (fascicolo.creatoreFascicolo != null && fascicolo.creatoreFascicolo.idPeopleDelegato != null)
                    {
                        idPeopleDelegato = fascicolo.creatoreFascicolo.idPeopleDelegato;
                    }
                    string systemIdFasc = this.CreateProject(fascicolo.descrizione, idPeopleDelegato);

                    if (systemIdFasc != null && systemIdFasc != "")
                    {
                        fascicolo.systemID = systemIdFasc;

                        /* 2 - VIENE INVOCATO IL METODO PER LA CREAZIONE DEL FASCICOLO
                         * e della ROOT FOLDER */
                        bool resultNewFasc = this.CreazioneFascicoloConTransazione(classifica, fascicolo, this.UserInfo, ruolo, enableUfficioReferente, folder, codiceFasc, dbProvider, out ruoliSuperiori);

                        //3 - SE LA CREAZIONE DEL FASCICOLO è ANDATA A BUON FINE SI EFFETTUA IL COMMIT
                        //DELLA TRANSAZIONE
                        if (resultNewFasc)
                        {
                            result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK;
                        }
                        else
                        {
                            throw new Exception("Errore nella gestione dei fascicoli (newFascicolo)");
                        }
                    }
                    else
                    {
                        throw new Exception("Errore nella gestione dei fascicoli (newFascicolo)");
                    }

                    //Profilazione dinamica fascicoli
                    if (fascicolo.template != null)
                    {
                        DocsPaDB.Query_DocsPAWS.ModelFasc modelFasc = new DocsPaDB.Query_DocsPAWS.ModelFasc();
                        modelFasc.salvaInserimentoUtenteProfDimFasc(fascicolo.template, fascicolo.systemID);
                    }
                    //Fine profilazione dinamica fascicoli

                    logger.Debug("Fascicolo creato: idFascicolo = " + fascicolo.systemID);
                    logger.Debug("Folder creata: = " + folder.systemID);

                    if (result == ResultCreazioneFascicolo.OK)
                    {
                        retValue = true;
                    }
                }
                catch (FascicoloPresenteException e)
                {
                    retValue  = false;
                    fascicolo = null;
                    result    = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.FASCICOLO_GIA_PRESENTE;

                    logger.Debug(e.Message);
                }
                catch (FormatoFascicolaturaException e)
                {
                    retValue  = false;
                    fascicolo = null;
                    result    = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.FORMATO_FASCICOLATURA_NON_PRESENTE;

                    logger.Debug(e.Message);
                }
                catch (Exception e)
                {
                    //SE LA CREAZIONE DEL FASCICOLO GENERA ERRORE,
                    //SI RILASCIANO RISORSE ALLOCATE E SI EFFETTUA IL ROLLBACK DELLA TRANSAZIONE
                    retValue  = false;
                    fascicolo = null;
                    result    = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.GENERIC_ERROR;

                    logger.Debug(e.Message);
                }

                if (retValue)
                {
                    dbProvider.CommitTransaction();
                }
                else
                {
                    dbProvider.RollbackTransaction();
                }
            }
            logger.Info("END");
            return(retValue);
        }