public Asset CreateAsset(Asset asset, IFormFile file, string driveName) { AssetNameAvailability(asset); if (asset.Type == "Text") { asset.SizeInBytes = System.Text.Encoding.Unicode.GetByteCount(asset.TextValue); } else if (asset.Type == "Number") { asset.SizeInBytes = System.Text.Encoding.Unicode.GetByteCount(asset.NumberValue.ToString()); } else if (asset.Type == "Json") { asset.SizeInBytes = System.Text.Encoding.Unicode.GetByteCount(asset.JsonValue); } else if (asset.Type == "File") { if (driveName != "Files" && !string.IsNullOrEmpty(driveName)) { throw new EntityOperationException("Component files can only be saved in the Files drive"); } else if (string.IsNullOrEmpty(driveName)) { driveName = "Files"; } if (file != null) { IFormFile[] fileArray = { file }; asset.Id = Guid.NewGuid(); var fileView = new FileFolderViewModel() { ContentType = file.ContentType, Files = fileArray, StoragePath = Path.Combine(driveName, "Assets", asset.Id.ToString()), IsFile = true }; var request = new AgentAssetViewModel(); request = request.Map(asset, file, driveName); CheckStoragePathExists(fileView, request); fileView = _fileManager.AddFileFolder(fileView, driveName)[0]; asset.FileId = fileView.Id; asset.SizeInBytes = file.Length; } else { throw new EntityDoesNotExistException("File does not exist"); } } return(asset); }
public Asset CreateAsset(Asset asset, IFormFile file, string driveId = null) { AssetNameAvailability(asset); if (asset.Type == "Text") { asset.SizeInBytes = System.Text.Encoding.Unicode.GetByteCount(asset.TextValue); } else if (asset.Type == "Number") { asset.SizeInBytes = System.Text.Encoding.Unicode.GetByteCount(asset.NumberValue.ToString()); } else if (asset.Type == "Json") { asset.SizeInBytes = System.Text.Encoding.Unicode.GetByteCount(asset.JsonValue); } else if (asset.Type == "File") { var drive = new StorageDrive(); if (string.IsNullOrEmpty(driveId)) { drive = _storageDriveRepository.Find(null).Items.Where(q => q.IsDefault == true).FirstOrDefault(); } else { drive = _fileManager.GetDriveById(driveId); } if (drive == null) { throw new EntityDoesNotExistException("Default drive could not be found or does not exist"); } else { driveId = drive.Id.ToString(); } if (file != null) { IFormFile[] fileArray = { file }; asset.Id = Guid.NewGuid(); string shortPath = Path.Combine(drive.Name, "Assets"); var fileView = new FileFolderViewModel() { ContentType = file.ContentType, Files = fileArray, StoragePath = shortPath, IsFile = true }; var request = new AgentAssetViewModel(); request = request.Map(asset, file, drive.Id); CheckStoragePathExists(fileView, request, true, drive); fileView.StoragePath = Path.Combine(shortPath, asset.Id.ToString()); CheckStoragePathExists(fileView, request, true, drive); fileView = _fileManager.AddFileFolder(fileView, driveId)[0]; asset.FileId = fileView.Id; asset.SizeInBytes = file.Length; } else { throw new EntityDoesNotExistException("File does not exist"); } } return(asset); }