Browse Source

Refactored #13585

pull/13804/head
Salih 4 years ago
parent
commit
55c003da39
  1. 4
      modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs
  2. 6
      modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs
  3. 7
      modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.Generated.cs
  4. 5
      modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.cs
  5. 6
      modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.Generated.cs
  6. 6
      modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.cs
  7. 34
      modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/docs-admin-generate-proxy.json
  8. 5
      modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs
  9. 11
      modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js
  10. 14
      modules/docs/src/Volo.Docs.Admin.Web/wwwroot/client-proxies/docs-admin-proxy.js
  11. 11
      modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterItems.cs
  12. 10
      modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterLanguageCodeItem.cs
  13. 9
      modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterProjectItem.cs
  14. 12
      modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterVersionItem.cs
  15. 4
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs
  16. 5
      modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs
  17. 87
      modules/docs/src/Volo.Docs.HttpApi.Client/ClientProxies/docs-generate-proxy.json
  18. 15
      modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs
  19. 11
      modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Projects/MongoProjectRepository.cs
  20. 12
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocumentAdminAppService_Tests.cs

4
modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Documents/IDocumentAdminAppService.cs

@ -3,8 +3,6 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Docs.Admin.Projects;
using Volo.Docs.Documents.Filter;
namespace Volo.Docs.Admin.Documents
{
@ -22,6 +20,6 @@ namespace Volo.Docs.Admin.Documents
Task ReindexAsync(Guid documentId);
Task<List<DocumentInfoDto>> GetUniqueListWithoutDetails();
Task<List<DocumentInfoDto>> GetFilterItemsAsync();
}
}

6
modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Documents/DocumentAdminAppService.cs

@ -5,13 +5,11 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Logging;
using Volo.Abp;
using Volo.Abp.Uow;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Caching;
using Volo.Docs.Caching;
using Volo.Docs.Documents;
using Volo.Docs.Documents.Filter;
using Volo.Docs.Documents.FullSearch.Elastic;
using Volo.Docs.Localization;
using Volo.Docs.Projects;
@ -218,9 +216,9 @@ namespace Volo.Docs.Admin.Documents
await _elasticSearchService.AddOrUpdateAsync(document);
}
public async Task<List<DocumentInfoDto>> GetUniqueListWithoutDetails()
public async Task<List<DocumentInfoDto>> GetFilterItemsAsync()
{
var documents = await _documentRepository.GetUniqueListWithoutDetails();
var documents = await _documentRepository.GetUniqueListDocumentInfoAsync();
return ObjectMapper.Map<List<DocumentInfo>, List<DocumentInfoDto>>(documents);
}

7
modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.Generated.cs

@ -1,6 +1,5 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Http.Client;
@ -8,7 +7,7 @@ using Volo.Abp.Http.Modeling;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Docs.Admin.Documents;
using Volo.Docs.Documents.Filter;
using System.Collections.Generic;
// ReSharper disable once CheckNamespace
namespace Volo.Docs.Admin.ClientProxies;
@ -65,8 +64,8 @@ public partial class DocumentsAdminClientProxy : ClientProxyBase<IDocumentAdminA
});
}
public Task<List<DocumentInfoDto>> GetUniqueListWithoutDetails()
public virtual async Task<List<DocumentInfoDto>> GetFilterItemsAsync()
{
return RequestAsync<List<DocumentInfoDto>>(nameof(GetUniqueListWithoutDetails));
return await RequestAsync<List<DocumentInfoDto>>(nameof(GetFilterItemsAsync));
}
}

5
modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/DocumentsAdminClientProxy.cs

@ -1,12 +1,7 @@
// This file is part of DocumentsAdminClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
using System.Threading.Tasks;
using Volo.Docs.Documents.Filter;
namespace Volo.Docs.Admin.ClientProxies;
public partial class DocumentsAdminClientProxy
{
}

6
modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.Generated.cs

@ -1,6 +1,5 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Http.Client;
@ -8,6 +7,7 @@ using Volo.Abp.Http.Modeling;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Docs.Admin.Projects;
using System.Collections.Generic;
// ReSharper disable once CheckNamespace
namespace Volo.Docs.Admin.ClientProxies;
@ -62,9 +62,9 @@ public partial class ProjectsAdminClientProxy : ClientProxyBase<IProjectAdminApp
await RequestAsync(nameof(ReindexAllAsync));
}
public Task<List<ProjectWithoutDetailsDto>> GetListWithoutDetailsAsync()
public virtual async Task<List<ProjectWithoutDetailsDto>> GetListWithoutDetailsAsync()
{
return RequestAsync<List<ProjectWithoutDetailsDto>>(nameof(GetListWithoutDetailsAsync));
return await RequestAsync<List<ProjectWithoutDetailsDto>>(nameof(GetListWithoutDetailsAsync));
}
public virtual async Task ReindexAsync(ReindexInput input)

