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