Ejemplo n.º 1
0
 /// <summary>
 /// Removes an amentment from its list. Note that this is not the same
 /// as Deny. This will just remove the given instance of the amendment.
 /// </summary>
 /// <param name="section"></param>
 /// <param name="amendment"></param>
 public static void RemoveAmendment(this OperativeSection section, AbstractAmendment amendment)
 {
     if (amendment is AddAmendment addAmendment)
     {
         section.AddAmendments.RemoveAll(n => n.TargetSectionId == amendment.TargetSectionId);
         section.Paragraphs.RemoveAll(n => n.OperativeParagraphId == amendment.TargetSectionId);
     }
     else if (amendment is ChangeAmendment changeAmendment)
     {
         section.ChangeAmendments.Remove(changeAmendment);
     }
     else if (amendment is DeleteAmendment deleteAmendment)
     {
         section.DeleteAmendments.Remove(deleteAmendment);
     }
     else if (amendment is MoveAmendment moveAmendment)
     {
         section.MoveAmendments.Remove(moveAmendment);
         section.Paragraphs.RemoveAll(n => moveAmendment.NewTargetSectionId == n.OperativeParagraphId);
     }
     else
     {
         throw new MUNity.Exceptions.Resolution.UnsupportedAmendmentTypeException();
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds a new Amendment into the Amendment list.
        /// </summary>
        /// <param name="section"></param>
        /// <param name="amendment"></param>
        private static void PushAmendment(this OperativeSection section, AbstractAmendment amendment)
        {
            // For now every Amendment has a TargetSectionId this could maybe be different one day
            // Remember to move this function if this day ever comes.
            if (section.FirstOrDefault(n => n.OperativeParagraphId == amendment.TargetSectionId) == null)
            {
                throw new MUNity.Exceptions.Resolution.OperativeParagraphNotFoundException();
            }

            if (amendment is AddAmendment addAmendment)
            {
                section.AddAmendments.Add(addAmendment);
            }
            else if (amendment is ChangeAmendment changeAmendment)
            {
                section.ChangeAmendments.Add(changeAmendment);
            }
            else if (amendment is DeleteAmendment deleteAmendment)
            {
                section.DeleteAmendments.Add(deleteAmendment);
            }
            else if (amendment is MoveAmendment moveAmendment)
            {
                section.MoveAmendments.Add(moveAmendment);
            }
            else
            {
                throw new MUNity.Exceptions.Resolution.UnsupportedAmendmentTypeException();
            }
        }