public static DigitalAssetDto ToDto(this DigitalAsset digitalAsset)
 {
     return(new ()
     {
         DigitalAssetId = digitalAsset.DigitalAssetId
     });
 }
        public static TModel FromDigitalAsset <TModel>(DigitalAsset digitalAsset) where
        TModel : DigitalAssetApiModel, new()
        {
            var model = new TModel();

            model.Id = digitalAsset.Id;

            model.Url = digitalAsset.Url;

            model.Bytes = digitalAsset.Bytes;

            model.Folder = digitalAsset.Folder;

            model.Name = digitalAsset.Name;

            model.FileName = digitalAsset.FileName;

            model.Description = digitalAsset.Description;

            model.Created = digitalAsset.Created;

            model.FileModified = digitalAsset.FileModified;

            model.Size = digitalAsset.Size;

            model.ContentType = digitalAsset.ContentType;

            model.UniqueId = digitalAsset.UniqueId;

            model.CreatedOn = digitalAsset.CreatedOn;

            model.CreatedBy = digitalAsset.CreatedBy;

            return(model);
        }
Exemple #3
0
            public async Task <UploadDigitalAssetResponse> Handle(UploadDigitalAssetRequest request)
            {
                NameValueCollection formData      = request.Provider.FormData;
                IList <HttpContent> files         = request.Provider.Files;
                List <DigitalAsset> digitalAssets = new List <DigitalAsset>();

                foreach (var file in files)
                {
                    var filename = new FileInfo(file.Headers.ContentDisposition.FileName.Trim(new char[] { '"' })
                                                .Replace("&", "and")).Name;
                    Stream stream = await file.ReadAsStreamAsync();

                    var bytes        = StreamHelper.ReadToEnd(stream);
                    var digitalAsset = new DigitalAsset();
                    digitalAsset.FileName    = filename;
                    digitalAsset.Bytes       = bytes;
                    digitalAsset.ContentType = System.Convert.ToString(file.Headers.ContentType);
                    _context.DigitalAssets.Add(digitalAsset);
                    digitalAssets.Add(digitalAsset);
                }

                await _context.SaveChangesAsync();

                _cache.Add(null, DigitalAssetCacheKeys.DigitalAssets);

                return(new UploadDigitalAssetResponse()
                {
                    DigitalAssets = digitalAssets.Select(x => DigitalAssetApiModel.FromDigitalAsset(x)).ToList()
                });
            }
