예제 #1
0
        /// <summary>
        /// Reperimento dello stato di modifica di un campo
        /// </summary>
        /// <param name="fieldName"></param>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected virtual FieldStateTypesEnum GetFieldState(string fieldName, BaseRuleInfo rule)
        {
            Property actualProperty = this.FindProperty(fieldName);
            Property oldProperty    = this.FindStoredProperty(fieldName, rule);

            return(this.GetFieldState(actualProperty, oldProperty));
        }
예제 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);


            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(Fields.RESISTENTE_CONVENUTO, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(Fields.NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetDescriptionFieldState(rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(CommonFields.AUTORITA_GIUDIZIARIA, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(CommonFields.COMPETENZA_TERRITORIALE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.RUOLO_GENERALE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.RESISTENTE_CONVENUTO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.AVVOCATO_RESISTENTE_CONVENUTO, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);

            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(FIELD_RICORRENTE_ATTORE, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(FIELD_RESISTENTE_CONVENUTO, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(FIELD_NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetFieldState(FIELD_RICORRENTE_ATTORE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(FIELD_RESISTENTE_CONVENUTO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(FIELD_CONTRO_INTERESSATO_TERZO_CHIAMATO, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #4
0
        /// <summary>
        /// Ricerca di una proprietà dell'oggetto da pubblicare nella storicizzazione dell'ultima pubblicazione effettuata
        /// </summary>
        /// <param name="propertyName">Nome della proprietà dell'oggetto</param>
        /// <param name="rule">Dati della regola</param>
        /// <returns></returns>
        protected virtual Property FindStoredProperty(string propertyName, BaseRuleInfo rule)
        {
            // Reperimento, dall'history, dei dati relativi all'ultima esecuzione della regola per l'oggetto da pubblicare
            RuleHistoryInfo lastExecutedRule = DataAccess.RuleHistoryDataAdapter.GetLastRuleHistory(rule.Id, this.ListenerRequest.EventInfo.PublishedObject.IdObject);

            return(this.FindStoredProperty(propertyName, lastExecutedRule));
        }
예제 #5
0
        /// <summary>
        /// Il profilo prevede il campo "Sospensione feriale dei termini",
        /// pertanto ne viene riportato il valore
        /// </summary>
        /// <param name="rule"></param>
        protected override bool HasSospensioneFerialeTermini(BaseRuleInfo rule)
        {
            string ruleName = string.Empty;

            if (rule.GetType() == typeof(SubRuleInfo))
            {
                ruleName = ((SubRuleInfo)rule).SubRuleName;
            }
            else
            {
                ruleName = rule.RuleName;
            }

            if (this.AreEquals(ruleName, SubRulesUdienzaCautelare.SCADENZA_COSTITUZIONE_UDIENZA_CAUTELARE))
            {
                // Unica scadenza che non deve tener conto della sospensione feriale
                return(false);
            }
            else
            {
                Property pSospensioneFerialeTermini = this.FindProperty(Fields.SOSPENSIONE_FERIALE);

                if (pSospensioneFerialeTermini != null && pSospensioneFerialeTermini.Value != null)
                {
                    return(this.AreEquals(pSospensioneFerialeTermini.Value.ToString(), "si"));
                }
                else
                {
                    return(base.HasSospensioneFerialeTermini(rule));
                }
            }
        }
예제 #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);

            if (!isDirty)
            {
                // Verifica se, per la causa, è stato modificato il valore del campo sopensione feriale dei termini
                // rispetto alla versione precedente del profilo
                FieldStateTypesEnum stateSospensioneFeriale = this.GetFieldState(Fields.SOSPENSIONE_FERIALE, rule);

                isDirty = (stateSospensioneFeriale != FieldStateTypesEnum.Unchanged);
            }

            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(Fields.RESISTENTE_CONVENUTO, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(Fields.RICORRENTE_ATTORE, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(Fields.NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetFieldState(Fields.GIUDIZIO_DI, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.CONTRO_INTERESSATO_TERZO_CHIAMATO, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #7
0
        /// <summary>
        /// Indica se la regola ammette il dimezzamento dei termini delle scadenze sulla base del valore inserito nel profilo
        /// </summary>
        /// <param name="rule"></param>
        /// <remarks>
        /// Se la regola è un promemoria antecedente ad una scadenza importante,
        /// il dimezzamento in quel caso non dovrà essere calcolato.
        /// Piuttosto dovrà mantenersi il calcolo (es. 10gg prima).
        /// </remarks>
        /// <returns></returns>
        protected virtual bool RuleHasTerminiDimezzati(BaseRuleInfo rule)
        {
            string ruleName = string.Empty;

            if (rule.GetType() == typeof(SubRuleInfo))
            {
                ruleName = ((SubRuleInfo)rule).SubRuleName;
            }
            else
            {
                ruleName = rule.RuleName;
            }

            if (this.AreEquals(ruleName, SubRulesUdienzaPubblica.SCADENZA_DEPOSITO_DOCUMENTI) ||
                this.AreEquals(ruleName, SubRulesUdienzaPubblica.REMINDER_SCADENZA_DEPOSITO_DOCUMENTI) ||
                this.AreEquals(ruleName, SubRulesUdienzaPubblica.REMINDER_RITIRO_DOCUMENTI_CONTROPARTI) ||
                this.AreEquals(ruleName, SubRulesUdienzaPubblica.SCADENZA_DEPOSITO_MEMORIA) ||
                this.AreEquals(ruleName, SubRulesUdienzaPubblica.REMINDER_DEPOSITO_MEMORIA_CONTROPARTI) ||
                this.AreEquals(ruleName, SubRulesUdienzaPubblica.SCADENZA_DEPOSITO_REPLICA) ||
                this.AreEquals(ruleName, SubRulesUdienzaPubblica.REMINDER_RITIRO_REPLICHE) ||
                this.AreEquals(ruleName, SubRulesPubblicazioneSentenza.SCADENZA_PRESENTAZIONE_APPELLO) ||
                this.AreEquals(ruleName, SubRulesPubblicazioneSentenza.REMINDER_SCADENZA_PRESENTAZIONE_APPELLO) ||
                this.AreEquals(ruleName, SubRulesNotificaSentenza.SCADENZA_PRESENTAZIONE_APPELLO_NOTIFICA_SENTENZA) ||
                this.AreEquals(ruleName, SubRulesNotificaSentenza.REMINDER_SCADENZA_PRESENTAZIONE_APPELLO_NOTIFICA_SENTENZA))
            {
                // Casi un cui la regola prevede il dimezzamento dei termini

                return(this.TerminiDimezzati);
            }
            else
            {
                // Casi in cui le regole non prevedono il dimezzamento dei termini
                return(false);
            }
        }
예제 #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);

            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(FIELD_PIGNORATO, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(FIELD_PIGNORANTE, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(FIELD_NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetFieldState(CommonFields.AUTORITA_GIUDIZIARIA, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(CommonFields.COMPETENZA_TERRITORIALE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(FIELD_PIGNORATO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(FIELD_PIGNORANTE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(FIELD_DATA_UDIENZA, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #9
0
        /// <summary>
        /// Scrittura esito dell'esecuzione della regola
        /// </summary>
        /// <param name="rule"></param>
        protected virtual void WriteRuleHistory(BaseRuleInfo rule)
        {
            // Scrittura elemento di pubblicazione nell'history
            RuleHistoryInfo historyInfo = RuleHistoryInfo.CreateInstance(rule);

            historyInfo.Author         = this.ListenerRequest.EventInfo.Author;
            historyInfo.ObjectSnapshot = this.ListenerRequest.EventInfo.PublishedObject;
            historyInfo = DataAccess.RuleHistoryDataAdapter.SaveHistoryItem(historyInfo);
        }
예제 #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="rule"></param>
 public AlboTelematicoRuleOptions(BaseRuleInfo rule)
 {
     this.AlboTelematicoServicesUrl = rule.GetOptionByName("WS_ALBO", true).Replace('$', ':');
     this.AlboTelematicoServicesUid = rule.GetOptionByName("UID_ALBO", true);
     this.AlboTelematicoServicesPwd = rule.GetOptionByName("PWD_ALBO", true);
     this.PitreServicesUrl          = rule.GetOptionByName("WS_PITRE", true).Replace('$', ':');
     this.PitreServicesUid          = rule.GetOptionByName("UID_PITRE", true);
     this.PitreServicesPwd          = rule.GetOptionByName("PWD_PITRE", true);
 }
예제 #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override AvvocaturaBaseRuleOptions GetAvvocaturaOptions(BaseRuleInfo rule)
        {
            AvvocaturaBaseRuleOptions opts = base.GetAvvocaturaOptions(rule);

            string name = string.Empty;

            // Reperimento del nome della regola / sottoregola
            if (rule.GetType() == typeof(SubRuleInfo))
            {
                name = ((SubRuleInfo)rule).SubRuleName;
            }
            else
            {
                name = rule.RuleName;
            }

            if (this.RuleHasTerminiDimezzati(rule))
            {
                // La regola prevede il dimezzamento dei termini

                if (opts.Decorrenza != 0)
                {
                    // Eccezioni
                    if (this.AreEquals(name, SubRulesPubblicazioneSentenza.REMINDER_SCADENZA_PRESENTAZIONE_APPELLO))
                    {
                        // La regola "REMINDER_SCADENZA_PRESENTAZIONE_APPELLO" normalmente prevede il
                        // termine di 5 mesi (1 mese dopo il termine presentazione appello, ovvero 6 mesi).
                        // In caso di rito abbreviato, il termine presentazione appello sarà 3 mesi,
                        // il reminder va calcolato a 2 mesi piuttosto che 3 (con l'arrotondamento per eccesso)
                        opts.Decorrenza = 2;
                    }
                    else
                    {
                        if ((opts.Decorrenza % 2) != 0)
                        {
                            if (opts.Decorrenza < 0)
                            {
                                // Arrotondamento per eccesso
                                opts.Decorrenza = (opts.Decorrenza / 2) - 1;
                            }
                            else if (opts.Decorrenza > 0)
                            {
                                // Arrotondamento per eccesso
                                opts.Decorrenza = (opts.Decorrenza / 2) + 1;
                            }
                        }
                        else
                        {
                            opts.Decorrenza = (opts.Decorrenza / 2);
                        }
                    }
                }
            }

            return(opts);
        }
예제 #12
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());
        }
예제 #13
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            const string FORMAT = "Richiedente: {0}, Data arrivo richiesta: {1} - {2}, N° d'ordine: {3}";

            // Creazione dell'oggetto
            return(string.Format(FORMAT,
                                 this.GetPropertyValueAsString(this.FindProperty(FIELD_NAME_RICHIEDENTE)),
                                 this.GetPropertyValueAsString(this.FindProperty(FIELD_NAME_DATA_ARRIVO_RICHIESTA_RIMBORSO)),
                                 rule.RuleDescription,
                                 this.GetPropertyValueAsString(this.FindProperty(FIELD_NUMERO_ORDINE))));
        }
예제 #14
0
        /// <summary>
        /// Reperimento di una regola di pubblicazione
        /// </summary>
        /// <param name="id">Identificativo univoco della regola</param>
        /// <returns></returns>
        public static RuleInfo GetRule(int id)
        {
            _logger.Info("BEGIN");

            RuleInfo rule = null;

            try
            {
                Database db = DbHelper.CreateDatabase();

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

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

                            if (baseRule.GetType() == typeof(RuleInfo))
                            {
                                rule = (RuleInfo)baseRule;
                            }
                            else if (baseRule.GetType() == typeof(SubRuleInfo) && rule != null)
                            {
                                rule.SubRulesList.Add((SubRuleInfo)baseRule);
                            }
                        }
                    }
                }
            }
            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(rule);
        }
예제 #15
0
        /// <summary>
        /// Il profilo prevede il campo "Sospensione feriale dei termini",
        /// pertanto ne viene riportato il valore
        /// </summary>
        /// <param name="rule"></param>
        protected override bool HasSospensioneFerialeTermini(BaseRuleInfo rule)
        {
            Property pSospensioneFerialeTermini = this.FindProperty(FIELD_SOSPENSIONE_FERIALE);

            if (pSospensioneFerialeTermini != null && pSospensioneFerialeTermini.Value != null)
            {
                return(this.AreEquals(pSospensioneFerialeTermini.Value.ToString(), "si"));
            }
            else
            {
                return(base.HasSospensioneFerialeTermini(rule));
            }
        }
예제 #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);

            if (!isDirty)
            {
                // Verifica se, per la causa, è stato modificato il valore del campo sopensione feriale dei termini
                // rispetto alla versione precedente del profilo
                FieldStateTypesEnum stateSospensioneFeriale = this.GetFieldState(Fields.SOSPENSIONE_FERIALE, rule);

                isDirty = (stateSospensioneFeriale != FieldStateTypesEnum.Unchanged);
            }

            if (!isDirty)
            {
                // Verifica se, per la causa, è stato modificato il valore del campo "Termine per l'appello"
                // rispetto alla versione precedente del profilo
                FieldStateTypesEnum stateTermineAppello = this.GetFieldState(Fields.TERMINE_APPELLO, rule);

                isDirty = (stateTermineAppello != FieldStateTypesEnum.Unchanged);
            }

            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(Fields.IMPUTATO_I, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(Fields.IMPUTATO_II, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(Fields.NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetFieldState(CommonFields.AUTORITA_GIUDIZIARIA, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(CommonFields.COMPETENZA_TERRITORIALE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.RUOLO_GENERALE_NOTIZIE_REATO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.PUBBLICO_MINISTERO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.RUOLO_GENERALE_GIP_GUP, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.IMPUTATO_I, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.AVVOCATO_IMPUTATO_I, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.IMPUTATO_II, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.AVVOCATO_IMPUTATO_II, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #17
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            string subject = string.Empty;

            const string FORMAT = "Resistente/Convenuto: {0} - {1} - N° d'ordine: {2}";

            // Creazione dell'oggetto
            subject = string.Format(FORMAT,
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.RESISTENTE_CONVENUTO)),
                                    rule.RuleDescription,
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.NUMERO_ORDINE)));

            return(subject);
        }
예제 #18
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            string subject = string.Empty;

            // Per la causa del parere, l'oggetto deve essere composto nella seguente maniera:
            // Richiedente: {0}

            const string FORMAT = "Richiedente: {0}, - {1}, N° d'ordine: {2}";

            // Creazione dell'oggetto
            subject = string.Format(FORMAT,
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_RICHIEDENTE)),
                                    rule.RuleDescription,
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_NUMERO_ORDINE)));

            return(subject);
        }
예제 #19
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            string subject = string.Empty;

            // Per la causa Procedura concorsuale, l'oggetto deve essere composto nella seguente maniera:
            // Fallito: {0} - {1}, N° d'ordine: {2}

            const string FORMAT = "Fallito / Debitore: {0} - {1}, N° d'ordine: {2}";

            // Creazione dell'oggetto
            subject = string.Format(FORMAT,
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.FALLITO)),
                                    rule.RuleDescription,
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.NUMERO_ORDINE)));

            return(subject);
        }
예제 #20
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            string subject = string.Empty;

            // Per la causa del Pignoramento, l'oggetto deve essere composto nella seguente maniera:
            // Pignorato: {0}, Pignorante: {1} - Evento: {2}

            const string FORMAT = "Pignorato: {0}, Pignorante: {1} - {2}, N° d'ordine: {3}";

            // Creazione dell'oggetto
            subject = string.Format(FORMAT,
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_PIGNORATO)),
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_PIGNORANTE)),
                                    rule.RuleDescription,
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_NUMERO_ORDINE)));

            return(subject);
        }
