public void BindGridNotifichePec(DocsPaWR.Notifica[] notifica, DocsPaWR.Corrispondente corr) { indexCor = Request.QueryString["indexCor"].ToString(); if (notifica != null) { for (int i = 0; i < notifica.Length; i++) { string infoNotifica = string.Empty; string nonCertificata = "MAIL NON CERTIFICATA"; bool corrok = false; //se il campo destinatario è diverso da mail allora non si tratta di una ricevuta pec string pattern = "^(([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+([;](([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+)*$"; if (!System.Text.RegularExpressions.Regex.Match(notifica[i].destinatario, pattern).Success) { //filtro per codice corrispondente(IS) if ((!string.IsNullOrEmpty(FilterCodiceIS.valore) && notifica[i].destinatario.Contains(FilterCodiceIS.valore)) || (string.IsNullOrEmpty(indexCor) || indexCor.Equals("-1"))) { corrok = true; } else { corrok = false; } } else { // si tratta di una ricevuta pec(la prima volta non filtro per mail, quindi prendo tutte le ricevute pec) if ((from m in corr.Emails where m.Email.ToUpper().Equals(notifica[i].destinatario.ToUpper()) select m).Count() > 0) { corrok = true; } else { corrok = false; } } if (corrok) { DocsPaWR.TipoNotifica tiponotifica = SimplifiedInteroperabilityManager.getTipoNotifica(notifica[i].idTipoNotifica); if (tiponotifica != null) { // per i DSN e le Eccezioni diamo piu dettagli e lo mettiamo prima if ((tiponotifica.codiceNotifica == "eccezione") || (tiponotifica.codiceNotifica == "errore")) { infoNotifica += notifica[i].oggetto + "\r\n\r\n"; } else { // Se il destinatario ha come canale impostato, IS, viene visualizzato un testo differente rispetto // a quello mostrato nel caso PEC //if (receiver != null && receiver.canalePref.tipoCanale == InteroperabilitaSemplificataManager.SimplifiedInteroperabilityId) if (Uri.IsWellFormedUriString(notifica[i].mittente, UriKind.Absolute)) { //infoNotifica = tiponotifica.codiceNotifica.Replace("email di ", String.Empty); //infoNotifica += " inviata il '" + notifica[i].data_ora + "'"; infoNotifica = String.Format("{0} inviata il {1}", tiponotifica.codiceNotifica.Equals("errore-consegna") ? "mancata-consegna" : tiponotifica.codiceNotifica, notifica[i].data_ora); } else { infoNotifica += tiponotifica.descrizioneNotifica + " è stata inviata il '" + notifica[i].data_ora + "'" + "'. Il destinatario '" + notifica[i].destinatario + "' ha una mail di tipo: '" + (notifica[i].tipoDestinatario.ToUpper().Equals("ESTERNO") ? nonCertificata : notifica[i].tipoDestinatario) + "'." + "Il codice identificatore del messaggio è: '" + notifica[i].identificativo + "'."; } } } //string descrizioneNotifica = tiponotifica.descrizioneNotifica + (notifica[i].erroreRicevuta.ToUpper().Equals("NESSUNO") || !string.IsNullOrEmpty(notifica[i].errore_esteso) ? string.Empty : " - " + notifica[i].erroreRicevuta); string descrizioneNotifica = Uri.IsWellFormedUriString(notifica[i].mittente, UriKind.Absolute) ? (tiponotifica.codiceNotifica.Equals("errore-consegna") ? "mancata-consegna" : tiponotifica.codiceNotifica) : tiponotifica.descrizioneNotifica + (!notifica[i].erroreRicevuta.ToUpper().Equals("NESSUNO") || !string.IsNullOrEmpty(notifica[i].errore_esteso) ? " - " + notifica[i].erroreRicevuta : string.Empty); Cols col = new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].destinatario, infoNotifica, 1, notifica[i].errore_esteso, true); bool aggiungi = true; for (int j = 0; j < Dg_elem.Count; j++) { Cols col1 = (Cols)Dg_elem[j]; if ((col1.Dettaglio == col.Dettaglio) && (col1.Descrizione == col.Descrizione) && (col1.Data == col.Data) && (col1.Tipo == col.Tipo)) { aggiungi = false; break; } } if (aggiungi) { Dg_elem.Add(col); } } } } Notifiche = Dg_elem; }
public void BindGridNotifichePec(DocsPaWR.Notifica[] notifica, DocsPaWR.Corrispondente corr, string tutti) { //Costruisco il datagrid ArrayList listaElementiPrecedenti = Notifiche; // Recupero dei destinatari del protocollo in uscita //Corrispondente[] receivers = ((ProtocolloUscita)DocumentManager.getDocumentoSelezionato().protocollo).destinatari; if (notifica != null) { for (int i = 0; i < notifica.Length; i++) { string infoNotifica = string.Empty; string nonCertificata = "MAIL NON CERTIFICATA"; bool corrok = false; for (int j = 0; j < notifica.Length; j++) { if (corr.email.ToLower().Equals(notifica[j].destinatario.ToLower())) { corrok = true; break; } } if (!corrok) { break; } // Recupero del destinario con codice uguale a quello del destinatario della notifica //Corrispondente receiver = receivers.Where(r => r.codiceRubrica.Contains(notifica[i].destinatario.Replace("'", ""))).FirstOrDefault(); DocsPaWR.TipoNotifica tiponotifica = SimplifiedInteroperabilityManager.getTipoNotifica(notifica[i].idTipoNotifica); if (tiponotifica != null) { // per i DSN e le Eccezioni diamo piu dettagli e lo mettiamo prima if ((tiponotifica.codiceNotifica == "eccezione") || (tiponotifica.codiceNotifica == "errore")) { //if (receiver != null && receiver.canalePref.tipoCanale == InteroperabilitaSemplificataManager.SimplifiedInteroperabilityId) // infoNotifica += notifica[i].Reason + "\r\n\r\n"; //else infoNotifica += notifica[i].oggetto + "\r\n\r\n"; } else { // Se il destinatario ha come canale impostato, IS, viene visualizzato un testo differente rispetto // a quello mostrato nel caso PEC //if (receiver != null && receiver.canalePref.tipoCanale == InteroperabilitaSemplificataManager.SimplifiedInteroperabilityId) //{ // infoNotifica = tiponotifica.descrizioneNotifica.Replace("email di ", String.Empty); // infoNotifica += " inviata il '" + notifica[i].data_ora + "'"; //} //else infoNotifica += tiponotifica.descrizioneNotifica + " è stata inviata il '" + notifica[i].data_ora + "'" + "'. Il destinatario '" + notifica[i].destinatario + "' ha una mail di tipo: '" + (notifica[i].tipoDestinatario.ToUpper().Equals("ESTERNO") ? nonCertificata : notifica[i].tipoDestinatario) + "'." + "Il codice identificatore del messaggio è: '" + notifica[i].identificativo + "'."; } } string descrizioneNotifica = String.Empty; //if (receiver != null && receiver.canalePref.tipoCanale == InteroperabilitaSemplificataManager.SimplifiedInteroperabilityId) // descrizioneNotifica = tiponotifica.descrizioneNotifica.Replace("email di ", String.Empty) + (!notifica[i].erroreRicevuta.ToUpper().Equals("NESSUNO") || !string.IsNullOrEmpty(notifica[i].errore_esteso) ? " - " + notifica[i].erroreRicevuta : string.Empty); //else descrizioneNotifica = tiponotifica.descrizioneNotifica + (!notifica[i].erroreRicevuta.ToUpper().Equals("NESSUNO") || !string.IsNullOrEmpty(notifica[i].errore_esteso) ? " - " + notifica[i].erroreRicevuta : string.Empty); if (listaElementiPrecedenti != null && listaElementiPrecedenti.Count > 0) { Cols col = new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].mittente, infoNotifica, 1, notifica[i].errore_esteso, true); bool aggiungi = true; for (int j = 0; j < listaElementiPrecedenti.Count; j++) { Cols col1 = (Cols)listaElementiPrecedenti[j]; if ((col1.Dettaglio == col.Dettaglio) && (col1.Descrizione == col.Descrizione) && (col1.Data == col.Data) && (col1.Tipo == col.Tipo)) { aggiungi = false; break; } } if (aggiungi) { listaElementiPrecedenti.Add(new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].destinatario, infoNotifica, 1, notifica[i].errore_esteso, true)); } } else { Cols col = new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].destinatario, infoNotifica, 1, notifica[i].errore_esteso, true); bool aggiungi = true; for (int j = 0; j < Dg_elem.Count; j++) { Cols col1 = (Cols)Dg_elem[j]; if ((col1.Dettaglio == col.Dettaglio) && (col1.Descrizione == col.Descrizione) && (col1.Data == col.Data) && (col1.Tipo == col.Tipo)) { aggiungi = false; break; } } if (aggiungi) { Dg_elem.Add(col); } } } } if (listaElementiPrecedenti != null && listaElementiPrecedenti.Count > 0) { Notifiche = listaElementiPrecedenti; } else { Notifiche = Dg_elem; }; }
public void BindGridNotifichePec(DocsPaWR.Notifica[] notifica) { //Costruisco il datagrid ArrayList listaElementiPrecedenti = Notifiche; if (notifica != null) { for (int i = 0; i < notifica.Length; i++) { string infoNotifica = string.Empty; string nonCertificata = "MAIL NON CERTIFICATA"; DocsPaWR.TipoNotifica tiponotifica = SimplifiedInteroperabilityManager.getTipoNotifica(notifica[i].idTipoNotifica); if (tiponotifica != null) { // per i DSN e le Eccezioni diamo piu dettagli e lo mettiamo prima if ((tiponotifica.codiceNotifica == "eccezione") || (tiponotifica.codiceNotifica == "errore")) { infoNotifica += notifica[i].oggetto + "\r\n\r\n"; } else { // Se il mittente della ricevuta è un URL, significa che è stato utilizzato come canale // l'interoperabilità semplificata, quindi viene creata una descrizione diversa if (Uri.IsWellFormedUriString(notifica[i].mittente, UriKind.Absolute)) { infoNotifica = String.Format("{0} inviata il {1}", tiponotifica.codiceNotifica.Equals("errore-consegna") ? "mancata-consegna" : tiponotifica.codiceNotifica, notifica[i].data_ora); } else { infoNotifica += tiponotifica.descrizioneNotifica + " è stata inviata il '" + notifica[i].data_ora + "'" + "'. Il destinatario '" + notifica[i].destinatario + "' ha una mail di tipo: '" + (notifica[i].tipoDestinatario.ToUpper().Equals("ESTERNO") ? nonCertificata : notifica[i].tipoDestinatario) + "'." + "Il codice identificatore del messaggio è: '" + notifica[i].identificativo + "'."; } } } // Se la ricevuta in esame è relativa ad una spedizione per interoperabilità semplificata, // non deve comparire "email di" string descrizioneNotifica = Uri.IsWellFormedUriString(notifica[i].mittente, UriKind.Absolute) ? (tiponotifica.codiceNotifica.Equals("errore-consegna") ? "mancata-consegna" : tiponotifica.codiceNotifica) : tiponotifica.descrizioneNotifica + (!notifica[i].erroreRicevuta.ToUpper().Equals("NESSUNO") || !string.IsNullOrEmpty(notifica[i].errore_esteso) ? " - " + notifica[i].erroreRicevuta : string.Empty); if (listaElementiPrecedenti != null && listaElementiPrecedenti.Count > 0) { Cols col = new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].destinatario, infoNotifica, 1, notifica[i].errore_esteso, true); bool aggiungi = true; for (int j = 0; j < listaElementiPrecedenti.Count; j++) { Cols col1 = (Cols)listaElementiPrecedenti[j]; if ((col1.Dettaglio == col.Dettaglio) && (col1.Descrizione == col.Descrizione) && (col1.Data == col.Data) && (col1.Tipo == col.Tipo)) { aggiungi = false; break; } } //se ho selezionato da tabProtocollo tutti i destinatari devo eseguire i controlli per il monocasella if (aggiungi && string.IsNullOrEmpty(Request.QueryString["indexCor"]) || Request.QueryString["indexCor"].Equals("-1") && ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari != null) { aggiungi = false; foreach (DocsPaWR.Corrispondente c in ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari) { if ((from m in c.Emails where m.Email.ToUpper().Equals(notifica[i].destinatario.ToUpper()) select m).Count() > 0) { aggiungi = true; break; } } string pattern = "^(([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+([;](([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+)*$"; if (!System.Text.RegularExpressions.Regex.Match(notifica[i].destinatario, pattern).Success) { aggiungi = true; } } if (aggiungi) { listaElementiPrecedenti.Add(new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].destinatario, infoNotifica, 1, notifica[i].errore_esteso, true)); } } else { Cols col = new Cols(notifica[i].data_ora, descrizioneNotifica, notifica[i].destinatario, infoNotifica, 1, notifica[i].errore_esteso, true); bool aggiungi = true; for (int j = 0; j < Dg_elem.Count; j++) { Cols col1 = (Cols)Dg_elem[j]; if ((col1.Dettaglio == col.Dettaglio) && (col1.Descrizione == col.Descrizione) && (col1.Data == col.Data) && (col1.Tipo == col.Tipo)) { aggiungi = false; break; } } //se ho selezionato da tabProtocollo tutti i destinatari devo eseguire i controlli per il monocasella if (aggiungi && string.IsNullOrEmpty(Request.QueryString["indexCor"]) || Request.QueryString["indexCor"].Equals("-1") && ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari != null) { aggiungi = false; foreach (DocsPaWR.Corrispondente c in ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari) { if ((from m in c.Emails where m.Email.ToUpper().Equals(notifica[i].destinatario.ToUpper()) select m).Count() > 0) { aggiungi = true; break; } } string pattern = "^(([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+([;](([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5}){1,25})+)*$"; if (!System.Text.RegularExpressions.Regex.Match(notifica[i].destinatario, pattern).Success) { aggiungi = true; } } if (aggiungi) { Dg_elem.Add(col); } } } } if (listaElementiPrecedenti != null && listaElementiPrecedenti.Count > 0) { Notifiche = listaElementiPrecedenti; } else { Notifiche = Dg_elem; } }
private void getDatiNotifica() { //carica_Info tipoCor = CorrType; indexCor = IndexCorr; schedaDocumento = DocumentManager.getSelectedRecord();; bool visualizzaNotifichePec = true; if (!string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings[WebConfigKeys.VISUALIZZA_NOTIFICHE_PEC.ToString()]) && bool.Parse(System.Configuration.ConfigurationManager.AppSettings[WebConfigKeys.VISUALIZZA_NOTIFICHE_PEC.ToString()])) { visualizzaNotifichePec = true; } //modifica DocsPaWR.Notifica[] notifica = null; if (visualizzaNotifichePec) { if (schedaDocumento != null && !string.IsNullOrEmpty(schedaDocumento.docNumber)) { notifica = SimplifiedInteroperabilityManager.getNotifica(schedaDocumento.docNumber); } } //fine modifica if (!schedaDocumento.tipoProto.Equals("P")) { this.lbl_message.Text = "Non ci sono ricevute/ricevute di ritorno"; this.lbl_message.Visible = true; return; } if (schedaDocumento.systemId.Equals("")) { this.lbl_message.Text = "Non ci sono ricevute/ricevute di ritorno"; this.lbl_message.Visible = true; return; } if ((tipoCor == null) || (tipoCor == "")) { return; } if (schedaDocumento == null) { return; } if (tipoCor.Equals("T")) { //prende tutti i corrispondenti e per ognuno cerca i dati di interop Dg_elem = new ArrayList(); for (int i = 0; i < ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari.Length; i++) { corr = ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari[i]; if (corr != null && corr.systemId != null) { dest = DocumentManager.getDestinatariInteropAggConferma(schedaDocumento.systemId, corr); } if (dest != null && dest.Length > 0) { BindGrid(dest[0]); } if (corr != null) { BindGridNotifichePec(notifica, corr, "T"); } } if (((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza != null) { for (int i = 0; i < ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza.Length; i++) { corr = ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza[i]; if (corr != null && corr.systemId != null) { dest = DocumentManager.getDestinatariInteropAggConferma(schedaDocumento.systemId, corr); } if (dest != null && dest.Length > 0 && notifica == null) { BindGrid(dest[0]); } if (corr != null) { BindGridNotifichePec(notifica, corr, "T"); } } } if (visualizzaNotifichePec && notifica != null) { BindGridNotifichePec(notifica); Dg_elem = Notifiche; } if (Dg_elem.Count > 0) { this.grdList.DataSource = Dg_elem; this.grdList.DataBind(); } else { this.lbl_message.Text = "Ricevute non trovate"; this.grdList.Visible = false; this.lbl_message.Visible = true; } } else { if (!string.IsNullOrEmpty(indexCor) && (!indexCor.Equals("-1"))) { if (tipoCor.Equals("D")) { if (!string.IsNullOrEmpty(indexCor) && Int32.Parse(indexCor) >= 0) { corr = ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari[Int32.Parse(indexCor)]; } } else if (tipoCor.Equals("C")) { if (!string.IsNullOrEmpty(indexCor) && Int32.Parse(indexCor) >= 0) { corr = ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza[Int32.Parse(indexCor)]; } } if (corr != null && corr.systemId != null) { dest = DocumentManager.getDestinatariInteropAggConferma(schedaDocumento.systemId, corr); } if ((dest == null || dest.Length == 0) && (notifica == null || notifica.Length == 0)) { this.lbl_message.Text = "Ricevute non trovate"; this.grdList.Visible = false; this.lbl_message.Visible = true; return; } Dg_elem = new ArrayList(); if (dest != null && dest.Length > 0) { BindGrid(dest[0]); } } else { Dg_elem = new ArrayList(); //if (tipoCor.Equals("D")) //{ // allCorr = ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari; //} //else if (tipoCor.Equals("C")) //{ // allCorr = ((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza; //} //PALUMBO: modifica per permettere la visualizzazione delle conferme ricezione dia dei destinatari in To che in CC //quando si clicca sulla relativa icona List <Corrispondente> temp = new List <Corrispondente>(); temp.AddRange(((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatari); if (((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza != null) { temp.AddRange(((DocsPaWR.ProtocolloUscita)schedaDocumento.protocollo).destinatariConoscenza); } allCorr = temp.ToArray(); if (allCorr != null && allCorr.Length > 0) { foreach (DocsPaWR.Corrispondente c in allCorr) { if (c.systemId != null) { dest = DocumentManager.getDestinatariInteropAggConferma(schedaDocumento.systemId, c); if (dest != null && dest.Length > 0) { BindGrid(dest[0]); } } } } } if (visualizzaNotifichePec && notifica != null) { if (corr != null) { BindGridNotifichePec(notifica, corr); } else { BindGridNotifichePec(notifica); } Dg_elem = Notifiche; } if (Dg_elem.Count > 0) { this.grdList.DataSource = Dg_elem; this.grdList.DataBind(); this.grdList.Visible = true; } else { this.lbl_message.Text = "Ricevute non trovate"; this.grdList.Visible = false; this.lbl_message.Visible = true; return; } } }