Exemple #4
0
 public static DigitalAssetApiModel FromDigitalAsset(DigitalAsset digitalAsset)
 => new DigitalAssetApiModel
 {
     DigitalAssetId = digitalAsset.DigitalAssetId,
     Name           = digitalAsset.Name,
     Bytes          = digitalAsset.Bytes,
     ContentType    = digitalAsset.ContentType
 };
 public static DigitalAssetDto ToDto(this DigitalAsset digitalAsset)
 => new DigitalAssetDto
 {
     DigitalAssetId = digitalAsset.DigitalAssetId,
     Name           = digitalAsset.Name,
     Bytes          = digitalAsset.Bytes,
     ContentType    = digitalAsset.ContentType
 };
        public static DigitalAssetApiModel FromDigitalAsset(DigitalAsset digitalAsset)
        {
            var model = new DigitalAssetApiModel();

            model.DigitalAssetId = digitalAsset.DigitalAssetId;
            model.Name           = digitalAsset.Name;
            return(model);
        }
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var httpContext        = _httpContextAccessor.HttpContext;
                var defaultFormOptions = new FormOptions();
                var digitalAssets      = new List <DigitalAsset>();

                if (!MultipartRequestHelper.IsMultipartContentType(httpContext.Request.ContentType))
                {
                    throw new Exception($"Expected a multipart request, but got {httpContext.Request.ContentType}");
                }

                var mediaTypeHeaderValue = MediaTypeHeaderValue.Parse(httpContext.Request.ContentType);

                var boundary = MultipartRequestHelper.GetBoundary(
                    mediaTypeHeaderValue,
                    defaultFormOptions.MultipartBoundaryLengthLimit);

                var reader = new MultipartReader(boundary, httpContext.Request.Body);

                var section = await reader.ReadNextSectionAsync();

                while (section != null)
                {
                    DigitalAsset digitalAsset = default;

                    var hasContentDispositionHeader = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out ContentDispositionHeaderValue contentDisposition);

                    if (hasContentDispositionHeader)
                    {
                        if (MultipartRequestHelper.HasFileContentDisposition(contentDisposition))
                        {
                            using (var targetStream = new MemoryStream())
                            {
                                await section.Body.CopyToAsync(targetStream);

                                var name        = $"{contentDisposition.FileName}".Trim(new char[] { '"' }).Replace("&", "and");
                                var bytes       = StreamHelper.ReadToEnd(targetStream);
                                var contentType = section.ContentType;

                                digitalAsset = new DigitalAsset(name, bytes, contentType);
                            }
                        }
                    }

                    _context.DigitalAssets.Add(digitalAsset);

                    digitalAssets.Add(digitalAsset);

                    section = await reader.ReadNextSectionAsync();
                }

                await _context.SaveChangesAsync(cancellationToken);

                return(new()
                {
                    DigitalAssetIds = digitalAssets.Select(x => x.DigitalAssetId).ToList()
                });
            }
 public static DigitalAssetDto ToDto(this DigitalAsset digitalAsset)
 {
     return(new()
     {
         DigitalAssetId = digitalAsset.DigitalAssetId,
         Bytes = digitalAsset.Bytes,
         ContentType = digitalAsset.ContentType,
         Name = digitalAsset.Name
     });
 }
Exemple #9
0
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var digitalAssets = new HashSet <DigitalAssetApiModel>();

                if (!MultipartRequestHelper.IsMultipartContentType(_httpContext.Request.ContentType))
                {
                    throw new Exception($"Expected a multipart request, but got {_httpContext.Request.ContentType}");
                }

                var boundary = MultipartRequestHelper.GetBoundary(
                    MediaTypeHeaderValue.Parse(_httpContext.Request.ContentType),
                    _defaultFormOptions.MultipartBoundaryLengthLimit);
                var reader = new MultipartReader(boundary, _httpContext.Request.Body);

                var section = await reader.ReadNextSectionAsync();

                while (section != null)
                {
                    ContentDispositionHeaderValue contentDisposition;
                    var hasContentDispositionHeader = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out contentDisposition);

                    if (hasContentDispositionHeader)
                    {
                        if (MultipartRequestHelper.HasFileContentDisposition(contentDisposition))
                        {
                            using (var targetStream = new MemoryStream())
                            {
                                await section.Body.CopyToAsync(targetStream);

                                var bytes  = StreamHelper.ReadToEnd(targetStream);
                                var tenant = await _context.Tenants.FindAsync(new Guid(_httpContext.Request.GetHeaderValue("Tenant")));

                                var digitalAsset = new DigitalAsset();
                                digitalAsset.Tenant      = tenant;
                                digitalAsset.FileName    = $"{contentDisposition.FileName}".Trim(new char[] { '"' }).Replace("&", "and");
                                digitalAsset.Name        = digitalAsset.FileName;
                                digitalAsset.Bytes       = bytes;
                                digitalAsset.ContentType = section.ContentType;
                                digitalAsset.UploadedOn  = DateTime.UtcNow;
                                _context.DigitalAssets.Add(digitalAsset);
                                await _context.SaveChangesAsync(cancellationToken, request.Username);

                                digitalAssets.Add(DigitalAssetApiModel.FromDigitalAsset(digitalAsset));
                            }
                        }
                    }

                    section = await reader.ReadNextSectionAsync();
                }

                return(new Response()
                {
                });
            }
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var digitalAsset = await _context.DigitalAssets.FindAsync(request.DigitalAsset.DigitalAssetId);

                if (digitalAsset == null)
                {
                    _context.DigitalAssets.Add(digitalAsset = new DigitalAsset(request.DigitalAsset.Name));
                }

                await _context.SaveChangesAsync(cancellationToken);

                return(new() { DigitalAssetId = digitalAsset.DigitalAssetId });
            }
