Browse Source

Created Page application service

pull/6821/head
Ahmet 6 years ago
parent
commit
e404c30532
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/GetContentInput.cs
  2. 1
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/IContentAppService.cs
  3. 12
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CheckUrlInputDto.cs
  4. 19
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CreatePageInputDto.cs
  5. 24
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CreatePageWithContentInputDto.cs
  6. 20
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/IPageAppService.cs
  7. 14
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/PageDto.cs
  8. 17
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/PageWithContentDto.cs
  9. 13
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/UpdatePageContentInputDto.cs
  10. 19
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/UpdatePageInputDto.cs
  11. 0
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitAppServiceBase.cs
  12. 5
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitCommonApplicationAutoMapperProfile.cs
  13. 1
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentAppService.cs
  14. 100
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Pages/PageAppService.cs
  15. 1
      modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo/CmsKit/Controllers/Contents/ContentController.cs
  16. 1
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Shared/Components/Contents/ContentViewComponent.cs
  17. 6
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs
  18. 7
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/IPageRepository.cs
  19. 13
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/Page.cs
  20. 17
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs
  21. 17
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs

2
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/GetContentInput.cs

@ -1,4 +1,4 @@
namespace Volo.CmsKit.Common.Application.Contracts.Volo.CmsKit.Contents
namespace Volo.CmsKit.Contents
{
public class GetContentInput
{

1
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/IContentAppService.cs

@ -1,5 +1,4 @@
using System.Threading.Tasks;
using Volo.CmsKit.Common.Application.Contracts.Volo.CmsKit.Contents;
namespace Volo.CmsKit.Contents
{

12
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CheckUrlInputDto.cs

@ -0,0 +1,12 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace Volo.CmsKit.Pages
{
public class CheckUrlInputDto
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxUrlLength))]
public string Url { get; set; }
}
}

19
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CreatePageInputDto.cs

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace Volo.CmsKit.Pages
{
public class CreatePageInputDto
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]
public string Title { get; set; }
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxUrlLength))]
public string Url { get; set; }
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxDescriptionLength))]
public string Description { get; set; }
}
}

24
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CreatePageWithContentInputDto.cs

@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Pages
{
public class CreatePageWithContentInputDto
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]
public string Title { get; set; }
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxUrlLength))]
public string Url { get; set; }
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxDescriptionLength))]
public string Description { get; set; }
[Required]
[DynamicMaxLength(typeof(ContentConsts), nameof(ContentConsts.MaxValueLength))]
public string Content { get; set; }
}
}

20
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/IPageAppService.cs

@ -0,0 +1,20 @@
using System;
using System.Threading.Tasks;
namespace Volo.CmsKit.Pages
{
public interface IPageAppService
{
Task<PageDto> CreatePageAsync(CreatePageInputDto input);
Task<PageDto> CreatePageWithContentAsync(CreatePageWithContentInputDto input);
Task<PageDto> UpdatePageAsync(Guid id, UpdatePageInputDto input);
Task<bool> DoesUrlExistAsync(CheckUrlInputDto input);
Task UpdatePageContentAsync(Guid id, UpdatePageContentInputDto input);
Task DeletePageAsync(Guid id);
}
}

14
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/PageDto.cs

@ -0,0 +1,14 @@
using System;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Pages
{
public class PageDto : EntityDto<Guid>
{
public string Title { get; set; }
public string Url { get; set; }
public string Description { get; set; }
}
}

17
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/PageWithContentDto.cs

@ -0,0 +1,17 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Pages
{
public class PageWithContentDto : EntityDto<Guid>
{
public string Title { get; set; }
public string Url { get; set; }
public string Description { get; set; }
public ContentDto Content { get; set; }
}
}

13
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/UpdatePageContentInputDto.cs

@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Pages
{
public class UpdatePageContentInputDto
{
[Required]
[DynamicMaxLength(typeof(ContentConsts), nameof(ContentConsts.MaxValueLength))]
public string Content { get; set; }
}
}

19
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/UpdatePageInputDto.cs

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Validation;
namespace Volo.CmsKit.Pages
{
public class UpdatePageInputDto
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]
public string Title { get; set; }
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxUrlLength))]
public string Url { get; set; }
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxDescriptionLength))]
public string Description { get; set; }
}
}

0
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitAppService.cs → modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitAppServiceBase.cs

5
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitCommonApplicationAutoMapperProfile.cs

@ -1,8 +1,9 @@
using AutoMapper;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Pages;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.Common.Application.Volo.CmsKit
namespace Volo.CmsKit
{
public class CmsKitCommonApplicationAutoMapperProfile : Profile
{
@ -11,6 +12,8 @@ namespace Volo.CmsKit.Common.Application.Volo.CmsKit
CreateMap<Content, ContentDto>();
CreateMap<Tag, TagDto>();
CreateMap<Page, PageDto>();
}
}
}

