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 ...
///
/// 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);
}
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 ActionResult> QueryResourceIds(
[FromQuery] XQuery query
)
{
//
// Do ...
try
{
//
var result = 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 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;
}
}
///
/// Update Resource ...
///
///
///
///
///
[HttpPost("Update")]
public virtual async Task> 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;
}
}
///
/// Add Or Update Resource ...
///
///
///
///
///
[HttpPost("AddOrUpdate")]
public virtual async Task> 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;
}
}
///
/// Add Specified Resource ...
///
///
///
[HttpPost("AddModel")]
public virtual async Task> 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;
}
}
///
/// Update Specified Entity ...
///
///
///
[HttpPost("UpdateModel")]
public virtual async Task> 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;
}
}
///
/// Add Or Update Specified Entitiy ...
///
///
///
[HttpPost("AddOrUpdateModel")]
public virtual async Task> 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;
}
}
///
/// Add Specified Locale Resource ...
///
///
///
///
[HttpPost("AddLocale")]
public virtual async Task> 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;
}
}
///
/// Update Specified Locale Resource ...
///
///
///
///
[HttpPost("UpdateLocale")]
public virtual async Task> 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;
}
}
///
/// Add Or Update Resource By Locale ...
///
///
///
///
[HttpPost("AddOrUpdateLocale")]
public virtual async Task> 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;
}
}
///
/// Add Or Update all XResourceDto(s) Locales ...
///
///
///
[HttpPost("AddResource")]
public virtual async Task>> 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 ...
///
/// Remove all Specified Language's Resources ...
///
///
///
[HttpDelete("RemoveLanguage")]
public virtual async Task 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;
}
}
///
/// Remove all Specified Resource Ids instances ...
///
///
///
[HttpDelete("RemoveLocales")]
public virtual async Task>> 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;
}
}
///
/// Remove Specified Resource ...
///
///
///
///
[HttpDelete("Remove")]
public virtual async Task> 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;
}
}
///
/// Remove all Resource of Specified XResourceDto ...
///
///
///
[HttpPost("RemoveResource")]
public virtual async Task 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
}
}