Exemple #11
0
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var digitalAsset = new DigitalAsset();

                _context.DigitalAssets.Add(digitalAsset);

                await _context.SaveChangesAsync(cancellationToken);

                return(new Response()
                {
                    DigitalAsset = digitalAsset.ToDto()
                });
            }
Exemple #12
0
        public DigitalAddOrUpdateResponseDto AddOrUpdate(DigitalAssetAddOrUpdateRequestDto request)
        {
            var entity = _repository.GetAll()
                         .FirstOrDefault(x => x.Id == request.Id && x.IsDeleted == false);

            if (entity == null)
            {
                _repository.Add(entity = new DigitalAsset());
            }
            entity.Name = request.Name;
            uow.SaveChanges();
            return(new DigitalAddOrUpdateResponseDto(entity));
        }
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var photographer = await _context.FindAsync <Photographer>(request.PhotographerId);

                var digitalAsset = (await DigitalAsset.Upload(_httpContextAccessor, _context, cancellationToken)).Single();

                photographer.ChangeAvatar(digitalAsset.DigitalAssetId);

                await _context.SaveChangesAsync(cancellationToken);

                return(new Response()
                {
                    DigitalAssetId = digitalAsset.DigitalAssetId
                });
            }
            public async Task <Response> Handle(Request request)
            {
                var entity = await _context.DigitalAssets
                             .SingleOrDefaultAsync(x => x.Id == request.DigitalAsset.Id && x.IsDeleted == false);

                if (entity == null)
                {
                    _context.DigitalAssets.Add(entity = new DigitalAsset());
                }
                entity.Name   = request.DigitalAsset.Name;
                entity.Folder = request.DigitalAsset.Folder;
                await _context.SaveChangesAsync();

                return(new Response()
                {
                });
            }
Exemple #15
0
            public async Task <UploadDigitalAssetResponse> Handle(Request request)
            {
                var tenant = _context.Tenants.Where(x => x.UniqueId == request.TenantUniqueId).Single();
                var user   = _context.Users
                             .Include(x => x.Tenant)
                             .Where(x => x.Username == request.Username)
                             .Single();

                NameValueCollection formData      = request.Provider.FormData;
                IList <HttpContent> files         = request.Provider.Files;
                List <DigitalAsset> digitalAssets = new List <DigitalAsset>();

                foreach (var file in files)
                {
                    var filename = new FileInfo(file.Headers.ContentDisposition.FileName.Trim(new char[] { '"' })
                                                .Replace("&", "and")).Name;
                    Stream stream = await file.ReadAsStreamAsync();

                    var bytes        = StreamHelper.ReadToEnd(stream);
                    var digitalAsset = new DigitalAsset();
                    digitalAsset.FileName    = filename;
                    digitalAsset.Bytes       = bytes;
                    digitalAsset.IsSecure    = request.IsSecure;
                    digitalAsset.Tenant      = tenant;
                    digitalAsset.ContentType = $"{file.Headers.ContentType}";
                    digitalAsset.UploadedOn  = DateTime.UtcNow;
                    digitalAsset.UploadedBy  = user.Name;
                    digitalAsset.Size        = $"{Math.Round(ByteSize.FromBytes(Convert.ToDouble(digitalAsset.Bytes.Length)).KiloBytes, 1)} KB";
                    _context.DigitalAssets.Add(digitalAsset);
                    digitalAssets.Add(digitalAsset);
                }

                await _context.SaveChangesAsync(request.Username);

                _cache.Remove(DigitalAssetsCacheKeyFactory.Get(request.TenantUniqueId));

                return(new UploadDigitalAssetResponse()
                {
                    DigitalAssets = digitalAssets.Select(x => DigitalAssetApiModel.FromDigitalAsset(x)).ToList()
                });
            }
