예제 #1
0
        public async Task <BaseResponseMessage> RemovePublisher(Guid id)
        {
            var response = new BaseResponseMessage();

            var publisherToRemove = await _publisherRepository.GetPublisher(id);

            if (publisherToRemove == null)
            {
                response.RawData = $"Publisher with {id} wasn't found.";
                return(response);
            }

            var editionsToRemove = await _editionRepository.GetEditionsByBookOrPublisher(id);

            if (editionsToRemove != null)
            {
                editionsToRemove.ForEach(async e =>
                {
                    var covers = await _coverRepository.GetCoversByEdition(e.Id);

                    if (covers != null)
                    {
                        covers.ForEach(c => TryCleanUp(c.LinkTo));

                        await _coverRepository.RemoveCovers(covers);
                    }
                });

                await _editionRepository.RemoveEditions(editionsToRemove);
            }
            await _publisherRepository.RemovePublisher(publisherToRemove);

            response.Id = id;
            return(response);
        }
예제 #2
0
        public async Task <BaseResponseMessage> RemoveSeries(Guid id, bool removeBooks)
        {
            var response = new BaseResponseMessage();

            var seriesToRemove = await _seriesRepository.GetSeries(id);

            if (seriesToRemove == null)
            {
                response.RawData = $"Series with {id} wasn't found.";
                return(response);
            }

            if (removeBooks)
            {
                var editionsToRemove = await _editionRepository.GetEditionsByBookOrPublisher(id);

                if (editionsToRemove != null)
                {
                    editionsToRemove.ForEach(async e =>
                    {
                        var covers = await _coverRepository.GetCoversByEdition(e.Id);

                        if (covers != null)
                        {
                            covers.ForEach(c => TryCleanUp(c.LinkTo));

                            await _coverRepository.RemoveCovers(covers);
                        }
                    });

                    await _editionRepository.RemoveEditions(editionsToRemove);
                }

                if (seriesToRemove.BooksInSeries != null)
                {
                    //TODO: to check out
                    await _bookRepository.RemoveBooks(seriesToRemove.BooksInSeries.Select(x => x.Book));
                }
            }

            await _seriesRepository.RemoveSerires(seriesToRemove);

            response.Id = id;
            return(response);
        }