ConsoleController.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Threading.Tasks;
  5. using BO.AppServer.Business;
  6. using BO.AppServer.Business.Services;
  7. using BO.AppServer.Metadata.Dto;
  8. using BO.AppServer.Metadata.Enums;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Mvc;
  11. using Microsoft.Extensions.Logging;
  12. using Quadarax.Foundation.Core.Data.Interface.Entity.Dto;
  13. namespace BO.AppServer.Web.Services
  14. {
  15. [Authorize]
  16. [Route("api/[controller]")]
  17. [ApiController]
  18. public class ConsoleController : Base<ConsoleController>
  19. {
  20. private UserService _srvUsers;
  21. private CatalogueService _srvCatalogue;
  22. private WorkspaceService _srvWorkspace;
  23. protected override RoleEnum LoginRoleAllowed => RoleEnum.Console;
  24. public ConsoleController(UserService srvUsers,
  25. CatalogueService srvCatalogue,
  26. WorkspaceService srvWorkspace,
  27. ILoggerFactory logger,
  28. AccessService srvAccess) : base(logger, srvAccess)
  29. {
  30. _srvUsers = srvUsers ?? throw new ArgumentNullException(nameof(srvUsers));
  31. _srvCatalogue = srvCatalogue ?? throw new ArgumentNullException(nameof(srvCatalogue));
  32. _srvWorkspace = srvWorkspace ?? throw new ArgumentNullException(nameof(srvWorkspace));
  33. }
  34. #region *** User ***
  35. [HttpGet("{ticket}/users/{scope}")]
  36. public async Task<ResultsValueDto<UserRDto>> GetAllUsers(string ticket, UserScopeEnums scope, [FromHeader] string page, [FromHeader] string pageSize)
  37. {
  38. CheckAccess(ticket);
  39. return await Call(async () => await _srvUsers.GetAllUsersAsync(scope, new HeaderPagingDto(page, pageSize)));
  40. }
  41. [HttpGet("{ticket}/user/{identificationType}/{identificationValue}")]
  42. public async Task<ResultValueDto<UserRDto>> GetUser(string ticket, IdentificationTypeEnum identificationType, string identificationValue)
  43. {
  44. CheckAccess(ticket);
  45. return await Call(async () => await _srvUsers.GetUserAsync(1));
  46. }
  47. [HttpPost("{ticket}/user")]
  48. public async Task<ResultValueDto<UserRDto>> CreateUser(string ticket, [FromBody] UserCDto user)
  49. {
  50. CheckAccess(ticket);
  51. return await Call(async () => await _srvUsers.CreateUserAsync(user));
  52. }
  53. #endregion
  54. #region *** Catalogues ***
  55. [HttpGet("{Ticket}/bplans/{scope}")]
  56. public async Task<ResultsValueDto<BillingPlanRDto>> GetAllBillingPlans(string ticket, BillingPlanScopeEnums scope, [FromHeader] string page, [FromHeader] string pageSize)
  57. {
  58. CheckAccess(ticket);
  59. return await Call(async () => await _srvCatalogue.GetBillingPlansAsync(scope, new HeaderPagingDto(page, pageSize)));
  60. }
  61. [HttpPost("{Ticket}/bplan")]
  62. public async Task<ResultValueDto<BillingPlanRDto>> CreateBillingPlan(string ticket, [FromBody] BillingPlanCDto billingPlan)
  63. {
  64. CheckAccess(ticket);
  65. return await Call(async () => await _srvCatalogue.CreateBillingPlanAsync(billingPlan));
  66. }
  67. [HttpPut("{Ticket}/bplan")]
  68. public async Task<ResultValueDto<BillingPlanRDto>> UpdateBillingPlan(string ticket, [FromBody] BillingPlanUDto billingPlan)
  69. {
  70. CheckAccess(ticket);
  71. return await Call(async () => await _srvCatalogue.UpdateBillingPlanAsync(billingPlan));
  72. }
  73. [HttpGet("{Ticket}/mtypes/{scope}")]
  74. public async Task<ResultsValueDto<MimeTypeRDto>> GetAllMimeTypes(string ticket, MimeTypeScopeEnums scope, [FromHeader] string page, [FromHeader] string pageSize)
  75. {
  76. CheckAccess(ticket);
  77. return await Call(async () => await _srvCatalogue.GetMimeTypesAsync(scope, new HeaderPagingDto(page, pageSize)));
  78. }
  79. [HttpPost("{Ticket}/mtype")]
  80. public async Task<ResultValueDto<MimeTypeRDto>> CreateMimeType(string ticket, [FromBody] MimeTypeCDto mimeType)
  81. {
  82. CheckAccess(ticket);
  83. return await Call(async () => await _srvCatalogue.CreateMimeTypeAsync(mimeType));
  84. }
  85. [HttpPut("{Ticket}/mtype")]
  86. public async Task<ResultValueDto<MimeTypeRDto>> UpdateMimeType(string ticket, [FromBody] MimeTypeUDto mimeType)
  87. {
  88. CheckAccess(ticket);
  89. return await Call(async () => await _srvCatalogue.UpdateMimeTypeAsync(mimeType));
  90. }
  91. #endregion
  92. #region *** Statistics ***
  93. [HttpGet("{ticket}/versions")]
  94. public async Task<ResultsValueDto<AssemblyInfoDto>> GetVersions(string ticket)
  95. {
  96. CheckAccess(ticket);
  97. return await Call(async () =>
  98. {
  99. var assemblies = AppDomain.CurrentDomain.GetAssemblies();
  100. var result = new List<AssemblyInfoDto>();
  101. foreach (var assembly in assemblies)
  102. {
  103. var fiv = FileVersionInfo.GetVersionInfo(assembly.Location);
  104. result.Add(new AssemblyInfoDto()
  105. {
  106. FileVersion = fiv.FileVersion,
  107. AssemblyVersion = assembly.GetName().Version?.ToString(),
  108. Name = assembly.GetName().Name
  109. });
  110. }
  111. return new ResultsValueDto<AssemblyInfoDto>(result);
  112. });
  113. }
  114. #endregion
  115. #region *** Workspace ***
  116. [HttpGet("{Ticket}/workspace/{scope}")]
  117. public async Task<ResultsValueDto<WorkspaceRDto>> GetAllWorkspaces(string ticket, WorkspaceScopeEnums scope, [FromHeader] string page, [FromHeader] string pageSize, [FromHeader] string context)
  118. {
  119. CheckAccess(ticket);
  120. return await Call(async () => await _srvWorkspace.GetWorkspacesAsync(scope, new HeaderPagingDto(page, pageSize), context));
  121. }
  122. [HttpPost("{ticket}/workspace")]
  123. public async Task<ResultValueDto<WorkspaceRDto>> CreateWorkspace(string ticket, [FromBody] WorkspaceCDto workspace)
  124. {
  125. CheckAccess(ticket);
  126. return await Call(async () => await _srvWorkspace.CreateWorkspaceAsync(workspace));
  127. }
  128. #endregion
  129. }
  130. }