From df9adcd94b5a1e7236af810429bfa8b71640f041 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Wed, 5 Nov 2025 16:15:25 +0330 Subject: [PATCH] last ... --- Controller/XStringServiceControllerBase.cs | 809 ++++++++++++++++++ .../IXStringServiceControllerActions.cs | 257 ++++++ xStringService.csproj | 1 + 3 files changed, 1067 insertions(+) create mode 100644 Controller/XStringServiceControllerBase.cs create mode 100644 Interfaces/IXStringServiceControllerActions.cs diff --git a/Controller/XStringServiceControllerBase.cs b/Controller/XStringServiceControllerBase.cs new file mode 100644 index 0000000..9589fe3 --- /dev/null +++ b/Controller/XStringServiceControllerBase.cs @@ -0,0 +1,809 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using xCommons.Configurations; +using xCommons.Extensions; +using xCommons.Providers; +using xIdentityService.Controllers; +using xIdentityService.Interfaces; +using xModels.Dtos; +using xStringService.Interfaces; +using xStringService.Models.Dtos; + +namespace xStringService.Controller +{ + public class XStringServiceControllerBase : XIBaseProviderController, IXStringServiceControllerActions + { + // + #region Props ... + public IXStringProvider StringProvider { get; } + #endregion + + // + #region Constructor ... + public XStringServiceControllerBase( + ILogger logger, + IXStringProvider stringProvider, + XAppConfiguration appConfiguration, + IXIdentityProvider identityProvider, + XValidationProvider validationProvider + ) : base( + logger, + appConfiguration, + identityProvider, + validationProvider + ) + { + // + StringProvider = stringProvider; + } + #endregion + + // + #region Retrievers ... + /// + /// Retrieve all Exists Languages ... + /// + /// + [HttpGet("Languages")] + public virtual async Task>> GetLanguages() + { + // + // Do ... + try + { + // + var result = await StringProvider + .GetLanguages(); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Check Specified Resource Exists or not ... + /// + /// + /// + /// + [HttpGet("IsResourceExists")] + public virtual async Task> IsResourceExists( + [FromQuery] string resource, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .IsResourceExists( + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Retrieve Specified Resource ... + /// + /// + /// + /// + [HttpGet("")] + public virtual async Task> Get( + [FromQuery] string resource, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .Get( + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Retrieve Specified Translation of Specified Resource ... + /// + /// + /// + /// + [HttpGet("ResourceValue")] + public virtual async Task> GetResourceValue( + [FromQuery] string resource, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .GetResourceValue( + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Retrieve an Specified Resource Items ... + /// + /// + /// + [HttpGet("Resources")] + public virtual async Task>> GetResources( + [FromQuery] string resource + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .GetResources(resource); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Retrieve Specified Resource Items as XResourceDto Presentation ... + /// + /// + /// + [HttpGet("AsResource")] + public virtual async Task> GetResource( + [FromQuery] string resource + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .GetResource(resource); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + #endregion + + // + #region Query ... + /// + /// Query Resource IDs ... + /// + /// + /// + [HttpGet("QueryResourceIds")] + public virtual async Task>> QueryResourceIds( + [FromQuery] XQuery query + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .QueryResourceIds(query); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Query Specified Language Resources ... + /// + /// + /// + /// + [HttpGet("QueryLanguageResources")] + public virtual async Task>> QueryLanguageResources( + [FromQuery] XQuery query, + [FromQuery] string language = null // + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .QueryLanguageResources( + query: query, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Query Locale Resources ... + /// + /// + /// + /// + [HttpGet("QueryLocaleResources")] + public virtual async Task>> QueryLocaleResources( + [FromQuery] XQuery query, + [FromQuery] string language = null // + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .QueryLocaleResources( + query: query, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + #endregion + + // + #region Add/Update Actions ... + /// + /// Add Specified Resource ... + /// + /// + /// + /// + /// + [HttpPost("Add")] + public virtual async Task> Add( + [FromQuery] string resource, + [FromQuery] string value, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .Add( + value: value, + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Update Resource ... + /// + /// + /// + /// + /// + [HttpPost("Update")] + public virtual async Task> Update( + [FromQuery] string resource, + [FromQuery] string value, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .Update( + value: value, + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Add Or Update Resource ... + /// + /// + /// + /// + /// + [HttpPost("AddOrUpdate")] + public virtual async Task> AddOrUpdate( + [FromQuery] string resource, + [FromQuery] string value, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .AddOrUpdate( + value: value, + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Add Specified Resource ... + /// + /// + /// + [HttpPost("AddModel")] + public virtual async Task> AddEntity( + [FromBody] XStringDto item + ) + { + // + // Do ... + try + { + // + var result = await StringProvider.AddEntity(item); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Update Specified Entity ... + /// + /// + /// + [HttpPost("UpdateModel")] + public virtual async Task> UpdateEntity( + [FromBody] XStringDto item + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .UpdateEntity(item); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Add Or Update Specified Entitiy ... + /// + /// + /// + [HttpPost("AddOrUpdateModel")] + public virtual async Task> AddOrUpdateEntity( + [FromBody] XStringDto item + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .AddOrUpdateEntity(item); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Add Specified Locale Resource ... + /// + /// + /// + /// + [HttpPost("AddLocale")] + public virtual async Task> AddByLocaleResource( + [FromBody] XLocaleResourceDto item, + [FromQuery] string resource + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .AddByLocaleResource( + item: item, + resource: resource + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Update Specified Locale Resource ... + /// + /// + /// + /// + [HttpPost("UpdateLocale")] + public virtual async Task> UpdateByLocaleResource( + [FromBody] XLocaleResourceDto item, + [FromQuery] string resource + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .UpdateByLocaleResource( + item: item, + resource: resource + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Add Or Update Resource By Locale ... + /// + /// + /// + /// + [HttpPost("AddOrUpdateLocale")] + public virtual async Task> AddOrUpdateByLocaleResource( + [FromBody] XLocaleResourceDto item, + [FromQuery] string resource + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .AddOrUpdateByLocaleResource( + item: item, + resource: resource + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Add Or Update all XResourceDto(s) Locales ... + /// + /// + /// + [HttpPost("AddResource")] + public virtual async Task>> AddByResource( + [FromBody] XResourceDto item + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .AddByResource(item); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + #endregion + + // + #region Remove Actions ... + /// + /// Remove all Specified Language's Resources ... + /// + /// + /// + [HttpDelete("RemoveLanguage")] + public virtual async Task RemoveLanguageResources( + [FromQuery] string language + ) + { + // + // Do ... + try + { + // + await StringProvider + .RemoveLanguageResources(language); + + // + return Ok(); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Remove all Specified Resource Ids instances ... + /// + /// + /// + [HttpDelete("RemoveLocales")] + public virtual async Task>> RemoveResource( + [FromQuery] string resource + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .RemoveResource(resource); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Remove Specified Resource ... + /// + /// + /// + /// + [HttpDelete("Remove")] + public virtual async Task> Remove( + [FromQuery] string resource, + [FromQuery] string language = null + ) + { + // + // Do ... + try + { + // + var result = await StringProvider + .Remove( + resource: resource, + language: language + ); + + // + return Ok(result. + ToDynamicObject()); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + + /// + /// Remove all Resource of Specified XResourceDto ... + /// + /// + /// + [HttpDelete("RemoveResource")] + public virtual async Task RemoveByResource( + [FromBody] XResourceDto item + ) + { + // + // Do ... + try + { + // + await StringProvider + .RemoveByResource(item); + + // + return Ok(); + } + catch (Exception ex) + { + // + var result = GetExceptionActionResult(ex); + return result; + } + } + #endregion + } +} \ No newline at end of file diff --git a/Interfaces/IXStringServiceControllerActions.cs b/Interfaces/IXStringServiceControllerActions.cs new file mode 100644 index 0000000..522e3b7 --- /dev/null +++ b/Interfaces/IXStringServiceControllerActions.cs @@ -0,0 +1,257 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using xModels.Dtos; +using xStringService.Models.Dtos; + +namespace xStringService.Interfaces +{ + public interface IXStringServiceControllerActions + { + // + #region Retrievers ... + /// + /// Retrieve all Exists Languages ... + /// + /// + Task>> GetLanguages(); + + /// + /// Check Specified Resource Exists or not ... + /// + /// + /// + /// + Task> IsResourceExists( + [FromQuery] string resource, + [FromQuery] string language = null + ); + + /// + /// Retrieve Specified Resource ... + /// + /// + /// + /// + Task> Get( + [FromQuery] string resource, + [FromQuery] string language = null + ); + + /// + /// Retrieve Specified Translation of Specified Resource ... + /// + /// + /// + /// + Task> GetResourceValue( + [FromQuery] string resource, + [FromQuery] string language = null + ); + + /// + /// Retrieve an Specified Resource Items ... + /// + /// + /// + Task>> GetResources( + [FromQuery] string resource + ); + + /// + /// Retrieve Specified Resource Items as XResourceDto Presentation ... + /// + /// + /// + Task> GetResource( + [FromQuery] string resource + ); + #endregion + + // + #region Query ... + /// + /// Query Resource IDs ... + /// + /// + /// + Task>> QueryResourceIds( + [FromQuery] XQuery query + ); + + /// + /// Query Specified Language Resources ... + /// + /// + /// + /// + Task>> QueryLanguageResources( + [FromQuery] XQuery query, + [FromQuery] string language = null // + ); + + /// + /// Query Locale Resources ... + /// + /// + /// + /// + Task>> QueryLocaleResources( + [FromQuery] XQuery query, + [FromQuery] string language = null // + ); + #endregion + + // + #region Add/Update Actions ... + /// + /// Add Specified Resource ... + /// + /// + /// + /// + /// + Task> Add( + [FromQuery] string resource, + [FromQuery] string value, + [FromQuery] string language = null + ); + + /// + /// Update Resource ... + /// + /// + /// + /// + /// + Task> Update( + [FromQuery] string resource, + [FromQuery] string value, + [FromQuery] string language = null + ); + + /// + /// Add Or Update Resource ... + /// + /// + /// + /// + /// + Task> AddOrUpdate( + [FromQuery] string resource, + [FromQuery] string value, + [FromQuery] string language = null + ); + + /// + /// Add Specified Resource ... + /// + /// + /// + Task> AddEntity( + [FromBody] XStringDto item + ); + + /// + /// Update Specified Entity ... + /// + /// + /// + Task> UpdateEntity( + [FromBody] XStringDto item + ); + + /// + /// Add Or Update Specified Entitiy ... + /// + /// + /// + Task> AddOrUpdateEntity( + [FromBody] XStringDto item + ); + + /// + /// Add Specified Locale Resource ... + /// + /// + /// + /// + Task> AddByLocaleResource( + [FromBody] XLocaleResourceDto item, + [FromQuery] string resource + ); + + /// + /// Update Specified Locale Resource ... + /// + /// + /// + /// + Task> UpdateByLocaleResource( + [FromBody] XLocaleResourceDto item, + [FromQuery] string resource + ); + + /// + /// Add Or Update Resource By Locale ... + /// + /// + /// + /// + Task> AddOrUpdateByLocaleResource( + [FromBody] XLocaleResourceDto item, + [FromQuery] string resource + ); + + /// + /// Add Or Update all XResourceDto(s) Locales ... + /// + /// + /// + Task>> AddByResource( + [FromBody] XResourceDto item + ); + #endregion + + // + #region Remove Actions ... + /// + /// Remove all Specified Language's Resources ... + /// + /// + /// + Task RemoveLanguageResources( + [FromQuery] string language + ); + + /// + /// Remove all Specified Resource Ids instances ... + /// + /// + /// + Task>> RemoveResource( + [FromQuery] string resource + ); + + /// + /// Remove Specified Resource ... + /// + /// + /// + /// + Task> Remove( + [FromQuery] string resource, + [FromQuery] string language = null + ); + + /// + /// Remove all Resource of Specified XResourceDto ... + /// + /// + /// + Task RemoveByResource( + [FromBody] XResourceDto item + ); + #endregion + } +} \ No newline at end of file diff --git a/xStringService.csproj b/xStringService.csproj index 12e5792..5e3d087 100644 --- a/xStringService.csproj +++ b/xStringService.csproj @@ -24,6 +24,7 @@ +