public void IsValid(AdditionalField additionalField) { if ((additionalField.Name != null && additionalField.Name.Length == 0) || additionalField.Name == null) { throw new ExceptionController(LogicExceptions.INVALID_NAME); } if ((additionalField.FieldType != null && additionalField.FieldType.Length == 0) || additionalField.FieldType == null) { throw new ExceptionController(LogicExceptions.INVALID_FIELD_TYPE); } if (ContainsAdditionalField(additionalField)) { throw new ExceptionController(LogicExceptions.ALREADY_EXISTS_ADDITIONAL_FIELD); } if (additionalField.MultiSelect && additionalField.Ranges.Count < 1) { throw new ExceptionController(LogicExceptions.INVALID_MULTISELECT_RANGES); } ValidRanges(additionalField); FieldRangeLogic selectedStrategy = new FieldRangeLogic(additionalField.FieldType); selectedStrategy.ValidRangeFormat(additionalField); }
private void ValidateAdditionalFields(Request request) { TypeEntity selectedType = GetTypeWithFields(request.TypeId); if (selectedType == null) { throw new ExceptionController(LogicExceptions.INVALID_TYPE_NOT_EXIST); } foreach (AdditionalField additionalField in selectedType.AdditionalFields) { var fieldExists = request.AdditionalFieldValues.FirstOrDefault(a => a.AdditionalFieldId == additionalField.Id); if (fieldExists == null) { throw new ExceptionController(LogicExceptions.MISSING_REQUIRED_ADDITIONAL_FIELD); } } foreach (AdditionalFieldValue additionalFieldValue in request.AdditionalFieldValues) { if (additionalFieldValue.RequestId != request.Id) { throw new ExceptionController(LogicExceptions.INVALID_ADDITIONAL_FIELD_REQUEST_ID); } AdditionalField selectedAdditionalField = selectedType.AdditionalFields.FirstOrDefault(a => a.Id == additionalFieldValue.AdditionalFieldId); if (selectedAdditionalField == null) { throw new ExceptionController(LogicExceptions.INVALID_ADDITIONAL_FIELD); } var valuesObj = additionalFieldValue.Values.GroupBy(x => x.Value); foreach (var repetition in valuesObj) { if (repetition.Count() > 1) { throw new ExceptionController(LogicExceptions.REPEATED_SELECTION); } } FieldRangeLogic selectedStrategy = new FieldRangeLogic(selectedAdditionalField.FieldType); /* MultiSelect Feature Validation */ if (selectedAdditionalField.MultiSelect) { selectedStrategy.HasValidRangeValues(selectedAdditionalField, additionalFieldValue); } else { selectedStrategy.IsValidRangeValue(selectedAdditionalField, additionalFieldValue); } } }