diff --git a/server/AyaNova/Controllers/FormCustomController.cs b/server/AyaNova/Controllers/FormCustomController.cs index 5ba7fc2e..0614bbf9 100644 --- a/server/AyaNova/Controllers/FormCustomController.cs +++ b/server/AyaNova/Controllers/FormCustomController.cs @@ -95,37 +95,7 @@ namespace AyaNova.Api.Controllers - /// - /// Get available fields for form specified - /// Used to build UI for customizing a form - /// - /// Required roles: - /// BizAdminFull only has rights to customize forms - /// - /// - /// - /// A single FormCustom - [HttpGet("AvailableFields/{formkey}")] - public ActionResult GetAvailableFields([FromRoute] string formkey) - { - if (serverState.IsClosed) - return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); - - if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.FormCustom)) - return StatusCode(403, new ApiNotAuthorizedResponse()); - - if (!ModelState.IsValid) - return BadRequest(new ApiErrorResponse(ModelState)); - - if (ObjectFields.IsValidObjectKey(formkey)) - { - return Ok(ApiOkResponse.Response(ObjectFields.ObjectFields(formkey), true)); - } - else - { - return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); - } - } + diff --git a/server/AyaNova/Controllers/ObjectFieldsController.cs b/server/AyaNova/Controllers/ObjectFieldsController.cs new file mode 100644 index 00000000..ef2044a2 --- /dev/null +++ b/server/AyaNova/Controllers/ObjectFieldsController.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Logging; +using Microsoft.AspNetCore.Authorization; +using AyaNova.Models; +using AyaNova.Api.ControllerHelpers; +using AyaNova.Biz; + + +namespace AyaNova.Api.Controllers +{ + + /// + /// Enum pick list controller + /// + [ApiController] + [ApiVersion("8.0")] + [Route("api/v{version:apiVersion}/[controller]")] + [Produces("application/json")] + [Authorize] + public class ObjectFieldsController : ControllerBase + { + private readonly AyContext ct; + private readonly ILogger log; + private readonly ApiServerState serverState; + + + /// + /// ctor + /// + /// + /// + /// + public ObjectFieldsController(AyContext dbcontext, ILogger logger, ApiServerState apiServerState) + { + ct = dbcontext; + log = logger; + serverState = apiServerState; + } + + + /// + /// Get available fields for object specified + /// Used to build UI for customizing forms, lists etc + /// + /// Required roles: Any + /// + /// + /// + /// List of fields and their properties + [HttpGet("ObjectFields/{objectKey}")] + public ActionResult GetObjectFields([FromRoute] string objectKey) + { + if (!serverState.IsOpen) + return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); + + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + + if (ObjectFields.IsValidObjectKey(objectKey)) + { + return Ok(ApiOkResponse.Response(ObjectFields.ObjectFieldsList(objectKey), true)); + } + else + { + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + } + } + + + + + }//eoc +}//ens \ No newline at end of file diff --git a/server/AyaNova/biz/CustomFieldsValidator.cs b/server/AyaNova/biz/CustomFieldsValidator.cs index ece7f8a4..501cb695 100644 --- a/server/AyaNova/biz/CustomFieldsValidator.cs +++ b/server/AyaNova/biz/CustomFieldsValidator.cs @@ -16,7 +16,7 @@ namespace AyaNova.Biz return; var FormTemplate = JArray.Parse(formCustom.Template); - var ThisFormCustomFieldsList = ObjectFields.ObjectFields(formCustom.FormKey).Where(x => x.Custom == true).Select(x => x.Key).ToList(); + var ThisFormCustomFieldsList = ObjectFields.ObjectFieldsList(formCustom.FormKey).Where(x => x.Custom == true).Select(x => x.Key).ToList(); //If the customFields string is empty then only validation is if any of the fields are required to be filled in if (!hasCustomData) diff --git a/server/AyaNova/biz/FormCustomBiz.cs b/server/AyaNova/biz/FormCustomBiz.cs index ab6f5172..dd276a36 100644 --- a/server/AyaNova/biz/FormCustomBiz.cs +++ b/server/AyaNova/biz/FormCustomBiz.cs @@ -192,7 +192,7 @@ namespace AyaNova.Biz if ((!PropertyHasErrors("FormKey") && !string.IsNullOrWhiteSpace(inObj.Template))) { var ValidCustomFieldTypes = CustomFieldType.ValidCustomFieldTypes; - var ValidFormFields = ObjectFields.ObjectFields(inObj.FormKey); + var ValidFormFields = ObjectFields.ObjectFieldsList(inObj.FormKey); try { //Parse the json, expecting something like this: diff --git a/server/AyaNova/biz/ObjectFields.cs b/server/AyaNova/biz/ObjectFields.cs index 8949d1a4..923ade7e 100644 --- a/server/AyaNova/biz/ObjectFields.cs +++ b/server/AyaNova/biz/ObjectFields.cs @@ -110,7 +110,7 @@ namespace AyaNova.Biz default: - throw new System.ArgumentOutOfRangeException($"FormAvailableFields: {key} is not a valid form key"); + throw new System.ArgumentOutOfRangeException($"ObjectFields: {key} is not a valid form key"); } return l; } @@ -129,7 +129,7 @@ namespace AyaNova.Biz - }//eoc FormAvailableFields + }//eoc ObjectFields public class ObjectField { @@ -158,24 +158,24 @@ namespace AyaNova.Biz MiniAvailable = true; } - public ObjectField(string key, string propertyName, bool sharedLTKey = false, bool hideable = true, bool custom = false) - { - Key = key; - Hideable = hideable; - Custom = custom; - SharedLTKey = sharedLTKey; - PropertyName = propertyName;//Only if hideable do they require this as non-hideable ones are automatically validated anyway and this is only required for validation - } + // public ObjectField(string key, string propertyName, bool sharedLTKey = false, bool hideable = true, bool custom = false) + // { + // Key = key; + // Hideable = hideable; + // Custom = custom; + // SharedLTKey = sharedLTKey; + // PropertyName = propertyName;//Only if hideable do they require this as non-hideable ones are automatically validated anyway and this is only required for validation + // } - public ObjectField(string key, bool sharedLTKey = false, bool hideable = true, bool custom = false) - { - Key = key; - Hideable = hideable; - Custom = custom; - SharedLTKey = sharedLTKey; - PropertyName = null; + // public ObjectField(string key, bool sharedLTKey = false, bool hideable = true, bool custom = false) + // { + // Key = key; + // Hideable = hideable; + // Custom = custom; + // SharedLTKey = sharedLTKey; + // PropertyName = null; - } + // } } diff --git a/server/AyaNova/biz/RequiredFieldsValidator.cs b/server/AyaNova/biz/RequiredFieldsValidator.cs index 2950c8b6..82b994a3 100644 --- a/server/AyaNova/biz/RequiredFieldsValidator.cs +++ b/server/AyaNova/biz/RequiredFieldsValidator.cs @@ -18,7 +18,7 @@ namespace AyaNova.Biz //var OuterJson=JObject.Parse(formCustom.Template); var FormTemplate = JArray.Parse(formCustom.Template); // var FormTemplate=(JArray)OuterJson["template"]; - var FormFields = ObjectFields.ObjectFields(formCustom.FormKey); + var FormFields = ObjectFields.ObjectFieldsList(formCustom.FormKey); // var ThisFormNormalFieldsList = FormFields.Where(x => x.Custom == false).Select(x => x.Key).ToList(); foreach (JObject jo in FormTemplate)