1
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentAppService.cs

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.CmsKit.Common.Application.Contracts.Volo.CmsKit.Contents;
namespace Volo.CmsKit.Contents
{

100
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Pages/PageAppService.cs

@ -0,0 +1,100 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Pages
{
public class PageAppService : CmsKitAppServiceBase, IPageAppService
{
protected readonly IPageRepository PageRepository;
protected readonly IContentRepository ContentRepository;
public PageAppService(IPageRepository pageRepository, IContentRepository contentRepository)
{
PageRepository = pageRepository;
ContentRepository = contentRepository;
}
public virtual async Task<PageDto> CreatePageAsync(CreatePageInputDto input)
{
var page = await CreatePageAsync(input.Title, input.Url, input.Description);
await PageRepository.InsertAsync(page);
return ObjectMapper.Map<Page, PageDto>(page);
}
public virtual async Task<PageDto> CreatePageWithContentAsync(CreatePageWithContentInputDto input)
{
var page = await CreatePageAsync(input.Title, input.Url, input.Description);
await PageRepository.InsertAsync(page);
var content = new Content(
GuidGenerator.Create(),
nameof(Page),
page.Id.ToString(),
input.Content,
page.TenantId);
await ContentRepository.InsertAsync(content);
return ObjectMapper.Map<Page, PageDto>(page);
}
public virtual async Task<PageDto> UpdatePageAsync(Guid id, UpdatePageInputDto input)
{
var page = await PageRepository.GetAsync(id);
if (page.Url != input.Url)
{
await CheckPageUrlAsync(input.Url);
}
page.Title = input.Title;
page.Url = input.Url;
page.Description = input.Description;
await PageRepository.UpdateAsync(page);
return ObjectMapper.Map<Page, PageDto>(page);
}
public virtual Task<bool> DoesUrlExistAsync(CheckUrlInputDto input)
{
return PageRepository.DoesExistAsync(input.Url);
}
public virtual async Task UpdatePageContentAsync(Guid id, UpdatePageContentInputDto input)
{
var pageContent = await ContentRepository.GetAsync(nameof(Page), id.ToString());
pageContent.SetValue(input.Content);
await ContentRepository.UpdateAsync(pageContent);
}
public virtual async Task DeletePageAsync(Guid id)
{
await ContentRepository.DeleteAsync(nameof(Page), id.ToString(), CurrentTenant?.Id, CancellationToken.None);
await PageRepository.DeleteAsync(id, cancellationToken: CancellationToken.None);
}
protected virtual async Task<Page> CreatePageAsync(string title, string url, string description)
{
await CheckPageUrlAsync(url);
return new Page(GuidGenerator.Create(), title, url, description, CurrentTenant?.Id);
}
protected virtual async Task CheckPageUrlAsync(string url)
{
if (await PageRepository.DoesExistAsync(url))
{
throw new UserFriendlyException("Url exist");
}
}
}
}

1
modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo/CmsKit/Controllers/Contents/ContentController.cs

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.CmsKit.Common.Application.Contracts.Volo.CmsKit.Contents;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Controllers.Contents

1
modules/cms-kit/src/Volo.CmsKit.Common.Web/Pages/CmsKit/Shared/Components/Contents/ContentViewComponent.cs

@ -7,7 +7,6 @@ using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI;
using Volo.Abp.AspNetCore.Mvc.UI.Widgets;
using Volo.CmsKit.Common.Application.Contracts.Volo.CmsKit.Contents;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Web.Contents;

6
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs

@ -2,10 +2,10 @@
{
public class PageConsts
{
public const int MaxTitleLength = 256;
public static int MaxTitleLength = 256;
public const int MaxUrlLength = 256;
public static int MaxUrlLength = 256;
public const int MaxDescriptionLength = 515;
public static int MaxDescriptionLength = 515;
}
}

7
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/IPageRepository.cs

@ -1,10 +1,15 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
namespace Volo.CmsKit.Pages
{
public interface IPageRepository : IBasicRepository<Page, Guid>
{
Task<Page> GetByUrlAsync(string url);
Task<Page> FindByUrlAsync(string url);
Task<bool> DoesExistAsync(string url);
}
}

13
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/Page.cs

@ -12,27 +12,22 @@ namespace Volo.CmsKit.Pages
public virtual string Title { get; set; }
public virtual string Url { get; set; }
public virtual string Description { get; set; }
public virtual string Url { get; set; }
protected Page()
{
}
public Page(Guid id, [NotNull] string title, [CanBeNull] string description, [CanBeNull] string url = null, Guid? tenantId = null) : base(id)
public Page(Guid id, [NotNull] string title, [NotNull] string url, [CanBeNull] string description, Guid? tenantId = null) : base(id)
{
Title = Check.NotNullOrWhiteSpace(title, nameof(title), PageConsts.MaxTitleLength);
Url = Check.NotNullOrWhiteSpace(url, nameof(url), PageConsts.MaxUrlLength);
Description = Check.Length(description, nameof(description), PageConsts.MaxDescriptionLength);
SetUrl(url);
TenantId = tenantId;
}
public virtual void SetUrl(string url)
{
Url = Check.Length(url, nameof(url), PageConsts.MaxUrlLength);
}
}
}

17
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Pages/EfCorePageRepository.cs

@ -1,4 +1,6 @@
using System;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.CmsKit.EntityFrameworkCore;
@ -10,5 +12,20 @@ namespace Volo.CmsKit.Pages
public EfCorePageRepository(IDbContextProvider<ICmsKitDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public Task<Page> GetByUrlAsync(string url)
{
return GetAsync(x => x.Url == url);
}
public Task<Page> FindByUrlAsync(string url)
{
return FindAsync(x => x.Url == url);
}
public Task<bool> DoesExistAsync(string url)
{
return DbSet.AnyAsync(x => x.Url == url);
}
}
}

17
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Pages/MongoPageRepository.cs

@ -1,4 +1,6 @@
using System;
using System.Threading.Tasks;
using MongoDB.Driver.Linq;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using Volo.CmsKit.Pages;
@ -10,5 +12,20 @@ namespace Volo.CmsKit.MongoDB.Pages
public MongoPageRepository(IMongoDbContextProvider<ICmsKitMongoDbContext> dbContextProvider) : base(dbContextProvider)
{
}
public Task<Page> GetByUrlAsync(string url)
{
return GetAsync(x => x.Url == url);
}
public Task<Page> FindByUrlAsync(string url)
{
return FindAsync(x => x.Url == url);
}
public Task<bool> DoesExistAsync(string url)
{
return GetMongoQueryable().AnyAsync(x => x.Url == url);
}
}
}
Loading…
Cancel
Save