private void AddSearchColumn(List <EntitySearchColumnsDTO> list, ColumnDTO column, string relationshipPath = null, List <RelationshipDTO> relationships = null) { var resultColumn = new EntitySearchColumnsDTO(); resultColumn.ColumnID = column.ID; resultColumn.Column = column; resultColumn.CreateRelationshipTailPath = relationshipPath; resultColumn.AllRelationshipsAreSubToSuper = relationships != null && relationships.All(x => x.TypeEnum == Enum_RelationshipType.SubToSuper || x.TypeEnum == Enum_RelationshipType.SubUnionToUnion); string entityAlias = ""; if (relationships == null || relationships.Count == 0) { entityAlias = ""; } else if (resultColumn.AllRelationshipsAreSubToSuper) { entityAlias = ""; } else { var firstNotISAOrUnionEntity = GetLastNotISAOrUnionRelationship(relationships); if (firstNotISAOrUnionEntity != null) { entityAlias = firstNotISAOrUnionEntity.Entity2Alias + "."; } } resultColumn.Alias = entityAlias + column.Alias; list.Add(resultColumn); }
private void SetColumns(EntitySearchColumnsDTO condition) { colColumns.DisplayMemberPath = "Name"; colColumns.SelectedValueMemberPath = "ID"; BizTableDrivedEntity biz = new BizTableDrivedEntity(); if (condition.RelationshipTailID == 0) { var entity = biz.GetTableDrivedEntity(MyProjectManager.GetMyProjectManager.GetRequester(), EntityID, EntityColumnInfoType.WithSimpleColumns, EntityRelationshipInfoType.WithoutRelationships); condition.vwValueColumns = entity.Columns;; } else { var relationshipTail = bizEntityRelationshipTail.GetEntityRelationshipTail(MyProjectManager.GetMyProjectManager.GetRequester(), condition.RelationshipTailID); var entity = biz.GetTableDrivedEntity(MyProjectManager.GetMyProjectManager.GetRequester(), relationshipTail.TargetEntityID, EntityColumnInfoType.WithSimpleColumns, EntityRelationshipInfoType.WithoutRelationships); condition.vwValueColumns = entity.Columns; } }
private EntitySearchDTO ToEntitySimpleSearch(TableDrivedEntityDTO entityDTO) { EntitySearchDTO result = new EntitySearchDTO(); result.TableDrivedEntityID = entityDTO.ID; result.ID = 0; result.Title = "ستونهای ساخته شده"; foreach (var column in entityDTO.Columns) { EntitySearchColumnsDTO rColumn = new EntitySearchColumnsDTO(); rColumn.ID = 0; rColumn.ColumnID = column.ID; rColumn.Column = column; rColumn.Alias = column.Alias; rColumn.OrderID = (short)column.Position; result.EntitySearchAllColumns.Add(rColumn); } return(result); }
private void AddRelationshipDefaultColumns(TableDrivedEntityDTO entity, List <TableDrivedEntityDTO> allEntities, List <EntitySearchColumnsDTO> list, string relationshipPath = "", List <RelationshipDTO> relationships = null) { var reviewedFKRels = new List <RelationshipDTO>(); foreach (var column in entity.Columns) { if (entity.Relationships.Any(z => z.MastertTypeEnum == Enum_MasterRelationshipType.FromForeignToPrimary && z.RelationshipColumns.Any(y => y.FirstSideColumnID == column.ID))) { var newrelationship = entity.Relationships.First(z => z.MastertTypeEnum == Enum_MasterRelationshipType.FromForeignToPrimary && z.RelationshipColumns.Any(y => y.FirstSideColumnID == column.ID)); if (newrelationship.TypeEnum == Enum_RelationshipType.SubToSuper || newrelationship.TypeEnum == Enum_RelationshipType.UnionToSubUnion) { if (!reviewedFKRels.Any(x => x.ID == newrelationship.ID)) { reviewedFKRels.Add(newrelationship); //جلوگیری از لوپ if (relationships == null || !relationships.Any(x => x.ID == newrelationship.ID)) { int isaID = 0; int uinonID = 0; if (newrelationship.TypeEnum == Enum_RelationshipType.SubToSuper) { isaID = (newrelationship as SubToSuperRelationshipDTO).ISARelationship.ID; } else if (newrelationship.TypeEnum == Enum_RelationshipType.UnionToSubUnion) { uinonID = (newrelationship as UnionToSubUnionRelationshipDTO).UnionRelationship.ID; } if ((isaID == 0 || isaID != GetLastISAID(relationships)) && (uinonID == 0 || isaID != GetLastUnionID(relationships))) { List <RelationshipDTO> relationshipsTail = new List <RelationshipDTO>(); if (relationships != null) { foreach (var relItem in relationships) { relationshipsTail.Add(relItem); } } relationshipsTail.Add(newrelationship); //کلید های خارجی موجودیت های دیگر مهم نیستند foreach (var relCol in newrelationship.RelationshipColumns) { if (!relCol.FirstSideColumn.PrimaryKey) { AddSearchColumn(list, relCol.FirstSideColumn, relationshipPath, relationships); } } GenereateDefaultSearchColumnsFromRelationship(newrelationship, allEntities, list, relationshipPath + (relationshipPath == "" ? "" : ",") + newrelationship.ID.ToString(), relationshipsTail); } } } } else if (relationships == null) { var resultColumn = new EntitySearchColumnsDTO(); resultColumn.CreateRelationshipTailPath = relationshipPath + (relationshipPath == "" ? "" : ",") + newrelationship.ID.ToString(); resultColumn.Alias = newrelationship.Entity2Alias; list.Add(resultColumn); } } } foreach (var newrelationship in entity.Relationships.Where(x => x.MastertTypeEnum == Enum_MasterRelationshipType.FromPrimartyToForeign)) { if (newrelationship.TypeEnum == Enum_RelationshipType.SubUnionToUnion || (newrelationship.TypeEnum == Enum_RelationshipType.SuperToSub && (newrelationship as SuperToSubRelationshipDTO).ISARelationship.IsTolatParticipation)) { //جلوگیری از لوپ if (relationships == null || !relationships.Any(x => x.ID == newrelationship.ID)) { int isaID = 0; int uinonID = 0; if (newrelationship.TypeEnum == Enum_RelationshipType.SuperToSub) { isaID = (newrelationship as SuperToSubRelationshipDTO).ISARelationship.ID; } else if (newrelationship.TypeEnum == Enum_RelationshipType.SubUnionToUnion) { uinonID = (newrelationship as SubUnionToSuperUnionRelationshipDTO).UnionRelationship.ID; } if ((isaID == 0 || isaID != GetLastISAID(relationships)) && (uinonID == 0 || isaID != GetLastUnionID(relationships))) { List <RelationshipDTO> relationshipsTail = new List <RelationshipDTO>(); if (relationships != null) { foreach (var relItem in relationships) { relationshipsTail.Add(relItem); } } relationshipsTail.Add(newrelationship); GenereateDefaultSearchColumnsFromRelationship(newrelationship, allEntities, list, relationshipPath + (relationshipPath == "" ? "" : ",") + newrelationship.ID.ToString(), relationshipsTail); } } } } }
public EntitySearchDTO ToEntitySearchDTO(DR_Requester requester, EntitySearch item, bool withDetails) { EntitySearchDTO result = new EntitySearchDTO(); result.TableDrivedEntityID = item.TableDrivedEntityID; result.ID = item.ID; result.Title = item.Title; BizEntityRelationshipTail bizEntityRelationshipTail = new MyModelManager.BizEntityRelationshipTail(); if (withDetails) { BizColumn bizColumn = new MyModelManager.BizColumn(); foreach (var column in item.EntitySearchColumns) { EntitySearchColumnsDTO rColumn = new EntitySearchColumnsDTO(); rColumn.ID = column.ID; rColumn.ColumnID = column.ColumnID ?? 0; if (column.Column != null) { rColumn.Column = bizColumn.ToColumnDTO(column.Column, true); } if (column.ColumnID != null) { rColumn.Alias = column.Alias ?? column.Column.Alias ?? column.Column.Name; } else { rColumn.Alias = column.Alias ?? column.EntityRelationshipTail.TableDrivedEntity.Alias ?? column.EntityRelationshipTail.TableDrivedEntity.Name; } rColumn.OrderID = column.OrderID ?? 0; //rColumn.WidthUnit = column.WidthUnit ?? 0; if (column.EntityRelationshipTailID != null) { rColumn.RelationshipTailID = column.EntityRelationshipTailID.Value; rColumn.RelationshipTail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(column.EntityRelationshipTail); } if (!string.IsNullOrEmpty(column.Tooltip)) { rColumn.Tooltip = column.Tooltip; } else { if (rColumn.RelationshipTail != null && rColumn.Column != null) { rColumn.Tooltip = rColumn.RelationshipTail.ReverseRelationshipTail.TargetEntityAlias + "." + rColumn.Column.Alias; } } result.EntitySearchAllColumns.Add(rColumn); } //foreach (var tail in item.EntitySearchRelationshipTails) //{ // EntitySearchRelationshipTailDTO rTail = new EntitySearchRelationshipTailDTO(); // rTail.ID = tail.ID; // rTail.EntityRelationshipTailID = tail.EntityRelationshipTailID; // rTail.EntityRelationshipTail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(tail.EntityRelationshipTail); // foreach (var tailColumn in tail.EntitySearchColumns) // { // rTail.EntitySearchColumns.Add(result.EntitySearchAllColumns.First(x => x.ID == tailColumn.ID)); // } // result.EntitySearchRelationshipTails.Add(rTail); //} } ImposeSecurity(requester, result, item.TableDrivedEntity1); return(result); }