public bool DeleteBook(int authorId, int id) { ValidateAuthor(authorId); var bookToDelete = authorsRepository.GetBooks().SingleOrDefault(b => b.Id == id); if (bookToDelete == null) { throw new NotFoundException("invalid book to delete"); } return(authorsRepository.DeleteBook(id)); }
public IEnumerable <Author> GetAuthors(string orderBy, bool showBooks) { orderBy = orderBy.ToLower(); if (!allowedOrderByQueries.Contains(orderBy)) { throw new InvalidOperationException($"Invalid \" {orderBy} \" orderBy query param. The allowed values are {string.Join(",", allowedOrderByQueries)}"); } var authors = authorsRepository.GetAuthors(); foreach (var author in authors) { if (showBooks) { author.books = authorsRepository.GetBooks().Where(b => b.AuthorId == author.Id); } else { author.books = null; } } switch (orderBy) { case "id": return(authors.OrderBy(a => a.Id)); case "name": return(authors.OrderBy(a => a.Name)); case "lastname": return(authors.OrderBy(a => a.LastName)); case "nationallity": return(authors.OrderBy(a => a.Name)); default: return(authors); } }