6
modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/ProjectsAdminClientProxy.cs

@ -1,13 +1,7 @@
// This file is part of ProjectsAdminClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Docs.Admin.Projects;
namespace Volo.Docs.Admin.ClientProxies;
public partial class ProjectsAdminClientProxy
{
}

34
modules/docs/src/Volo.Docs.Admin.HttpApi.Client/ClientProxies/docs-admin-generate-proxy.json

@ -7,6 +7,8 @@
"Volo.Docs.Admin.DocumentsAdminController": {
"controllerName": "DocumentsAdmin",
"controllerGroupName": "DocumentsAdmin",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.Docs.Admin.DocumentsAdminController",
"interfaces": [
{
@ -427,12 +429,29 @@
},
"allowAnonymous": null,
"implementFrom": "Volo.Docs.Admin.Documents.IDocumentAdminAppService"
},
"GetFilterItemsAsync": {
"uniqueName": "GetFilterItemsAsync",
"name": "GetFilterItemsAsync",
"httpMethod": "GET",
"url": "api/docs/admin/documents/GetUniqueListDocumentWithoutDetails",
"supportedVersions": [],
"parametersOnMethod": [],
"parameters": [],
"returnValue": {
"type": "System.Collections.Generic.List<Volo.Docs.Admin.Documents.DocumentInfoDto>",
"typeSimple": "[Volo.Docs.Admin.Documents.DocumentInfoDto]"
},
"allowAnonymous": null,
"implementFrom": "Volo.Docs.Admin.Documents.IDocumentAdminAppService"
}
}
},
"Volo.Docs.Admin.ProjectsAdminController": {
"controllerName": "ProjectsAdmin",
"controllerGroupName": "ProjectsAdmin",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.Docs.Admin.ProjectsAdminController",
"interfaces": [
{
@ -684,6 +703,21 @@
"allowAnonymous": null,
"implementFrom": "Volo.Docs.Admin.Projects.IProjectAdminAppService"
},
"GetListWithoutDetailsAsync": {
"uniqueName": "GetListWithoutDetailsAsync",
"name": "GetListWithoutDetailsAsync",
"httpMethod": "GET",
"url": "api/docs/admin/projects/GetListProjectWithoutDetailsAsync",
"supportedVersions": [],
"parametersOnMethod": [],
"parameters": [],
"returnValue": {
"type": "System.Collections.Generic.List<Volo.Docs.Admin.Projects.ProjectWithoutDetailsDto>",
"typeSimple": "[Volo.Docs.Admin.Projects.ProjectWithoutDetailsDto]"
},
"allowAnonymous": null,
"implementFrom": "Volo.Docs.Admin.Projects.IProjectAdminAppService"
},
"ReindexAsyncByInput": {
"uniqueName": "ReindexAsyncByInput",
"name": "ReindexAsync",

5
modules/docs/src/Volo.Docs.Admin.HttpApi/Volo/Docs/Admin/DocumentsAdminController.cs

@ -6,7 +6,6 @@ using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Docs.Admin.Documents;
using Volo.Docs.Documents.Filter;
namespace Volo.Docs.Admin
{
@ -67,9 +66,9 @@ namespace Volo.Docs.Admin
[HttpGet]
[Route("GetUniqueListDocumentWithoutDetails")]
public Task<List<DocumentInfoDto>> GetUniqueListWithoutDetails()
public async Task<List<DocumentInfoDto>> GetFilterItemsAsync()
{
return _documentAdminAppService.GetUniqueListWithoutDetails();
return await _documentAdminAppService.GetFilterItemsAsync();
}
}
}

11
modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Documents/index.js

@ -6,16 +6,7 @@ $(function () {
return $datePicker.data().datepicker.getFormattedDate('yyyy-mm-dd');
};
var comboboxItems = [];
abp.ajax({
url: abp.appPath + 'api/docs/admin/documents/GetUniqueListDocumentWithoutDetails',
type: 'GET',
dataType: 'json',
success: function (data) {
comboboxItems = data;
fillOptions();
}
});
var comboboxItems = service.getFilterItems();
var $projectId = $('#ProjectId');

14
modules/docs/src/Volo.Docs.Admin.Web/wwwroot/client-proxies/docs-admin-proxy.js

@ -61,6 +61,13 @@
}, ajaxParams));
};
volo.docs.admin.documentsAdmin.getFilterItems = function(ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/docs/admin/documents/GetUniqueListDocumentWithoutDetails',
type: 'GET'
}, ajaxParams));
};
})();
// controller volo.docs.admin.projectsAdmin
@ -115,6 +122,13 @@
}, ajaxParams));
};
volo.docs.admin.projectsAdmin.getListWithoutDetails = function(ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/docs/admin/projects/GetListProjectWithoutDetailsAsync',
type: 'GET'
}, ajaxParams));
};
volo.docs.admin.projectsAdmin.reindex = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/docs/admin/projects/Reindex',

