public EntitySearch SaveItem(MyProjectEntities projectContext, EntitySearchDTO message, List <EntityRelationshipTail> createdRelationshipTails = null) { var dbEntitySearch = projectContext.EntitySearch.FirstOrDefault(x => x.ID == message.ID); if (dbEntitySearch == null) { dbEntitySearch = new DataAccess.EntitySearch(); } dbEntitySearch.TableDrivedEntityID = message.TableDrivedEntityID; dbEntitySearch.Title = message.Title; //تیلهای گزارش را از روی تیلهای ستونها میسازد //هر دفعه پاک نشن بهتره..اصلاح بشن while (dbEntitySearch.EntitySearchColumns.Any()) { projectContext.EntitySearchColumns.Remove(dbEntitySearch.EntitySearchColumns.First()); } //while (dbEntitySearch.EntitySearchRelationshipTails.Any()) // projectContext.EntitySearchRelationshipTails.Remove(dbEntitySearch.EntitySearchRelationshipTails.First()); if (createdRelationshipTails == null) { createdRelationshipTails = new List <EntityRelationshipTail>(); } BizEntityRelationshipTail bizEntityRelationshipTail = new BizEntityRelationshipTail(); foreach (var column in message.EntitySearchAllColumns) { EntitySearchColumns rColumn = new EntitySearchColumns(); if (column.ColumnID != 0) { rColumn.ColumnID = column.ColumnID; } else { rColumn.ColumnID = null; } rColumn.Alias = column.Alias; rColumn.Tooltip = column.Tooltip; rColumn.OrderID = column.OrderID; // rColumn.WidthUnit = column.WidthUnit; if (string.IsNullOrEmpty(column.CreateRelationshipTailPath)) { rColumn.EntityRelationshipTailID = column.RelationshipTailID == 0 ? (int?)null : column.RelationshipTailID; } else { if (createdRelationshipTails.Any(x => x.TableDrivedEntityID == message.TableDrivedEntityID && x.RelationshipPath == column.CreateRelationshipTailPath)) { rColumn.EntityRelationshipTail = createdRelationshipTails.First(x => x.TableDrivedEntityID == message.TableDrivedEntityID && x.RelationshipPath == column.CreateRelationshipTailPath); } else { var relationshipTail = bizEntityRelationshipTail.GetOrCreateEntityRelationshipTail(projectContext, message.TableDrivedEntityID, column.CreateRelationshipTailPath); createdRelationshipTails.Add(relationshipTail); rColumn.EntityRelationshipTail = relationshipTail; } } //if (column.RelationshipTailID != 0 || !string.IsNullOrEmpty(column.RelationshipPath)) //{ // int tailID = 0; // if (column.RelationshipTailID != 0) // tailID = column.RelationshipTailID; // else // tailID = bizEntityRelationshipTail.GetOrCreateEntityRelationshipTail(message.TableDrivedEntityID, column.RelationshipPath); // //var relatedListReportTail = dbEntitySearch.EntitySearchRelationshipTails.FirstOrDefault(x => x.EntityRelationshipTailID == tailID); // //if (relatedListReportTail == null) // //{ // // relatedListReportTail = new EntitySearchRelationshipTails(); // // relatedListReportTail.EntityRelationshipTailID = tailID; // // dbEntitySearch.EntitySearchRelationshipTails.Add(relatedListReportTail); // //} // //rColumn.EntitySearchRelationshipTails = relatedListReportTail; //} dbEntitySearch.EntitySearchColumns.Add(rColumn); } if (dbEntitySearch.ID == 0) { projectContext.EntitySearch.Add(dbEntitySearch); } return(dbEntitySearch); }
public EntityListView SaveItem(MyProjectEntities projectContext, EntityListViewDTO message, List <EntityRelationshipTail> createdRelationshipTails = null) { var dbEntityListView = projectContext.EntityListView.FirstOrDefault(x => x.ID == message.ID); if (dbEntityListView == null) { dbEntityListView = new DataAccess.EntityListView(); } dbEntityListView.TableDrivedEntityID = message.TableDrivedEntityID; dbEntityListView.Title = message.Title; //تیلهای گزارش را از روی تیلهای ستونها میسازد //هر دفعه پاک نشن بهتره..اصلاح بشن List <EntityListViewColumns> listRemove = new List <EntityListViewColumns>(); foreach (var dbColumn in dbEntityListView.EntityListViewColumns) { if (!message.EntityListViewAllColumns.Any(x => x.RelationshipTailID == (dbColumn.EntityRelationshipTailID ?? 0) && x.ColumnID == dbColumn.ColumnID)) { listRemove.Add(dbColumn); } } foreach (var item in listRemove) { projectContext.EntityListViewColumns.Remove(item); } //while (dbEntityListView.EntityListViewRelationshipTails.Any()) // projectContext.EntityListViewRelationshipTails.Remove(dbEntityListView.EntityListViewRelationshipTails.First()); if (createdRelationshipTails == null) { createdRelationshipTails = new List <EntityRelationshipTail>(); } BizEntityRelationshipTail bizEntityRelationshipTail = new BizEntityRelationshipTail(); foreach (var column in message.EntityListViewAllColumns) { EntityListViewColumns rColumn = null; if (column.ID == 0) { rColumn = new EntityListViewColumns(); } else { rColumn = projectContext.EntityListViewColumns.First(x => x.ID == column.ID); } rColumn.ColumnID = column.ColumnID; rColumn.Alias = column.Alias; rColumn.OrderID = column.OrderID; rColumn.Tooltip = column.Tooltip; rColumn.IsDescriptive = column.IsDescriptive; rColumn.WidthUnit = column.WidthUnit; if (string.IsNullOrEmpty(column.CreateRelationshipTailPath)) { rColumn.EntityRelationshipTailID = column.RelationshipTailID == 0 ? (int?)null : column.RelationshipTailID; } else { if (createdRelationshipTails.Any(x => x.TableDrivedEntityID == message.TableDrivedEntityID && x.RelationshipPath == column.CreateRelationshipTailPath)) { rColumn.EntityRelationshipTail = createdRelationshipTails.First(x => x.TableDrivedEntityID == message.TableDrivedEntityID && x.RelationshipPath == column.CreateRelationshipTailPath); } else { var relationshipTail = bizEntityRelationshipTail.GetOrCreateEntityRelationshipTail(projectContext, message.TableDrivedEntityID, column.CreateRelationshipTailPath); createdRelationshipTails.Add(relationshipTail); rColumn.EntityRelationshipTail = relationshipTail; } } dbEntityListView.EntityListViewColumns.Add(rColumn); } if (dbEntityListView.ID == 0) { projectContext.EntityListView.Add(dbEntityListView); } return(dbEntityListView); }