/// <summary> /// restituisce il tipo della notifica ricercandolo per systemid /// </summary> /// <param name="systemId"></param> /// <returns></returns> public static TipoNotifica ricercaTipoNotificaBySystemId(string systemId) { TipoNotifica retval = null; DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert daticertDB = new DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert(); try { retval = daticertDB.ricercaTipoNotificheBySystemId(systemId); } catch (Exception e) { logger.Error("errore durante l'inserimento del tipo di notifica - errore: " + e.Message); } return(retval); }
/// <summary> /// PEC 4 Modifica Maschera Caratteri /// Metodo di aggiornamento della status mask a partire dalla notifica. /// /// </summary> /// <returns></returns> public static bool AggiornaStatusMask(Notifica notifica) { bool retval = false; logger.Debug("Inserita la notifica, aggiorno la status-mask"); try { // eliminareEccezione: quando l'esito è OK, elimino una possibile eccezione preesistente. bool eliminareEccezione = false; DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert interop = new DocsPaDB.Query_DocsPAWS.InteroperabilitaDatiCert(); TipoNotifica tipoNot = interop.ricercaTipoNotificheBySystemId(notifica.idTipoNotifica); DocsPaVO.StatoInvio.StatoInvio statoInvio = interop.getStatoInvioFromAddressAndProfile(notifica.destinatario, notifica.docnumber); if (statoInvio != null) { string statusmask = ""; if (!string.IsNullOrEmpty(statoInvio.statusMask)) { statusmask = statoInvio.statusMask; char[] status_c_mask = statusmask.ToCharArray(); if (tipoNot.codiceNotifica == "accettazione") { status_c_mask[1] = 'V'; if (statoInvio.tipoCanale == "MAIL") { if (notifica.tipoDestinatario == "certificato") { if (status_c_mask[2] != 'V' || status_c_mask[2] == 'A' || status_c_mask[2] == 'N') { status_c_mask[2] = 'A'; } } else { status_c_mask[0] = 'V'; eliminareEccezione = true; } } } else if (tipoNot.codiceNotifica == "non-accettazione") { status_c_mask[0] = 'X'; status_c_mask[1] = 'X'; status_c_mask[2] = 'N'; status_c_mask[3] = 'N'; status_c_mask[4] = 'N'; status_c_mask[5] = 'N'; status_c_mask[6] = 'N'; } else if (tipoNot.codiceNotifica == "DSN" || tipoNot.codiceNotifica == "errore") { status_c_mask[0] = 'X'; status_c_mask[2] = 'X'; status_c_mask[3] = 'N'; status_c_mask[4] = 'N'; status_c_mask[5] = 'N'; status_c_mask[6] = 'V'; } else if (tipoNot.codiceNotifica == "avvenuta-consegna") { status_c_mask[2] = 'V'; status_c_mask[6] = 'X'; if (statoInvio.tipoCanale == "MAIL") { status_c_mask[0] = 'V'; eliminareEccezione = true; } } else if (tipoNot.codiceNotifica == "errore-consegna" || tipoNot.codiceNotifica == "preavviso-errore-consegna") { status_c_mask[0] = 'X'; status_c_mask[2] = 'X'; status_c_mask[3] = 'N'; status_c_mask[4] = 'N'; status_c_mask[5] = 'N'; status_c_mask[6] = 'N'; InteroperabilitaEccezioni.AggiornaDpa_StatoInvioConEccezione(notifica.destinatario, notifica.docnumber, "Errore di consegna verso la casella PEC."); } statusmask = new string(status_c_mask); } else { if (tipoNot.codiceNotifica == "accettazione") { if (statoInvio.tipoCanale == "MAIL") { if (notifica.tipoDestinatario == "certificato") { statusmask = "AVANNNN"; } else { statusmask = "VVNNNNN"; eliminareEccezione = true; } } } else if (tipoNot.codiceNotifica == "non-accettazione") { statusmask = "XXNNNNN"; } else if (tipoNot.codiceNotifica == "DSN" || tipoNot.codiceNotifica == "errore") { statusmask = "XVXNNNV"; } else if (tipoNot.codiceNotifica == "avvenuta-consegna") { statusmask = "AVVAAAN"; if (statoInvio.tipoCanale == "MAIL") { statusmask = "VVVNNNN"; eliminareEccezione = true; } } else if (tipoNot.codiceNotifica == "errore-consegna" || tipoNot.codiceNotifica == "preavviso-errore-consegna") { statusmask = "XVXNNNN"; InteroperabilitaEccezioni.AggiornaDpa_StatoInvioConEccezione(notifica.destinatario, notifica.docnumber, "Errore di consegna verso la casella PEC."); } } interop.AggiornaStatusMaskFromAddressAndProfile(notifica.destinatario, notifica.docnumber, statusmask, eliminareEccezione); } else { logger.Debug("Stato invio non trovato"); } } catch (Exception ex) { logger.ErrorFormat("Errore nell'aggiornamento della status mask: Messaggio {0} - StackTrace {1}", ex.Message, ex.StackTrace); retval = false; } return(retval); }