Пример #1
0
        /// <summary>
        /// Reperimento delle regole censite in un canale di pubblicazione
        /// </summary>
        /// <param name="idChannel">Id del canale di pubblicazione</param>
        /// <returns></returns>
        public static RuleInfo[] GetRules(int idChannel)
        {
            _logger.Info("BEGIN");

            List <RuleInfo> list = new List <RuleInfo>();

            try
            {
                Database db = DbHelper.CreateDatabase();

                using (DBCommandWrapper cw = db.GetStoredProcCommandWrapper(DbHelper.GetSpNameForPackage("GetRules")))
                {
                    cw.AddInParameter("pIdInstance", DbType.Int32, idChannel);

                    using (IDataReader reader = db.ExecuteReader(cw))
                    {
                        while (reader.Read())
                        {
                            BaseRuleInfo baseRule = CreateRuleInfo(reader);

                            if (baseRule.GetType() == typeof(RuleInfo))
                            {
                                list.Add((RuleInfo)baseRule);
                            }
                            else if (baseRule.GetType() == typeof(SubRuleInfo))
                            {
                                SubRuleInfo subRule    = (SubRuleInfo)baseRule;
                                RuleInfo    parentRule = list.Where(e => e.Id == subRule.IdParentRule).First();
                                parentRule.SubRulesList.Add(subRule);
                            }
                        }
                    }
                }
            }
            catch (SubscriberException pubEx)
            {
                _logger.Error(pubEx.Message);

                throw pubEx;
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);

                throw new SubscriberException(ErrorCodes.UNHANDLED_ERROR,
                                              string.Format(ErrorDescriptions.UNHANDLED_ERROR, ex.Message),
                                              ex);
            }
            finally
            {
                _logger.Info("END");
            }

            return(list.ToArray());
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private static SubRuleInfo InsertSubRule(SubRuleInfo data)
        {
            _logger.Info("BEGIN");

            try
            {
                Database db = DbHelper.CreateDatabase();

                using (DBCommandWrapper cw = db.GetStoredProcCommandWrapper(DbHelper.GetSpNameForPackage("InsertSubRule")))
                {
                    cw.AddInParameter("pInstanceId", DbType.Int32, data.IdInstance);
                    cw.AddInParameter("pDescription", DbType.String, data.RuleDescription);
                    cw.AddInParameter("pEnabled", DbType.StringFixedLength, (data.Enabled ? "1" : "0"));
                    cw.AddInParameter("pOptions", DbType.String, data.GetOptions());
                    cw.AddInParameter("pParentRuleId", DbType.Int32, data.IdParentRule);
                    cw.AddInParameter("pSubName", DbType.String, data.SubRuleName);
                    cw.AddOutParameter("pOrdinal", DbType.Int32, 4);
                    cw.AddOutParameter("pId", DbType.Int32, 4);

                    db.ExecuteNonQuery(cw);

                    if (cw.RowsAffected == 1)
                    {
                        data.Id      = Convert.ToInt32(cw.GetParameterValue("pId"));
                        data.Ordinal = Convert.ToInt32(cw.GetParameterValue("pOrdinal"));

                        return(data);
                    }
                    else
                    {
                        throw new SubscriberException(ErrorCodes.SP_EXECUTION_ERROR,
                                                      string.Format(ErrorDescriptions.SP_EXECUTION_ERROR, "InsertSubRule", ErrorDescriptions.SP_EXECUTE_NO_ROWS));
                    }
                }
            }
            catch (SubscriberException pubEx)
            {
                _logger.Error(pubEx.Message);

                throw pubEx;
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);

                throw new SubscriberException(ErrorCodes.UNHANDLED_ERROR, string.Format(ErrorDescriptions.UNHANDLED_ERROR, ex.Message));
            }
            finally
            {
                _logger.Info("END");
            }
        }
Пример #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="subRule"></param>
 protected override void InternalExecuteSubRule(SubRuleInfo subRule)
 {
     if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_EVASIONE_PARERE))
     {
         this.ExecuteDateRuleAlternativeFields(subRule,
                                               FIELD_NAME_DATA_ARRIVO_ELEMENTI_INTEGRATIVI,
                                               FIELD_NAME_DATA_ARRIVO_RICHIESTA_RIMBORSO);
     }
     else
     {
         base.InternalExecuteSubRule(subRule);
     }
 }
