using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using AyaNova.Models; using AyaNova.Api.ControllerHelpers; using AyaNova.Biz; using AyaNova.KPI; using System.Threading.Tasks; using System.Linq; namespace AyaNova.Api.Controllers { [ApiController] [Asp.Versioning.ApiVersion("8.0")] [Route("api/v{version:apiVersion}/kpi")] [Produces("application/json")] [Authorize] public class KPIController : ControllerBase { private readonly AyContext ct; private readonly ILogger log; private readonly ApiServerState serverState; /// /// ctor /// /// /// /// public KPIController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) { ct = dbcontext; log = logger; serverState = apiServerState; } /// /// Get KPI data /// /// Parameters for pick list see api docs for details /// Filtered list [HttpPost] public async Task PostList([FromBody] KPIRequestOptions options) { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); if (!ModelState.IsValid) return BadRequest(new ApiErrorResponse(ModelState)); //UserTypeFromContext.Type(HttpContext.Items) return Ok(await KPIFetcher.GetResponseAsync(ct, options, UserRolesFromContext.Roles(HttpContext.Items), log, UserIdFromContext.Id(HttpContext.Items))); } //SAVE FOR LATER IF WANT TO RETURN LIST OF ALL KPI'S (likely something to do with report editing??) // /// // /// List of all DataList keys available // /// // /// List of strings // [HttpGet("listkeys")] // public ActionResult GetDataListKeys() // { // //NOTE: not used by AyaNova Client, convenience method for developers api usage // if (!serverState.IsOpen) // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); // return Ok(ApiOkResponse.Response(DataListFactory.GetListOfAllDataListKeyNames())); // } }//eoc }//ens