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 xIdentityService.Controllers; using xIdentityService.Interfaces; using xModels.Dtos; using xStringService.Interfaces; using xStringService.Models.Dtos; namespace xStringService.Controllers { public abstract class XBaseResourceProviderControllerBase : XBaseIdentityApiV1Controller, IXBaseResourceProviderController where TResourceProvider : IXResourceProvider { private readonly TResourceProvider provider; protected XBaseResourceProviderControllerBase( ILogger> logger, XAppConfiguration appConfiguration, IXIdentityProvider identityProvider, XValidationProvider validationProvider, TResourceProvider provider ) : base( logger, appConfiguration, identityProvider, validationProvider ) { this.provider = provider; } #region Actions ... /// /// Retrieve a List of Exists Languages ... /// /// /// [HttpGet("Languages")] public virtual async Task>> GetLanguages( CancellationToken cancellationToken = default ) { // try { // var result = await provider .GetLanguages(cancellationToken); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Retrieve all Exists Items ... /// /// Specified Resource Title /// /// [HttpGet("LocalesResource")] public virtual async Task>> GetResourceLocales( CancellationToken cancellationToken = default ) { // try { // var result = await provider .GetResourceLocales(cancellationToken); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Extract Translation of in Specified Language ... /// /// Specified Language ... /// /// [HttpGet("{language}/Translation")] public virtual async Task> GetResourceTranslation( [FromRoute] string language, CancellationToken cancellationToken = default ) { // try { // var result = await provider .GetResourceTranslation( language: language, cancellationToken: cancellationToken ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Check Has Specified Translation or not ... /// /// Specified Language ... /// /// [HttpGet("{language}/Has")] public virtual async Task> HasLocale( [FromRoute] string language, CancellationToken cancellationToken = default ) { // try { // var result = await provider .HasLocale( language: language, cancellationToken: cancellationToken ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Retrieve as Locale Model ... /// /// Specified Language ... /// /// [HttpGet("{language}/Locale")] public virtual async Task> GetLocale( [FromRoute] string language, CancellationToken cancellationToken = default ) { // try { // var result = await provider .GetLocale( language: language, cancellationToken: cancellationToken ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Retrieve all Exists Locale Models ... /// /// /// [HttpGet("Locales")] public virtual async Task>> GetLocales( CancellationToken cancellationToken = default ) { // try { // var result = await provider .GetLocales(cancellationToken); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Retrieve as XResourceDto ... /// /// /// [HttpGet("Resource")] public virtual async Task> GetResource( CancellationToken cancellationToken = default ) { // try { // var result = await provider .GetResource(cancellationToken); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Add or Update a Resource Model ... /// /// a XResourceDto Model ... /// /// [HttpPost("")] public virtual async Task> AddOrUpdateResource( [FromBody] XResourceDto resource, CancellationToken cancellationToken = default ) { // try { // var result = await provider .AddOrUpdateResource( resource: resource, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Add Or Update Locale ... /// /// /// /// [HttpPost("Locales")] public virtual async Task> AddOrUpdateLocale( [FromBody] XLocaleResourceDto locale, CancellationToken cancellationToken = default ) { // try { // var result = await provider .AddOrUpdateLocale( locale: locale, cancellationToken: cancellationToken ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Remove Locale ... /// /// /// /// [HttpPost("Locale/Remove")] public virtual async Task> RemoveLocale( [FromBody] XLocaleResourceDto locale, CancellationToken cancellationToken = default ) { // try { // var result = await provider .RemoveLocale( locale: locale, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Remove Specified Resource Model ... /// /// a XResourceDto Model ... /// /// [HttpPost("Resource/Remove")] public virtual async Task RemoveResource( [FromBody] XResourceDto resource, CancellationToken cancellationToken = default ) { // try { // await provider .RemoveResource( resource: resource, cancellationToken: cancellationToken ); // return Ok(); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } #endregion } }