Added admin app service

pull/7685/head
Ahmet 5 years ago
parent 8db77d3567
commit 12211458f8

@ -0,0 +1,7 @@
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public class GetMediaRequestDto
{
public bool Download { get; set; } = false;
}
}

@ -0,0 +1,19 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Content;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public interface IMediaDescriptorAdminAppService
: ICrudAppService<
MediaDescriptorDto,
MediaDescriptorGetListDto,
Guid,
MediaDescriptorGetListInput,
UploadMediaStreamContent,
UpdateMediaDescriptorDto>
{
Task<RemoteStreamContent> DownloadAsync(Guid id, GetMediaRequestDto request);
}
}

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public class MediaDescriptorDto : EntityDto<Guid>
{
public string Name { get; set; }
public string MimeType { get; set; }
public int Size { get; set; }
}
}

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public class MediaDescriptorGetListDto : EntityDto<Guid>
{
public string Name { get; set; }
public string MimeType { get; set; }
public int Size { get; set; }
}
}

@ -0,0 +1,9 @@
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public class MediaDescriptorGetListInput : PagedAndSortedResultRequestDto
{
}
}

@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
using Volo.CmsKit.MediaDescriptors;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public class UpdateMediaDescriptorDto
{
[Required]
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxNameLength))]
public string Name { get; set; }
}
}

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using System.IO;
using Volo.Abp.Content;
using Volo.Abp.Validation;
using Volo.CmsKit.MediaDescriptors;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
public class UploadMediaStreamContent : RemoteStreamContent
{
[Required]
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxNameLength))]
public string Name { get; set; }
[Required]
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxMimeTypeLength))]
public string MimeType { get; set; }
public UploadMediaStreamContent(Stream stream) : base(stream)
{
}
}
}

@ -1,10 +1,12 @@
using AutoMapper;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Admin.Contents;
using Volo.CmsKit.Admin.MediaDescriptors;
using Volo.CmsKit.Admin.Pages;
using Volo.CmsKit.Blogs;
using Volo.CmsKit.Admin.Tags;
using Volo.CmsKit.Contents;
using Volo.CmsKit.MediaDescriptors;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Tags;
@ -30,6 +32,9 @@ namespace Volo.CmsKit.Admin
CreateMap<Blog, BlogLookupDto>(MemberList.Destination);
CreateMap<TagEntityTypeDefiniton, TagDefinitionDto>(MemberList.Destination);
CreateMap<MediaDescriptor, MediaDescriptorDto>();
CreateMap<MediaDescriptor, MediaDescriptorGetListDto>();
}
}
}

@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
using Volo.Abp.BlobStoring;
using Volo.Abp.Content;
using Volo.CmsKit.MediaDescriptors;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
[Authorize]
public class MediaDescriptorAdminAppService : CmsKitAdminAppServiceBase, IMediaDescriptorAdminAppService
{
protected readonly IBlobContainer<MediaContainer> MediaContainer;
protected readonly IMediaDescriptorRepository MediaDescriptorRepository;
public MediaDescriptorAdminAppService(IBlobContainer<MediaContainer> mediaContainer, IMediaDescriptorRepository mediaDescriptorRepository)
{
MediaContainer = mediaContainer;
MediaDescriptorRepository = mediaDescriptorRepository;
}
public virtual async Task<MediaDescriptorDto> GetAsync(Guid id)
{
var entity = await MediaDescriptorRepository.GetAsync(id);
return ObjectMapper.Map<MediaDescriptor, MediaDescriptorDto>(entity);
}
public virtual async Task<PagedResultDto<MediaDescriptorGetListDto>> GetListAsync(MediaDescriptorGetListInput input)
{
var totalCount = await MediaDescriptorRepository.GetCountAsync();
var entites = await MediaDescriptorRepository.GetListAsync();
var dtos = ObjectMapper.Map<List<MediaDescriptor>, List<MediaDescriptorGetListDto>>(entites);
return new PagedResultDto<MediaDescriptorGetListDto>(totalCount, dtos);
}
public virtual async Task<MediaDescriptorDto> CreateAsync(UploadMediaStreamContent input)
{
var newId = GuidGenerator.Create();
var newEntity = new MediaDescriptor(newId, CurrentTenant.Id, input.Name, input.MimeType, input.ContentLength ?? 0);
await MediaDescriptorRepository.InsertAsync(newEntity);
await MediaContainer.SaveAsync(newId.ToString(), input.GetStream());
return ObjectMapper.Map<MediaDescriptor, MediaDescriptorDto>(newEntity);
}
public virtual async Task<MediaDescriptorDto> UpdateAsync(Guid id, UpdateMediaDescriptorDto input)
{
var entity = await MediaDescriptorRepository.GetAsync(id);
entity.SetName(input.Name);
await MediaDescriptorRepository.UpdateAsync(entity);
return ObjectMapper.Map<MediaDescriptor, MediaDescriptorDto>(entity);
}
public virtual async Task DeleteAsync(Guid id)
{
await MediaContainer.DeleteAsync(id.ToString());
await MediaDescriptorRepository.DeleteAsync(id);
}
public virtual async Task<RemoteStreamContent> DownloadAsync(Guid id, GetMediaRequestDto request)
{
var entity = await MediaDescriptorRepository.GetAsync(id);
var stream = await MediaContainer.GetAsync(id.ToString());
return new RemoteStreamContent(stream)
{
ContentType = entity.MimeType
};
}
}
}

@ -0,0 +1,64 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Content;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
[RequiresGlobalFeature(typeof(MediasFeature))]
[RemoteService(Name = CmsKitCommonRemoteServiceConsts.RemoteServiceName)]
[Area("cms-kit")]
[Route("api/cms-kit-admin/medias")]
public class MediaDescriptorAdminController : CmsKitAdminController, IMediaDescriptorAdminAppService
{
protected readonly IMediaDescriptorAdminAppService MediaDescriptorAdminAppService;
public MediaDescriptorAdminController(IMediaDescriptorAdminAppService mediaDescriptorAdminAppService)
{
MediaDescriptorAdminAppService = mediaDescriptorAdminAppService;
}
[HttpGet]
[Route("{id}")]
public virtual Task<MediaDescriptorDto> GetAsync(Guid id)
{
return MediaDescriptorAdminAppService.GetAsync(id);
}
[HttpGet]
public virtual Task<PagedResultDto<MediaDescriptorGetListDto>> GetListAsync(MediaDescriptorGetListInput input)
{
return MediaDescriptorAdminAppService.GetListAsync(input);
}
[HttpPost]
public virtual Task<MediaDescriptorDto> CreateAsync(UploadMediaStreamContent input)
{
return MediaDescriptorAdminAppService.CreateAsync(input);
}
[HttpPut]
[Route("{id}")]
public virtual Task<MediaDescriptorDto> UpdateAsync(Guid id, UpdateMediaDescriptorDto input)
{
return MediaDescriptorAdminAppService.UpdateAsync(id, input);
}
[HttpDelete]
public virtual Task DeleteAsync(Guid id)
{
return MediaDescriptorAdminAppService.DeleteAsync(id);
}
[HttpGet]
[Route("download/{id}")]
public virtual Task<RemoteStreamContent> DownloadAsync(Guid id, GetMediaRequestDto request)
{
return MediaDescriptorAdminAppService.DownloadAsync(id, request);
}
}
}
Loading…
Cancel
Save