public static bool cambiaStatoScarto(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.AreaScarto.InfoScarto infoScarto, string nuovoCampo) { DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); bool result = true; bool resultScarto = true; if (infoScarto.stato == "S") { //stato = S = scartato -> si deve eliminare fisicamente tutta l'istanza //dell'area di scarto selezionata //per ogni fascicolo procedimentale chiuso che si vuole scartare //si devono eliminare fisicamenti tutti i documenti in esso contenuti che //hanno cha_in_archivio = 1, tutti i sottofascicoli ed il fascicolo stesso. ArrayList ListaFasc = fascicoli.GetListaFascicoliInScartoNoPaging(infoUtente, infoScarto); foreach (DocsPaVO.fascicolazione.Fascicolo fasc in ListaFasc) { //per ogni fascicolo verifico se è possibile scartare i documenti in esso classificati ArrayList ListaDoc = fascicoli.GetDocumentiDaScartare(infoUtente.idGruppo, infoUtente.idPeople, "", fasc); //Elimino i documenti se sono in archivio in stato 1 eliminaListaDoc(infoUtente, ListaDoc); //Prelevo tutti i sottofascicoli del fascicolo: ArrayList ListaSottoFasc = new ArrayList(); ListaSottoFasc = fascicoli.getSottoFascicoli(fasc.systemID); bool resultSottoFasc = true; if (ListaSottoFasc.Count > 0) { for (int i = 0; i < ListaSottoFasc.Count; i++) { ArrayList ListaDocSottoFasc = fascicoli.GetDocumentiDaScartare(infoUtente.idGruppo, infoUtente.idPeople, ListaSottoFasc[i].ToString(), null); //Elimino i documenti del sottofascicolo se sono in archivio in stato 1 eliminaListaDoc(infoUtente, ListaDocSottoFasc); //elimino il sottofascicolo resultSottoFasc = fascicoli.EliminaFasc(infoUtente, ListaSottoFasc[i].ToString()); } } else { //elimino il fascicolo if (resultSottoFasc) { resultScarto = fascicoli.EliminaFasc(infoUtente, fasc.systemID); } if (resultScarto) { infoScarto.stato = "S"; result = fascicoli.CambiaStatoScarto(infoUtente, infoScarto, nuovoCampo); } } } } if (infoScarto.stato != "S") { result = fascicoli.CambiaStatoScarto(infoUtente, infoScarto, nuovoCampo); } if (!result) { logger.Debug("Errore nella gestione dei fascicoli. (CambiaStatoScarto)"); throw new Exception("F_System"); } return(result); }