示例#1
0
        public void ReorderWithNoSpecificItemSetsValuesProperly()
        {
            using (var dbContext = NewDbTestContext())
                using (var connection = SqlConnections.NewByKey("Serenity"))
                {
                    foreach (var data in new[] { /* input in id order, expected output in same order */
                        new Tuple <int[], int[]>(new[] { 0, 0, 0, 0, 0 }, new[] { 1, 2, 3, 4, 5 }),
                        new Tuple <int[], int[]>(new[] { 1, 5, 3, 0, 4 }, new[] { 2, 5, 3, 1, 4 }),
                        new Tuple <int[], int[]>(new[] { 1, 2, 2, 9, 0 }, new[] { 2, 3, 4, 5, 1 }),
                        new Tuple <int[], int[]>(new[] { 0, 0, 3, 1, 4 }, new[] { 1, 2, 4, 3, 5 })
                    })
                    {
                        new SqlDelete(DisplayOrderRow.TableName)
                        .Execute(connection, ExpectedRows.Ignore);

                        for (var i = 0; i < data.Item1.Length; i++)
                        {
                            new SqlInsert(DisplayOrderRow.TableName)
                            .Set(fld.GroupID, 1)
                            .Set(fld.IsActive, 1)
                            .Set(fld.DisplayOrder, data.Item1[i])
                            .Execute(connection);
                        }

                        DisplayOrderHelper.ReorderValues(connection, DisplayOrderRow.Instance);

                        var row    = new DisplayOrderRow();
                        var actual = new SqlQuery().From(row).Select(fld.DisplayOrder).OrderBy(fld.ID)
                                     .List(connection, row).Select(x => x.DisplayOrder.Value).ToArray();

                        Assert.Equal(data.Item2, actual);
                    }
                }
        }
示例#2
0
        protected virtual void HandleDisplayOrder(bool afterSave)
        {
            if (!(Row is IDisplayOrderRow displayOrderRow))
            {
                return;
            }

            if (IsCreate && !afterSave)
            {
                var value = displayOrderRow.DisplayOrderField.AsObject(Row);
                if (value == null || Convert.ToInt32(value) <= 0)
                {
                    var filter = GetDisplayOrderFilter();
                    displayOrderRow.DisplayOrderField.AsObject(Row,
                                                               DisplayOrderHelper.GetNextValue(Connection, displayOrderRow, filter));
                }
                else
                {
                    displayOrderFix = true;
                }
            }
            else if (afterSave &&
                     ((IsCreate && displayOrderFix) ||
                      (IsUpdate && displayOrderRow.DisplayOrderField[Old] != displayOrderRow.DisplayOrderField[Row])))
            {
                DisplayOrderHelper.ReorderValues(
                    connection: Connection,
                    row: displayOrderRow,
                    filter: GetDisplayOrderFilter(),
                    recordID: Row.IdField.AsObject(Row),
                    newDisplayOrder: displayOrderRow.DisplayOrderField[Row].Value,
                    hasUniqueConstraint: false);
            }
        }
示例#3
0
 protected virtual void OnAfterUndelete()
 {
     if (Row is IDisplayOrderRow displayOrderRow)
     {
         var filter = GetDisplayOrderFilter();
         DisplayOrderHelper.ReorderValues(Connection, displayOrderRow, filter,
                                          Row.IdField.AsObject(Row), displayOrderRow.DisplayOrderField[Row].Value, false);
     }
 }
示例#4
0
        protected virtual void OnAfterDelete()
        {
            var displayOrderRow = Row as IDisplayOrderRow;

            if (displayOrderRow != null)
            {
                var filter = GetDisplayOrderFilter();
                DisplayOrderHelper.ReorderValues(Connection, displayOrderRow, filter, -1, 1, false);
            }
        }
        protected virtual void OnAfterUndelete()
        {
            var displayOrderRow = Row as IDisplayOrderRow;

            if (displayOrderRow != null)
            {
                var filter = GetDisplayOrderFilter();
                DisplayOrderHelper.ReorderValues(Connection, displayOrderRow, filter,
                                                 Row.IdField[Row].Value, displayOrderRow.DisplayOrderField[Row].Value, false);
            }
        }
        protected virtual void OnAfterDelete()
        {
            if (Row as IDisplayOrderRow != null)
            {
                var filter = GetDisplayOrderFilter();
                DisplayOrderHelper.ReorderValues(Connection, Row as IDisplayOrderRow, filter, -1, 1, false);
            }

            foreach (var behavior in behaviors.Value)
                behavior.OnAfterDelete(this);
        }
示例#7
0
        public void NextDisplayOrderValueReturnOneWhenTableIsEmpty()
        {
            using (var dbContext = NewDbTestContext())
                using (var connection = SqlConnections.NewByKey("Serenity"))
                {
                    new SqlDelete(DisplayOrderRow.TableName)
                    .Execute(connection, ExpectedRows.Ignore);

                    var next = DisplayOrderHelper.GetNextValue(connection, DisplayOrderRow.Instance);
                    Assert.Equal(1, next);
                }
        }
示例#8
0
        public void NextDisplayOrderValueReturnOneMoreThanMax()
        {
            using (var dbContext = NewDbTestContext())
                using (var connection = SqlConnections.NewByKey("Serenity"))
                {
                    new SqlDelete(DisplayOrderRow.TableName)
                    .Execute(connection, ExpectedRows.Ignore);

                    new SqlInsert(DisplayOrderRow.TableName)
                    .Set(fld.GroupID, 1)
                    .Set(fld.IsActive, 1)
                    .Set(fld.DisplayOrder, 5)
                    .Execute(connection);

                    new SqlInsert(DisplayOrderRow.TableName)
                    .Set(fld.GroupID, 2)
                    .Set(fld.IsActive, 1)
                    .Set(fld.DisplayOrder, 15)
                    .Execute(connection);

                    var next = DisplayOrderHelper.GetNextValue(connection, DisplayOrderRow.Instance);
                    Assert.Equal(16, next);

                    next = DisplayOrderHelper.GetNextValue(connection, DisplayOrderRow.Instance, new Criteria(fld.GroupID) == 1);
                    Assert.Equal(6, next);

                    next = DisplayOrderHelper.GetNextValue(connection, DisplayOrderRow.Instance, new Criteria(fld.GroupID) == 2);
                    Assert.Equal(16, next);

                    next = DisplayOrderHelper.GetNextValue(connection, DisplayOrderRow.Instance, new Criteria(fld.GroupID) == -99);
                    Assert.Equal(1, next);

                    next = DisplayOrderHelper.GetNextValue(connection, DisplayOrderRow.TableName, DisplayOrderRow.Fields.DisplayOrder,
                                                           new Criteria(fld.GroupID) == 1);
                    Assert.Equal(6, next);
                }
        }
示例#9
0
            public void SortByDisplayOrder()
            {
                IComparer sorter = new DisplayOrderHelper();

                InnerList.Sort(sorter);
            }
示例#10
0
 public void SortByDisplayOrder()
 {
     IComparer sorter = new DisplayOrderHelper();
     InnerList.Sort(sorter);
 }