/// <summary> /// Disabilita la segnatura se il file non è di tipo pdf, ha impressa la segnatura e se è un allegato non di tipo utente /// </summary> /// <param name="fileRequest"></param> /// <returns></returns> private bool DisableSignature(FileRequest file) { //Verifico se la versione del documento ha impressa la segnatura bool withSignature = DocumentManager.IsVersionWithSegnature(file.versionId); //Verifico se la versione è un pdf o un pdf con firma digitale, oppure se è un file convertibile in pdf // Gabriele Melini 24-02-2014 // le stringhe con le estensioni sono definite minuscole // il ToLower evita schianti in caso di file con estensioni maiuscole (e.g. INC000000309701) bool isPdf = ( //FileManager.getEstensioneIntoSignedFile(file.fileName).Equals(PDF) || //FileManager.getEstensioneIntoSignedFile(file.fileName).Equals(TSD) || //FileManager.getEstensioneIntoSignedFile(file.fileName).Equals(M7M) || FileManager.getEstensioneIntoSignedFile(file.fileName).ToLowerInvariant().Equals(PDF) || FileManager.getEstensioneIntoSignedFile(file.fileName).ToLowerInvariant().Equals(TSD) || FileManager.getEstensioneIntoSignedFile(file.fileName).ToLowerInvariant().Equals(M7M) || (ShowDocumentAsPdfFormat && PdfConverterInfo.CanConvertFileToPdf(file.fileName)) || (!string.IsNullOrEmpty(NttDataWA.Utils.InitConfigurationKeys.GetValue(UserManager.GetUserInSession().idAmministrazione, "FE_RENDER_PDF")) && NttDataWA.Utils.InitConfigurationKeys.GetValue(UserManager.GetUserInSession().idAmministrazione, "FE_RENDER_PDF").Equals("1"))); bool isAllegatoUser = true; //Verifico se il file request è un allegato di tipo utente if (file.GetType() == typeof(Allegato)) { isAllegatoUser = (file as Allegato).TypeAttachment == CODE_ATTACH_USER; } else //nel caso di dettaglio allegato verifico che sia di tipo utente if (file.GetType() == typeof(Documento) && this.Page.Request["typeAttachment"] != null) { isAllegatoUser = Convert.ToInt32(this.Page.Request["typeAttachment"]) == CODE_ATTACH_USER; } // Controllo se l'allegato è esterno bool isAllegatoExt = true; //Verifico se il file request è un allegato di tipo utente if (file.GetType() == typeof(Allegato)) { isAllegatoExt = (file as Allegato).TypeAttachment == CODE_ATTACH_EXT; } else //nel caso di dettaglio allegato verifico che sia di tipo utente if (file.GetType() == typeof(Documento) && this.Page.Request["typeAttachment"] != null) { isAllegatoExt = Convert.ToInt32(this.Page.Request["typeAttachment"]) == CODE_ATTACH_EXT; } return(!(!withSignature && isPdf && (isAllegatoUser || isAllegatoExt))); }
public async Task<Stream> HandleFileRequest(FileRequest request) { Console.WriteLine("Call to HandleRequest"); var requestType = request.GetType(); var isValidRequest = requestType.GetInterfaces().Any(x => x.IsGenericType && (typeof(IAsyncRequest<>).IsAssignableFrom(x.GetGenericTypeDefinition()) || typeof(IRequest<>).IsAssignableFrom(x.GetGenericTypeDefinition())) ); if (!isValidRequest) { throw new ArgumentException("Unprocessable request"); } //var isAsyncRequest = requestType.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IAsyncRequest<>)); var responseStream = new MemoryStream(); request.SetStream(responseStream); //if (isAsyncRequest) //{ // await _mediator.SendAsync(request); //} _mediator.Send(request); responseStream.Position = 0; return responseStream; }
private void loadCheckOutData() { string strNomeFile = string.Empty; string strOggetto = string.Empty; CheckInOutApplet.CheckInOutServices.InitializeContext(); NttDataWA.DocsPaWR.SchedaDocumento schedaDoc = CheckInOutApplet.CheckInOutServices.CurrentSchedaDocumento; //FileRequest fileReq = null; fileReq = null; if (UIManager.DocumentManager.getSelectedAttachId() == null) { if (schedaDoc != null) { fileReq = schedaDoc.documenti[0]; //strOggetto = schedaDoc.oggetto.descrizione; //strNomeFile = schedaDoc.documenti[0].path; } } else { if (UIManager.DocumentManager.GetSelectedAttachment() != null) { fileReq = UIManager.DocumentManager.GetSelectedAttachment(); //Allegato allegato = UIManager.DocumentManager.GetSelectedAttachment(); //strOggetto = allegato.descrizione; //strNomeFile = allegato.fileName; } } string details = Utils.Languages.GetMessageFromCode("DigitalVisurelblMessageDetails", language); details = details.Replace("@@", fileReq.version); if (fileReq.GetType().Equals(typeof(DocsPaWR.Documento))) { details = details.Replace("##", Utils.Languages.GetLabelFromCode("DigitalVisureLblMainDocument", UserManager.GetUserLanguage())); } else { details = details.Replace("##", Utils.Languages.GetLabelFromCode("DigitalVisureLblAttachment", UserManager.GetUserLanguage())).Replace("@@", fileReq.versionLabel); } string extensionFile = (fileReq.fileName.Split('.').Length > 1) ? (fileReq.fileName.Split('.'))[fileReq.fileName.Split('.').Length - 1] : string.Empty; details = details.Replace("@#", extensionFile); FileDocumento doc = FileManager.getInstance(schedaDoc.systemId).getInfoFile(this.Page, fileReq); if (doc != null && !string.IsNullOrEmpty(doc.nomeOriginale)) { details = details.Replace("#@", doc.nomeOriginale); } this.lblMessageDetails.Text = details; //this.lblOggetto.Text = strOggetto; //this.lblNomeFile.Text = strNomeFile; }
/// <summary> /// Aggiornamento abilitazione / disabilitazione funzioni di checkin - checkout /// </summary> private void RefreshButtons() { this.DisableAllButtons(); DocsPaWR.SchedaDocumento currentScheda = this.CurrentSchedaDocumento; if (currentScheda != null) { FileRequest selectedFile = UIManager.FileManager.getSelectedFile(); // Verifica stato consolidamento del documento (solo se non consolidato, si può fare checkout) if (currentScheda.ConsolidationState == null || (currentScheda.ConsolidationState != null && currentScheda.ConsolidationState.State == DocsPaWR.DocumentConsolidationStateEnum.None)) { if (!string.IsNullOrEmpty(currentScheda.systemId) && (currentScheda.tipoProto != "R" && currentScheda.tipoProto != "C")) { // NB: Nei casi in cui l'utente non è abilitato per l'utilizzo della funzione di checkin / checkout, // le uniche funzionalità non disponibili saranno quelle relative al checkin e all'undocheckout. // In ogni caso potrà vedere lo stato del documento e chi l'ha posto in checkout. // Verifica se il documento non è né cestinato né annullato if (!this.IsDocumentoInCestino && !this.IsDocumentoAnnullato) { CheckOutStatus status = CheckInOutServices.GetCheckOutDocumentStatus(); if (status != null) { // Il documento risulta bloccato, reperimento del proprietario del blocco string ownerUser = status.UserName.ToUpper(); bool isOwnerCheckOut = (ownerUser == UIManager.UserManager.GetInfoUser().userId.ToUpper()); if (this.UserEnabled && isOwnerCheckOut && (currentScheda.checkOutStatus == null || currentScheda.checkOutStatus.InConversionePdf)) { // Documento bloccato dall'utente corrente: funzioni di rilascio abilitate this.btnCheckIn.Enabled = true; this.btnOpenCheckedOutFile.Enabled = true; this.btnUndoCheckOut.Enabled = true; if (UIManager.UserManager.isFiltroAooEnabled()) { //DocsPaWR.Registro[] userRegistri = UIManager.UserManager.getListaRegistri(this.Page); DocsPaWR.Registro[] userRegistri = RoleManager.GetRoleInSession().registri; this.btnCheckIn.Enabled = UIManager.UserManager.verifyRegNoAOO(currentScheda, userRegistri); this.btnOpenCheckedOutFile.Enabled = UIManager.UserManager.verifyRegNoAOO(currentScheda, userRegistri); this.btnUndoCheckOut.Enabled = UIManager.UserManager.verifyRegNoAOO(currentScheda, userRegistri); } } string language = UIManager.UserManager.GetUserLanguage(); this.btnShowCheckOutStatus.Enabled = true; this.btnShowCheckOutStatus.Visible = true; this.btnShowCheckOutStatus.ToolTip = Utils.Languages.GetLabelFromCode("DocumentImgLockTooltip", language) + ownerUser; //Verifico che il documento è bloccato per una richiesta di conversione pdf lato server //In caso affermativo disabilito l'apertura del file ed il rilascia sen if (status.InConversionePdf) { this.btnOpenCheckedOutFile.Enabled = false; this.btnCheckIn.Enabled = false; // Se il documento è in stato di conversione pdf, // il pulsante di annullamento è abilitato solo se l'owner // del blocco è l'utente stesso //this.btnUndoCheckOut.Enabled = isOwnerCheckOut; this.btnUndoCheckOut.Enabled = false; } } else { //modifica NttDataWA.DocsPaWR.DocsPaWebService ws = new NttDataWA.DocsPaWR.DocsPaWebService(); //string idAmm = UIManager.UserManager.GetInfoUser().idAmministrazione; ////NttDataWA.DocsPaWR.CacheConfig info = ws.getConfigurazioneCache(idAmm); //if (ws.isActiveCache(idAmm)) //{ // //bool inCache = ws.inCache(currentScheda.docNumber, currentScheda.documenti[currentScheda.documenti.Length - 1].versionId, idAmm); // //if (inCache) // //{ // // string pathComponents = ws.recuperaPathComponents(currentScheda.docNumber, currentScheda.documenti[currentScheda.documenti.Length - 1].versionId); // // if (string.IsNullOrEmpty(pathComponents)) // // this.btnCheckOut.Enabled = false; // // else // this.btnCheckOut.Enabled = true; // //} //} //else //fine mofidica if (Session["docInRisposta"] == null && Session["docInRisposta2"] == null) { if (!this.IsEnabledProfilazioneAllegati && this.IsSelectedTabAllegati && selectedFile.GetType() == typeof(DocsPaWR.Allegato)) { // La funzione di checkout esplicita da tab allegati è disabilitata se la profilazione allegati è disabilitata this.btnCheckOut.Enabled = false; } else { this.btnCheckOut.Enabled = this.UserEnabled; if (UIManager.UserManager.isFiltroAooEnabled()) { if (btnCheckOut.Enabled) { //DocsPaWR.Registro[] userRegistri = UIManager.UserManager.getListaRegistri(this.Page); DocsPaWR.Registro[] userRegistri = RoleManager.GetRoleInSession().registri; btnCheckOut.Enabled = UIManager.UserManager.verifyRegNoAOO(currentScheda, userRegistri); } } } } else { this.btnCheckOut.Enabled = false; if (Session["docInRisposta"] != null) { Session.Remove("docInRisposta"); } else if (Session["docInRisposta2"] != null) { Session.Remove("docInRisposta2"); } } } } } } // Abilitazione / disabilitazione pulsante salva file, // che viene comunque abilitato (se file presente) // indipendentemente dalle regole di abilitazione del checkin / checkout int size; if (selectedFile != null && Int32.TryParse(selectedFile.fileSize, out size)) { this.btnSave.Enabled = (size > 0); this.Refresh(currentScheda.systemId, selectedFile.docNumber); } if (DocumentManager.getSelectedRecord() != null && !string.IsNullOrEmpty(DocumentManager.getSelectedRecord().systemId)) { if (CheckInOutServices.IsCheckedOutDocument(DocumentManager.getSelectedRecord().systemId, DocumentManager.getSelectedRecord().docNumber, UIManager.UserManager.GetInfoUser(), true) || (selectedFile != null && selectedFile.inLibroFirma)) { this.btnCheckOut.Enabled = false; } } } }
private void Page_Load(object sender, System.EventArgs e) { bool retValue = false; bool isContent = false; bool issocket = false; string idDocument = string.Empty; string base64content = string.Empty; // Put user code to initialize the page here try { this.startUp(); this.ErrorPage = ""; if (Request.QueryString["tipofirma"] != null) { if (!Request.QueryString["tipofirma"].Equals("")) { tipofirma = Request.QueryString["tipofirma"]; } } if (tipofirma.Equals("cosign")) { firmabool = true; } else { firmabool = false; } if (Request.QueryString["iscontent"] != null) { bool.TryParse(Request.QueryString["iscontent"], out isContent); } if (Request.QueryString["issocket"] != null) { bool.TryParse(Request.QueryString["issocket"], out issocket); } if (Request.QueryString["idDocumento"] != null) { idDocument = Request.QueryString["idDocumento"].ToString(); } byte[] ba = null; if (!issocket) { ba = Request.BinaryRead(Request.ContentLength); } else { string contentFile = Request["contentFile"]; //Stream stream=Request.InputStream; if (!String.IsNullOrEmpty(contentFile)) { contentFile = contentFile.Replace(' ', '+'); contentFile = contentFile.Trim(); NttDataWA.Utils.FileJSON file = JsonConvert.DeserializeObject <NttDataWA.Utils.FileJSON>(contentFile); ba = Convert.FromBase64String(file.content); } } DocsPaWR.DocsPaWebService DocsPaWS = ProxyManager.GetWS(); DocsPaWR.FileDocumento fd = new NttDataWA.DocsPaWR.FileDocumento(); //fd.content=ba; ASCIIEncoding ae = new ASCIIEncoding(); if (!isContent) { base64content = ae.GetString(ba); } if (UIManager.UserManager.getBoolDocSalva(this) == null) { if (!IsPostBack) { // string prova=base64content.Replace(base64content.Substring(4,2),"Ds"); FileRequest fr = null; DocsPaWR.SchedaDocumento schedaDocumento = null; if (string.IsNullOrEmpty(idDocument)) { fr = UIManager.FileManager.getSelectedFile(); } else { fr = UIManager.FileManager.getSelectedMassSignature(idDocument).fileRequest; FirmaDigitaleMng mmg = new FirmaDigitaleMng(); schedaDocumento = mmg.GetSchedaDocumento(idDocument); } if (!string.IsNullOrEmpty(Request.QueryString["signedAsPdf"])) { // Se il file è in formato pdf, viene modificato il nome del file bool signedAsPdf; bool.TryParse(Request.QueryString["signedAsPdf"], out signedAsPdf); if (signedAsPdf) { fr.fileName += ".PdF_convertito"; //SERVE PER IL BACKEND NON MODIFICARLO!!! } } fr.dataInserimento = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); if (fr.GetType().Equals(typeof(DocsPaWR.Allegato))) { // Creazione di un nuovo allegato per il file firmato DocsPaWR.Allegato currentAllegato = (DocsPaWR.Allegato)fr; DocsPaWR.Allegato newAllegato = new DocsPaWR.Allegato(); newAllegato.descrizione = currentAllegato.descrizione; newAllegato.numeroPagine = currentAllegato.numeroPagine; newAllegato.fileName = fr.fileName; newAllegato.firmatari = currentAllegato.firmatari; newAllegato.docNumber = currentAllegato.docNumber; newAllegato.version = "0"; newAllegato.cartaceo = false; newAllegato.repositoryContext = UIManager.DocumentManager.GetSelectedAttachment().repositoryContext; fr = newAllegato; } if (isContent) { retValue = DocsPaWS.AppendContentFirmato(ba, firmabool, ref fr, UIManager.UserManager.GetInfoUser()); } else { retValue = DocsPaWS.AppendDocumentoFirmato(base64content, firmabool, ref fr, UIManager.UserManager.GetInfoUser()); } if (!retValue) { throw new Exception(); } UIManager.FileManager.setSelectedFile(fr); if (schedaDocumento == null) { schedaDocumento = UIManager.DocumentManager.getSelectedRecord(); } List <DocsPaWR.Allegato> attachments = new List <DocsPaWR.Allegato>(schedaDocumento.allegati); if (UIManager.DocumentManager.getSelectedAttachId() != null) { //attachments.Add((Allegato)fr); //schedaDocumento.allegati = attachments.ToArray(); int index = schedaDocumento.allegati.Select((item, i) => new { obj = item, index = i }).First(item => item.obj.versionId.Equals(UIManager.DocumentManager.GetSelectedAttachment().versionId)).index; Allegato a = new Allegato(); a.applicazione = fr.applicazione; a.daAggiornareFirmatari = fr.daAggiornareFirmatari; a.dataInserimento = fr.dataInserimento; a.descrizione = fr.descrizione; a.docNumber = fr.docNumber; a.docServerLoc = fr.docServerLoc; a.fileName = fr.fileName; a.fileSize = fr.fileSize; a.firmatari = fr.firmatari; a.firmato = fr.firmato; a.idPeople = fr.idPeople; a.path = fr.path; a.subVersion = fr.version; a.version = fr.version; a.versionId = fr.versionId; a.versionLabel = schedaDocumento.allegati[index].versionLabel; a.cartaceo = fr.cartaceo; a.repositoryContext = fr.repositoryContext; a.TypeAttachment = 1; //a.numeroPagine = (fr as Allegato).numeroPagine; // modifica necessaria per FILENET (A.B.) if ((fr.fNversionId != null) && (fr.fNversionId != "")) { a.fNversionId = fr.fNversionId; } schedaDocumento.allegati[index] = a; UIManager.DocumentManager.setSelectedAttachId(fr.versionId); UIManager.DocumentManager.setSelectedNumberVersion(a.version); //schedaDocumento.allegati = UIManager.DocumentManager.AddAttachment((Allegato)fr); } else { //fr = UIManager.DocumentManager.AddVersion(fr, false); schedaDocumento.documenti = UIManager.DocumentManager.addVersion(schedaDocumento.documenti, (Documento)fr); UIManager.DocumentManager.setSelectedNumberVersion(fr.version); } UIManager.DocumentManager.setSelectedRecord(schedaDocumento); UIManager.UserManager.setBoolDocSalva(this, "salvato"); } } } catch (Exception es) { ErrorManager.setError(this, es); } }