using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using xCommons.Attributes; using xCommons.Configurations; using xCommons.Providers; using xIdentityHelper; using xIdentityService.Interfaces; using xModels.Dtos; using xStringService.Controllers; using xStringService.Interfaces; using xStringService.Models.Dtos; namespace xApi.Controllers.V1.Services { [ApiController] [ApiVersion("1.0")] [RequireXPowered(true)] [Route("api/v{version:apiVersion}/services/[controller]")] public class StringsController : XStringServiceControllerBase, IXStringServiceControllerActions { // #region Constructor ... public StringsController( ILogger logger, IXStringProvider stringProvider, XAppConfiguration appConfiguration, IXIdentityProvider identityProvider, XValidationProvider validationProvider ) : base( logger, stringProvider, appConfiguration, identityProvider, validationProvider ) { } #endregion // #region Implementing Actions ... // #region Retrievers ... /// /// Retrieve all Exists Languages ... /// /// [AllowAnonymous] [HttpGet("Languages")] public override async Task>> GetLanguages() { return await base.GetLanguages(); } /// /// Check Specified Resource Exists or not ... /// /// /// /// [AllowAnonymous] [HttpGet("IsResourceExists")] public override async Task> IsResourceExists( [FromQuery] string resource, [FromQuery] string language = null ) { // return await base .IsResourceExists( resource: resource, language: language ); } /// /// Retrieve Specified Resource ... /// /// /// /// [HttpGet("")] [AllowAnonymous] public override async Task> Get( [FromQuery] string resource, [FromQuery] string language = null ) { // return await base .Get( resource: resource, language: language ); } /// /// Retrieve Specified Translation of Specified Resource ... /// /// /// /// [AllowAnonymous] [HttpGet("ResourceValue")] public override async Task> GetResourceValue( [FromQuery] string resource, [FromQuery] string language = null ) { // return await base .GetResourceValue( resource: resource, language: language ); } /// /// Retrieve an Specified Resource Items ... /// /// /// [AllowAnonymous] [HttpGet("Resources")] public override async Task>> GetResources( [FromQuery] string resource ) { return await base.GetResources(resource); } /// /// Retrieve Specified Resource Items as XResourceDto Presentation ... /// /// /// [AllowAnonymous] [HttpGet("AsResource")] public override async Task> GetResource( [FromQuery] string resource ) { return await base.GetResource(resource); } #endregion // #region Query ... /// /// Query Resource IDs ... /// /// /// [AllowAnonymous] [HttpGet("QueryResourceIds")] public override ActionResult> QueryResourceIds( [FromQuery] XQuery query ) { return base.QueryResourceIds(query); } /// /// Query Specified Language Resources ... /// /// /// /// [HttpGet("QueryLanguageResources")] public override async Task>> QueryLanguageResources( [FromQuery] XQuery query, [FromQuery] string language = null // ) { // return await base .QueryLanguageResources( query: query, language: language ); } /// /// Query Locale Resources ... /// /// /// /// [HttpGet("QueryLocaleResources")] public override async Task>> QueryLocaleResources( [FromQuery] XQuery query, [FromQuery] string language = null // ) { // return await base .QueryLocaleResources( query: query, language: language ); } #endregion // #region Add/Update Actions ... /// /// Add Specified Resource ... /// /// /// /// /// [HttpPost("Add")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> Add( [FromQuery] string resource, [FromQuery] string value, [FromQuery] string language = null ) { // return await base .Add( value: value, resource: resource, language: language ); } /// /// Update Resource ... /// /// /// /// /// [HttpPut("Update")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> Update( [FromQuery] string resource, [FromQuery] string value, [FromQuery] string language = null ) { // return await base .Update( value: value, resource: resource, language: language ); } /// /// Add Or Update Resource ... /// /// /// /// /// [HttpPost("AddOrUpdate")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> AddOrUpdate( [FromQuery] string resource, [FromQuery] string value, [FromQuery] string language = null ) { // return await base .AddOrUpdate( value: value, resource: resource, language: language ); } /// /// Add Specified Resource ... /// /// /// [HttpPost("AddModel")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> AddEntity( [FromBody] XStringDto item ) { return await base.AddEntity(item); } /// /// Update Specified Entity ... /// /// /// [HttpPut("UpdateModel")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> UpdateEntity( [FromBody] XStringDto item ) { return await base.UpdateEntity(item); } /// /// Add Or Update Specified Entitiy ... /// /// /// [HttpPost("AddOrUpdateModel")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> AddOrUpdateEntity( [FromBody] XStringDto item ) { return await base.AddOrUpdateEntity(item); } /// /// Add Specified Locale Resource ... /// /// /// /// [HttpPost("AddLocale")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> AddByLocaleResource( [FromBody] XLocaleResourceDto item, [FromQuery] string resource ) { // return await base .AddByLocaleResource( item: item, resource: resource ); } /// /// Update Specified Locale Resource ... /// /// /// /// [HttpPut("UpdateLocale")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> UpdateByLocaleResource( [FromBody] XLocaleResourceDto item, [FromQuery] string resource ) { // return await base .UpdateByLocaleResource( item: item, resource: resource ); } /// /// Add Or Update Resource By Locale ... /// /// /// /// [HttpPost("AddOrUpdateLocale")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> AddOrUpdateByLocaleResource( [FromBody] XLocaleResourceDto item, [FromQuery] string resource ) { // return await base .AddOrUpdateByLocaleResource( item: item, resource: resource ); } /// /// Add Or Update all XResourceDto(s) Locales ... /// /// /// [HttpPost("AddResource")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task>> AddByResource( [FromBody] XResourceDto item ) { return await base.AddByResource(item); } #endregion // #region Remove Actions ... /// /// Remove all Specified Language's Resources ... /// /// /// [HttpDelete("RemoveLanguage")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task RemoveLanguageResources( [FromQuery] string language ) { return await base.RemoveLanguageResources(language); } /// /// Remove all Specified Resource Ids instances ... /// /// /// [HttpDelete("RemoveLocales")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task>> RemoveResource( [FromQuery] string resource ) { return await base.RemoveResource(resource); } /// /// Remove Specified Resource ... /// /// /// /// [HttpDelete("Remove")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task> Remove( [FromQuery] string resource, [FromQuery] string language = null ) { // return await base .Remove( resource: resource, language: language ); } /// /// Remove all Resource of Specified XResourceDto ... /// /// /// [HttpPost("RemoveResource")] [Authorize(Policy = XPolicies.EnabledAdminOrAgent)] public override async Task RemoveByResource( [FromBody] XResourceDto item ) { // return await base.RemoveByResource(item); } #endregion #endregion } }