using System; using System.Linq; using xModels.Dtos; using xIdentityHelper; using System.Threading; using xCommons.Attributes; using xCommons.Extensions; using xIdentityModels.Dtos; using xExceptions.Constants; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using xIdentityModels.Extensions; using System.Collections.Generic; using Microsoft.AspNetCore.Authorization; using static IdentityServer4.IdentityServerConstants; namespace xIds.Controllers { public partial class ApplicationsController { // #region Application ... /// /// Create Application ... /// /// /// Sample request: /// /// { /// "type": 0, /// "name": "string", /// "description": "string", /// } /// /// /// /// /// [RequireXPowered] [HttpPost("Applications")] [Authorize(LocalApi.PolicyName)] [Authorize(Policy = XPolicies.EnabledUser)] public async Task> CreateApplication( [FromBody] XApplicationDto item, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (!item.IsValidForAdd()) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.AddApplicationAsync( item: item, userInfo: userInfo, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Update Specified Application ... /// /// /// Sample request: /// /// { /// "id": 0, /// "type": 0, /// "name": "string", /// "description": "string", /// } /// /// /// /// /// [RequireXPowered] [HttpPut("Applications")] [Authorize(LocalApi.PolicyName)] [Authorize(Policy = XPolicies.EnabledUser)] public async Task> UpdateApplication( [FromBody] XApplicationDto item, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (!item.IsValidForAdd()) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.UpdateApplicationAsync( item: item, id: item.Id, userInfo: userInfo, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Remove Specified Application ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpDelete("Applications/{id}")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task> RemoveApplication( [FromRoute] int id, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (!id.IsValidIntId()) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.RemoveApplicationAsync( id: id, softDelete: false, userInfo: userInfo, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Get Specified Application ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpGet("Applications/{id}")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task> GetApplication( [FromRoute] int id, CancellationToken cancellationToken = default ) { // try { // // Validate ... if (!id.IsValidIntId()) { XException.InvalidArgs.Throw(); } // var userInfo = await GetUserInfo(); // var result = await provider.GetApplicationAsync( id: id, userInfo: userInfo, includeBuilder: null, ignoreSoftDeleteds: true, cancellationToken: cancellationToken ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Get All Application ... /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpGet("Applications")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task>> GetAllApplications( CancellationToken cancellationToken = default ) { // try { // var userInfo = await GetUserInfo(); // var result = await provider.GetAllApplicationAsync( userInfo: userInfo, includeBuilder: null, ignoreSoftDeleteds: true, cancellationToken: cancellationToken, orderBuilder: x => x.OrderBy(y => y.Id) ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } /// /// Query Applications ... /// /// /// /// [RequireXPowered] [Authorize(LocalApi.PolicyName)] [HttpGet("Applications/Query")] [Authorize(Policy = XPolicies.EnabledUser)] public async Task>> QueryApplications( [FromRoute] XQuery query, CancellationToken cancellationToken = default ) { // try { // var userInfo = await GetUserInfo(); // var result = await provider.QueryApplicationAsync( query: query, predicate: null, userInfo: userInfo, includeBuilder: null, ignoreSoftDeleteds: true, cancellationToken: cancellationToken, orderBuilder: x => x.OrderBy(y => y.Id) ); // return Ok(result.ToDynamicObject()); } catch (Exception ex) { // var result = GetExceptionActionResult(ex); return result; } } #endregion } }