Пример #1
0
      public ActionResult EditColumn(DataSetSchemaColumn dsColumn, string categoryName, string schemaName)
      {
          try
          {
              if (!ModelState.IsValid)
              {
                  ViewBag.SchemaName   = schemaName;
                  ViewBag.CategoryName = categoryName;
                  return(View("AddColumn", dsColumn));
              }

              _dataSetSchemaColumnService.Save(dsColumn);
              ViewBag.Message = string.Format("<p class='note'>Changes to column {0} successfully saved.</p>", dsColumn.Title);
              return(Redirect(string.Format("/Admin/Schema/{0}/{1}/Edit?showfields=2", categoryName, schemaName)));
          }
          catch (Exception ex)
          {
              Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
              ViewBag.SchemaName    = schemaName;
              ViewBag.CategoryName  = categoryName;
              ViewBag.Message       = string.Format("<p class='warning'>Unable to save column.  {0}.</p>", ex.Message);
              ViewBag.AlreadySorted = IsAlreadySorted(schemaName);
              var col = _dataSetSchemaColumnService.Get(categoryName, schemaName, dsColumn.Title);
              return(View("AddColumn", col));
          }
      }
Пример #2
0
        public void Create_when_schema_column_type_not_latlng_repository_inserts_1_column_item()
        {
            //arrange
            var definition = new DataSetSchemaDefinition()
            {
                TableName = "tablename", Columns = new List <DataSetSchemaColumn>()
            };
            var col = new DataSetSchemaColumn()
            {
                Type = "", SchemaDefinition = definition
            };
            var mock = new Mock <IDataSetSchemaColumnSqlRepo>();

            mock.Setup(x => x.CheckSqlColumnExists("tablename", "")).Returns(false);
            _sqlrepo = mock.Object;
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Create(col);
            var result = _repositoryDataSetSchemaColumn.GetAll().ToList();

            //assert
            Assert.AreEqual(1, result.Count);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(col);
        }
Пример #3
0
        public void Delete_will_remove_column_from_repository()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = false, ColumnName = "columnname", SchemaDefinition = new DataSetSchemaDefinition()
                {
                    TableName = "tablename"
                }
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var mock = new Mock <IDataSetSchemaColumnSqlRepo>();

            mock.Setup(x => x.CheckSqlColumnExists(originalCol.SchemaDefinition.TableName, originalCol.ColumnName))
            .Returns(true);
            _sqlrepo = mock.Object;
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Delete(originalCol);
            var result = _repositoryDataSetSchemaColumn.GetQuery().FirstOrDefault(x => x.Id == originalCol.Id);

            //assert
            Assert.AreEqual(null, result);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
            _sqlrepo = null;
        }
Пример #4
0
        public void Create_when_schema_column_name_exists_in_exiting_schemadefinition_columns_throws_exception_a_column_columnname_already_exists_in_tablename()
        {
            //arrange
            var definition = new DataSetSchemaDefinition()
            {
                TableName = "tablename", Columns = new List <DataSetSchemaColumn>()
                {
                    new DataSetSchemaColumn()
                    {
                        ColumnName = "Latitude"
                    }
                }
            };
            var col = new DataSetSchemaColumn()
            {
                Type = "lat/lng", SchemaDefinition = definition
            };
            var mock = new Mock <IDataSetSchemaColumnSqlRepo>();

            mock.Setup(x => x.CheckSqlColumnExists("tablename", "Latitude")).Returns(false);
            mock.Setup(x => x.CheckSqlColumnExists("tablename", "Longitude")).Returns(false);
            _sqlrepo = mock.Object;
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Create(col);
            //assert -- throwing exception

            //cleanup
        }
Пример #5
0
      public ActionResult AddColumn(DataSetSchemaColumn column, string schemaName, string categoryName)
      {
          try
          {
              var schemaDetails = _dataSetSchemaService.Get(schemaName);

              if (!ModelState.IsValid)
              {
                  ViewBag.SchemaName    = schemaName;
                  ViewBag.CategoryName  = categoryName;
                  ViewBag.AlreadySorted = IsAlreadySorted(schemaName);
                  ViewBag.IsError       = true;
                  return(View("AddColumn", column));
              }

              column.SchemaDefinition = schemaDetails.Definition;
              _dataSetSchemaColumnService.Create(column);
              return(Redirect(string.Format("/Admin/Schema/{0}/{1}/Edit?showfields=2", categoryName, schemaName)));
          }
          catch (Exception ex)
          {
              Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
              ViewBag.SchemaName    = schemaName;
              ViewBag.CategoryName  = categoryName;
              ViewBag.AlreadySorted = IsAlreadySorted(schemaName);
              ViewBag.Message       = string.Format("<p class='warning'>Unable to create field definition.  {0}</p>", ex.Message);
              return(View());
          }
      }
