This commit is contained in:
2025-11-16 15:58:48 +03:30
parent d5a048f661
commit 9b3cec02c2
7 changed files with 427 additions and 59 deletions
+878
View File
@@ -0,0 +1,878 @@
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.Controllers
{
public abstract 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 ...
/// <summary>
/// Retrieve all Exists Languages ...
/// </summary>
/// <returns></returns>
[HttpGet("Languages")]
public virtual async Task<ActionResult<IEnumerable<string>>> GetLanguages()
{
//
// Do ...
try
{
//
var result = await StringProvider
.GetLanguages();
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Check Specified Resource Exists or not ...
/// </summary>
/// <param name="resource"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpGet("IsResourceExists")]
public virtual async Task<ActionResult<bool>> 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;
}
}
/// <summary>
/// Retrieve Specified Resource ...
/// </summary>
/// <param name="resource"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpGet("")]
public virtual async Task<ActionResult<XStringDto>> 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;
}
}
/// <summary>
/// Retrieve Specified Translation of Specified Resource ...
/// </summary>
/// <param name="resource"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpGet("ResourceValue")]
public virtual async Task<ActionResult<string>> GetResourceValue(
[FromQuery] string resource,
[FromQuery] string language = null
)
{
//
// Do ...
try
{
//
var result = await StringProvider
.GetResourceValue(
resource: resource,
language: language
);
//
return Ok(result);
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Retrieve an Specified Resource Items ...
/// </summary>
/// <param name="resource"></param>
/// <returns></returns>
[HttpGet("Resources")]
public virtual async Task<ActionResult<IEnumerable<XStringDto>>> 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;
}
}
/// <summary>
/// Retrieve Specified Resource Items as XResourceDto Presentation ...
/// </summary>
/// <param name="resource"></param>
/// <returns></returns>
[HttpGet("AsResource")]
public virtual async Task<ActionResult<XResourceDto>> 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 ...
/// <summary>
/// Query Resource IDs ...
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpGet("QueryResourceIds")]
public virtual ActionResult<XQueryResult<string>> QueryResourceIds(
[FromQuery] XQuery query
)
{
//
// Do ...
try
{
//
var result = StringProvider
.QueryResourceIds(query);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Query Specified Language Resources ...
/// </summary>
/// <param name="query"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpGet("QueryLanguageResources")]
public virtual async Task<ActionResult<XQueryResult<XStringDto>>> 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;
}
}
/// <summary>
/// Query Locale Resources ...
/// </summary>
/// <param name="query"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpGet("QueryLocaleResources")]
public virtual async Task<ActionResult<XQueryResult<XLocaleResourceDto>>> 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 ...
/// <summary>
/// Add Specified Resource ...
/// </summary>
/// <param name="resource"></param>
/// <param name="value"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpPost("Add")]
public virtual async Task<ActionResult<bool>> Add(
[FromQuery] string resource,
[FromQuery] string value,
[FromQuery] string language = null
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.Add(
value: value,
resource: resource,
language: language,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Update Resource ...
/// </summary>
/// <param name="resource"></param>
/// <param name="value"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpPost("Update")]
public virtual async Task<ActionResult<bool>> Update(
[FromQuery] string resource,
[FromQuery] string value,
[FromQuery] string language = null
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.Update(
value: value,
resource: resource,
language: language,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Add Or Update Resource ...
/// </summary>
/// <param name="resource"></param>
/// <param name="value"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpPost("AddOrUpdate")]
public virtual async Task<ActionResult<bool>> AddOrUpdate(
[FromQuery] string resource,
[FromQuery] string value,
[FromQuery] string language = null
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.AddOrUpdate(
value: value,
resource: resource,
language: language,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Add Specified Resource ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
[HttpPost("AddModel")]
public virtual async Task<ActionResult<XStringDto>> AddEntity(
[FromBody] XStringDto item
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider.AddEntity(
item: item,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Update Specified Entity ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
[HttpPost("UpdateModel")]
public virtual async Task<ActionResult<XStringDto>> UpdateEntity(
[FromBody] XStringDto item
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.UpdateEntity(
item: item,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Add Or Update Specified Entitiy ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
[HttpPost("AddOrUpdateModel")]
public virtual async Task<ActionResult<XStringDto>> AddOrUpdateEntity(
[FromBody] XStringDto item
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.AddOrUpdateEntity(
item: item,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Add Specified Locale Resource ...
/// </summary>
/// <param name="item"></param>
/// <param name="resource"></param>
/// <returns></returns>
[HttpPost("AddLocale")]
public virtual async Task<ActionResult<XStringDto>> AddByLocaleResource(
[FromBody] XLocaleResourceDto item,
[FromQuery] string resource
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.AddByLocaleResource(
item: item,
resource: resource,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Update Specified Locale Resource ...
/// </summary>
/// <param name="item"></param>
/// <param name="resource"></param>
/// <returns></returns>
[HttpPost("UpdateLocale")]
public virtual async Task<ActionResult<XStringDto>> UpdateByLocaleResource(
[FromBody] XLocaleResourceDto item,
[FromQuery] string resource
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.UpdateByLocaleResource(
item: item,
resource: resource,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Add Or Update Resource By Locale ...
/// </summary>
/// <param name="item"></param>
/// <param name="resource"></param>
/// <returns></returns>
[HttpPost("AddOrUpdateLocale")]
public virtual async Task<ActionResult<XStringDto>> AddOrUpdateByLocaleResource(
[FromBody] XLocaleResourceDto item,
[FromQuery] string resource
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.AddOrUpdateByLocaleResource(
item: item,
resource: resource,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Add Or Update all XResourceDto(s) Locales ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
[HttpPost("AddResource")]
public virtual async Task<ActionResult<IEnumerable<XStringDto>>> AddByResource(
[FromBody] XResourceDto item
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.AddByResource(
item: item,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
#endregion
//
#region Remove Actions ...
/// <summary>
/// Remove all Specified Language's Resources ...
/// </summary>
/// <param name="language"></param>
/// <returns></returns>
[HttpDelete("RemoveLanguage")]
public virtual async Task<ActionResult> RemoveLanguageResources(
[FromQuery] string language
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
await StringProvider
.RemoveLanguageResources(
language: language,
connectionId: connectionId
);
//
return Ok();
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Remove all Specified Resource Ids instances ...
/// </summary>
/// <param name="resource"></param>
/// <returns></returns>
[HttpDelete("RemoveLocales")]
public virtual async Task<ActionResult<IEnumerable<XStringDto>>> RemoveResource(
[FromQuery] string resource
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.RemoveResource(
resource: resource,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Remove Specified Resource ...
/// </summary>
/// <param name="resource"></param>
/// <param name="language"></param>
/// <returns></returns>
[HttpDelete("Remove")]
public virtual async Task<ActionResult<bool>> Remove(
[FromQuery] string resource,
[FromQuery] string language = null
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
var result = await StringProvider
.Remove(
resource: resource,
language: language,
connectionId: connectionId
);
//
return Ok(result.
ToDynamicObject());
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
/// <summary>
/// Remove all Resource of Specified XResourceDto ...
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
[HttpPost("RemoveResource")]
public virtual async Task<ActionResult> RemoveByResource(
[FromBody] XResourceDto item
)
{
//
// Do ...
try
{
//
var connectionId = GetConnectionId();
//
await StringProvider
.RemoveByResource(
item: item,
connectionId: connectionId
);
//
return Ok();
}
catch (Exception ex)
{
//
var result = GetExceptionActionResult(ex);
return result;
}
}
#endregion
}
}