private static void Delete(Part part) { if (part == null) { throw new ApplicationException("Часть для удаления не выбрана"); } XDocument partList = XDocument.Load(Constants.PartsFileName); var items = from pt in partList.Element("Parts").Elements("Part") where Int32.Parse(pt.Element("ID").Value) == part.ID select pt; if (items.Count() == 0) { throw new ApplicationException("Критическая ошибка, не найден изменяемый элемент"); } if (items.Count() > 1) { throw new ApplicationException("Критическая ошибка, найдено несколько элементов для удаления. Это не должно было случиться!"); } XElement changedPart = items.First(); bool successfullRemove = false; foreach (var pt in partList.Element("Parts").Elements("Part")) { if (pt.Element("ID").Value == changedPart.Element("ID").Value) { pt.Remove(); successfullRemove = true; break; } } if (!successfullRemove) { throw new ApplicationException("Критическая ошибка, не удалось удалить часть"); } partList.Save(Constants.PartsFileName); IDGenerator.DeleteID(Int32.Parse(changedPart.Element("ID").Value)); }
private static void Delete(Chapter chapter) { try { XDocument chapterList = XDocument.Load(Constants.ChaptersFileName); var items = from chapt in chapterList.Root.Elements("Chapter") where Int32.Parse(chapt.Element("ID").Value) == chapter.ID select chapt; if (items.Count() == 0) { throw new ApplicationException("Критическая ошибка, не найден изменяемый элемент"); } if (items.Count() > 1) { throw new ApplicationException("Критическая ошибка, найдено несколько элементов для удаления. Это не должно было случиться!"); } XElement changedChapter = items.First(); foreach (var chapt in chapterList.Root.Elements("Chapter")) { if (chapt.Element("ID").Value == changedChapter.Element("ID").Value) { chapt.Remove(); break; } } chapterList.Save(Constants.ChaptersFileName); IDGenerator.DeleteID(Int32.Parse(changedChapter.Element("ID").Value)); } catch (ApplicationException ex) { throw new ApplicationException(ex.Message); } catch (Exception ex) { throw new Exception(ex.Message); } }