using System; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Logging; using AyaNova.Models; using AyaNova.Api.ControllerHelpers; using AyaNova.Biz; namespace AyaNova.Api.Controllers { /// /// Enum pick list controller /// [ApiVersion("8.0")] [Route("api/v{version:apiVersion}/[controller]")] [Produces("application/json")] public class AyaEnumPickListController : Controller { private readonly AyContext ct; private readonly ILogger log; private readonly ApiServerState serverState; /// /// ctor /// /// /// /// public AyaEnumPickListController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) { ct = dbcontext; log = logger; serverState = apiServerState; } /// /// Get name value localized display value list of AyaNova enumerated types for list specified /// /// Required roles: Any /// /// /// List [HttpGet("{enumname}")] public ActionResult GetPickList([FromRoute]string enumName) { if (!serverState.IsOpen) { return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); } long LocaleId = UserLocaleIdFromContext.Id(HttpContext.Items); List LocaleKeysToFetch = new List(); List ReturnList = new List(); switch (enumName) { case "usertypes": LocaleKeysToFetch.Add("UserTypesAdministrator"); LocaleKeysToFetch.Add("UserTypesSchedulable"); LocaleKeysToFetch.Add("UserTypesNonSchedulable"); LocaleKeysToFetch.Add("UserTypesClient"); LocaleKeysToFetch.Add("UserTypesHeadOffice"); LocaleKeysToFetch.Add("UserTypesSubContractor"); var LT = LocaleBiz.GetSubsetStatic(LocaleKeysToFetch, LocaleId).Result; ReturnList.Add(new NameIdItem() { Name = LT["UserTypesAdministrator"], Id = (long)UserType.Administrator }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypesSchedulable"], Id = (long)UserType.Schedulable }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypesNonSchedulable"], Id = (long)UserType.NonSchedulable }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypesClient"], Id = (long)UserType.Client }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypesHeadOffice"], Id = (long)UserType.HeadOffice }); ReturnList.Add(new NameIdItem() { Name = LT["UserTypesSubContractor"], Id = (long)UserType.Subcontractor }); break; } return Ok(new ApiOkResponse(ReturnList)); } /// /// Get all possible enumerated values picklists /// /// Required roles: Any /// /// List [HttpGet()] public ActionResult GetTypesList() { if (!serverState.IsOpen) { return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); } Dictionary ret = new Dictionary(); ret.Add("usertypes", "AyaNova user account types"); ret.Add("authorizationroles", "AyaNova user account role types"); ret.Add("AyaType", "All AyaNova object types, use the AyaTypeController route to fetch these"); return Ok(new ApiOkResponse(ret)); } }//eoc }//ens