Exemple #1
0
        public async Task <AssetViewModel> AddAssetAsync(Guid userId, AssetCreateModel createModel)
        {
            Money money = new Money(createModel.Value, createModel.Currency);
            Asset asset = await _assetRepository.CreateAsync(userId, createModel.Name, money, createModel.IsActive, DateTime.UtcNow);

            await _unitOfWork.SaveChangesAsync();

            AssetViewModel result = new AssetViewModel(asset);

            return(result);
        }
Exemple #2
0
        public async Task <IActionResult> UploadAsync(List <IFormFile> files, string container = "")
        {
            var response = new List <AssetUploadResponse>();

            TotalSize = files.Sum(f => f.Length);

            if (container.HasValue())
            {
                CloudContainerName = container;
            }

            foreach (var file in files)
            {
                if (file.Length == 0)
                {
                    continue;
                }

                var assetDirectory = _settings.CurrentValue.AssetDirectory;
                var assetWebPath   = _settings.CurrentValue.AssetWebPath;
                FileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                FileName = (!string.IsNullOrWhiteSpace(FileName)) ? FileName : Convert.ToString(Guid.NewGuid());
                FilePath = Path.Combine(assetDirectory, FileName);

                var uploadRequest = new AssetUploadRequest()
                {
                    ContainerName = CloudContainerName,
                    File          = file,
                    FileName      = this.FileName,
                    FilePath      = this.FilePath
                };

                //TODO: TryGetAudioAsset(out AudioAsset audio), TryGetVideoAsset(out VideoAsset video)

                if (file.TryGetImageAsset(out ImageAsset image))
                {
                    // save the file to storage
                    var saveImageAsset = await _assetStorageService.SaveAssetAsync(uploadRequest);

                    if (saveImageAsset != AssetUploadResult.Success)
                    {
                        continue;
                    }

                    // save image metadata to data store
                    image.FileName    = this.FileName;
                    image.ContentType = file.ContentType.ToLower();
                    image.DateCreated = DateTime.UtcNow;
                    image.CreatedBy   = UserID;

                    var imageID = await _imageRepository.CreateAsync(image, UserID);

                    // return upload report to client
                    var imageAssetResponse = new AssetUploadResponse()
                    {
                        ID       = imageID,
                        FileName = this.FileName,
                        Size     = file.Length,
                        Uri      = file.GetAssetUri(assetWebPath, this.FileName)
                    };

                    response.Add(imageAssetResponse);
                }
                else
                {
                    // save the file to storage
                    var saveAsset = await _assetStorageService.SaveAssetAsync(uploadRequest);

                    if (saveAsset != AssetUploadResult.Success)
                    {
                        continue;
                    }

                    // save file metadata to data store
                    var asset = new Asset()
                    {
                        FileName    = this.FileName,
                        ContentType = file.ContentType.ToLower(),
                        DateCreated = DateTime.UtcNow,
                        CreatedBy   = UserID
                    };

                    var assetID = await _assetRepository.CreateAsync(asset, UserID);

                    // return upload report to client
                    var assetResponse = new AssetUploadResponse()
                    {
                        ID       = assetID,
                        FileName = this.FileName,
                        Size     = file.Length,
                        Uri      = file.GetAssetUri(assetWebPath, this.FileName)
                    };

                    response.Add(assetResponse);
                }
            }

            var assetUri = HttpUtility.UrlEncode(response[0].Uri, System.Text.Encoding.UTF8);

            return(Created(assetUri, response));
        }