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);
        }
Ejemplo n.º 2
0
        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);
        }