private static void CheckValues(RichiestaDiAccesso rda) { // Controllo su differimento if (rda.Esito != null && rda.Esito.TipoEsito != null && rda.Esito.TipoEsito == EsitoType.Differimento) { rda.Esito = null; } if (rda.EsitoRiesame != null && rda.EsitoRiesame.TipoEsito != null && rda.EsitoRiesame.TipoEsito == EsitoType.Differimento) { rda.EsitoRiesame = null; } }
private static void SetStatoRichiesta(RichiestaDiAccesso rda, String typology) { // Implementazione attuale: // La richiesta è CHIUSA se è definito un esito e non è definita la data notifica del blocco esito successivo // La richiesta è SOSPESA se sono presenti controinteressati ma non è stato ancora definito un esito // La richiesta è IN CORSO negli altri casi rda.StatoRichiesta = StatoType.InCorso; if (rda.Esito == null) { if (rda.PresenzaControinteressati) { rda.StatoRichiesta = StatoType.Sospesa; } } else { if (rda.EsitoRiesame == null && typology == "Accesso Generalizzato e Civico") { if (!String.IsNullOrEmpty(rda.DataNotificaRiesame)) { rda.StatoRichiesta = StatoType.Chiusa; } } else { if (rda.EsitoRicorso == null) { if (!String.IsNullOrEmpty(rda.DataNotificaRicorso)) { rda.StatoRichiesta = StatoType.Chiusa; } } else { rda.StatoRichiesta = StatoType.Chiusa; } } } }
private static void SetValoreCampoProfilato(RichiestaDiAccesso rda, String name, String value) { switch (name.ToUpper().Trim()) { case "DATA DI ARRIVO DELLA DOMANDA": rda.DataCreazione = FormatDate(value); break; case "PRESENZA CONTRO INTERESSATI": case "PRESENZA CONTROINTERESSATI": if (value.ToUpper() == "SI") { rda.PresenzaControinteressati = true; } else { rda.PresenzaControinteressati = false; } break; case "ESITO": if (!String.IsNullOrEmpty(value)) { if (rda.Esito == null) { rda.Esito = new Esito(); } SetEsito(rda.Esito, value); } else { rda.Esito = null; } break; case "DATA RISPOSTA": if (!String.IsNullOrEmpty(value)) { if (rda.Esito == null) { rda.Esito = new Esito(); } rda.Esito.DataEsito = FormatDate(value); } break; case "MOTIVI DEL RIFIUTO PARZIALE, DEL RIFIUTO TOTALE O DEL DIFFERIMENTO": if (!string.IsNullOrEmpty(value)) { if (rda.Esito == null) { rda.Esito = new Esito(); } SetMotivoRifiuto(rda.Esito, value); } break; case "ALTRO - MOTIVI DEL RIFIUTO PARZIALE, DEL RIFIUTO TOTALE O DEL DIFFERIMENTO": if (!string.IsNullOrEmpty(value)) { if (rda.Esito == null) { rda.Esito = new Esito(); } rda.Esito.SintesiMotivazione = value; } break; case "RIESAME - ESITO": if (!String.IsNullOrEmpty(value) && value.ToUpper() != "DIFFERIMENTO") { if (rda.EsitoRiesame == null) { rda.EsitoRiesame = new Esito(); } SetEsito(rda.EsitoRiesame, value); } else { rda.EsitoRiesame = null; } break; case "RIESAME - MOTIVI DEL RIFIUTO PARZIALE, DEL RIFIUTO TOTALE O DEL DIFFERIMENTO": if (!string.IsNullOrEmpty(value)) { if (rda.EsitoRiesame == null) { rda.EsitoRiesame = new Esito(); } SetMotivoRifiuto(rda.EsitoRiesame, value); } break; case "RIESAME - DATA RISPOSTA": if (!String.IsNullOrEmpty(value)) { if (rda.EsitoRiesame == null) { rda.EsitoRiesame = new Esito(); } rda.EsitoRiesame.DataEsito = FormatDate(value); } break; case "RICORSO - ESITO": if (!String.IsNullOrEmpty(value) && value.ToUpper() != "DIFFERIMENTO") { if (rda.EsitoRicorso == null) { rda.EsitoRicorso = new Esito(); } SetEsito(rda.EsitoRicorso, value); } else { rda.EsitoRicorso = null; } break; case "RIESAME - DATA DI PRESENTAZIONE DELLA DOMANDA": if (!String.IsNullOrEmpty(value)) { rda.DataNotificaRiesame = value; } break; case "RICORSO – DATA DI NOTIFICAZIONE DEL RICORSO GIURISDIZIONALE DELL'AMMINISTRAZIONE": if (!String.IsNullOrEmpty(value)) { rda.DataNotificaRicorso = value; } break; default: break; } }
private static Byte[] RegistroAccessiGetXML(DataSet dataSet, String typology) { try { logger.Debug("BEGIN"); logger.Debug("Costruzione XML secondo standard FOIA-EXT"); List <RichiestaDiAccesso> list = new List <RichiestaDiAccesso>(); String folderId = String.Empty; foreach (DataRow dataRow in dataSet.Tables[0].Rows) { if (!String.IsNullOrEmpty(dataRow["ID_PROJECT"].ToString())) { if (String.IsNullOrEmpty(folderId) || !dataRow["ID_PROJECT"].ToString().Equals(folderId)) { // E' una nuova riga folderId = dataRow["ID_PROJECT"].ToString(); RichiestaDiAccesso rda = new RichiestaDiAccesso(); rda.StatoRichiesta = dataRow["STATO_FASC"].ToString() == "C" ? StatoType.Chiusa : StatoType.InCorso; rda.Oggetto = new Oggetto() { Sintesi = dataRow["DESCRIZIONE"].ToString() }; SetValoreCampoProfilato(rda, dataRow["NOME_CAMPO"].ToString(), dataRow["VALORE_CAMPO"].ToString()); list.Add(rda); } else { // E' una riga esistente RichiestaDiAccesso rda = list.Last(); if (rda != null) { SetValoreCampoProfilato(rda, dataRow["NOME_CAMPO"].ToString(), dataRow["VALORE_CAMPO"].ToString()); } } } } logger.Debug("Analisi richieste di accesso..."); foreach (RichiestaDiAccesso rda in list) { SetStatoRichiesta(rda, typology); CheckValues(rda); } logger.Debug("Serializzazione..."); Byte[] serializedXML = GetSerializedXML(list); logger.Debug("END"); return(serializedXML); } catch (Exception ex) { logger.DebugFormat("Errore nella produzione dell'XML FOIA.\r\n{0}\r\n{1}", ex.Message, ex.StackTrace); return(null); } }