public bool RefreshEditionInfo(List <Edition> add, List <Edition> update, List <Tuple <Edition, Edition> > merge, List <Edition> delete, List <Edition> upToDate, List <Edition> remoteEditions, bool forceUpdateFileTags) { var updateList = new List <Edition>(); // for editions that need updating, just grab the remote edition and set db ids foreach (var edition in update) { var remoteEdition = remoteEditions.Single(e => e.ForeignEditionId == edition.ForeignEditionId); edition.UseMetadataFrom(remoteEdition); // make sure title is not null edition.Title = edition.Title ?? "Unknown"; updateList.Add(edition); } _editionService.DeleteMany(delete.Concat(merge.Select(x => x.Item1)).ToList()); _editionService.UpdateMany(updateList); var tagsToUpdate = updateList; if (forceUpdateFileTags) { _logger.Debug("Forcing tag update due to Author/Book/Edition updates"); tagsToUpdate = updateList.Concat(upToDate).ToList(); } _metadataTagService.SyncTags(tagsToUpdate); return(add.Any() || delete.Any() || updateList.Any() || merge.Any()); }
private void UpdateBook(BookResource bookResource) { var book = _bookService.GetBook(bookResource.Id); var model = bookResource.ToModel(book); _bookService.UpdateBook(model); _editionService.UpdateMany(model.Editions.Value); BroadcastResourceChange(ModelAction.Updated, model.Id); }
public ActionResult <BookResource> UpdateBook(BookResource bookResource) { var book = _bookService.GetBook(bookResource.Id); var model = bookResource.ToModel(book); _bookService.UpdateBook(model); _editionService.UpdateMany(model.Editions.Value); BroadcastResourceChange(ModelAction.Updated, model.Id); return(Accepted(model.Id)); }