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 } }