This commit is contained in:
2019-12-06 21:58:45 +00:00
parent 2d80a0ce85
commit a7ad14b52a
3 changed files with 60 additions and 47 deletions

View File

@@ -127,28 +127,28 @@ namespace AyaNova.Api.Controllers
}
}
/// <summary>
/// Get available types allowed for Custom fields
/// Used to build UI for customizing a form
///
/// Required roles:
/// BizAdminFull only has rights to customize forms
///
/// </summary>
/// <returns>A list of type string values valid for custom fields</returns>
[HttpGet("AvailableCustomTypes")]
public ActionResult GetAvailableCustomTypes()
{
if (serverState.IsClosed)
return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason));
// /// <summary>
// /// Get available types allowed for Custom fields
// /// Used to build UI for customizing a form
// ///
// /// Required roles:
// /// BizAdminFull only has rights to customize forms
// ///
// /// </summary>
// /// <returns>A list of type string values valid for custom fields</returns>
// [HttpGet("AvailableCustomTypes")]
// public ActionResult GetAvailableCustomTypes()
// {
// 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 (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.FormCustom))
// return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
return Ok(ApiOkResponse.Response(CustomFieldType.ValidCustomFieldTypes, true));
}
// if (!ModelState.IsValid)
// return BadRequest(new ApiErrorResponse(ModelState));
// return Ok(ApiOkResponse.Response(CustomFieldType.ValidCustomFieldTypes, true));
// }
/// <summary>
@@ -221,38 +221,38 @@ namespace AyaNova.Api.Controllers
}
/// <summary>
/// Post FormCustom
///
/// Required roles: BizAdminFull
/// </summary>
/// <param name="inObj"></param>
/// <param name="apiVersion">Automatically filled from route path, no need to specify in body</param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> PostFormCustom([FromBody] FormCustom inObj, ApiVersion apiVersion)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason));
// /// <summary>
// /// Post FormCustom
// ///
// /// Required roles: BizAdminFull
// /// </summary>
// /// <param name="inObj"></param>
// /// <param name="apiVersion">Automatically filled from route path, no need to specify in body</param>
// /// <returns></returns>
// [HttpPost]
// public async Task<IActionResult> PostFormCustom([FromBody] FormCustom inObj, ApiVersion apiVersion)
// {
// if (!serverState.IsOpen)
// return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason));
//Instantiate the business object handler
FormCustomBiz biz = FormCustomBiz.GetBiz(ct, HttpContext);
// //Instantiate the business object handler
// FormCustomBiz biz = FormCustomBiz.GetBiz(ct, HttpContext);
//check rights
if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
// //check rights
// if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
// return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
// if (!ModelState.IsValid)
// return BadRequest(new ApiErrorResponse(ModelState));
//Create and validate
FormCustom o = await biz.CreateAsync(inObj);
if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
else
return CreatedAtAction(nameof(FormCustomController.GetFormCustom), new { formkey = o.FormKey, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
// //Create and validate
// FormCustom o = await biz.CreateAsync(inObj);
// if (o == null)
// return BadRequest(new ApiErrorResponse(biz.Errors));
// else
// return CreatedAtAction(nameof(FormCustomController.GetFormCustom), new { formkey = o.FormKey, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
}
// }

View File

@@ -2,6 +2,10 @@ using System.Collections.Generic;
namespace AyaNova.Biz
{
//************************************************
// This contains all the fields that are on customizable forms
//in addition it serves as a source for valid form keys in AvailableFormKeys
//
public static class FormAvailableFields
{

View File

@@ -26,6 +26,7 @@ namespace AyaNova.Biz
internal static FormCustomBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext)
{
return new FormCustomBiz(ct, UserIdFromContext.Id(httpContext.Items), UserLocaleIdFromContext.Id(httpContext.Items), UserRolesFromContext.Roles(httpContext.Items));
}
@@ -88,6 +89,14 @@ namespace AyaNova.Biz
//Get one
internal async Task<FormCustom> GetAsync(string formKey)
{
TODO: this must create the formCustom record if it doesn't already exist
//Step 1: check if exists, if it does then just return it
//If it doesn't exist, vet the form key name is ok by checking with this list
//FormAvailableFields.AvailableFormKeys
// and if it is then create it, save to db and then return it
var ret = await ct.FormCustom.SingleOrDefaultAsync(m => m.FormKey == formKey);
//Do not log this, it's going to be called a zillion times anyway
return ret;