last ...
This commit is contained in:
@@ -1,387 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using xCommons.Configurations;
|
|
||||||
using xCommons.Extensions;
|
|
||||||
using xCommons.Providers;
|
|
||||||
using xExceptions.Constants;
|
|
||||||
using xIdentityService.Controllers;
|
|
||||||
using xIdentityService.Interfaces;
|
|
||||||
using xModels.Base;
|
|
||||||
using xModels.Dtos;
|
|
||||||
using xStringService.Interfaces;
|
|
||||||
using xStringService.Models.Dtos;
|
|
||||||
|
|
||||||
namespace xStringService.Controllers
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// an Implementation of Base Actions of a Controller which Provides
|
|
||||||
/// XString Resource Service Actions ...
|
|
||||||
/// </summary>
|
|
||||||
public abstract class XBaseStringResourceProviderControllerBase : XBaseIdentityApiV1Controller, IXBaseStringResourceProviderControllerBase
|
|
||||||
{
|
|
||||||
private readonly IXBaseStringResourceProvider resourceProvider;
|
|
||||||
|
|
||||||
protected XBaseStringResourceProviderControllerBase(
|
|
||||||
ILogger<XBaseStringResourceProviderControllerBase> logger,
|
|
||||||
XAppConfiguration appConfiguration,
|
|
||||||
IXIdentityProvider identityProvider,
|
|
||||||
XValidationProvider validationProvider,
|
|
||||||
IXBaseStringResourceProvider resourceProvider
|
|
||||||
) : base(
|
|
||||||
logger,
|
|
||||||
appConfiguration,
|
|
||||||
identityProvider,
|
|
||||||
validationProvider
|
|
||||||
)
|
|
||||||
{
|
|
||||||
this.resourceProvider = resourceProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Locales ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost("Add")]
|
|
||||||
public virtual async Task<ActionResult<IEnumerable<XStringDto>>> Add(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
[FromBody] XBaseRangeRequest<XLocaleResourceDto> locales,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(suffix)
|
|
||||||
.AddNotNull(locales)
|
|
||||||
.AddNotZeroChilds(locales.Items)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var connectionId = GetConnectionId();
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await resourceProvider.Add(
|
|
||||||
suffix: suffix,
|
|
||||||
locales: locales.Items,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok(result.ToDynamicObject());
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add or Update Specified Locales ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost("AddOrUpdate")]
|
|
||||||
public virtual async Task<ActionResult<IEnumerable<XStringDto>>> AddOrUpdate(
|
|
||||||
[FromQuery] string resource,
|
|
||||||
[FromBody] XBaseRangeRequest<XLocaleResourceDto> locales,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(resource)
|
|
||||||
.AddNotNull(locales)
|
|
||||||
.AddNotZeroChilds(locales.Items)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var connectionId = GetConnectionId();
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await resourceProvider.AddOrUpdate(
|
|
||||||
resource: resource,
|
|
||||||
locales: locales.Items,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok(result.ToDynamicObject());
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="item"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost("AddResource")]
|
|
||||||
public virtual async Task<ActionResult<XResourceDto>> AddResource(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
[FromBody] XResourceDto item,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(suffix)
|
|
||||||
.AddNotNull(item)
|
|
||||||
.AddNotZeroChilds(item.Locales)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var connectionId = GetConnectionId();
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await resourceProvider.AddResource(
|
|
||||||
item: item,
|
|
||||||
suffix: suffix,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok(result.ToDynamicObject());
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Specified Locale ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpGet("GetLocale")]
|
|
||||||
public virtual async Task<ActionResult<XLocaleResourceDto>> GetLocale(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
[FromQuery] string language = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(suffix)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await resourceProvider.GetLocale(
|
|
||||||
suffix: suffix,
|
|
||||||
language: language,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok(result.ToDynamicObject());
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Resources of Specified Resource Title ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpGet("GetResource")]
|
|
||||||
public virtual async Task<ActionResult<XResourceDto>> GetResource(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(suffix)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await resourceProvider.GetResource(
|
|
||||||
suffix: suffix,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok(result.ToDynamicObject());
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove all Resources which belongs to Specified Suffix ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpDelete("Remove")]
|
|
||||||
public virtual async Task<ActionResult> Remove(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(suffix)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var connectionId = GetConnectionId();
|
|
||||||
|
|
||||||
//
|
|
||||||
await resourceProvider.Remove(
|
|
||||||
suffix: suffix,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpDelete("RemoveResource")]
|
|
||||||
public virtual async Task<ActionResult> Remove(
|
|
||||||
[FromQuery] string resource,
|
|
||||||
[FromQuery] string language,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
await ValidationProvider
|
|
||||||
.GroupValidationBuilder()
|
|
||||||
.AddNotEmpty(resource)
|
|
||||||
.AddNotEmpty(language)
|
|
||||||
.ValidateGroupAsync();
|
|
||||||
|
|
||||||
//
|
|
||||||
var connectionId = GetConnectionId();
|
|
||||||
|
|
||||||
//
|
|
||||||
await resourceProvider.Remove(
|
|
||||||
resource: resource,
|
|
||||||
language: language,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return Ok();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
var result = GetExceptionActionResult(ex);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using xCommons.Configurations;
|
|
||||||
using xModels.Dtos;
|
|
||||||
using xStringService.Interfaces.Dtos;
|
|
||||||
using xStringService.Models.Dtos;
|
|
||||||
|
|
||||||
namespace xStringService.Interfaces
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// a Base Class for Handling Resources Based on Specified Types on
|
|
||||||
/// String Resources Use ...
|
|
||||||
/// such as:
|
|
||||||
/// - Terms and Conditions;
|
|
||||||
/// - Contents;
|
|
||||||
/// - News;
|
|
||||||
/// - etc ...
|
|
||||||
/// </summary>
|
|
||||||
public interface IXBaseStringResourceProvider
|
|
||||||
{
|
|
||||||
//
|
|
||||||
#region Props ...
|
|
||||||
string Prefix { get; }
|
|
||||||
IXStringServiceProvider Provider { get; }
|
|
||||||
XAppConfiguration AppConfiguration { get; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
//
|
|
||||||
#region Actions ...
|
|
||||||
/// <summary>
|
|
||||||
/// Prepare Resource Title by Given Data ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
string GetResourceTitle(string suffix);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Locales ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<IEnumerable<XStringDto>> Add(
|
|
||||||
string suffix,
|
|
||||||
IEnumerable<XLocaleResourceDto> locales,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Or Update Specified Locals ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<IEnumerable<XStringDto>> AddOrUpdate(
|
|
||||||
string resource,
|
|
||||||
IEnumerable<XLocaleResourceDto> locales,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Specified Locale ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<XLocaleResourceDto> GetLocale(
|
|
||||||
string suffix,
|
|
||||||
string language = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="item"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<XResourceDto> AddResource(
|
|
||||||
string suffix,
|
|
||||||
XResourceDto item,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Resources of Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<XResourceDto> GetResource(
|
|
||||||
string suffix,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove Specified Suffix Resources ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task Remove(
|
|
||||||
string suffix,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task Remove(
|
|
||||||
string resource,
|
|
||||||
string language,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using xModels.Base;
|
|
||||||
using xModels.Dtos;
|
|
||||||
using xStringService.Models.Dtos;
|
|
||||||
|
|
||||||
namespace xStringService.Interfaces
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// an Interface which Described Base Actions of a Controller which Provides
|
|
||||||
/// XString Resource Service Actions ...
|
|
||||||
/// </summary>
|
|
||||||
public interface IXBaseStringResourceProviderControllerBase
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Locales ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost("Add")]
|
|
||||||
Task<ActionResult<IEnumerable<XStringDto>>> Add(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
[FromBody] XBaseRangeRequest<XLocaleResourceDto> locales,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add or Update Specified Locales ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost("AddOrUpdate")]
|
|
||||||
Task<ActionResult<IEnumerable<XStringDto>>> AddOrUpdate(
|
|
||||||
[FromQuery] string resource,
|
|
||||||
[FromBody] XBaseRangeRequest<XLocaleResourceDto> locales,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="item"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost("AddResource")]
|
|
||||||
Task<ActionResult<XResourceDto>> AddResource(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
[FromBody] XResourceDto item,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Specified Locale ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpGet("GetLocale")]
|
|
||||||
Task<ActionResult<XLocaleResourceDto>> GetLocale(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
[FromQuery] string language = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Resources of Specified Resource Title ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpGet("GetResource")]
|
|
||||||
Task<ActionResult<XResourceDto>> GetResource(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove all Resources which belongs to Specified Suffix ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpDelete("Remove")]
|
|
||||||
Task<ActionResult> Remove(
|
|
||||||
[FromQuery] string suffix,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpDelete("RemoveResource")]
|
|
||||||
Task<ActionResult> Remove(
|
|
||||||
[FromQuery] string resource,
|
|
||||||
[FromQuery] string language,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using xStringService.Models.Dtos;
|
||||||
|
|
||||||
|
namespace xStringService.Interfaces
|
||||||
|
{
|
||||||
|
public interface IXItemResourceProvider
|
||||||
|
{
|
||||||
|
//
|
||||||
|
#region All Item Actions ...
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve a List of Exists Languages for Current Item ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<IEnumerable<string>> GetLanguages(
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve all Exists Items of type ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<IEnumerable<XStringDto>> GetResourceLocales(
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//
|
||||||
|
#region Single Item Actions ...
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve a List of Exists Languages for Current Item ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="identifier"></param>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<IEnumerable<string>> GetLanguages(
|
||||||
|
object identifier,
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve all Exists Items of type ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="identifier"></param>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<IEnumerable<XStringDto>> GetResourceLocales(
|
||||||
|
object identifier,
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
);
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using xCommons.Extensions;
|
||||||
|
using xExceptions.Constants;
|
||||||
|
using xStringService.Interfaces;
|
||||||
|
using xStringService.Interfaces.Dtos;
|
||||||
|
using xStringService.Models.Dtos;
|
||||||
|
|
||||||
|
namespace xStringService.Providers
|
||||||
|
{
|
||||||
|
public abstract class XBaseItemResourceProvider : IXItemResourceProvider
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Item Name for Resource Providing ...
|
||||||
|
/// </summary>
|
||||||
|
private readonly string item;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// an Implementation of Item Resource Provider
|
||||||
|
/// </summary>
|
||||||
|
/// <value></value>
|
||||||
|
private readonly XBaseResourceProvider provider;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// String Provider Service ...
|
||||||
|
/// </summary>
|
||||||
|
private readonly IXStringServiceProvider stringProvider;
|
||||||
|
|
||||||
|
//
|
||||||
|
#region Constructor ...
|
||||||
|
protected XBaseItemResourceProvider(
|
||||||
|
string item,
|
||||||
|
IXStringServiceProvider stringProvider
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
this.item = item;
|
||||||
|
this.stringProvider = stringProvider;
|
||||||
|
provider = new XBaseResourceProvider(
|
||||||
|
item,
|
||||||
|
stringProvider
|
||||||
|
);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//
|
||||||
|
#region All Item Actions ...
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve a List of Exists Languages for Current Item ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<IEnumerable<string>> GetLanguages(
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
var result =
|
||||||
|
(await GetResourceLocales(cancellationToken))
|
||||||
|
.Select(x => x.Language)
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve all Exists Items of type ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<IEnumerable<XStringDto>> GetResourceLocales(
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
var identifier = GetResourceTitle();
|
||||||
|
var result = await stringProvider
|
||||||
|
.FindManyAsync(
|
||||||
|
includeBuilder: null,
|
||||||
|
ignoreSoftDeleteds: true,
|
||||||
|
cancellationToken: cancellationToken,
|
||||||
|
orderBuilder:
|
||||||
|
x => x
|
||||||
|
.OrderBy(y => y.Language)
|
||||||
|
.ThenBy(y => y.ResourceTitle),
|
||||||
|
predicate: x =>
|
||||||
|
x.ResourceTitle.StartsWith(identifier, StringComparison.InvariantCultureIgnoreCase)
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//
|
||||||
|
#region Single Item Actions ...
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve a List of Exists Languages for Current Item ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="identifier"></param>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<IEnumerable<string>> GetLanguages(
|
||||||
|
object identifier,
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Validate ...
|
||||||
|
var isValid = !identifier.IsNull();
|
||||||
|
if (!isValid)
|
||||||
|
{
|
||||||
|
XException.InvalidArgs.Throw();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set Identifier ...
|
||||||
|
SetResourceTitle(identifier);
|
||||||
|
|
||||||
|
//
|
||||||
|
var result =
|
||||||
|
await provider.GetLanguages(cancellationToken);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve all Exists Items of type ...
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="identifier"></param>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<IEnumerable<XStringDto>> GetResourceLocales(
|
||||||
|
object identifier,
|
||||||
|
CancellationToken cancellationToken = default
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Validate ...
|
||||||
|
var isValid = !identifier.IsNull();
|
||||||
|
if (!isValid)
|
||||||
|
{
|
||||||
|
XException.InvalidArgs.Throw();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set Identifier ...
|
||||||
|
SetResourceTitle(identifier);
|
||||||
|
|
||||||
|
//
|
||||||
|
var result =
|
||||||
|
await provider.GetResourceLocales(cancellationToken);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//
|
||||||
|
#region Private ...
|
||||||
|
private string GetResourceTitle(object identifier = null)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
var result = item;
|
||||||
|
|
||||||
|
//
|
||||||
|
if (!identifier.IsNull())
|
||||||
|
{
|
||||||
|
result = $"{item}_{identifier}";
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetResourceTitle(object identifier = null)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
var itemIdentifier = GetResourceTitle(identifier);
|
||||||
|
provider.SetField(
|
||||||
|
field: "resource",
|
||||||
|
value: $"{itemIdentifier}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,12 +14,12 @@ using xStringService.Models.Dtos;
|
|||||||
|
|
||||||
namespace xStringService.Providers
|
namespace xStringService.Providers
|
||||||
{
|
{
|
||||||
public abstract class XBaseResourceProvider : IXResourceProvider
|
public class XBaseResourceProvider : IXResourceProvider
|
||||||
{
|
{
|
||||||
protected string resource;
|
protected string resource;
|
||||||
private readonly IXStringServiceProvider provider;
|
private readonly IXStringServiceProvider provider;
|
||||||
|
|
||||||
protected XBaseResourceProvider(
|
public XBaseResourceProvider(
|
||||||
string resource,
|
string resource,
|
||||||
IXStringServiceProvider provider
|
IXStringServiceProvider provider
|
||||||
)
|
)
|
||||||
@@ -364,7 +364,7 @@ namespace xStringService.Providers
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//
|
//
|
||||||
#region Provate ...
|
#region Private ...
|
||||||
private async Task<IEnumerable<XStringDto>> ExtractItems(
|
private async Task<IEnumerable<XStringDto>> ExtractItems(
|
||||||
CancellationToken cancellationToken = default
|
CancellationToken cancellationToken = default
|
||||||
)
|
)
|
||||||
@@ -384,11 +384,6 @@ namespace xStringService.Providers
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void SetResourceTitle(string resource)
|
|
||||||
// {
|
|
||||||
// this.resource = resource;
|
|
||||||
// }
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,405 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using xCommons.Configurations;
|
|
||||||
using xCommons.Extensions;
|
|
||||||
using xExceptions.Constants;
|
|
||||||
using xModels.Dtos;
|
|
||||||
using xStringService.Extensions;
|
|
||||||
using xStringService.Interfaces;
|
|
||||||
using xStringService.Interfaces.Dtos;
|
|
||||||
using xStringService.Models.Dtos;
|
|
||||||
|
|
||||||
namespace xStringService.Providers
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// a Base Class for Handling Resources Based on Specified Types on
|
|
||||||
/// String Resources Use ...
|
|
||||||
/// such as:
|
|
||||||
/// - Terms and Conditions;
|
|
||||||
/// - Contents;
|
|
||||||
/// - News;
|
|
||||||
/// - etc ...
|
|
||||||
/// </summary>
|
|
||||||
public abstract class XBaseStringResourceProvider : IXBaseStringResourceProvider
|
|
||||||
{
|
|
||||||
//
|
|
||||||
#region Props ...
|
|
||||||
public string Prefix { get; }
|
|
||||||
public IXStringServiceProvider Provider { get; }
|
|
||||||
public XAppConfiguration AppConfiguration { get; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
//
|
|
||||||
#region Constructor ...
|
|
||||||
public XBaseStringResourceProvider(
|
|
||||||
string prefix,
|
|
||||||
IXStringServiceProvider provider,
|
|
||||||
XAppConfiguration appConfiguration
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
Prefix = prefix;
|
|
||||||
Provider = provider;
|
|
||||||
AppConfiguration = appConfiguration;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
//
|
|
||||||
#region Actions ...
|
|
||||||
/// <summary>
|
|
||||||
/// Prepare Resource Title by Given Data ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public string GetResourceTitle(string suffix)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
string result = "";
|
|
||||||
|
|
||||||
//
|
|
||||||
if (suffix.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
result = $"{Prefix}_${suffix}";
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Locales ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<IEnumerable<XStringDto>> Add(
|
|
||||||
string suffix,
|
|
||||||
IEnumerable<XLocaleResourceDto> locales,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
var has =
|
|
||||||
locales.HasChild() &&
|
|
||||||
!suffix.IsNullOrEmpty();
|
|
||||||
if (!has)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare Resource ID ...
|
|
||||||
string resourceID = GetResourceTitle(suffix);
|
|
||||||
var result = await locales.SelectAsync(async l =>
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Normalize Language ...
|
|
||||||
if (l.Language.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
l.Language = AppConfiguration.DefaultLanguage;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare Model for Add ...
|
|
||||||
var model = new XStringDto
|
|
||||||
{
|
|
||||||
Language = l.Language,
|
|
||||||
TranslatedValue = l.Value,
|
|
||||||
ResourceTitle = resourceID,
|
|
||||||
};
|
|
||||||
model = await Provider.AddAsync(
|
|
||||||
item: model,
|
|
||||||
saveChanges: true,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
return model;
|
|
||||||
});
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Or Update Specified Locals ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="locales"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<IEnumerable<XStringDto>> AddOrUpdate(
|
|
||||||
string resource,
|
|
||||||
IEnumerable<XLocaleResourceDto> locales,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
bool isValid =
|
|
||||||
locales.HasChild() &&
|
|
||||||
!resource.IsNullOrEmpty() &&
|
|
||||||
locales.All(l => !l.Value.IsNullOrEmpty() && !l.Language.IsNullOrEmpty());
|
|
||||||
if (!isValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check Resource ...
|
|
||||||
isValid = resource.Contains(Prefix);
|
|
||||||
if (!isValid)
|
|
||||||
{
|
|
||||||
XException.NotAllowed.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await locales.SelectAsync(async l =>
|
|
||||||
await Provider.AddOrUpdateByLocaleResource(
|
|
||||||
item: l,
|
|
||||||
resource: resource,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Specified Locale ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<XLocaleResourceDto> GetLocale(
|
|
||||||
string suffix,
|
|
||||||
string language = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Normalize ...
|
|
||||||
if (language.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
language = AppConfiguration.DefaultLanguage;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (suffix.IsNullOrEmpty() || language.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare Resource Title ...
|
|
||||||
string resource = GetResourceTitle(suffix);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check Resource Exists ...
|
|
||||||
var isExists = await Provider.IsResourceExists(
|
|
||||||
resource: resource,
|
|
||||||
language: language,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
if (!isExists)
|
|
||||||
{
|
|
||||||
XException.NotFound.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Retrieve and Validate Dto Model ...
|
|
||||||
var model = await Provider.Get(
|
|
||||||
resource: resource,
|
|
||||||
language: language,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
if (model.IsNullOrDefault())
|
|
||||||
{
|
|
||||||
XException.ActionFailed.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare Result ...
|
|
||||||
var result = model
|
|
||||||
.ToXLocaleResourceDto();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="item"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<XResourceDto> AddResource(
|
|
||||||
string suffix,
|
|
||||||
XResourceDto item,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (suffix.IsNullOrEmpty() ||
|
|
||||||
item.IsNull() ||
|
|
||||||
!item.Locales.HasChild() ||
|
|
||||||
!item.Locales.All(l => !l.Value.IsNullOrEmpty()))
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare Resource ID ...
|
|
||||||
var addedLocals = await Add(
|
|
||||||
suffix: suffix,
|
|
||||||
locales: item.Locales,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
if (!addedLocals.HasChild())
|
|
||||||
{
|
|
||||||
XException.ActionFailed.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
var result = await GetResource(
|
|
||||||
suffix: suffix,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get Resources of Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task<XResourceDto> GetResource(
|
|
||||||
string suffix,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (suffix.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare Resource ID ...
|
|
||||||
string resourceID = GetResourceTitle(suffix);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Prepare ...
|
|
||||||
var result = await Provider.GetResource(
|
|
||||||
resource: resourceID,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove Specified Suffix Resources ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="suffix"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task Remove(
|
|
||||||
string suffix,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
if (suffix.IsNullOrEmpty())
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
var resourceID = GetResourceTitle(suffix);
|
|
||||||
await Provider.RemoveResource(
|
|
||||||
resource: resourceID,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove Specified Resource ...
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="resource"></param>
|
|
||||||
/// <param name="language"></param>
|
|
||||||
/// <param name="connectionId"></param>
|
|
||||||
/// <param name="cancellationToken"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task Remove(
|
|
||||||
string resource,
|
|
||||||
string language,
|
|
||||||
string connectionId = null,
|
|
||||||
CancellationToken cancellationToken = default
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Validate ...
|
|
||||||
bool isValid =
|
|
||||||
!resource.IsNullOrEmpty() &&
|
|
||||||
!language.IsNullOrEmpty();
|
|
||||||
if (!isValid)
|
|
||||||
{
|
|
||||||
XException.InvalidArgs.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check resource ID Contains Prefix ...
|
|
||||||
isValid = resource.Contains(Prefix);
|
|
||||||
if (!isValid)
|
|
||||||
{
|
|
||||||
XException.NotAllowed.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check Exists ...
|
|
||||||
var isExists = await Provider.IsResourceExists(
|
|
||||||
resource: resource,
|
|
||||||
language: language,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
if (!isExists)
|
|
||||||
{
|
|
||||||
XException.NotFound.Throw();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove Resource ...
|
|
||||||
await Provider.Remove(
|
|
||||||
resource: resource,
|
|
||||||
language: language,
|
|
||||||
connectionId: connectionId,
|
|
||||||
cancellationToken: cancellationToken
|
|
||||||
);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user