Пример #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="subRule"></param>
 protected override void InternalExecuteSubRule(SubRuleInfo subRule)
 {
     if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPreliminare.APPUNTAMENTO_UDIENZA_PRELIMINARE) ||
         this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPreliminare.REMINDER_RINVIO_UDIENZA_PRELIMINARE) ||
         this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPreliminare.REMINDER_ASSUNTA_DELIBERA_COSTITUZIONE) ||
         this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPreliminare.SCADENZA_VERIFICA_ELEMENTI_DI_RISPOSTA))
     {
         // Udienza preliminare
         this.ExecuteUdienzaRule(subRule);
     }
     else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRinvio.APPUNTAMENTO_UDIENZA_RINVIO) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRinvio.REMINDER_RINVIO_UDIENZA_RINVIO) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRinvio.REMINDER_APPUNTAMENTO_UDIENZA_RINVIO))
     {
         // Udienza di rinvio
         this.ExecuteUdienzaRule(subRule);
     }
     else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAperturaDibattimento.APPUNTAMENTO_UDIENZA_APERTURA_DIBATTIMENTO) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAperturaDibattimento.REMINDER_RINVIO_UDIENZA_APERTURA_DIBATTIMENTO) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAperturaDibattimento.REMINDER_DEPOSITO_UDIENZA_APERTURA_DIBATTIMENTO) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAperturaDibattimento.SCADENZA_DEPOSITO_UDIENZA_APERTURA_DIBATTIMENTO))
     {
         // Udienza di apertura del dibattimento
         this.ExecuteUdienzaRule(subRule);
     }
     else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaDibattimentale.APPUNTAMENTO_UDIENZA_DIBATTIMENTALE) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaDibattimentale.REMINDER_RINVIO_UDIENZA_DIBATTIMENTALE) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaDibattimentale.REMINDER_APPUNTAMENTO_UDIENZA_DIBATTIMENTALE))
     {
         // Udienza dibattimentale
         this.ExecuteUdienzaRule(subRule);
     }
     else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaGiuramentoCTU.APPUNTAMENTO_UDIENZA_GIURAMENTO_CTU) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaGiuramentoCTU.REMINDER_RINVIO_UDIENZA_GIURAMENTO_CTU))
     {
         // Udienza giuramento CTU
         this.ExecuteUdienzaRule(subRule);
     }
     else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTesti.APPUNTAMENTO_UDIENZA_TESTI) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTesti.REMINDER_RINVIO_UDIENZA_TESTI) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTesti.REMINDER_SCADENZA_TERMINE_CITAZIONE_TESTI) ||
              this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTesti.SCADENZA_TERMINE_CITAZIONE_TESTI))
     {
         // Udienza testi
         this.ExecuteUdienzaRule(subRule);
     }
     else
     {
         base.InternalExecuteSubRule(subRule);
     }
 }
Пример #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="subRule"></param>
        protected override void InternalExecuteSubRule(SubRuleInfo subRule)
        {
            if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_TERMINE_DICHIARAZIONE_TERZO))
            {
                // La scadenza legata al termine dichiarazione del terzo
                // deve essere calcolata se e solo se il campo dichiarazione
                // è impostato "A mezzo raccomandata"

                // Reperimento del valore del campo dichiarazione
                Property pDichiarazione = this.FindProperty(FIELD_NAME_DICHIARAZIONE);

                if (pDichiarazione != null)
                {
                    if (!pDichiarazione.IsEmpty)
                    {
                        // Possibili valori del campo "Dichiarazione"
                        const string MEZZO_RACCOMANDATA = "A mezzo raccomandata";
                        const string IN_UDIENZA         = "In udienza";

                        if (this.AreEquals(pDichiarazione.Value.ToString(), MEZZO_RACCOMANDATA))
                        {
                            // Calcolo della scadenza se il valore del campo è a mezzo raccomandata
                            this.ExecuteDateRule(subRule, false);
                        }
                        else if (this.AreEquals(pDichiarazione.Value.ToString(), IN_UDIENZA))
                        {
                            RuleHistoryInfo lastExecutedRule = this.GetLastExecutedRule(subRule);

                            if (lastExecutedRule != null && lastExecutedRule.Published)
                            {
                                if (this.AreEquals(lastExecutedRule.MailMessageSnapshot.Appointment.Method, Subscriber.Dispatcher.CalendarMail.iCalendar.AppointmentMethodTypes.REQUEST))
                                {
                                    // Invio appuntamento di cancellazione per la regola legata al termine dichiarazione del terzo
                                    this.SendCancelAppointment(subRule);
                                }
                            }
                        }
                    }
                }
                else
                {
                    // Campo non presente tra i dati del profilo
                    throw new SubscriberException(ErrorCodes.MISSING_FIELD_VALUE,
                                                  string.Format(ErrorDescriptions.MISSING_FIELD_VALUE, FIELD_NAME_DICHIARAZIONE));
                }
            }
            else
            {
                base.InternalExecuteSubRule(subRule);
            }
        }
