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);
        }
예제 #2
0
        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);
        }