/// <summary> /// Validates the request. /// </summary> /// <param name="request">The request.</param> /// <param name="errorMessage">The error message.</param> /// <returns></returns> public bool ValidateRequest(FormDataRequest request, out string errorMessage) { errorMessage = string.Empty; var messageBuilder = new StringBuilder(); if (string.IsNullOrWhiteSpace(request.EntityId)) { messageBuilder.Append("EntityId was null."); } if (string.IsNullOrWhiteSpace(request.FormId)) { messageBuilder.Append("FormId was null."); } if (string.IsNullOrWhiteSpace(request.Query)) { messageBuilder.Append("Query was null."); } if (!string.IsNullOrWhiteSpace(request.Query) && !ParseQueryString(request.Query)) { messageBuilder.Append("Failed to parse query string."); } if (messageBuilder.Length <= 0) { return(true); } messageBuilder.Insert(0, "Cannot parse post data."); errorMessage = messageBuilder.ToString(); return(false); }
public IHttpActionResult GetFormData([FromBody] FormDataRequest request) { if (request == null) { throw new WebArgumentNullException(nameof(request)); } using (Profiler.Measure("FormController.GetData")) { string errorMessage; if (!_formControllerRequestHandler.ValidateRequest(request, out errorMessage)) { EventLog.Application.WriteError(errorMessage); return(BadRequest(errorMessage)); } try { var response = _formControllerRequestHandler.GetFormData(request); if (response == null) { return(NotFound()); } return(Ok(response)); } catch (PlatformSecurityException ex) { EventLog.Application.WriteWarning(ex.ToString()); return(StatusCode(HttpStatusCode.Forbidden)); } catch (Exception ex) { EventLog.Application.WriteError(ex.ToString()); return(InternalServerError()); } } }
/// <summary> /// Gets the form data. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public FormDataResponse GetFormData(FormDataRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var entityIdRef = new EntityRef(request.EntityId); // Get the entity data EntityData entityData = BulkRequestRunner.GetEntityData(entityIdRef, request.Query, request.Hint); // Set the result to NotFound for Basic and BasicWithDemand only if (entityData == null) { return(null); } var formId = new EntityRef(request.FormId).Id; EntityData formEntityData = null; // Get the form entity data for non gen forms if (!EntityTemporaryIdAllocator.IsAllocatedId(formId)) { try { formEntityData = GetFormAsEntityData(formId, false); } catch (Exception ex) { EventLog.Application.WriteError("Failed to get form with id {0}. Unable to get initial form control visibility. Error: {1}.", formId, ex); } } ISet <long> initiallyHiddenControls = null; if (formEntityData == null) { return(PackageFormDataResponse(entityData, null)); } IDictionary <long, IExpression> compiledExpressions = null; IDictionary <long, string> controlVisibilityCalculations; using (new SecurityBypassContext()) { // Have form. Get any visibility calculations controlVisibilityCalculations = GetControlVisibilityCalculations(formEntityData); long entityTypeId = GetTypeToEditWithForm(formEntityData); if (controlVisibilityCalculations.Count > 0 && entityTypeId > 0) { // Now we have all the calculations compiledExpressions = CompileVisibilityCalculations(new EntityRef(entityTypeId), controlVisibilityCalculations); } } if (controlVisibilityCalculations.Count > 0) { initiallyHiddenControls = GetHiddenControls(entityIdRef.Entity, controlVisibilityCalculations.Keys, compiledExpressions); } return(PackageFormDataResponse(entityData, initiallyHiddenControls)); }