Пример #6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="subRule"></param>
 protected override void InternalExecuteSubRule(SubRuleInfo subRule)
 {
     if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_EVASIONE_PARERE))
     {
         // Il campo "Data richiesta elementi integrativi" ha la precedenza
         // sul campo "Data arrivo richiesta"
         this.ExecuteDateRuleAlternativeFields(subRule,
                                               FIELD_DATA_ARRIVO_ELEMENTI_INTEGRATIVI,
                                               FIELD_DATA_ARRIVO_RICHIESTA);
     }
     else
     {
         base.InternalExecuteSubRule(subRule);
     }
 }
Пример #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="subRule"></param>
 protected override void InternalExecuteSubRule(SubRuleInfo subRule)
 {
     if (this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivo.SCADENZA_COSTITUZIONE) ||
         this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivo.REMINDER_SCADENZA_COSTITUZIONE) ||
         this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivo.SCADENZA_ASSUNZIONE_DELIBERAZIONE_CONFERIMENTO_INCARICO))
     {
         // La data di pubblicazione in gazzetta ufficiale ha la precedenza quando
         // è valorizzata anche la data notifica atto introduttivo
         this.ExecuteDateRuleAlternativeFields(subRule,
                                               Fields.DATA_PUBBLICAZIONE_GU,
                                               Fields.NOTIFICA_ATTO_INTRODUTTIVO);
     }
     else
     {
         base.InternalExecuteSubRule(subRule);
     }
 }
Пример #8
0
        /// <summary>
        /// Reperimento di una sottoregola
        /// </summary>
        /// <param name="id">
        /// Identificativo univoco della sottoregola
        /// </param>
        /// <returns></returns>
        public static SubRuleInfo GetSubRule(int id)
        {
            _logger.Info("BEGIN");

            try
            {
                SubRuleInfo rule = null;

                Database db = DbHelper.CreateDatabase();

                using (DBCommandWrapper cw = db.GetStoredProcCommandWrapper(DbHelper.GetSpNameForPackage("GetSubRule")))
                {
                    cw.AddInParameter("pId", DbType.Int32, id);

                    using (IDataReader reader = db.ExecuteReader(cw))
                    {
                        if (reader.Read())
                        {
                            rule = (SubRuleInfo)CreateRuleInfo(reader);
                        }
                    }
                }

                return(rule);
            }
            catch (SubscriberException pubEx)
            {
                _logger.Error(pubEx.Message);

                throw pubEx;
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);

                throw new SubscriberException(ErrorCodes.UNHANDLED_ERROR,
                                              string.Format(ErrorDescriptions.UNHANDLED_ERROR, ex.Message),
                                              ex);
            }
            finally
            {
                _logger.Info("END");
            }
        }
