/// <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()); }
/// <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"); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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"); } }
/// <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); } }
/// <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"); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
public SubRuleInfo SaveSubRule(SubRuleInfo subRule) { return(DataAccess.RuleDataAdapter.SaveSubRule(subRule)); }