예제 #1
0
        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);
        }