Пример #6
0
        public void Delete(DataSetSchemaColumn column)
        {
            //Delete column from sql table
            if (_dataSetSchemaColumnSqlRepo.CheckSqlColumnExists(column.SchemaDefinition.TableName, column.ColumnName))
            {
                _dataSetSchemaColumnSqlRepo.DeleteColumn(column);
            }

            //Delete column from schema def
            _repository.Delete(column);
            _repository.SaveChanges();
        }
 public void DeleteColumn(DataSetSchemaColumn column)
 {
     using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DataShareContext"].ConnectionString))
     {
         cn.Open();
         var server = new Server(new ServerConnection(cn));
         var db     = server.Databases[cn.Database];
         if (db.Tables.Contains(column.SchemaDefinition.TableName))
         {
             var dbtable  = db.Tables[column.SchemaDefinition.TableName];
             var dbColumn = dbtable.Columns[column.ColumnName];
             dbColumn.Drop();
         }
     }
 }
        //public void AddColumn(DataSetSchemaColumn column, DataType sqlDataType)
        //{
        //    using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DataShareContext"].ConnectionString))
        //    {
        //        cn.Open();
        //        var server = new Server(new ServerConnection(cn));
        //        var db = server.Databases[cn.Database];
        //        var dbTable = db.Tables[column.SchemaDefinition.TableName];
        //        var newColumn = new Column(dbTable, column.ColumnName)
        //        {
        //            DataType = sqlDataType
        //        };
        //        dbTable.Columns.Add(newColumn);
        //        dbTable.Alter();
        //    }
        //}

        public void AddColumn(DataSetSchemaColumn column, string sqlDataType, int maxLength)
        {
            using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DataShareContext"].ConnectionString))
            {
                cn.Open();
                var server    = new Server(new ServerConnection(cn));
                var db        = server.Databases[cn.Database];
                var dbTable   = db.Tables[column.SchemaDefinition.TableName];
                var newColumn = new Column(dbTable, column.ColumnName)
                {
                    DataType = GetDataType(sqlDataType, maxLength)
                };
                dbTable.Columns.Add(newColumn);
                dbTable.Alter();
            }
        }
Пример #9
0
        private void UpdateColumnMaxSize(DataSetSchemaColumn column, int newSize)
        {
            if (!SqlColumnExists(column.SchemaDefinition.TableName, column.ColumnName))
            {
                return;
            }

            using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DataShareContext"].ConnectionString))
            {
                cn.Open();
                var server  = new Server(new ServerConnection(cn));
                var db      = server.Databases[cn.Database];
                var dbTable = db.Tables[column.SchemaDefinition.TableName];
                dbTable.Columns[column.ColumnName].DataType = DataType.NVarChar(newSize);
                dbTable.Alter();
            }
        }
Пример #10
0
        private void AddColumn(DataSetSchemaColumn column, string sqlDataType, int maxLength = 0)
        {
            var columnName = string.IsNullOrEmpty(column.ColumnName) ? column.Title.RemovePunctuationAndSpacing(false) : column.ColumnName.RemovePunctuationAndSpacing(false);

            if (!SqlColumnExists(column.SchemaDefinition.TableName, columnName) &&
                !column.SchemaDefinition.Columns.Exists(c => c.ColumnName == columnName))
            {
                column.ColumnName = columnName;

                //add physical column to  table
                _dataSetSchemaColumnSqlRepo.AddColumn(column, sqlDataType, maxLength);

                //add entry to definition table
                _repository.Add(column);
                _repository.SaveChanges();
            }
            else
            {
                throw new Exception(String.Format("A column named {0} already exists in {1}.", columnName, column.SchemaDefinition.TableName));
            }
        }
