public async Task <bool> DeleteProjectVersionPackageAsync(Guid projectId, string version)
        {
            var projectVersion = await _context.DocumentationProjectVersions
                                 .FirstOrDefaultAsync(v => v.Version == version && v.Project.Id == projectId);

            if (projectVersion == null)
            {
                return(false);
            }

            var metadataPath = GetMetadataSavedFilesPath(projectId, projectVersion.FileId);

            try
            {
                using (var metadataStream = (await _fileManager.GetFileAsync(AppConstants.PROJECTS_CONTAINER, metadataPath)).Value)
                {
                    using (var streamReader = new StreamReader(metadataStream))
                    {
                        var json = await streamReader.ReadToEndAsync();

                        var filePaths = JsonConvert.DeserializeObject <List <string> >(json);
                        foreach (var filePath in filePaths)
                        {
                            await _fileManager.DeleteFileAsync(AppConstants.PROJECTS_CONTAINER, filePath);
                        }
                        _context.DocumentationProjectVersions.Remove(projectVersion);
                        await _context.SaveChangesAsync();

                        return(true);
                    }
                }
            }
            catch
            {
                return(false);
            }
        }
Пример #2
0
        public async Task <bool> DeleteProjectVersionPackageAsync(Guid projectId, string version)
        {
            var projectVersion = await _context.DocumentationProjectVersions
                                 .FirstOrDefaultAsync(v => v.Version == version && v.Project.Id == projectId);

            if (projectVersion == null)
            {
                return(false);
            }
            var packagePath = GetPackagePath(projectId, projectVersion.FileId);

            try
            {
                await _fileManager.DeleteFileAsync(AppConstants.PROJECTS_CONTAINER, packagePath);
            }
            catch
            {
                return(false);
            }
            _context.DocumentationProjectVersions.Remove(projectVersion);
            await _context.SaveChangesAsync();

            return(true);
        }