/// <summary> /// Verifica se ci sono amministrazioni con registro di conservazione enabled. /// </summary> /// <returns></returns> private bool CheckRegAbilitato() { RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager(); bool retVal = false; if (Convert.ToInt32(manager.GetEnabledRegCons()) > 0) { retVal = true; } return retVal; }
/// <summary> /// Costruisce il summary relativo all'istanza o documento in oggetto /// </summary> /// </summary> /// <param name="request"></param> /// <param name="context">distingue tra summary istanza/documento</param> /// <param name="idIstanza">id istanza attuale</param> /// <param name="idDoc">id documento (se richiesto)</param> /// <returns></returns> private string GetSummary(PrintReportRequest request, string context, string idIstanza, string idDoc) { string summary = string.Empty; RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager(); //costruzione del summary nei due casi if (context == "istanza") { RegistroConservazioneSummary summaryData = manager.GetSummaryDataIst(idIstanza); string creationDate = summaryData.creationDate.Equals(DateTime.MinValue) ? string.Empty : summaryData.creationDate.ToString("dd/MM/yyyy"); string invioDate = summaryData.invioDate.Equals(DateTime.MinValue) ? string.Empty : summaryData.invioDate.ToString("dd/MM/yyyy"); summary = "ISTANZA - ID istanza: " + idIstanza + "\n\n"; summary += "Descrizione istanza: " + summaryData.descrizione + "\n"; summary += "Data di apertura: " + creationDate + "\n"; summary += "Data di invio al CS: " + invioDate + "\n"; summary += "Numero documenti: " + summaryData.numDoc + "\n"; summary += "Dimensioni complessive: " + manager.ConvertDocSize(summaryData.fileDim) + "\n"; logger.Debug(summary); } else if (context == "documento") { RegistroConservazioneSummary summaryData = manager.GetSummaryDataDoc(idDoc); string segnatura = new DocsPaDB.Query_DocsPAWS.Conservazione().getSegnatura_Id(idDoc); string creationDate = summaryData.creationDate.Equals(DateTime.MinValue) ? string.Empty : summaryData.creationDate.ToString("dd/MM/yyyy"); summary = "DOCUMENTO - ID/Segnatura documento: " + segnatura + "\n\n"; summary += "ID istanza: " + idIstanza + "\n"; summary += "Data creazione/protocollazione: " + creationDate + "\n"; summary += "Oggetto: " + summaryData.descrizione + "\n"; summary += "Codice fascicolo: " + summaryData.codiceFascicolo + "\n"; summary += "N. allegati: " + summaryData.numDoc + "\n"; summary += "Tipo file: " + summaryData.tipoFile + "\n"; summary += "Dimensioni file: " + manager.ConvertDocSize(summaryData.fileDim) + "\n"; logger.Debug(summary); } return(summary); }
/// <summary> /// Metodo da schedulare che verifica se ci sono amministrazioni con stampa abilitata /// e, se è stata raggiunta la data di prossima stampa, la esegue. /// </summary> public void GeneratePrintRegCons() { logger.Debug("stampa registro di conservazione - START"); //check per vedere se esistono amministrazioni con registro di conservazione abilitato if (this.CheckRegAbilitato()) { RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager(); List<RegistroConservazionePrint> printRanges = manager.GetRegConsPrintRange(); //loop in cui recupero info e le inserisco in un oggetto foreach (var range in printRanges) { logger.Debug(string.Format("ID AMM={0} - check", range.idAmministrazione)); //check se data prossima stampa è >= data attuale (e se esistono record da stampare) if (manager.VerifyNextPrint(range.nextPrintDate, range.idAmministrazione, range.idLastPrinted, range.printHour)) { try { //metodo che esegue la stampa PrintRegistro(range); //aggiorna la data di prossima stampa automatica e l'ultimo documento/istanza stampati if (!manager.UpdateNextPrintDate(range)) throw new Exception("Errore durante l'aggiornamento delle impostazioni di stampa."); logger.Debug("termine stampa ID AMM=" + range.idAmministrazione); } catch (Exception exc) { logger.Debug("Errore nella stampa del registro per amm ID=" + range.idAmministrazione + ": ", exc); } } /* else { throw new Exception(string.Format("Prossima data di stampa: {0}", range.nextPrintDate.ToString("dd/MM/yyyy"))); } */ } } }
/// <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(); } }
protected override PrintReportResponse GenerateReport(PrintReportRequest request, Behaviors.DataExtraction.IReportDataExtractionBehavior dataExtractor, Behaviors.ReportGenerator.IReportGeneratorBehavior reportGeneration) { PrintReportResponse response = null; try { logger.Debug("Inizio GenerateReport."); //istanzio la response da restituire response = new PrintReportResponse(); //creo la lista di report da esportare List <DocsPaVO.Report.Report> reports = new List <DocsPaVO.Report.Report>(); //creo il titolo this.SetTitle(request); //ricavo la lista delle istanze RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager(); List <string> listIdIstanze = manager.GetListaIstanze(request); logger.Debug(string.Format("{0} istanze trovate.", listIdIstanze.Count)); //creo due nuovi filtri su istanze e documenti request.SearchFilters.Add(new FiltroRicerca() { argomento = "id_istanza", valore = string.Empty }); request.SearchFilters.Add(new FiltroRicerca() { argomento = "id_oggetto", valore = string.Empty }); foreach (var ist in listIdIstanze) { logger.Debug(string.Format("Istanza {0}: ", ist)); //creo il summary per l'istanza string summary = GetSummary(request, "istanza", ist, String.Empty); //inserisco il summary nel campo additional information della request request.AdditionalInformation = summary; //imposto il filtro sull'istanza al valore attuale e inizializzo il filtro sul documento foreach (FiltroRicerca f in request.SearchFilters) { if (f.argomento == "id_istanza") { f.valore = ist; } if (f.argomento == "id_oggetto") { f.valore = string.Empty; } } //genero il report per l'istanza reports.AddRange(this.GetReport(dataExtractor, request, "rcIstanze")); //dopo la prima stampa devo cancellare titolo e sottotitolo! request.Title = string.Empty; request.SubTitle = string.Empty; //ricavo la lista dei documenti che appartengono all'istanza List <string> listIdDoc = manager.GetListaDocumentiIstanze(request); logger.Debug(string.Format("{0} documenti trovati nell'istanza.", listIdDoc.Count)); //loop sui documenti, eventualmente realizzare un metodo ad hoc foreach (var doc in listIdDoc) { //creo il summary per il documento summary = GetSummary(request, "documento", ist, doc); //inserisco il summary nel campo additional information della request request.AdditionalInformation = summary; //imposto il filtro sul documento al valore attuale foreach (FiltroRicerca f in request.SearchFilters) { if (f.argomento == "id_oggetto") { f.valore = doc; } } //genero il report per il documento reports.AddRange(this.GetReport(dataExtractor, request, "rcDocumenti")); } } request.ReportKey = "StampaConservazione"; logger.Debug("Chiamata servizio di stampa."); response.Document = reportGeneration.GenerateReport(request, reports); } catch (Exception ex) { logger.Debug("Errore in StampeRegistroConservazioneReportGeneratorCommand: ", ex); throw new ReportGenerationFailedException(ex.Message); } return(response); }