Exemplo n.º 1
0
        public async Task <OperationResult <bool> > DeleteArtistReleases(ApplicationUser user, Guid artistId,
                                                                         bool doDeleteFiles = false)
        {
            var sw = new Stopwatch();

            sw.Start();
            var errors = new List <Exception>();
            var artist = DbContext.Artists.FirstOrDefault(x => x.RoadieId == artistId);

            if (artist == null)
            {
                await LogAndPublish($"DeleteArtistReleases Unknown Artist [{artistId}]", LogLevel.Warning);

                return(new OperationResult <bool>(true, $"Artist Not Found [{artistId}]"));
            }

            try
            {
                await ReleaseFactory.DeleteReleases(
                    DbContext.Releases.Where(x => x.ArtistId == artist.Id).Select(x => x.RoadieId).ToArray(),
                    doDeleteFiles);

                await DbContext.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                Logger.LogError(ex);
                await LogAndPublish("Error deleting artist.");

                errors.Add(ex);
            }

            sw.Stop();
            await LogAndPublish($"DeleteArtistReleases `{artist}`, By User `{user}`", LogLevel.Information);

            return(new OperationResult <bool>
            {
                IsSuccess = !errors.Any(),
                Data = true,
                OperationTime = sw.ElapsedMilliseconds,
                Errors = errors
            });
        }