Esempio n. 1
0
        /// <summary>
        /// Implementazione della logica del task di migrazione dati
        /// per tutti i fascicoli di un'amministrazione
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="opzioniMigrazione"></param>
        private static void ImportaFascicoli(InfoUtente infoUtente, InfoAmministrazione amministrazione, OpzioniMigrazioneFascicolo opzioniMigrazione)
        {
            InfoStatoMigrazione statoMigrazione = StatoMigrazione.Get(amministrazione);

            try
            {
                using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider())
                {
                    // Viene assegnato all'infoutente l'id dell'amministrazione fornita come parametro
                    // per fare in modo che l'utente che esegue la migrazione si impersonifichi
                    // come utente dell'amministrazione
                    string idAmm = infoUtente.idAmministrazione;
                    infoUtente.idAmministrazione = amministrazione.IDAmm;

                    using (DataSet ds = new DataSet())
                    {
                        // 1. Reperimento fascicoli per il titolario
                        if (dbProvider.ExecuteQuery(ds, GetQueryFascicoli(infoUtente, opzioniMigrazione.Filtro)))
                        {
                            Log.GetInstance(amministrazione).Write("Reperimento fascicoli in amministrazione.", false);

                            int index = 1;

                            foreach (DataRow row in ds.Tables[0].Rows)
                            {
                                if (_interrompiMigrazione)
                                {
                                    _interrompiMigrazione = false;
                                    Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicoli interrotta al fascicolo {0} di {1}", index.ToString(), ds.Tables[0].Rows.Count), false);
                                    break;
                                }

                                // 2. Migrazione dei singoli fascicoli
                                ImportaFascicolo(row, infoUtente, amministrazione, statoMigrazione);

                                index++;
                            }
                        }
                        else
                        {
                            // 1a. Errore nel reperimento dei fascicoli
                            throw new ApplicationException(
                                      string.Format("Si è verificato un errore nel reperimento dei fascicolo per l'amministrazione '{0}'",
                                                    amministrazione.Codice));
                        }
                    }

                    infoUtente.idAmministrazione = idAmm;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                // Save dello stato migrazione
                StatoMigrazione.Save(statoMigrazione, amministrazione);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Aggiornamento di un'amministrazione
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="tipiOggetti"></param>
        /// <returns></returns>
        internal static void AggiornaAmministrazione(InfoUtenteAmministratore infoUtente, DocsPaVO.amministrazione.InfoAmministrazione amministrazione, TipiOggettiAmministrazione tipiOggetti)
        {
            InfoStatoMigrazione statoMigrazione = StatoMigrazione.Get(amministrazione);

            AmministrazioneManager amministraManager = new AmministrazioneManager(infoUtente);

            // 1. Verifica amministrazione esistente in DCTM
            if (amministraManager.ContainsAmministrazione(amministrazione.Codice))
            {
                List <string> ruoliImportati = null;

                try
                {
                    // 2. Creazione delle utenze dell'amministrazione
                    if (tipiOggetti.Organigramma)
                    {
                        Organigramma.ImportaUtenti(infoUtente, amministrazione);

                        // 3. Creazione dei ruoli dell'amministrazione
                        Organigramma.ImportaRuoli(infoUtente, amministrazione, out ruoliImportati);

                        // 4. Associazione degli utenti ai ruoli dell'amministrazione
                        Organigramma.ImportaAssociazioniUtentiRuoli(infoUtente, amministrazione);
                    }

                    if (tipiOggetti.Titolario)
                    {
                        // 5. Creazione dei titolari dell'amministrazione
                        Titolario.ImportaTitolari(infoUtente, amministrazione);
                    }

                    // Imposta lo stato dell'amministrazione come migrata correttamente
                    statoMigrazione.DatiAmministrazioneMigrati = true;

                    // Salva stato della migrazione
                    StatoMigrazione.Save(statoMigrazione, amministrazione);
                }
                catch (Exception ex)
                {
                    // Rollback: in caso di errore, viene rimossa l'amministrazione appena inserita
                    // per mantenere i dati consistenti
                    Log.GetInstance(amministrazione).Write(string.Format("Si è verificato un errore nella procedura di migrazione l'amministrazione '{0}'.", amministrazione.Codice), false);

                    throw ex;
                }
            }
            else
            {
                // 1a. Errore nella migrazione dell'amministrazione (migrazione interrotta)
                throw new ApplicationException(string.Format("Si è verificato un errore nell'aggiornamento dell'amministrazione. Amministrazione con codice {0} non esistente", amministrazione.Codice));
            }
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="fascicoli"></param>
        private static void ImportaFascicoliSelezionati(InfoUtente infoUtente, DocsPaVO.amministrazione.InfoAmministrazione amministrazione, Migrazione.InfoFascicoloMigrazione[] fascicoli)
        {
            InfoStatoMigrazione statoMigrazione = StatoMigrazione.Get(amministrazione);

            try
            {
                // Viene assegnato all'infoutente l'id dell'amministrazione fornita come parametro
                // per fare in modo che l'utente che esegue la migrazione si impersonifichi
                // come utente dell'amministrazione
                string idAmm = infoUtente.idAmministrazione;
                infoUtente.idAmministrazione = amministrazione.IDAmm;

                int index = 1;

                foreach (Migrazione.InfoFascicoloMigrazione infoFascicolo in fascicoli)
                {
                    if (_interrompiMigrazione)
                    {
                        _interrompiMigrazione = false;
                        Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicoli interrotta al fascicolo {0} di {1}", index.ToString(), fascicoli.Length), false);
                        break;
                    }

                    // 1. Reperimento oggetto fascicolo
                    infoUtente.idGruppo = DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getRuoloCreatore(infoFascicolo.Id).idGruppo;
                    DocsPaVO.fascicolazione.Fascicolo fascicolo = GetFascicolo(infoFascicolo.Id, infoUtente);

                    // 2. Migrazione dei singoli fascicoli
                    ImportaFascicolo(fascicolo, infoUtente, amministrazione, statoMigrazione);

                    index++;
                }

                infoUtente.idAmministrazione = idAmm;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                // Save dello stato migrazione
                StatoMigrazione.Save(statoMigrazione, amministrazione);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Implementazione della logica del task di migrazione dati
        /// per una singola amministrazione DocsPa
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        private static void ImportaAmministrazione(InfoUtenteAmministratore infoUtente, InfoAmministrazione amministrazione)
        {
            InfoStatoMigrazione statoMigrazione = StatoMigrazione.Get(amministrazione);

            AmministrazioneManager amministraManager = new AmministrazioneManager(infoUtente);

            // 1. Creazione dell'amministrazione in DCTM
            EsitoOperazione result = amministraManager.Insert(amministrazione);

            if (result.Codice == RESULT_CODE_OK)
            {
                Log.GetInstance(amministrazione).Write(string.Format("Creata amministrazione con codice '{0}'", amministrazione.Codice), false);

                List <string> ruoliImportati = null;

                try
                {
                    // 2. Creazione delle utenze dell'amministrazione
                    Organigramma.ImportaUtenti(infoUtente, amministrazione);

                    // 3. Creazione dei ruoli dell'amministrazione
                    Organigramma.ImportaRuoli(infoUtente, amministrazione, out ruoliImportati);

                    // 4. Associazione degli utenti ai ruoli dell'amministrazione
                    Organigramma.ImportaAssociazioniUtentiRuoli(infoUtente, amministrazione);

                    // 5. Creazione dei titolari dell'amministrazione
                    Titolario.ImportaTitolari(infoUtente, amministrazione);

                    // Imposta lo stato dell'amministrazione come migrata correttamente
                    statoMigrazione.DatiAmministrazioneMigrati = true;

                    // Salva stato della migrazione
                    StatoMigrazione.Save(statoMigrazione, amministrazione);
                }
                catch (Exception ex)
                {
                    // Rollback: in caso di errore, viene rimossa l'amministrazione appena inserita
                    // per mantenere i dati consistenti
                    EsitoOperazione rollback = null;

                    /* Deletami sto cazzo figlio di Troia ...
                     * if (ruoliImportati != null)
                     *  rollback = amministraManager.Delete(amministrazione, ruoliImportati.ToArray());
                     * else
                     *  rollback = amministraManager.Delete(amministrazione); */


                    // if (rollback.Codice != RESULT_CODE_OK)
                    //   Log.GetInstance(amministrazione).Write(string.Format("Errore nel Rollback: {0}", rollback.Descrizione), false);
                    //else
                    Log.GetInstance(amministrazione).Write(string.Format("Si è verificato un errore nella procedura di migrazione l'amministrazione '{0}'. Le operazioni finora effettuate sono state annullate.", amministrazione.Codice), false);

                    throw ex;
                }
            }
            else
            {
                // 1a. Errore nella migrazione dell'amministrazione (migrazione interrotta)
                throw new ApplicationException(string.Format("Si è verificato un errore nell'inserimento dell'amministrazione. Codice: {0} - Descrizione: {1}", result.Codice, result.Descrizione));
            }
        }