public async Task <string> SaveAsync(FileModel file, Guid campaignContentId)
        {
            var shouldBeSaved = ImageContentTypes.Contains(file.Type);

            if (shouldBeSaved)
            {
                var info = await _fileInfoRepository.GetAsync(campaignContentId.ToString());

                file.Name = GenerateRuleContentImageFileName(file.Type);

                if (info != null)
                {
                    await _fileRepository.DeleteAsync(info.Name);

                    await _fileInfoRepository.DeleteAsync(campaignContentId.ToString());
                }

                await _fileInfoRepository.InsertAsync(file, campaignContentId);

                await _fileRepository.InsertAsync(file.Content, file.Name);
            }
            else
            {
                _log.Warning($"{file.Type} is not supported file type");

                return(null);
            }

            return(await _fileRepository.GetBlobUrl(file.Name));
        }
Пример #2
0
        public async Task SaveAsync(string merchantId, IFormFile file)
        {
            byte[] content;
            byte[] merchantLogoBytes    = new byte[] { };
            bool   isCreateMerchantLogo = ImageContentTypes.Contains(file.ContentType);

            using (var ms = new System.IO.MemoryStream())
            {
                file.CopyTo(ms);
                content = ms.ToArray();

                if (isCreateMerchantLogo)
                {
                    var img = new Image(ms);

                    var result = img.Resize(new ResizeOptions
                    {
                        Mode = ResizeMode.Max,
                        Size = new Size(_merchantSettings.LogoSize, _merchantSettings.LogoSize * img.Width / img.Height)
                    });

                    using (var outStream = new System.IO.MemoryStream())
                    {
                        if (file.ContentType == PngContentType)
                        {
                            result.SaveAsPng(outStream);
                        }
                        else
                        {
                            result.SaveAsJpeg(outStream);
                        }

                        merchantLogoBytes = outStream.ToArray();
                    }
                }
            }

            var fileInfo = new FileInfo
            {
                MerchantId = merchantId,
                Type       = file.ContentType,
                Name       = file.FileName,
                Size       = (int)file.Length
            };

            string fileId = await _fileInfoRepository.InsertAsync(fileInfo);

            await _fileRepository.InsertAsync(content, fileId);

            if (isCreateMerchantLogo)
            {
                await _fileRepository.InsertAsync(merchantLogoBytes, GetMerchantLogoFileName(fileId, merchantId, file.ContentType));
            }
        }
Пример #3
0
        public async Task SaveAsync(FileInfo fileInfo, byte[] content)
        {
            string fileId = await _fileInfoRepository.InsertAsync(fileInfo);

            await _fileRepository.InsertAsync(content, fileId);
        }