예제 #21
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            string subject = string.Empty;

            // Per la causa del procedimento penale, l'oggetto deve essere composto nella seguente maniera:
            // Imputato I: {0}, Imputato II: {1} - Evento: {2}, N° d'ordine: {3}

            const string FORMAT = "Imputato I: {0}, Imputato II: {1} - {2}, N° d'ordine: {3}";

            // Creazione dell'oggetto
            subject = string.Format(FORMAT,
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.IMPUTATO_I)),
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.IMPUTATO_II)),
                                    rule.RuleDescription,
                                    this.GetPropertyValueAsString(this.FindProperty(Fields.NUMERO_ORDINE)));

            return(subject);
        }
예제 #22
0
        /// <summary>
        /// Creazione dell'oggetto del messaggio di posta
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="computedAppointmentDate"></param>
        /// <returns></returns>
        protected override string CreateMailSubject(BaseRuleInfo rule, DateTime computedAppointmentDate)
        {
            string subject = string.Empty;

            // Per la causa del contenzioso civile, l'oggetto deve essere composto nella seguente maniera:
            // Ricorrente/Attore: {0}; Resistente/Convenuto: {1} - Evento: {2}; N° d'ordine: {3}

            const string FORMAT = "Ricorrente/Attore: {0}, Resistente/Convenuto: {1} - {2} - N° d'ordine: {3}";

            // Creazione dell'oggetto
            subject = string.Format(FORMAT,
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_RICORRENTE_ATTORE)),
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_RESISTENTE_CONVENUTO)),
                                    rule.RuleDescription,
                                    this.GetPropertyValueAsString(this.FindProperty(FIELD_NUMERO_ORDINE)));

            return(subject);
        }