Пример #11
0
        public void Save_when_column_isstandardisedurl_is_true_column_minnumber_is_not_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = true, MinNumber = 200
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, MinNumber = 300
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual(200, originalCol.MinNumber);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #12
0
        public void Save_when_column_isstandardisedurl_is_true_column_isRequired_is_not_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = true, IsRequired = true
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, IsRequired = false
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual(true, originalCol.IsRequired);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #13
0
        public void Save_column_istotalisable_is_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsTotalisable = true
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, IsTotalisable = false
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual(false, originalCol.IsTotalisable);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #14
0
        public void Save_when_helptext_is_null_column_helptext_is_emptystring()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, HelpText = null
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual("", originalCol.HelpText);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #15
0
        public void Save_when_column_isstandardisedurl_is_false_and_linkeddatauri_is_null_column_linkeddatauri_is_empty_string()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = false, LinkedDataUri = "unchanged-linkeduri"
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, LinkedDataUri = null
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual("", originalCol.LinkedDataUri);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #16
0
        public void Save_when_column_isstandardisedurl_is_false_column_maxcurrency_is_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = false, MaxCurrency = 200
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, MaxCurrency = 300
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual(300, originalCol.MaxCurrency);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #17
0
        public void Save_when_column_isstandardisedurl_is_true_column_maxdate_is_not_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = true, MaxDate = new DateTime(1900, 1, 1)
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, MaxDate = new DateTime(2000, 1, 1)
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual(new DateTime(1900, 1, 1), originalCol.MaxDate);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #18
0
        public void Save_when_column_type_text_and_maxsize_is_larger_than_current_max_size_updates()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, MaxSize = 100
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, MaxSize = 300
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual(300, originalCol.MaxSize);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #19
0
        public void Save_when_column_isstandardisedurl_is_false_and_linkeddataurivalue_does_not_contain_http_or_https_column_linkeddatauri_is_prefixed_with_http()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = false, LinkedDataUri = "unchanged-linkeduri"
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, LinkedDataUri = "test"
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual("http://test", originalCol.LinkedDataUri);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #20
0
        public void Save_column_helptext_is_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, HelpText = "changed-help-text"
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual("changed-help-text", originalCol.HelpText);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #21
0
        public void Save_when_column_isstandardisedurl_is_false_column_title_is_updated()
        {
            //arrange
            var originalCol = new DataSetSchemaColumn()
            {
                Id = 1, IsStandardisedSchemaUrl = false, Title = "unchanged-title"
            };
            var colToChange = new DataSetSchemaColumn()
            {
                Id = 1, Title = "changed-title"
            };

            _repositoryDataSetSchemaColumn.Add(originalCol);
            var service = new DataSetSchemaColumnService(_repositoryDataSetSchemaColumn, _repositoryDataSetSchema, _sqlrepo);

            //act
            service.Save(colToChange);
            //assert
            Assert.AreEqual("changed-title", originalCol.Title);
            //cleanup
            _repositoryDataSetSchemaColumn.Delete(originalCol);
        }
