private object Import() { var resource = Request.Body.FromJson <List <AuthorResource> >(); var newAuthors = resource.ToModel(); return(_addAuthorService.AddAuthors(newAuthors).ToResource()); }
private List <Book> ProcessReports(List <ImportListItemInfo> reports) { var processed = new List <Book>(); var artistsToAdd = new List <Author>(); var albumsToAdd = new List <Book>(); _logger.ProgressInfo("Processing {0} list items", reports.Count); var reportNumber = 1; var listExclusions = _importListExclusionService.All(); foreach (var report in reports) { _logger.ProgressTrace("Processing list item {0}/{1}", reportNumber, reports.Count); reportNumber++; var importList = _importListFactory.Get(report.ImportListId); if (report.Book.IsNotNullOrWhiteSpace() || report.EditionGoodreadsId.IsNotNullOrWhiteSpace()) { if (report.EditionGoodreadsId.IsNullOrWhiteSpace() || report.AuthorGoodreadsId.IsNullOrWhiteSpace()) { MapAlbumReport(report); } ProcessAlbumReport(importList, report, listExclusions, albumsToAdd); } else if (report.Author.IsNotNullOrWhiteSpace() || report.AuthorGoodreadsId.IsNotNullOrWhiteSpace()) { if (report.AuthorGoodreadsId.IsNullOrWhiteSpace()) { MapArtistReport(report); } ProcessArtistReport(importList, report, listExclusions, artistsToAdd); } } var addedArtists = _addAuthorService.AddAuthors(artistsToAdd, false); var addedAlbums = _addBookService.AddBooks(albumsToAdd, false); var message = string.Format($"Import List Sync Completed. Items found: {reports.Count}, Authors added: {artistsToAdd.Count}, Books added: {albumsToAdd.Count}"); _logger.ProgressInfo(message); var toRefresh = addedArtists.Select(x => x.Id).Concat(addedAlbums.Select(x => x.Author.Value.Id)).Distinct().ToList(); if (toRefresh.Any()) { _commandQueueManager.Push(new BulkRefreshAuthorCommand(toRefresh, true)); } return(processed); }