public string GeneratePrintByRanges(string anno, string counterId, string numRepStart, string numRepEnd, string idRegistro, string dataStampa, bool ultimastampa) { string retVal = ""; logger.Info("START"); DocsPaDB.Query_DocsPAWS.Conservazione dbCons = new DocsPaDB.Query_DocsPAWS.Conservazione(); // uguale al metodo precedente tranne che per questo pezzo. //DocsPaVO.areaConservazione.StampaRegistro stReg = dbCons.getInfoStampaReperiorio(idDoc); DocsPaVO.areaConservazione.StampaRegistro stReg = new DocsPaVO.areaConservazione.StampaRegistro(); stReg.anno = anno; stReg.idRepertorio = counterId; stReg.numProtoStart = numRepStart; if (!string.IsNullOrEmpty(numRepEnd)) { stReg.numProtoEnd = numRepEnd; } stReg.idRegistro = idRegistro; stReg.dtaStampaTruncString = dataStampa; DocsPaDB.Query_DocsPAWS.RegistriRepertorioPrintManager manager = new DocsPaDB.Query_DocsPAWS.RegistriRepertorioPrintManager(); List <RegistroRepertorioPrint> reg1 = manager.GetRegistersToPrintByCounter(stReg.idRepertorio); foreach (RegistroRepertorioPrint print in reg1) { if (print.RegistryId == stReg.idRegistro || print.RFId == stReg.idRegistro) { logger.DebugFormat("Stampa del repertorio {0} della tipologia {5}, per l'anno {1}, su registro {2} o RF {3}, responsabile {4}", print.CounterDescription, stReg.anno, print.RegistryId, print.RFId, print.PrinterUser.userId, print.TipologyDescription); InfoUtente userInfo = new InfoUtente() { idAmministrazione = print.PrinterUser.idAmministrazione, idCorrGlobali = print.PrinterUser.systemId, idGruppo = print.PrinterRole.idGruppo, idPeople = print.PrinterUser.idPeople, userId = print.PrinterUser.userId }; //RepertorioPrintRange rpr = manager.GetRepertoriPrintRangesByYear(counterId, print.RegistryId, print.RFId, year); // Generazione filtri per la stampa List <FiltroRicerca> filters = null; string minX = stReg.numProtoStart; if (!ultimastampa) { string maxX = stReg.numProtoEnd; logger.DebugFormat("Limite inferiore {0}, superiore {1}", minX, maxX); filters = new List <FiltroRicerca>() { new FiltroRicerca() { argomento = "idCounter", valore = stReg.idRepertorio }, new FiltroRicerca() { argomento = "idRegistry", valore = print.RegistryId }, new FiltroRicerca() { argomento = "idRf", valore = print.RFId }, new FiltroRicerca() { argomento = "year", valore = stReg.anno }, new FiltroRicerca() { argomento = "lastPrintedNumber", valore = minX }, new FiltroRicerca() { argomento = "lastNumberToPrint", valore = maxX }, new FiltroRicerca() { argomento = "RECUPERO_evitaMod", valore = "true" } }; } else { logger.DebugFormat("Limite inferiore {0}", minX); filters = new List <FiltroRicerca>() { new FiltroRicerca() { argomento = "idCounter", valore = stReg.idRepertorio }, new FiltroRicerca() { argomento = "idRegistry", valore = print.RegistryId }, new FiltroRicerca() { argomento = "idRf", valore = print.RFId }, new FiltroRicerca() { argomento = "year", valore = stReg.anno }, new FiltroRicerca() { argomento = "lastPrintedNumber", valore = minX } }; } // Creazione della stampa FileDocumento fileDocument = BusinessLogic.Reporting.ReportGeneratorCommand.GetReport( new DocsPaVO.Report.PrintReportRequest() { UserInfo = userInfo, SearchFilters = filters, ReportType = DocsPaVO.Report.ReportTypeEnum.PDF, ReportKey = "StampaRegistriRepertori", ContextName = "StampaRegistriRepertori", AdditionalInformation = String.Format(" Stampa del repertorio per l'anno {0} dal n. {1} al n. {2} - stampa di recupero del giorno {3}. La presente stampa riporta tutte le registrazioni giornaliere di repertorio nell'intervallo indicato. Si è resa necessaria in quanto problematiche tecniche del sistema avevano inizialmente impedito la corretta stampa.", stReg.anno, minX, numRepEnd, dataStampa) }).Document; using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext()) { if (userInfo != null && string.IsNullOrEmpty(userInfo.dst)) { userInfo.dst = BusinessLogic.Utenti.UserManager.getSuperUserAuthenticationToken(); } // Reperimento del nome della tipologia string tipologia = manager.GetNomeTipologia(stReg.idRepertorio); // Creazione della scheda documento SchedaDocumento document = InitializeDocument(userInfo, print.RegistryId, print.RFId, stReg.anno, minX, numRepEnd, tipologia); document.oggetto.descrizione += " - RECUPERO"; Ruolo[] roles = new Ruolo[] { }; // Salvataggio del documento String docNumber = this.SaveDocument(userInfo, print.PrinterRole, document, fileDocument, out roles); if (String.IsNullOrEmpty(docNumber)) { throw new Exception("Errore durante la creazione della stampa"); } retVal = docNumber; // Aggiornamento del registro delle stampe e del prossimo numero da stampare if (!manager.UpdatePrinterManager(stReg.idRepertorio, minX, numRepEnd, docNumber, print.RegistryId, print.RFId, stReg.anno)) { throw new Exception("Errore durante l'aggiornamento dell'anagrafica delle stampe effettuate"); } int rights = 0; // Assegnazione della visibilità della stampa al responsabile di repertorio (se impostato) if (!BusinessLogic.utenti.RegistriRepertorioPrintManager.AssignDocumentVisibilityToResponsable(userInfo, docNumber, stReg.idRepertorio, print.RFId, print.RegistryId, out rights)) { throw new Exception("Errore assegnazione visiblità a ruolo responsabile"); } // Se ci sono ruoli superiori, viene assegnata la visibilità foreach (Ruolo r in roles) { if (!BusinessLogic.utenti.RegistriRepertorioPrintManager.AssignDocumentVisibilityToRole(userInfo, docNumber, stReg.idRepertorio, print.RFId, print.RegistryId, r.idGruppo, rights)) { throw new Exception(String.Format("Errore assegnazione visiblità al ruolo {0}", r.codice)); } } //assegnazione visibilità nel caso di repertori di tipologia/RF if ((string.IsNullOrEmpty(print.RFId) && string.IsNullOrEmpty(print.RegistryId)) || (!string.IsNullOrEmpty(print.RFId))) { DocsPaDB.Utils.Gerarchia gerarchia = new DocsPaDB.Utils.Gerarchia(); object[] supRolePrinter = gerarchia.getGerarchiaSup(print.PrinterRole, ((DocsPaVO.utente.Registro)print.PrinterRole.registri[0]).systemId, null, DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO).ToArray(); foreach (Ruolo r in supRolePrinter) { if (!BusinessLogic.utenti.RegistriRepertorioPrintManager.AssignDocumentVisibilityToRole(userInfo, docNumber, stReg.idRepertorio, print.RFId, print.RegistryId, r.idGruppo, rights)) { throw new Exception(String.Format("Errore assegnazione visiblità al ruolo {0}", r.codice)); } } } // Completamento transazione transactionContext.Complete(); } if (!string.IsNullOrEmpty(retVal)) { DocsPaDB.Query_DocsPAWS.Report dbreport = new DocsPaDB.Query_DocsPAWS.Report(); dbreport.UpdStampaExp(retVal, stReg.dtaStampaTruncString); } } } return(retVal); }
public void GeneratePrintByYear(string counterId, string year) { logger.Info("START"); DocsPaDB.Query_DocsPAWS.RegistriRepertorioPrintManager manager = new DocsPaDB.Query_DocsPAWS.RegistriRepertorioPrintManager(); List <RegistroRepertorioPrint> reg1 = manager.GetRegistersToPrintByCounter(counterId); foreach (RegistroRepertorioPrint print in reg1) { logger.DebugFormat("Stampa del repertorio {0} della tipologia {5}, per l'anno {1}, su registro {2} o RF {3}, responsabile {4}", print.CounterDescription, year, print.RegistryId, print.RFId, print.PrinterUser.userId, print.TipologyDescription); InfoUtente userInfo = new InfoUtente() { idAmministrazione = print.PrinterUser.idAmministrazione, idCorrGlobali = print.PrinterUser.systemId, idGruppo = print.PrinterRole.idGruppo, idPeople = print.PrinterUser.idPeople, userId = print.PrinterUser.userId }; RepertorioPrintRange rpr = manager.GetRepertoriPrintRangesByYear(counterId, print.RegistryId, print.RFId, year); // Generazione filtri per la stampa if (rpr != null && rpr.LastNumber != null && rpr.LastNumber != 0 && (rpr.LastNumber - rpr.FirstNumber) > 0) { string minX = rpr.FirstNumber.ToString(); string maxX = rpr.LastNumber.ToString(); logger.DebugFormat("Limite inferiore {0}, superiore {1}", minX, maxX); List <FiltroRicerca> filters = new List <FiltroRicerca>() { new FiltroRicerca() { argomento = "idCounter", valore = counterId }, new FiltroRicerca() { argomento = "idRegistry", valore = print.RegistryId }, new FiltroRicerca() { argomento = "idRf", valore = print.RFId }, new FiltroRicerca() { argomento = "year", valore = year }, new FiltroRicerca() { argomento = "lastPrintedNumber", valore = minX }, new FiltroRicerca() { argomento = "lastNumberToPrint", valore = maxX } }; // Creazione della stampa FileDocumento fileDocument = BusinessLogic.Reporting.ReportGeneratorCommand.GetReport( new DocsPaVO.Report.PrintReportRequest() { UserInfo = userInfo, SearchFilters = filters, ReportType = DocsPaVO.Report.ReportTypeEnum.PDF, ReportKey = "StampaRegistriRepertori", ContextName = "StampaRegistriRepertori", AdditionalInformation = String.Format(" Stampa del repertorio per l'anno {0} dal n. {1} al n. {2}. La presente stampa riporta tutte le registrazioni giornaliere di repertorio nell'intervallo indicato. Si è resa necessaria in quanto problematiche tecniche del sistema avevano inizialmente impedito la regolare stampa.", year, minX, maxX) }).Document; using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext()) { if (userInfo != null && string.IsNullOrEmpty(userInfo.dst)) { userInfo.dst = BusinessLogic.Utenti.UserManager.getSuperUserAuthenticationToken(); } // Reperimento del nome della tipologia string tipologia = manager.GetNomeTipologia(counterId); // Creazione della scheda documento SchedaDocumento document = InitializeDocument(userInfo, print.RegistryId, print.RFId, year, minX, maxX, tipologia); document.oggetto.descrizione += " - RECUPERO"; Ruolo[] roles = new Ruolo[] { }; // Salvataggio del documento String docNumber = this.SaveDocument(userInfo, print.PrinterRole, document, fileDocument, out roles); if (String.IsNullOrEmpty(docNumber)) { throw new Exception("Errore durante la creazione della stampa"); } // Aggiornamento del registro delle stampe e del prossimo numero da stampare if (!manager.UpdatePrinterManager(counterId, minX, maxX, docNumber, print.RegistryId, print.RFId, year)) { throw new Exception("Errore durante l'aggiornamento dell'anagrafica delle stampe effettuate"); } int rights = 0; // Assegnazione della visibilità della stampa al responsabile di repertorio (se impostato) if (!BusinessLogic.utenti.RegistriRepertorioPrintManager.AssignDocumentVisibilityToResponsable(userInfo, docNumber, counterId, print.RFId, print.RegistryId, out rights)) { throw new Exception("Errore assegnazione visiblità a ruolo responsabile"); } // Se ci sono ruoli superiori, viene assegnata la visibilità foreach (Ruolo r in roles) { if (!BusinessLogic.utenti.RegistriRepertorioPrintManager.AssignDocumentVisibilityToRole(userInfo, docNumber, counterId, print.RFId, print.RegistryId, r.idGruppo, rights)) { throw new Exception(String.Format("Errore assegnazione visiblità al ruolo {0}", r.codice)); } } //assegnazione visibilità nel caso di repertori di tipologia/RF if ((string.IsNullOrEmpty(print.RFId) && string.IsNullOrEmpty(print.RegistryId)) || (!string.IsNullOrEmpty(print.RFId))) { DocsPaDB.Utils.Gerarchia gerarchia = new DocsPaDB.Utils.Gerarchia(); object[] supRolePrinter = gerarchia.getGerarchiaSup(print.PrinterRole, ((DocsPaVO.utente.Registro)print.PrinterRole.registri[0]).systemId, null, DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO).ToArray(); foreach (Ruolo r in supRolePrinter) { if (!BusinessLogic.utenti.RegistriRepertorioPrintManager.AssignDocumentVisibilityToRole(userInfo, docNumber, counterId, print.RFId, print.RegistryId, r.idGruppo, rights)) { throw new Exception(String.Format("Errore assegnazione visiblità al ruolo {0}", r.codice)); } } } // Completamento transazione transactionContext.Complete(); } } } }