Exemple #16
0
        public static DigitalAssetApiModel FromDigitalAsset(DigitalAsset digitalAsset)
        {
            var model = new DigitalAssetApiModel();

            model.DigitalAssetId = digitalAsset.DigitalAssetId;
            model.Folder         = digitalAsset.Folder;
            model.Name           = digitalAsset.Name;
            model.FileName       = digitalAsset.FileName;
            model.Description    = digitalAsset.Description;
            model.Created        = digitalAsset.Created;
            model.FileModified   = digitalAsset.FileModified;
            model.Size           = digitalAsset.Size;
            model.Bytes          = digitalAsset.Bytes;
            model.ContentType    = digitalAsset.ContentType;
            model.IsSecure       = digitalAsset.IsSecure;
            model.CreatedOn      = digitalAsset.CreatedOn;
            model.CreatedBy      = digitalAsset.CreatedBy;
            model.UploadedOn     = string.Format("{0:yyyy-MM-dd HH:mm}", digitalAsset.UploadedOn);
            model.UploadedBy     = digitalAsset.UploadedBy;
            return(model);
        }
Exemple #17
0
    /// <summary>
    /// Event fierd when submit button is triggered.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        ProductAdmin AdminAccess = new ProductAdmin();

        DigitalAsset entity = new DigitalAsset();
        entity.DigitalAsset = txtDigitalAsset.Text.Trim();
        entity.ProductID = ItemId;
        entity.OrderLineItemID = null;

        bool Check = AdminAccess.AddDigitalAsset(entity);

        if (Check)
        {
            Response.Redirect("~/admin/secure/catalog/product/view.aspx?mode=digitalAsset&itemid=" + ItemId);
        }
        else
        {
            lblMsg.Text = "Could not add the product category. Please try again.";
            return;
        }
    }
Exemple #18
0
        public async Task <HttpResponseMessage> Upload(HttpRequestMessage request)
        {
            var digitalAssets = new List <DigitalAsset>();

            try
            {
                if (!Request.Content.IsMimeMultipartContent("form-data"))
                {
                    throw new HttpResponseException(HttpStatusCode.BadRequest);
                }

                var provider = await Request.Content.ReadAsMultipartAsync(new InMemoryMultipartFormDataStreamProvider());

                NameValueCollection formData = provider.FormData;
                IList <HttpContent> files    = provider.Files;

                foreach (var file in files)
                {
                    var filename = new FileInfo(file.Headers.ContentDisposition.FileName.Trim(new char[] { '"' })
                                                .Replace("&", "and")).Name;
                    Stream stream = await file.ReadAsStreamAsync();

                    var bytes        = StreamHelper.ReadToEnd(stream);
                    var digitalAsset = new DigitalAsset();
                    digitalAsset.FileName    = filename;
                    digitalAsset.Bytes       = bytes;
                    digitalAsset.ContentType = System.Convert.ToString(file.Headers.ContentType);
                    _repository.Add(digitalAsset);
                    digitalAssets.Add(digitalAsset);
                }

                _uow.SaveChanges();
            }
            catch (Exception exception)
            {
                var e = exception;
            }

            return(Request.CreateResponse(HttpStatusCode.OK, new DigitalAssetUploadResponseDto(digitalAssets)));
        }
            public async Task <Response> Handle(Request request, CancellationToken cancellationToken)
            {
                var digitalAsset = await _context.DigitalAssets.FindAsync(request.DigitalAsset.DigitalAssetId);

                if (digitalAsset == null)
                {
                    digitalAsset = new DigitalAsset();
                    await _context.DigitalAssets.AddAsync(digitalAsset);
                }

                digitalAsset.DigitalAssetId = request.DigitalAsset.DigitalAssetId;
                digitalAsset.Name           = request.DigitalAsset.Name;
                digitalAsset.Bytes          = request.DigitalAsset.Bytes;
                digitalAsset.ContentType    = request.DigitalAsset.ContentType;

                await _context.SaveChangesAsync(cancellationToken);

                return(new Response()
                {
                    DigitalAsset = digitalAsset.ToDto()
                });
            }
