예제 #1
0
        protected viewValidations getDataForView(int viewId)
        {
            //we get all the relevant fields for this view
            var viewFields = GetFieldsForView(viewId);

            //we find the date fields
            var dataFields = (from field in viewFields
                              where
                              field.dataType == Constants.TIMEPICKER ||
                              field.dataType == Constants.DATEPICKER ||
                              field.dataType == Constants.EDITTEXT ||
                              field.dataType == Constants.CHECKBOX ||
                              field.dataType == Constants.RADIOBUTTON
                              select field).ToList();
            var context          = this;
            var valueFields      = new List <FieldValuePair>();
            var validationIssues = new List <DataValidationIssue>();

            foreach (var field in dataFields)
            {
                var resultObject = new FieldValuePair()
                {
                    Field = field, Value = string.Empty
                };
                var fieldView = new ValidationObject()
                {
                    isRequired = field.IsRequired,
                    label      = field.Label,
                    //value = view.Text,
                    //viewId = view.Id,
                    validation = field.validation
                };
                switch (field.dataType)
                {
                case Constants.TIMEPICKER:
                case Constants.DATEPICKER:
                {
                    var view = field.GetDataView <EditText>(this);
                    fieldView.value      = view.Text;
                    fieldView.viewId     = view.Id;
                    fieldView.viewObject = view;

                    var validationResult = DateValidator.validates(fieldView);
                    clearError(view);

                    if (validationResult != null)
                    {
                        validationIssues.Add(validationResult);
                    }

                    if (string.IsNullOrWhiteSpace(view.Text))
                    {
                        continue;
                    }

                    resultObject.Value = view.Text;
                    break;
                }

                case Constants.EDITTEXT:
                {
                    var view = field.GetDataView <EditText>(this);
                    fieldView.value      = view.Text;
                    fieldView.viewId     = view.Id;
                    fieldView.viewObject = view;
                    clearError(view);
                    var validationResult = TextValidator.validates(fieldView);
                    if (validationResult != null)
                    {
                        validationIssues.Add(validationResult);
                    }

                    if (string.IsNullOrWhiteSpace(view.Text))
                    {
                        continue;
                    }

                    resultObject.Value = view.Text;
                    break;
                }

                case Constants.CHECKBOX:
                {
                    var view = field.GetDataView <CheckBox>(this);
                    if (!view.Checked)
                    {
                        continue;
                    }
                    resultObject.Value = Constants.DEFAULT_CHECKED;
                    break;
                }

                case Constants.RADIOBUTTON:
                {
                    var view = field.GetDataView <RadioButton>(this);
                    if (view == null)
                    {
                        view = field.GetDataView <RadioButton>(this);
                    }

                    if (!view.Checked)
                    {
                        continue;
                    }
                    resultObject.Value = Constants.DEFAULT_CHECKED;
                    break;
                }

                default:
                {
                    throw new ArgumentNullException("Could not find view for field " + field.name);
                }
                }

                if (string.IsNullOrWhiteSpace(resultObject.Value))
                {
                    throw new ArgumentNullException("Could not find view for field " + field.name);
                }
                valueFields.Add(resultObject);
            }

            return(new viewValidations()
            {
                TemporalViewData = valueFields, Validations = validationIssues
            });
        }