Пример #22
0
        public void Save(DataSetSchemaColumn columnData)
        {
            var column = _repository.GetQuery().Include(s => s.SchemaDefinition).FirstOrDefault(c => c.Id == columnData.Id);

            if (column.Type == "Text" && columnData.MaxSize > column.MaxSize)
            {
                //update the colsize in the database
                UpdateColumnMaxSize(column, columnData.MaxSize);
            }

            column.HelpText             = columnData.HelpText ?? "";
            column.IsDefaultSort        = columnData.IsDefaultSort;
            column.DefaultSortDirection = columnData.IsDefaultSort ? columnData.DefaultSortDirection : "";
            column.IsFilterable         = columnData.IsFilterable;
            column.IsShownInitially     = columnData.IsShownInitially;
            column.IsTotalisable        = columnData.IsTotalisable;


            if (Convert.ToBoolean(column.IsStandardisedSchemaUrl))
            {
                _repository.SaveChanges();
                return;
            }

            column.Title         = columnData.Title;
            column.IsRequired    = columnData.IsRequired;
            column.MaxSize       = columnData.MaxSize;
            column.MinNumber     = columnData.MinNumber;
            column.MaxNumber     = columnData.MaxNumber;
            column.MinCurrency   = columnData.MinCurrency;
            column.MaxCurrency   = columnData.MaxCurrency;
            column.MinDate       = columnData.MinDate;
            column.MaxDate       = columnData.MaxDate;
            column.LinkedDataUri = columnData.LinkedDataUri == null ? "" : (columnData.LinkedDataUri.Contains("http://") || columnData.LinkedDataUri.Contains("https://")) ? columnData.LinkedDataUri : String.Format("http://{0}", columnData.LinkedDataUri);
            _repository.SaveChanges();
        }
        private void AddColumnData(DataRow row, int i, string[] headers, string valueToValidate, DataSetSchemaColumn validateRules)
        {
            switch (validateRules.Type.ToLower())
            {
            case "text":
            case "image":
            case "url":
                row[headers[i]] = !String.IsNullOrEmpty(valueToValidate) ? valueToValidate.Trim() : "";
                break;

            case "currency":
                row[headers[i]] = !String.IsNullOrEmpty(valueToValidate) ? Convert.ToDouble(valueToValidate.Trim()) : 0;
                break;

            case "number":
                row[headers[i]] = !String.IsNullOrEmpty(valueToValidate) ? Convert.ToDouble(valueToValidate.Trim()) : SqlDouble.Null;
                break;

            case @"lat/lng":
                row[headers[i]] = !String.IsNullOrEmpty(valueToValidate) ? Convert.ToDouble(valueToValidate.Trim()) : 0;
                break;

            case "datetime":
                row[headers[i]] = !String.IsNullOrEmpty(valueToValidate) ? new SqlDateTime(Convert.ToDateTime(valueToValidate.Trim())) : SqlDateTime.Null;
                break;
            }
        }
        private void ValidateColumn(string valueToValidate, int i, string[] headers, DataSetSchemaColumn validateRules, ICollection <string> errorList, int rowNumber)
        {
            var errorRow = rowNumber + 1;//take header in the csv into account

            if (validateRules.IsRequired)
            {
                if (valueToValidate.Length == 0)
                {
                    errorList.Add(String.Format("Row {0}, Column {1} - is empty. This field must contain a value.", errorRow, headers[i]));
                }
            }

            if (valueToValidate.Length > 0)
            {
                switch (validateRules.Type.ToLower())
                {
                case "text":
                    if (valueToValidate.Length > validateRules.MaxSize)
                    {
                        errorList.Add(String.Format("Row {0}, Column {1} - ({2} characters) is too big. The maximum size is {3}.", errorRow, headers[i], valueToValidate.Length, validateRules.MaxSize));
                    }
                    break;

                case "currency":
                    var result = Regex.Match(valueToValidate, @"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,9})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,9})?))\)?$");
                    if (!result.Success)
                    {
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is not a valid currency value.", errorRow, headers[i], valueToValidate));
                    }

                    if ((validateRules.MaxCurrency != null) && (Convert.ToDouble(valueToValidate) > validateRules.MaxCurrency))
                    {
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is too big. The maximum currency amount allowed is {3}.", errorRow, headers[i], valueToValidate, StringExtensions.FormatCurrency(validateRules.MaxCurrency.ToString())));
                    }

                    if ((validateRules.MinCurrency != null) && (Convert.ToDouble(valueToValidate) < validateRules.MinCurrency))
                    {
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is too small. The minimum currency amount allowed is {3}.", errorRow, headers[i], valueToValidate, StringExtensions.FormatCurrency(validateRules.MinCurrency.ToString())));
                    }

                    break;

                case "number":
                    var resultNum = Regex.Match(valueToValidate, @"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,9})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,9})?))\)?$");
                    if (!resultNum.Success)
                    {
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is not a valid number value.", errorRow, headers[i], valueToValidate));
                    }

                    if ((validateRules.MaxNumber != null) && (Convert.ToDouble(valueToValidate) > validateRules.MaxNumber))
                    {
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is too big. The maximum number allowed is {3}.", errorRow, headers[i], valueToValidate, validateRules.MaxNumber));
                    }

                    if ((validateRules.MinNumber != null) && (Convert.ToDouble(valueToValidate) < validateRules.MinNumber))
                    {
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is too small. The minimum number allowed is {3}.", errorRow, headers[i], valueToValidate, validateRules.MinNumber));
                    }

                    break;

                case "datetime":

                    try     //DateTime.TryParseExact is far too slow. trt/catch is much faster way to validate the date
                    {
                        var dateValue = Convert.ToDateTime(valueToValidate);
                        if ((validateRules.MaxDate != null) && (dateValue > validateRules.MaxDate))
                        {
                            errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is too big. The maximum date allowed is {3}.", errorRow, headers[i], valueToValidate, validateRules.MaxDate));
                        }

                        if (validateRules.MinDate != null && dateValue < validateRules.MinDate)
                        {
                            errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is too small. The minimum date allowed is {3}.", errorRow, headers[i], valueToValidate, validateRules.MinDate));
                        }
                    }
                    catch (Exception ex)
                    {
                        Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
                        errorList.Add(String.Format(@"Row {0}, Column {1} - ""{2}"" is not a valid value for a date.", errorRow, headers[i], valueToValidate));
                    }

                    break;
                }
            }
        }
