internal bool UpdateSingleProgrammingAction(ProgrammingActionType type, ProgrammingActionState state, bool executed)
 {
     using (IEnumerator <ProgrammingAction> enumerator = this.programmingActionList.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             ProgrammingAction programmingAction = enumerator.Current;
             if (programmingAction.Type == type)
             {
                 programmingAction.UpdateState(state, executed);
                 return(true);
             }
         }
         return(false);
     }
 }
        internal void UpdateProgrammingActions(IEnumerable <IPsdzTalLine> talLines, bool isTalExecuted, int escalationSteps = 0)
        {
            IDictionary <ProgrammingActionType, ICollection <IPsdzTalLine> > dictionary = new Dictionary <ProgrammingActionType, ICollection <IPsdzTalLine> >();

            foreach (IPsdzTalLine psdzTalLine in talLines)
            {
                foreach (ProgrammingActionType key in EcuProgrammingInfo.MapProgrammingActionType(psdzTalLine))
                {
                    if (dictionary.ContainsKey(key))
                    {
                        dictionary[key].Add(psdzTalLine);
                    }
                    else
                    {
                        dictionary.Add(key, new List <IPsdzTalLine>
                        {
                            psdzTalLine
                        });
                    }
                }
            }
            foreach (ProgrammingActionType programmingActionType in dictionary.Keys)
            {
                ProgrammingAction programmingAction = this.GetProgrammingAction(programmingActionType) as ProgrammingAction;
                if (programmingAction != null)
                {
                    if (isTalExecuted)
                    {
                        programmingAction.Update(dictionary[programmingActionType], escalationSteps);
                    }
                    else
                    {
                        programmingAction.UpdateState(dictionary[programmingActionType]);
                    }
                }
            }
        }