/// <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(); } }
/// <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(); } }