11
modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterItems.cs

@ -1,11 +0,0 @@
using System.Collections.Generic;
namespace Volo.Docs.Documents.Filter;
public class FilterItems
{
public IEnumerable<FilterProjectItem> Projects { get; set; }
public IEnumerable<FilterVersionItem> Versions { get; set; }
public IEnumerable<FilterLanguageCodeItem> Languages { get; set; }
public IEnumerable<string> Formats { get; set; }
}

10
modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterLanguageCodeItem.cs

@ -1,10 +0,0 @@
using System;
using System.Collections.Generic;
namespace Volo.Docs.Documents.Filter;
public class FilterLanguageCodeItem
{
public string LanguageCode { get; set; }
public Guid ProjectId { get; set; }
}

9
modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterProjectItem.cs

@ -1,9 +0,0 @@
using System;
namespace Volo.Docs.Documents.Filter;
public class FilterProjectItem
{
public Guid Id { get; set; }
public string Name { get; set; }
}

12
modules/docs/src/Volo.Docs.Domain.Shared/Volo/Docs/Documents/Filter/FilterVersionItem.cs

@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
namespace Volo.Docs.Documents.Filter;
public class FilterVersionItem
{
public string Version { get; set; }
public string Format { get; set; }
public string LanguageCode { get; set; }
public Guid ProjectId { get; set; }
}

4
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Documents/IDocumentRepository.cs

