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); } } }
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); } }
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); } }
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); }
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); } }
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); } }
public void SortByDisplayOrder() { IComparer sorter = new DisplayOrderHelper(); InnerList.Sort(sorter); }