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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }