Exemplo n.º 1
0
        /// <summary>
        /// Metodo per l'aggiornamento della data di prossima stampa del registro di conservazione.
        /// L'aggiornamento avviene sulla base della frequenza impostata.
        /// Viene aggiornato anche l'ultimo ID stampato.
        /// </summary>
        /// <param name="reg"></param>
        /// <returns></returns>
        public bool UpdateNextPrintDate(RegistroConservazionePrint reg)
        {
            //ricavo la data di prossima stampa
            string nextPrintDate = this.GetNextPrintDate(DateTime.Now, reg.printFreq);

            //imposto la data attuale come data di ultima stampa
            string lastPrintDate = DateTime.Now.ToString("dd/MM/yyyy");

            //recupero l'ultimo id stampato
            string idLastPrinted = reg.idLastToPrint;

            Query query = InitQuery.getInstance().getQuery("U_REG_CONS_UPDATE_CONFIG");

            query.setParam("nextPrintDate", nextPrintDate);
            query.setParam("lastPrintDate", lastPrintDate);
            query.setParam("idLastPrintedEvent", idLastPrinted);
            query.setParam("idAmm", reg.idAmministrazione);


            logger.Debug(query.getSQL());
            //esecuzione query
            bool retVal = false;

            using (DBProvider dbProvider = new DBProvider())
            {
                retVal = dbProvider.ExecuteNonQuery(query.getSQL());
            }

            return(retVal);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Costruisce un oggetto InfoUtente a partire dagli id recuperati
        /// dalla tabella di configurazione stampa
        /// </summary>
        /// <param name="reg">Oggetto RegistroConservazionePrint contentente user_id e id_gruppo</param>
        /// <returns></returns>
        private InfoUtente GetInfoUtenteStampa(RegistroConservazionePrint reg)
        {

            DocsPaVO.utente.Utente u = Utenti.UserManager.getUtenteById(reg.print_userId);
            DocsPaVO.utente.Ruolo r = Utenti.UserManager.getRuoloByIdGruppo(reg.print_role);

            InfoUtente retVal = Utenti.UserManager.GetInfoUtente(u, r);

            return retVal;

        }
Exemplo n.º 3
0
        /// <summary>
        /// Metodo per l'aggiornamento del campo CHA_PRINTED del registro di conservazione.
        /// </summary>
        /// <param name="reg"></param>
        /// <returns></returns>
        public bool UpdatePrintedRecords(RegistroConservazionePrint reg)
        {
            bool retVal = false;

            Query query = InitQuery.getInstance().getQuery("U_REG_CONS_PRINTED_ITEMS");

            query.setParam("id_amm", reg.idAmministrazione);
            query.setParam("next_system_id", reg.idLastPrinted);
            query.setParam("last_system_id", reg.idLastToPrint);

            using (DBProvider dbProvider = new DBProvider())
            {
                retVal = dbProvider.ExecuteNonQuery(query.getSQL());
            }

            return(retVal);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Metodo per il salvataggio della stampa del registro di conservazione.
        /// </summary>
        /// <param name="reg"></param>
        /// <returns></returns>
        public bool UpdateRegStampeCons(RegistroConservazionePrint reg, string docId)
        {
            bool retVal = false;

            //GM 22-7-2013
            //traccio il primo evento stampato nel registro
            //che corrisponde all'id a cui ci siamo fermati nella stampa precedente aumentato di 1
            string idFirstPrintedEvent = (Convert.ToInt32(reg.idLastPrinted) + 1).ToString();

            Query query = InitQuery.getInstance().getQuery("I_REG_CONS_SAVE_PRINT");

            query.setParam("id_amm", reg.idAmministrazione);
            query.setParam("last_system_id", idFirstPrintedEvent);
            query.setParam("next_system_id", reg.idLastToPrint);
            query.setParam("id_profile", docId); // ID del documento creato

            using (DBProvider dbProvider = new DBProvider())
            {
                retVal = dbProvider.ExecuteNonQuery(query.getSQL());
            }

            return(retVal);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Metodo che esegue la stampa del registro relativo ad una amministrazione
        /// </summary>
        public void PrintRegistro(RegistroConservazionePrint infoPrint)
        {

            logger.Debug("Avvio Stampa - DATI:");
            logger.Debug(string.Format("freq={0}, idrange={1}-{2},  daterange={3}-{4}, user={5}, role={6}",
                infoPrint.printFreq, infoPrint.idLastPrinted, infoPrint.idLastToPrint,
                infoPrint.lastPrintDate.ToString("dd/MM/yyyy"), infoPrint.nextPrintDate.ToString("dd/MM/yyyy"),
                infoPrint.print_userId, infoPrint.print_role));

            RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager();

            //creo un oggetto InfoUtente
            InfoUtente userInfo = this.GetInfoUtenteStampa(infoPrint);

            //creo un ruolo dall'id_gruppo
            //GM 23-7-2013: se non ho un ruolo definito nella tabella di configurazione
            //uso un valore fittizio per evitare errori nell'assegnazione delle visibilità
            Ruolo role = new Ruolo();
            role.idGruppo = "0";
            if(!string.IsNullOrEmpty(infoPrint.print_role))            
                role = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(infoPrint.print_role);            
            

            //definisco filtri per la ricerca come nella stampa dei repertori
            List<FiltroRicerca> filters = new List<FiltroRicerca>()
            {
                new FiltroRicerca() {argomento = "id_amm", valore = infoPrint.idAmministrazione},       //id amministrazione
                new FiltroRicerca() {argomento = "next_system_id", valore = infoPrint.idLastPrinted},   //ultimo id stampato
                new FiltroRicerca() {argomento = "last_system_id", valore = infoPrint.idLastToPrint}    //ultimo id da stampare
            };

            //ricavo la frequenza di stampa da stampare nel report
            string printFreq = manager.GetPrintFreq(infoPrint.printFreq);

            //creo la stampa utilizzando i metodi esistenti
            //va definita la classe con il report in businesslogic.reporting (StampeRegistroConservazioneReportGeneratorCommand)
            //e le modalità di estrazione dei dati in docspadb.query_docspaws.reporting.
            FileDocumento fileDocument = BusinessLogic.Reporting.ReportGeneratorCommand.GetReport(
                new DocsPaVO.Report.PrintReportRequest()
                {
                    UserInfo = userInfo,
                    SearchFilters = filters,
                    ReportType = DocsPaVO.Report.ReportTypeEnum.PDF,
                    ReportKey = "StampaRegistroConservazione",
                    ContextName = "StampaRegistroConservazione",
                    AdditionalInformation = String.Format("Stampa del {0} (frequenza di stampa {1})\n\n",DateTime.Now.ToString("dd/MM/yyyy"),printFreq)
                }).Document;

            //inserimento stampa nel gestore documentale

            //apertura contesto transazionale
            using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
            {
                if (userInfo != null && string.IsNullOrEmpty(userInfo.dst))
                    userInfo.dst = BusinessLogic.Utenti.UserManager.getSuperUserAuthenticationToken();

                //creazione scheda documento
                SchedaDocumento document = this.InitializeDocument(userInfo, infoPrint.lastPrintDate, DateTime.Now);

                Ruolo[] roles = new Ruolo[] { };
                //salvataggio documento
                
                string docNumber = this.SaveDocument(userInfo, role, document, fileDocument, out roles);

                if (String.IsNullOrEmpty(docNumber))
                    throw new Exception("Errore durante la creazione della stampa");

                //modifico il tipo_proto del documento inserito in "M"
                if (!manager.UpdateTipoProto(docNumber))
                    throw new Exception("Errore nell'aggiornamento della tipologia protocollo"); 

                //inserisco la stampa nel registro delle stampe
                if (!manager.UpdateRegStampeCons(infoPrint, docNumber))
                    throw new Exception("Errore durante l'aggiornamento dell'anagrafica delle stampe effettuate");

                //aggiorno il campo corrispondente del registro di conservazione
                if (!manager.UpdatePrintedRecords(infoPrint))
                    throw new Exception("Errore nell'aggiornamento del registro di conservazione");
                
                //chiusura transazione
                transactionContext.Complete();

            }

        }