Пример #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="subRule"></param>
        protected override void InternalExecuteSubRule(SubRuleInfo subRule)
        {
            if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaCautelare.APPUNTAMENTO_UDIENZA_CAUTELARE) ||
                this.AreEquals(subRule.SubRuleName, SubRulesUdienzaCautelare.SCADENZA_COSTITUZIONE))
            {
                // SubRules udienza cautelare
                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAltro.APPUNTAMENTO_UDIENZA_ALTRO) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAltro.REMINDER_RINVIO_UDIENZA_ALTRO))
            {
                // SubRules udienza altro
                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.APPUNTAMENTO_UDIENZA_TRATTAZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.REMINDER_RITIRO_DOCUMENTI_CONTROPARTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.REMINDER_RITIRO_MEMORIE_CONTROPARTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.SCADENZA_DEPOSITO_DOCUMENTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.REMINDER_SCADENZA_DEPOSITO_DOCUMENTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.SCADENZA_DEPOSITO_MEMORIA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaTrattazione.SCADENZA_REDAZIONE_RELAZIONE_UDIENZA))
            {
                // SubRules udienza trattazione
                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesPubblicazioneSentenza.SCADENZA_NOTIFICA_APPELLO) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesPubblicazioneSentenza.REMINDER_SCADENZA_NOTIFICA_APPELLO))
            {
                // Verifica la presenza della "Data notifica sentenza"
                // Nel caso sia presente, le regole legate alla "Data pubblicazione sentenza" non dovranno essere eseguita,
                // quindi NON dovranno essere generati appuntamenti per quest'ultima. Piuttosto sarà necessario
                // inviare un appuntamento di cancellazione qualora non sia stato già inviato.

                this.ExecuteDateRuleAlternativeFields(subRule,
                                                      Fields.DATA_NOTIFICA_SENTENZA,
                                                      Fields.DATA_PUBBLICAZIONE_SENTENZA);
            }
            else
            {
                base.InternalExecuteSubRule(subRule);
            }
        }
Пример #10
0
        /// <summary>
        /// Aggiornamento dati di una sottoregola di pubblicazione
        /// </summary>
        /// <param name="subRule">
        /// Dati della sottoregola di pubblicazione
        /// </param>
        /// <returns></returns>
        public static SubRuleInfo SaveSubRule(SubRuleInfo subRule)
        {
            _logger.Info("BEGIN");

            try
            {
                bool insertMode = (subRule.Id == 0);

                if (insertMode)
                {
                    subRule = InsertSubRule(subRule);
                }
                else
                {
                    subRule = (SubRuleInfo)UpdateRule(subRule);
                }

                return(subRule);
            }
            catch (SubscriberException pubEx)
            {
                _logger.Error(pubEx.Message);

                throw pubEx;
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);

                throw new SubscriberException(ErrorCodes.UNHANDLED_ERROR,
                                              string.Format(ErrorDescriptions.UNHANDLED_ERROR, ex.Message),
                                              ex);
            }
            finally
            {
                _logger.Info("END");
            }
        }
