public void Update(Guid paragraphId, Paragraph newParagraphData) { if (ParagraphRepository.Exists(paragraphId)) { Paragraph paragraphToUpdate = ParagraphRepository.GetById(paragraphId); if (paragraphToUpdate.Position != newParagraphData.Position) { IEnumerable <Paragraph> paragraphsInDocument = ParagraphRepository.GetAllByDocument(paragraphToUpdate.DocumentThatBelongs.Id); int newPosition = newParagraphData.Position; int maxPosition = paragraphsInDocument.Count() - 1; if (newPosition > maxPosition || newPosition < 0) { throw new InvalidPositionException("This position is not valid for the document in question."); } else { Paragraph swappedParagraph = paragraphsInDocument.First(p => p.Position == newPosition); swappedParagraph.Position = paragraphToUpdate.Position; ParagraphRepository.Update(swappedParagraph); paragraphToUpdate.Position = newPosition; } } if (newParagraphData.StyleClass != null && !StyleClassRepository.Exists(newParagraphData.StyleClass.Name)) { newParagraphData.StyleClass = null; } paragraphToUpdate.StyleClass = newParagraphData.StyleClass; ParagraphRepository.Update(paragraphToUpdate); } else { throw new MissingParagraphException("This paragraph is not in the database."); } }
public void Delete(Guid paragraphId) { if (ParagraphRepository.Exists(paragraphId)) { Paragraph paragraphToDelete = ParagraphRepository.GetById(paragraphId); IEnumerable <Paragraph> paragraphsInDocument = ParagraphRepository.GetAllByDocument(paragraphToDelete.DocumentThatBelongs.Id); foreach (Paragraph paragraphInDocument in paragraphsInDocument) { if (paragraphInDocument.Position > paragraphToDelete.Position) { paragraphInDocument.Position--; ParagraphRepository.Update(paragraphInDocument); } } ParagraphRepository.Delete(paragraphId); } else { throw new MissingParagraphException("This paragraph is not in the database"); } }