Пример #25
0
        public void Create(DataSetSchemaColumn schemaCol)
        {
            if (schemaCol.Type.ToLower() == "lat/lng")
            {
                var originalTitle      = schemaCol.Title ?? "";
                var originalColumnName = schemaCol.ColumnName ?? "";

                if (originalColumnName.EndsWith("Latitude") || originalColumnName.EndsWith("Longitude"))
                {
                    //AddColumn(schemaCol, DataType.Float);
                    AddColumn(schemaCol, "Float");
                    return;
                }

                //create field for Latitude
                schemaCol.Title      = originalTitle + " Latitude";
                schemaCol.ColumnName = originalColumnName + " Latitude";
                AddColumn(schemaCol, "Float");
                //AddColumn(schemaCol, DataType.Float);

                //create field for longitude
                schemaCol.Title      = originalTitle + " Longitude";
                schemaCol.ColumnName = originalColumnName + " Longitude";
                AddColumn(schemaCol, "Float");
                //AddColumn(schemaCol, DataType.Float);
            }
            else
            {
                //var sqlDataType = new DataType();

                switch (schemaCol.Type.ToLower())
                {
                case "text":
                    //sqlDataType = DataType.NVarChar(schemaCol.MaxSize);
                    AddColumn(schemaCol, "NVarChar", schemaCol.MaxSize);
                    break;

                case "number":
                    //sqlDataType = DataType.Float;
                    AddColumn(schemaCol, "Float");
                    break;

                case "datetime":
                    //sqlDataType = DataType.DateTime;
                    AddColumn(schemaCol, "DateTime");
                    break;

                case "currency":
                    //sqlDataType = DataType.Float;
                    AddColumn(schemaCol, "Float");
                    break;

                case "image":
                    //sqlDataType = DataType.NVarChar(1024);
                    AddColumn(schemaCol, "NVarChar", 1024);
                    break;

                case "url":
                    //sqlDataType = DataType.NVarChar(2048);
                    AddColumn(schemaCol, "NVarChar", 2048);
                    break;

                default:
                    AddColumn(schemaCol, "");
                    break;
                }
            }
        }
        private DataSetSchemaColumn InitializeColumn(RestColumnDefinition col)
        {
            var newCol = new DataSetSchemaColumn()
            {
                Title                = col.Description,
                ColumnName           = col.Name,
                Type                 = col.Type,
                IsRequired           = col.IsRequired,
                HelpText             = col.HelpText,
                LinkedDataUri        = col.Uri ?? "",
                IsShownInitially     = col.DisplayInitial,
                IsDefaultSort        = col.Sorted,
                DefaultSortDirection = col.SortDirection,
                IsTotalisable        = col.IsTotalled
            };

            switch (col.Type.ToLowerInvariant())
            {
            case "image":
            case "url":
            case "text":
                newCol.MaxSize = Convert.ToInt32(col.MaxSize);
                break;

            case "datetime":
                DateTime outDate;
                if (DateTime.TryParse(col.MinDate, out outDate))
                {
                    newCol.MinDate = Convert.ToDateTime(col.MinDate);
                }
                if (DateTime.TryParse(col.MaxDate, out outDate))
                {
                    newCol.MaxDate = Convert.ToDateTime(col.MaxDate);
                }
                newCol.MaxSize = 8;
                break;

            case "currency":
                double outDouble;

                if (Double.TryParse(col.MaxCurrency, out outDouble))
                {
                    newCol.MaxCurrency = Convert.ToDouble(col.MaxCurrency);
                }
                if (Double.TryParse(col.MinCurrency, out outDouble))
                {
                    newCol.MinCurrency = Convert.ToDouble(col.MinCurrency);
                }
                newCol.MaxSize = 1;

                break;

            case "number":
                int outInt;

                if (int.TryParse(col.MinNumber, out outInt))
                {
                    newCol.MinNumber = Convert.ToInt32(col.MinNumber);
                }
                if (int.TryParse(col.MaxNumber, out outInt))
                {
                    newCol.MaxNumber = Convert.ToInt32(col.MaxNumber);
                }
                newCol.MaxSize = 1;

                break;

            default:
                newCol.MaxSize = newCol.MaxSize <= 0 ? 1 : newCol.MaxSize;
                break;
            }
            return(newCol);
        }