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 xServices.TermsConditions.Interfaces; namespace xServices.TermsConditions.Controllers { /// /// a Controller base Class which implement based Actions to Provides Terms and Conditions Provider Access ... /// public abstract class XTermsConditionsControllerActions : XIBaseProviderController, IXTermsConditionsControllerActions { // #region Props ... public IXTermsComditionsProvider TermsProvider { get; } #endregion // #region Constructor ... public XTermsConditionsControllerActions( ILogger logger, XAppConfiguration appConfiguration, IXIdentityProvider identityProvider, XValidationProvider validationProvider, IXTermsComditionsProvider termsProvider ) : base( logger, appConfiguration, identityProvider, validationProvider ) { // TermsProvider = termsProvider; } #endregion // #region Actions ... /// /// Retrieved all Exists Languages Terms and Conditions ... /// /// [HttpGet("Terms/Languages")] public async Task>> TermsLanguages() { // // Do ... try { // // Retrieve User Info ... var userInfo = await GetUserInfo(); var connectionId = GetConnectionId(); // var result = await TermsProvider.TermsLanguages(); // return Ok(result .ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Check Has Terms and Conditions based on Specified Language ... /// /// if null, used Default Language ... /// [HttpGet("Terms/{language}/Has")] public async Task> HasTerms( [FromRoute] string language = null ) { // // Do ... try { // // Retrieve User Info ... var userInfo = await GetUserInfo(); var connectionId = GetConnectionId(); // var result = await TermsProvider.HasTerms( language: language ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Retrieve Terms and Conditions for Specified Language ... /// /// if null, used Default Language ... /// [HttpGet("Terms/{language}")] public async Task> GetTerms( [FromRoute] string language = null ) { // // Do ... try { // // Retrieve User Info ... var userInfo = await GetUserInfo(); var connectionId = GetConnectionId(); // var result = await TermsProvider.GetTerms( language: language ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Add Terms and Conditions for Specified Language ... /// /// /// /// [HttpPost("Terms/{language}")] public async Task> AddTerms( [FromRoute] string language, [FromQuery] string terms ) { // // Do ... try { // // Retrieve User Info ... var userInfo = await GetUserInfo(); var connectionId = GetConnectionId(); // var result = await TermsProvider.AddTerms( language: language, terms: terms, userInfo: userInfo, connectionId: connectionId ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Remove Terms and Conditions of Specified Language ... /// /// /// [HttpDelete("Terms/{language}")] public async Task> RemoveTerms( [FromRoute] string language ) { // // Do ... try { // // Retrieve User Info ... var userInfo = await GetUserInfo(); var connectionId = GetConnectionId(); // var result = await TermsProvider.RemoveTerms( language: language, userInfo: userInfo, connectionId: connectionId ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Update Terms and Conditions of Specified Language ... /// /// /// /// [HttpPut("Terms/{language}")] public async Task> UpdateTerms( [FromRoute] string language, [FromQuery] string terms ) { // // Do ... try { // // Retrieve User Info ... var userInfo = await GetUserInfo(); var connectionId = GetConnectionId(); // var result = await TermsProvider.UpdateTerms( language: language, terms: terms, userInfo: userInfo, connectionId: connectionId ); // return Ok(result); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } #endregion // #region NonActions ... #endregion } }