Exemple #20
0
        public async Task <DigitalAssetUploadResponseDto> Upload(NameValueCollection formData, IList <HttpContent> files)
        {
            var digitalAssets = new List <DigitalAsset>();

            foreach (var file in files)
            {
                var filename = new FileInfo(file.Headers.ContentDisposition.FileName.Trim(new char[] { '"' })
                                            .Replace("&", "and")).Name;
                Stream stream = await file.ReadAsStreamAsync();

                var bytes        = StreamHelper.ReadToEnd(stream);
                var digitalAsset = new DigitalAsset();
                digitalAsset.FileName    = filename;
                digitalAsset.Bytes       = bytes;
                digitalAsset.ContentType = System.Convert.ToString(file.Headers.ContentType);
                _repository.Add(digitalAsset);
                digitalAssets.Add(digitalAsset);
            }

            _uow.SaveChanges();

            return(new DigitalAssetUploadResponseDto(digitalAssets));
        }
Exemple #21
0
        public HttpResponseMessage Serve([FromUri] Guid uniqueId, int?height = null)
        {
            DigitalAsset        photo  = _cache.FromCacheOrService(() => _repository.GetAll().FirstOrDefault(x => x.UniqueId == uniqueId), uniqueId.ToString());
            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);

            if (photo == null)
            {
                return(result);
            }
            var memoryStream = new System.IO.MemoryStream(photo.Bytes);

            System.Drawing.Image fullsizeImage = FromStream(memoryStream);
            height = height.HasValue ? height : fullsizeImage.Height;
            var ratio = (float)height.Value / (float)fullsizeImage.Height;
            var width = fullsizeImage.Width * ratio;

            System.Drawing.Image newImage = fullsizeImage.GetThumbnailImage((int)width, height.Value, null, IntPtr.Zero);
            var myResult = new System.IO.MemoryStream();

            newImage.Save(myResult, fullsizeImage.RawFormat);
            result.Content = new ByteArrayContent(myResult.ToArray());
            result.Content.Headers.ContentType = new MediaTypeHeaderValue(photo.ContentType);
            return(result);
        }
Exemple #22
0
 public static DigitalAssetDto ToDto(this DigitalAsset digitalAsset)
 => new DigitalAssetDto(digitalAsset.DigitalAssetId, digitalAsset.Name, digitalAsset.Bytes, digitalAsset.ContentType);
 public DigitalAssetBuilder()
 {
     _digitalAsset = WithDefaults();
 }
Exemple #24
0
 public AddedOrUpdatedDigitalAssetMessage(DigitalAsset digitalAsset, Guid correlationId, Guid tenantId)
 {
     Payload        = new { Entity = digitalAsset, CorrelationId = correlationId };
     TenantUniqueId = tenantId;
 }
Exemple #25
0
 public static DigitalAssetDto FromDigitalAsset(DigitalAsset digitalAsset)
 => new()
 public static DigitalAssetApiModel FromDigitalAsset(DigitalAsset digitalAsset)
 => FromDigitalAsset <DigitalAssetApiModel>(digitalAsset);
 public static SimplifiedDigitalAssetDto ToSimplifiedDto(this DigitalAsset digitalAsset)
 => new (digitalAsset.DigitalAssetId, digitalAsset.Name, digitalAsset.ContentType);