예제 #23
0
 /// <summary>
 /// Azione di invio degli appuntamenti tramite mail
 /// </summary>
 /// <param name="rule"></param>
 /// <param name="mailRequest"></param>
 protected virtual void DispatchMail(BaseRuleInfo rule, Dispatcher.CalendarMail.MailRequest mailRequest)
 {
     try
     {
         using (Subscriber.Dispatcher.CalendarMail.MailDispatcher dispatcher = new Subscriber.Dispatcher.CalendarMail.MailDispatcher())
         {
             dispatcher.Dispatch(mailRequest);
         }
     }
     catch (Exception ex)
     {
         rule.Error = new ErrorInfo
         {
             Id      = ErrorCodes.SEND_MAIL_ERROR,
             Message = string.Format(ErrorDescriptions.SEND_MAIL_ERROR, ex.Message),
             Stack   = ex.StackTrace
         };
     }
 }
예제 #24
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);

            if (!isDirty)
            {
                // Verifica se il campo tipologia è stato modificato
                FieldStateTypesEnum tipologiaFieldState = this.GetFieldState(Fields.TIPOLOGIA, rule);

                isDirty = (tipologiaFieldState != FieldStateTypesEnum.Unchanged);
            }

            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(Fields.FALLITO, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(Fields.NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetFieldState(CommonFields.AUTORITA_GIUDIZIARIA, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(CommonFields.COMPETENZA_TERRITORIALE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.FALLITO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.NUMERO_FALLIMENTO, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.CURATORE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(Fields.GIUDICE_DELEGATO, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #25
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        public AvvocaturaBaseRuleOptions(BaseRuleInfo rule)
        {
            this.Campo = rule.GetOptionByName(OPTION_FIELD, true);

            int decorrenza;

            Int32.TryParse(rule.GetOptionByName(OPTION_DECORRENZA, false), out decorrenza);
            this.Decorrenza = decorrenza;

            string tipoDecorrenza = rule.GetOptionByName(OPTION_TIPO_DECORRENZA, false);

            if (!string.IsNullOrEmpty(tipoDecorrenza))
            {
                this.TipoDecorrenza = (TipoDecorrenzaEnum)Enum.Parse(typeof(TipoDecorrenzaEnum), tipoDecorrenza, true);
            }

            int giorniDecorrenzaAvviso;

            Int32.TryParse(rule.GetOptionByName(OPTION_GIORNI_DECORRENZA_AVVISO, false), out giorniDecorrenzaAvviso);
            this.GiorniDecorrenzaAvviso = giorniDecorrenzaAvviso;

            if (giorniDecorrenzaAvviso != 0)
            {
                this.DescrizioneDecorrenzaAvviso = rule.GetOptionByName(OPTION_DESCRIZIONE_AVVISO, false);
            }

            int oraInizio;

            Int32.TryParse(rule.GetOptionByName(OPTION_ORA_INIZIO, false), out oraInizio);
            this.OraInizio = oraInizio;

            int durataOre;

            Int32.TryParse(rule.GetOptionByName(OPTION_DURATA_ORE, false), out durataOre);
            this.OreDurataEvento = durataOre;
        }
예제 #26
0
        /// <summary>
        /// Il profilo prevede il campo "Sospensione feriale dei termini",
        /// pertanto ne viene riportato il valore
        /// </summary>
        /// <param name="rule"></param>
        protected override bool HasSospensioneFerialeTermini(BaseRuleInfo rule)
        {
            string ruleName = string.Empty;

            if (rule.GetType() == typeof(SubRuleInfo))
            {
                ruleName = ((SubRuleInfo)rule).SubRuleName;
            }
            else
            {
                ruleName = rule.RuleName;
            }

            if (this.AreEquals(ruleName, SubRulesTermineAppello.SCADENZA_PRESENTAZIONE_APPELLO) ||
                this.AreEquals(ruleName, SubRulesUdienzaAperturaDibattimento.SCADENZA_DEPOSITO_UDIENZA_APERTURA_DIBATTIMENTO) ||
                this.AreEquals(ruleName, SubRulesUdienzaAperturaDibattimento.REMINDER_DEPOSITO_UDIENZA_APERTURA_DIBATTIMENTO))
            {
                // Uniche regole di calcolo delle scadenze che devono tenere conto della sospensione feriale dei termini

                Property pSospensioneFerialeTermini = this.FindProperty(Fields.SOSPENSIONE_FERIALE);

                if (pSospensioneFerialeTermini != null && pSospensioneFerialeTermini.Value != null)
                {
                    return(this.AreEquals(pSospensioneFerialeTermini.Value.ToString(), "si"));
                }
                else
                {
                    return(base.HasSospensioneFerialeTermini(rule));
                }
            }
            else
            {
                // Le altre regole non prevedono la sospensione feriale dei termini
                return(false);
            }
        }
예제 #27
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected override bool IsDirtyDependentFields(BaseRuleInfo rule)
        {
            bool isDirty = base.IsDirtyDependentFields(rule);

            if (!isDirty)
            {
                // Verifica se sono stati modificati i campi i cui valori sono
                // visualizzati come oggetto e body del messaggio di posta / iCal

                // Campi dell'oggetto
                isDirty = this.GetFieldState(FIELD_RICHIEDENTE, rule) != FieldStateTypesEnum.Unchanged ||
                          this.GetFieldState(FIELD_NUMERO_ORDINE, rule) != FieldStateTypesEnum.Unchanged;

                // Campi del body
                if (!isDirty)
                {
                    isDirty =
                        this.GetFieldState(FIELD_RICHIEDENTE, rule) != FieldStateTypesEnum.Unchanged ||
                        this.GetFieldState(FIELD_DATA_ARRIVO_RICHIESTA, rule) != FieldStateTypesEnum.Unchanged;
                }
            }

            return(isDirty);
        }
예제 #28
0
        /// <summary>
        /// Il profilo prevede il campo "Sospensione feriale dei termini",
        /// pertanto ne viene riportato il valore
        /// </summary>
        /// <param name="rule"></param>
        protected override bool HasSospensioneFerialeTermini(BaseRuleInfo rule)
        {
            string ruleName = string.Empty;

            if (rule.GetType() == typeof(SubRuleInfo))
            {
                ruleName = ((SubRuleInfo)rule).SubRuleName;
            }
            else
            {
                ruleName = rule.RuleName;
            }

            Property pSospensioneFerialeTermini = this.FindProperty(Fields.SOSPENSIONE_FERIALE);

            if (pSospensioneFerialeTermini != null && pSospensioneFerialeTermini.Value != null)
            {
                return(this.AreEquals(pSospensioneFerialeTermini.Value.ToString(), "si"));
            }
            else
            {
                return(base.HasSospensioneFerialeTermini(rule));
            }
        }
예제 #29
0
        /// <summary>
        /// Reperimento dello stato di modifica del campo "Descrizione" dell'oggetto
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        protected virtual FieldStateTypesEnum GetDescriptionFieldState(BaseRuleInfo rule)
        {
            Property pDescription = new Property
            {
                Name  = "Description",
                Type  = PropertyTypesEnum.String,
                Value = this.ListenerRequest.EventInfo.PublishedObject.Description
            };

            RuleHistoryInfo lastExecutedRule = this.GetLastExecutedRule(rule);

            Property pOldDescription = new Property
            {
                Name = "Description",
                Type = PropertyTypesEnum.String
            };

            if (lastExecutedRule != null && lastExecutedRule.ObjectSnapshot != null)
            {
                pOldDescription.Value = lastExecutedRule.ObjectSnapshot.Description;
            }

            return(this.GetFieldState(pDescription, pOldDescription));
        }
예제 #30
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private static BaseRuleInfo UpdateRule(BaseRuleInfo data)
        {
            _logger.Info("BEGIN");

            try
            {
                Database db = DbHelper.CreateDatabase();

                using (DBCommandWrapper cw = db.GetStoredProcCommandWrapper(DbHelper.GetSpNameForPackage("UpdateRule")))
                {
                    cw.AddInParameter("pId", DbType.Int32, data.Id);
                    cw.AddInParameter("pDescription", DbType.String, data.RuleDescription);
                    cw.AddInParameter("pEnabled", DbType.StringFixedLength, (data.Enabled ? "1" : "0"));
                    cw.AddInParameter("pOptions", DbType.String, data.GetOptions());

                    if (data.GetType() == typeof(RuleInfo))
                    {
                        cw.AddInParameter("pClassId", DbType.String, ((RuleInfo)data).RuleClassFullName);
                    }
                    else
                    {
                        cw.AddInParameter("pClassId", DbType.String, DBNull.Value);
                    }

                    db.ExecuteNonQuery(cw);

                    if (cw.RowsAffected == 0)
                    {
                        throw new SubscriberException(ErrorCodes.SP_EXECUTION_ERROR,
                                                      string.Format(ErrorDescriptions.SP_EXECUTION_ERROR, "UpdateRule", ErrorDescriptions.SP_EXECUTE_NO_ROWS));
                    }
                    else
                    {
                        if (data.GetType() == typeof(RuleInfo))
                        {
                            RuleInfo ruleInfo = (RuleInfo)data;

                            List <SubRuleInfo> newSubRules = new List <SubRuleInfo>();

                            foreach (SubRuleInfo subRule in ruleInfo.SubRules)
                            {
                                newSubRules.Add((SubRuleInfo)UpdateRule(subRule));
                            }

                            ruleInfo.SubRulesList = newSubRules;
                        }
                    }
                }

                return(data);
            }
            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");
            }
        }