Пример #11
0
        /// <summary>
        /// Esecuzione di una SubRule
        /// </summary>
        /// <param name="subRule"></param>
        protected override void InternalExecuteSubRule(SubRuleInfo subRule)
        {
            // NB. Le istruzioni IF sono state definite in modo così prolisso solo per chiarezza espositiva


            if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_COMPARIZIONE) ||
                this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_COSTITUZIONE_IN_GIUDIZIO) ||
                this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_PRESENTAZIONE_AVVISO_DI_COSTITUZIONE) ||
                this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA))
            {
                // Analisi delle SubRules relative all'evento "Fissata data e ora udienza di comparizione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_TRATTAZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_DEPOSITO_MEMORIA_PRECISAZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_DEPOSITO_MEMORIA_PRECISAZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_DEPOSITO_MEMORIA_ISTRUTTORIA) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_DEPOSITO_MEMORIA_ISTRUTTORIA) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_DEPOSITO_MEMORIA_PROVA_CONTRARIA) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_DEPOSITO_MEMORIA_PROVA_CONTRARIA) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_TRATTAZIONE))
            {
                // Analisi delle SubRules relative all'evento "Fissata data e ora udienza di trattazione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_MEZZI_ISTRUTTORI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_MEZZI_ISTRUTTORI))
            {
                // Analisi delle SubRules relative all'evento "Fissata data e ora udienza di assunzione dei mezzi istruttori"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_ASSUNZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_UDIENZA_ASSUNZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_NOTIFICA_ATTO_CITAZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_NOTIFICA_ATTO_CITAZIONE_TESTI))
            {
                // SubRules per evento "Fissata data e ora udienza assunzione testi"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_GIURAMENTO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_GIURAMENTO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_REDAZIONE_RELAZIONE_UDIENZA_GIURAMENTO_CTU))
            {
                // SubRules per evento "Fissata data e ora udienza giuramento CTU"  (V udienza)
                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_PRECISAZIONI_CONCLUSIONI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_REDAZIONE_RELAZIONE_UDIENZA_PRECISAZIONE_CONCLUSIONI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_DEPOSITO_SCAMBIO_COMPARSA_CONCLUSIONALE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_DEPOSITO_SCAMBIO_COMPARSA_CONCLUSIONALE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_MEMO_RITIRO_COMPARSA_CONCLUSIONALE_ALTRE_PARTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_REPLICA_PRECISAZIONE_CONCLUSIONI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_REPLICA_PRECISAZIONE_CONCLUSIONI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_MEMO_RITIRO_REPLICA_ALTRE_PARTI))
            {
                // SubRules per evento "Fissata data e ora udienza precisazione conclusioni"  (VI udienza)

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_PRESENTAZIONE_APPELLO) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_PRESENTAZIONE_APPELLO))
            {
                // Verifica la presenza della "Data notifica sentenza" (regola SCADENZA_PRESENTAZIONE_APPELLO_CON_DECADIMENTO).
                // Nel caso sia presente, la regola legata alla "Data pubblicazione sentenza" non dovrà essere eseguita,
                // quindi NON dovranno essere generati appuntamenti per quest'ultima. Piuttosto sarà necessario
                // inviare un appuntamento di cancellazione qualora non sia stato già inviato.

                this.ExecuteDateRuleAlternativeFields(subRule, FIELD_DATA_NOTIFICA_SENTENZA, FIELD_DATA_PUBBLICAZIONE_SENTENZA);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_ALTRO) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_ALTRO))
            {
                // SubRules per evento "Udienza altro tipo"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_RICHIAMO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_RICHIAMO_CTU))
            {
                // SubRules per evento "Udienza richiamo CTU"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_CAMERA_CONSIGLIO) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_CAMERA_CONSIGLIO))
            {
                // SubRules per evento "Udienza camera di consiglio"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_DISCUSSIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_DISCUSSIONE))
            {
                // SubRules per evento "Udienza di discussione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_TENTATIVO_DI_CONCILIAZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_TENTATIVO_DI_CONCILIAZIONE))
            {
                // SubRules per evento "Tentativo di conciliazione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_RINVIO_PENDENTI_TRATTATIVE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_RINVIO_PENDENTI_TRATTATIVE))
            {
                // SubRules per evento "Udienza rinvio pendenti trattative"

                this.ExecuteUdienzaRule(subRule);
            }
            else
            {
                // Esecuzione altre regole associate alle date

                base.InternalExecuteSubRule(subRule);
            }
        }
Пример #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="subRule"></param>
        protected override void InternalExecuteSubRule(SubRuleInfo subRule)
        {
            if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_DISCUSSIONE_420_436) ||
                this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_COSTITUZIONE_IN_GIUDIZIO) ||
                this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_PRESENTAZIONE_AVVISO_COSTITUZIONE) ||
                this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_UDIENZA_DISCUSSIONE_420_436))
            {
                // Analisi delle SubRules per evento "Fissata data e ora udienza discussione 420 / 436 c.p.c."

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_ASSUNZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_ASSUNZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_NOTIFICA_ATTO_CITAZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_NOTIFICA_ATTO_CITAZIONE_TESTI))
            {
                // SubRules per evento "Fissata data e ora udienza di discussione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_GIURAMENTO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_GIURAMENTO_CTU))
            {
                // SubRules per evento "Fissata data e ora udienza giuramento CTU"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_DISCUSSIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_DEPOSITO_NOTE_DIFENSIVE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_DEPOSITO_NOTE_DIFENSIVE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RITIRO_NOTE_DIFENSIVE_ALTRE_PARTI))
            {
                // SubRules per evento "Fissata data e ora udienza di discussione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_RICHIAMO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_RICHIAMO_CTU))
            {
                // SubRules per evento "Fissata data e ora udienza richiamo CTU"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_TENTATIVO_CONCILIAZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_TENTATIVO_CONCILIAZIONE))
            {
                // SubRules per evento "Fissata data e ora tentativo di conciliazione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_RINVIO_PENDENTI_TRATTATIVE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_RINVIO_PENDENTI_TRATTATIVE))
            {
                // SubRules per evento "Fissata data e ora udienza rinvio pendenti trattative"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_ALTRO) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_ALTRO))
            {
                // SubRules per evento "Fissata data e ora udienza altro"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_ASSUNZIONE_MEZZI_PROVA) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_ASSUNZIONE_MEZZI_PROVA))
            {
                // SubRules per evento "Fissata data e ora udienza assunzione dei mezzi di prova"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_APPUNTAMENTO_UDIENZA_PRIMA_COMPARIZIONE) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_RINVIO_UDIENZA_PRIMA_COMPARIZIONE))
            {
                // SubRules per evento "Fissata data e ora udienza prima comparizione"

                this.ExecuteUdienzaRule(subRule);
            }
            else if (this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_SCADENZA_PRESENTAZIONE_APPELLO) ||
                     this.AreEquals(subRule.SubRuleName, SUBRULE_NAME_REMINDER_SCADENZA_PRESENTAZIONE_APPELLO))
            {
                // Verifica la presenza della "Data notifica sentenza" (regola SCADENZA_PRESENTAZIONE_APPELLO_CON_DECADIMENTO).
                // Nel caso sia presente, la regola legata alla "Data pubblicazione sentenza" non dovrà essere eseguita,
                // quindi NON dovranno essere generati appuntamenti per quest'ultima. Piuttosto sarà necessario
                // inviare un appuntamento di cancellazione qualora non sia stato già inviato.

                this.ExecuteDateRuleAlternativeFields(subRule, FIELD_DATA_NOTIFICA_SENTENZA, FIELD_DATA_PUBBLICAZIONE_SENTENZA);
            }
            else
            {
                // Per tutte le altre regole

                base.InternalExecuteSubRule(subRule);
            }
        }
Пример #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="subRule"></param>
        protected override void InternalExecuteSubRule(SubRuleInfo subRule)
        {
            if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaVerificaStatoPassivo.SCADENZA_DOMANDA_TEMPESTIVA) ||
                this.AreEquals(subRule.SubRuleName, SubRulesUdienzaVerificaStatoPassivo.REMINDER_SCADENZA_DOMANDA_TEMPESTIVA))
            {
                // Valore ammesso nel campo "Tipologia"
                const string FALLIMENTO = "Fallimento";

                // Ricerca del campo "Termine" nel profilo
                Property pTermine = this.FindProperty(Fields.TIPOLOGIA);

                if (pTermine != null && !pTermine.IsEmpty)
                {
                    if (this.AreEquals(pTermine.Value.ToString(), FALLIMENTO))
                    {
                        // Esecuzione della regola se e solo se il valore del campo "Termine" è impostato a "Fallimento"
                        this.ExecuteDateRule(subRule, false);
                    }
                    else
                    {
                        // Verifica se inviare un appuntamento di cancellazione
                        RuleHistoryInfo lastExecutedRule = this.GetLastExecutedRule(subRule);

                        if (lastExecutedRule != null &&
                            lastExecutedRule.MailMessageSnapshot != null &&
                            lastExecutedRule.MailMessageSnapshot.Appointment != null &&
                            lastExecutedRule.MailMessageSnapshot.Appointment.Status == Subscriber.Dispatcher.CalendarMail.iCalendar.AppointmentStatusTypes.CONFIRMED)
                        {
                            this.SendCancelAppointment(subRule);
                        }
                    }
                }
                else
                {
                    // Campo obbligatorio
                    throw new SubscriberException(ErrorCodes.MISSING_FIELD_VALUE, string.Format(ErrorDescriptions.MISSING_FIELD_VALUE, Fields.TIPOLOGIA));
                }
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaVerificaStatoPassivo.SCADENZA_DOMANDA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaVerificaStatoPassivo.REMINDER_SCADENZA_DOMANDA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaVerificaStatoPassivo.ADUNANZA_CREDITORI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaVerificaStatoPassivo.REMINDER_ADESIONE_CONCORDATO))
            {
                // Valore ammesso nel campo "Tipologia"
                const string CONCORDATO_PREVENTIVO = "Concordato preventivo";

                // Ricerca del campo "Termine" nel profilo
                Property pTermine = this.FindProperty(Fields.TIPOLOGIA);

                if (pTermine != null && !pTermine.IsEmpty)
                {
                    if (this.AreEquals(pTermine.Value.ToString(), CONCORDATO_PREVENTIVO))
                    {
                        // Esecuzione della regola se e solo se il valore del campo "Termine" è impostato a "Concordato preventivo"
                        this.ExecuteDateRule(subRule, false);
                    }
                    else
                    {
                        // Verifica se inviare un appuntamento di cancellazione
                        RuleHistoryInfo lastExecutedRule = this.GetLastExecutedRule(subRule);

                        if (lastExecutedRule != null &&
                            lastExecutedRule.MailMessageSnapshot != null &&
                            lastExecutedRule.MailMessageSnapshot.Appointment != null &&
                            lastExecutedRule.MailMessageSnapshot.Appointment.Status == Subscriber.Dispatcher.CalendarMail.iCalendar.AppointmentStatusTypes.CONFIRMED)
                        {
                            this.SendCancelAppointment(subRule);
                        }
                    }
                }
                else
                {
                    // Campo obbligatorio
                    throw new SubscriberException(ErrorCodes.MISSING_FIELD_VALUE, string.Format(ErrorDescriptions.MISSING_FIELD_VALUE, Fields.TIPOLOGIA));
                }
            }
            else
            {
                base.InternalExecuteSubRule(subRule);
            }
        }
Пример #14
0
        /// <summary>
        /// Esecuzione di una SubRule
        /// </summary>
        /// <param name="subRule"></param>
        protected override void InternalExecuteSubRule(SubRuleInfo subRule)
        {
            if (this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntrodutto.SCADENZA_COSTITUZIONE) ||
                this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntrodutto.SCADENZA_COSTITUZIONE_RICORRENTE) ||
                this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntrodutto.REMINDER_SCADENZA_COSTITUZIONE) ||
                this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntrodutto.REMINDER_SCADENZA_COSTITUZIONE_RICORRENTE))
            {
                if (this.TerminiDimezzati)
                {
                    // Se la causa prevede i termini dimezzati, è necessario inviare gli appuntamenti di cancellazione
                    // per le 4 regole di notifica atto introduttivo non previsti per i termini dimezzati

                    RuleHistoryInfo lastExecutedRule = this.GetLastExecutedRule(subRule);

                    if (lastExecutedRule != null &&
                        lastExecutedRule.MailMessageSnapshot != null &&
                        lastExecutedRule.MailMessageSnapshot.Appointment != null &&
                        lastExecutedRule.MailMessageSnapshot.Appointment.Status == Subscriber.Dispatcher.CalendarMail.iCalendar.AppointmentStatusTypes.CONFIRMED)
                    {
                        // Invio appuntamento di cancellazione, solo se l'ultimo appuntamento inviato per la regola è di conferma
                        this.SendCancelAppointment(subRule);
                    }
                }
                else
                {
                    // Se i termini non sono dimezzati, gestisce normalmente la regola
                    this.ExecuteDateRule(subRule, false);
                }
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivoConTerminiDimezzati.SCADENZA_COSTITUZIONE_TERMINI_DIMEZZATI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivoConTerminiDimezzati.SCADENZA_NOTIFICA_RICORSO_INCIDENTALE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivoConTerminiDimezzati.SCADENZA_COSTITUZIONE_RICORRENTE_TERMINI_DIMEZZATI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivoConTerminiDimezzati.REMINDER_SCADENZA_COSTITUZIONE_TERMINI_DIMEZZATI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivoConTerminiDimezzati.REMINDER_SCADENZA_NOTIFICA_RICORSO_INCIDENTALE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesNotificaAttoIntroduttivoConTerminiDimezzati.REMINDER_SCADENZA_COSTITUZIONE_RICORRENTE_TERMINI_DIMEZZATI))
            {
                if (!this.TerminiDimezzati)
                {
                    // Se la causa NON prevede i termini dimezzati, è necessario inviare gli appuntamenti di cancellazione
                    // per le 6 regole di notifica atto introduttivo previste per i termini dimezzati

                    RuleHistoryInfo lastExecutedRule = this.GetLastExecutedRule(subRule);

                    if (lastExecutedRule != null &&
                        lastExecutedRule.MailMessageSnapshot != null &&
                        lastExecutedRule.MailMessageSnapshot.Appointment != null &&
                        lastExecutedRule.MailMessageSnapshot.Appointment.Status == Subscriber.Dispatcher.CalendarMail.iCalendar.AppointmentStatusTypes.CONFIRMED)
                    {
                        // Invio appuntamento di cancellazione, solo se l'ultimo appuntamento inviato per la regola è di conferma
                        this.SendCancelAppointment(subRule);
                    }
                }
                else
                {
                    // Se i termini sono dimezzati, gestisce normalmente la regola
                    this.ExecuteDateRule(subRule, false);
                }
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesComunicazioneDepositoOrdinanza.SCADENZA_PRESENTAZIONE_APPELLO_DEPOSITO_ORDINANZA))
            {
                // Appuntamenti derivanti dalla "Data comunicazione deposito ordinanza"

                // L'appuntamento è alternativo a quello calcolato in base al campo "Data notifica ordinanza".
                // Se presente quest'ultimo, è necessario rimuovere l'eventuale appuntamento già inserito per la "Data comunicazione deposito ordinanza"

                this.ExecuteDateRuleAlternativeFields(subRule,
                                                      Fields.DATA_NOTIFICA_ORDINANZA,
                                                      Fields.DATA_COMUNICAZIONE_DEPOSITO_ORDINANZA);
            }

            else if (this.AreEquals(subRule.SubRuleName, SubRulesPubblicazioneSentenza.SCADENZA_PRESENTAZIONE_APPELLO) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesPubblicazioneSentenza.REMINDER_SCADENZA_PRESENTAZIONE_APPELLO))
            {
                // Appuntamenti derivanti dalla "Data pubblicazione sentenza".

                // NB: (in maniera analoga al contenzioso civile)
                // Se risulta valorizzata la "Data notifica sentenza", è necessario cancellare gli appuntamenti derivanti dalla "Data pubblicazione sentenza" (termine lungo per l'appello)

                this.ExecuteDateRuleAlternativeFields(subRule,
                                                      Fields.DATA_NOTIFICA_SENTENZA,
                                                      Fields.DATA_PUBBLICAZIONE_SENTENZA);
            }
            else if (this.AreEquals(subRule.SubRuleName, SubRulesUdienzaCautelare.APPUNTAMENTO_UDIENZA_CAUTELARE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaCautelare.SCADENZA_COSTITUZIONE_UDIENZA_CAUTELARE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.APPUNTAMENTO_UDIENZA_PUBBLICA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.REMINDER_RINVIO_UDIENZA_PUBBLICA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.SCADENZA_DEPOSITO_DOCUMENTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.REMINDER_SCADENZA_DEPOSITO_DOCUMENTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.REMINDER_RITIRO_DOCUMENTI_CONTROPARTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.SCADENZA_DEPOSITO_MEMORIA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.REMINDER_DEPOSITO_MEMORIA_CONTROPARTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.SCADENZA_DEPOSITO_REPLICA) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaPubblica.REMINDER_RITIRO_REPLICHE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAssunzioneTesti.APPUNTAMENTO_UDIENZA_ASSUNZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAssunzioneTesti.REMINDER_RINVIO_UDIENZA_ASSUNZIONE_TESTI) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaGiuramentoCTU.APPUNTAMENTO_UDIENZA_GIURAMENTO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaGiuramentoCTU.REMINDER_RINVIO_UDIENZA_GIURAMENTO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRichiamoCTU.APPUNTAMENTO_UDIENZA_RICHIAMO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRichiamoCTU.REMINDER_RINVIO_UDIENZA_RICHIAMO_CTU) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRinvioPendentiTrattative.APPUNTAMENTO_UDIENZA_RINVIO_PENDENTI_TRATTATIVE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaRinvioPendentiTrattative.REMINDER_RINVIO_UDIENZA_RINVIO_PENDENTI_TRATTATIVE) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAltro.APPUNTAMENTO_UDIENZA_ALTRO) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaAltro.REMINDER_RINVIO_UDIENZA_ALTRO) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaCameraConsiglio.APPUNTAMENTO_UDIENZA_CAMERA_CONSIGLIO) ||
                     this.AreEquals(subRule.SubRuleName, SubRulesUdienzaCameraConsiglio.REMINDER_RINVIO_UDIENZA_CAMERA_CONSIGLIO)
                     )
            {
                // Regole associate ad uno dei 5 campi udienza del profilo

                this.ExecuteUdienzaRule(subRule);
            }
            else
            {
                // Esecuzione altre regole associate alle date

                base.InternalExecuteSubRule(subRule);
            }
        }
Пример #15
0
 public SubRuleInfo SaveSubRule(SubRuleInfo subRule)
 {
     return(DataAccess.RuleDataAdapter.SaveSubRule(subRule));
 }