@ -3,15 +3,13 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.Docs.Documents.Filter;
using Volo.Docs.Projects;
namespace Volo.Docs.Documents
{
public interface IDocumentRepository : IBasicRepository<Document>
{
Task<List<DocumentWithoutDetails>> GetListWithoutDetailsByProjectId(Guid projectId, CancellationToken cancellationToken = default);
Task<List<DocumentInfo>> GetUniqueListWithoutDetails(CancellationToken cancellationToken = default);
Task<List<DocumentInfo>> GetUniqueListDocumentInfoAsync(CancellationToken cancellationToken = default);
Task<List<Document>> GetListByProjectId(Guid projectId, CancellationToken cancellationToken = default);

5
modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Documents/EFCoreDocumentRepository.cs

@ -7,7 +7,6 @@ using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.Docs.Documents.Filter;
using Volo.Docs.EntityFrameworkCore;
namespace Volo.Docs.Documents
@ -33,9 +32,9 @@ namespace Volo.Docs.Documents
.ToListAsync(GetCancellationToken(cancellationToken));
}
public async Task<List<DocumentInfo>> GetUniqueListWithoutDetails(CancellationToken cancellationToken = default)
public async Task<List<DocumentInfo>> GetUniqueListDocumentInfoAsync(CancellationToken cancellationToken = default)
{
// Todo : add project id to query
return await (await GetDbSetAsync())
.Select(x=> new DocumentInfo
{

87
modules/docs/src/Volo.Docs.HttpApi.Client/ClientProxies/docs-generate-proxy.json

@ -7,6 +7,8 @@
"Volo.Docs.Projects.DocsProjectController": {
"controllerName": "DocsProject",
"controllerGroupName": "Project",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.Docs.Projects.DocsProjectController",
"interfaces": [
{
@ -222,6 +224,8 @@
"Volo.Docs.Documents.DocsDocumentController": {
"controllerName": "DocsDocument",
"controllerGroupName": "Document",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.Docs.Documents.DocsDocumentController",
"interfaces": [
{
@ -648,6 +652,89 @@
"implementFrom": "Volo.Docs.Documents.IDocumentAppService"
}
}
},
"Volo.Docs.Areas.Documents.DocumentResourceController": {
"controllerName": "DocumentResource",
"controllerGroupName": "DocumentResource",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.Docs.Areas.Documents.DocumentResourceController",
"interfaces": [],
"actions": {
"GetResourceByInput": {
"uniqueName": "GetResourceByInput",
"name": "GetResource",
"httpMethod": "GET",
"url": "document-resources",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "input",
"typeAsString": "Volo.Docs.Documents.GetDocumentResourceInput, Volo.Docs.Application.Contracts",
"type": "Volo.Docs.Documents.GetDocumentResourceInput",
"typeSimple": "Volo.Docs.Documents.GetDocumentResourceInput",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "input",
"name": "ProjectId",
"jsonName": null,
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "Name",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "Version",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "LanguageCode",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
}
],
"returnValue": {
"type": "Microsoft.AspNetCore.Mvc.FileResult",
"typeSimple": "Microsoft.AspNetCore.Mvc.FileResult"
},
"allowAnonymous": null,
"implementFrom": "Volo.Docs.Areas.Documents.DocumentResourceController"
}
}
}
}
}

15
modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Documents/MongoDocumentRepository.cs

@ -8,9 +8,7 @@ using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using MongoDB.Driver.Linq;
using MongoDB.Driver;
using Volo.Docs.Documents.Filter;
using Volo.Docs.MongoDB;
using Volo.Docs.Projects;
namespace Volo.Docs.Documents
@ -36,9 +34,18 @@ namespace Volo.Docs.Documents
.ToListAsync(GetCancellationToken(cancellationToken));
}
public Task<List<DocumentWithoutDetails>> GetUniqueListWithoutDetails(CancellationToken cancellationToken = default)
public async Task<List<DocumentInfo>> GetUniqueListDocumentInfoAsync(CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
return await (await GetMongoQueryableAsync(cancellationToken))
.Select(x=> new DocumentInfo {
ProjectId = x.ProjectId,
Version = x.Version,
LanguageCode = x.LanguageCode,
Format = x.Format
})
.Distinct()
.OrderByDescending(x=>x.Version)
.ToListAsync(GetCancellationToken(cancellationToken));
}
public async Task<List<Document>> GetListByProjectId(Guid projectId, CancellationToken cancellationToken = default)

11
modules/docs/src/Volo.Docs.MongoDB/Volo/Docs/Projects/MongoProjectRepository.cs

@ -29,6 +29,17 @@ namespace Volo.Docs.Projects
return projects;
}
public async Task<List<ProjectWithoutDetails>> GetListWithoutDetailsAsync(CancellationToken cancellationToken = default)
{
return await (await GetMongoQueryableAsync(cancellationToken))
.Select(x=> new ProjectWithoutDetails {
Id = x.Id,
Name = x.Name,
})
.OrderBy(x=>x.Name)
.ToListAsync(GetCancellationToken(cancellationToken));
}
public async Task<Project> GetByShortNameAsync(string shortName, CancellationToken cancellationToken = default)
{
var normalizeShortName = NormalizeShortName(shortName);

12
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocumentAdminAppService_Tests.cs

@ -57,14 +57,12 @@ namespace Volo.Docs
public async Task GetFilterItemsAsync()
{
var filterItems = await _documentAdminAppService.GetFilterItemsAsync();
filterItems.Projects.ShouldNotBeEmpty();
filterItems.Languages.ShouldNotBeEmpty();
filterItems.Versions.ShouldNotBeEmpty();
filterItems.ShouldNotBeEmpty();
filterItems.Projects.ShouldContain(p => p.Id == _testData.PorjectId);
filterItems.Versions.ShouldContain(p => p.Version == "2.0.0" && p.ProjectId == _testData.PorjectId);
filterItems.Languages.ShouldContain(p => p.LanguageCode == "en" && p.ProjectId == _testData.PorjectId);
filterItems.Formats.ShouldContain(p => p == "md");
filterItems.ShouldContain(p => p.ProjectId == _testData.PorjectId);
filterItems.ShouldContain(p => p.Version == "2.0.0" && p.ProjectId == _testData.PorjectId);
filterItems.ShouldContain(p => p.LanguageCode == "en" && p.ProjectId == _testData.PorjectId);
filterItems.ShouldContain(p => p.Format == "md");
}
}

Loading…
Cancel
Save