public static bool Validate_Drawing(SubPrompt prompt, UserSubForm subForm) { bool promptedForDrawing = prompt.Drawing != null; bool providedDrawing = !string.IsNullOrWhiteSpace(subForm.Drawing); return(promptedForDrawing == providedDrawing); }
public static bool Validate_ColorPicker(SubPrompt prompt, UserSubForm subForm) { bool promptedForColorPicker = prompt.ColorPicker; bool providedColorPicker = !string.IsNullOrWhiteSpace(subForm.Color); return(promptedForColorPicker == providedColorPicker); }
public static bool Validate_ShortAnswer(SubPrompt prompt, UserSubForm subForm) { bool promptedForShortAnswer = prompt.ShortAnswer; bool providedShortAnswer = !string.IsNullOrWhiteSpace(subForm.ShortAnswer); return(promptedForShortAnswer == providedShortAnswer); }
public static bool Validate_Dropdown(SubPrompt prompt, UserSubForm subForm) { bool promptedForDropdown = prompt.Dropdown != null; bool providedDropdown = subForm.DropdownChoice.HasValue; bool validSubmission = !providedDropdown || (subForm.DropdownChoice.Value >= 0 && subForm.DropdownChoice.Value < prompt.Dropdown.Length); return((promptedForDropdown == providedDropdown) && validSubmission); }
public static bool Validate_Selector(SubPrompt prompt, UserSubForm subForm) { bool promptedForSelector = prompt.Selector != null; bool providedSelector = subForm.Selector.HasValue; bool submissionValid = !providedSelector || (subForm.Selector.Value >= 0 && subForm.Selector.Value < (prompt.Selector?.ImageList?.Length ?? 0)); return((promptedForSelector == providedSelector) && submissionValid); }
public static bool Validate_Answers(SubPrompt prompt, UserSubForm subForm) { bool promptedForAnswers = prompt.Answers != null; bool providedAnswers = subForm.RadioAnswer.HasValue; bool submissionValid = !providedAnswers || (subForm.RadioAnswer.Value >= 0 && subForm.RadioAnswer.Value < prompt.Answers.Length); return((promptedForAnswers == providedAnswers) && submissionValid); }
public static bool Validate_Slider(SubPrompt prompt, UserSubForm subForm) { bool promptedForSlider = prompt.Slider != null; bool providedSlider = subForm.Slider != null; if (!promptedForSlider || !providedSlider) { return(promptedForSlider == providedSlider); } bool validSubmission = true; // Range sliders should have a list of length 2 (min, max). Nonrange sliders should only have one value. validSubmission &= (subForm.Slider.Count == (prompt.Slider.Range ? 2 : 1)); validSubmission &= subForm.Slider.All(val => (val >= prompt.Slider.Min) && (val <= prompt.Slider.Max)); validSubmission &= subForm.Slider.Count == 1 || (subForm.Slider[0] <= subForm.Slider[1]); return(validSubmission); }
public abstract T AnswerExtractor(UserSubForm subForm);
public static CleanUserFormInputResult CleanUserFormInput(UserPrompt userPrompt, ref UserFormSubmission userInput, out string error) { // No data submitted / requested if (userInput == null || userPrompt == null) { error = "Try again or try refreshing the page."; userInput = UserFormSubmission.WithNulls(userPrompt); return(CleanUserFormInputResult.Invalid); } // Old data submitted. if (userInput.Id != userPrompt.Id) { error = "Outdated form submitted, try again or try refreshing the page."; userInput = UserFormSubmission.WithNulls(userPrompt); return(CleanUserFormInputResult.Invalid); } // No prompts requested. if (userPrompt?.SubPrompts == null || userPrompt.SubPrompts.Length == 0) { userInput = UserFormSubmission.WithNulls(userPrompt); error = ""; return(CleanUserFormInputResult.Valid); } if (userInput?.SubForms == null || (userPrompt.SubPrompts.Length != userInput.SubForms.Count)) { error = "Error in submission, try again or try refreshing the page."; userInput = UserFormSubmission.WithNulls(userPrompt); return(CleanUserFormInputResult.Invalid); } int i = 0; CleanUserFormInputResult result = CleanUserFormInputResult.Valid; error = string.Empty; foreach (SubPrompt prompt in userPrompt?.SubPrompts ?? new SubPrompt[0]) { UserSubForm subForm = userInput.SubForms[i]; if (!(PromptInputValidation.Validate_Drawing(prompt, subForm) && PromptInputValidation.Validate_ShortAnswer(prompt, subForm) && PromptInputValidation.Validate_ColorPicker(prompt, subForm) && PromptInputValidation.Validate_Answers(prompt, subForm) && PromptInputValidation.Validate_Selector(prompt, subForm) && PromptInputValidation.Validate_Dropdown(prompt, subForm) && PromptInputValidation.Validate_Slider(prompt, subForm))) { error = "Not all form fields have been filled out"; result = CleanUserFormInputResult.Cleaned; // Invalid fields get set to null (used in autosubmit partial submission flows). userInput.SubForms[i] = new UserSubForm() { Id = prompt.Id }; } i++; } return(result); }