コード例 #1
0
        public frmEntitySearch(int entityID, int entitySearchID)
        {
            InitializeComponent();
            EntityID = entityID;
            BizTableDrivedEntity biz = new BizTableDrivedEntity();
            var entity = biz.GetTableDrivedEntity(MyProjectManager.GetMyProjectManager.GetRequester(), EntityID, EntityColumnInfoType.WithSimpleColumns, EntityRelationshipInfoType.WithoutRelationships);

            if (entity.IsView)
            {
                colRelationshipTail.IsVisible = false;
            }
            EntitySearchID = entitySearchID;
            SetRelationshipTails();
            if (EntitySearchID == 0)
            {
                Message = new EntitySearchDTO();
                ShowMessage();
            }
            else
            {
                GetEntityEntitySearch(EntitySearchID);
            }
            dtgColumns.CellEditEnded            += DtgConditions_CellEditEnded;
            dtgColumns.RowLoaded                += DtgColumns_RowLoaded;
            colRelationshipTail.EditItemClicked += ColRelationshipTail_EditItemClicked;
            ControlHelper.GenerateContextMenu(dtgColumns);
        }
コード例 #2
0
        public LogicPhraseDTO GetQuickSearchLogicPhrase(string text, EntitySearchDTO entitySearch)
        {
            LogicPhraseDTO quickSearchLogic = new LogicPhraseDTO();

            quickSearchLogic.AndOrType = AndOREqualType.Or;
            foreach (var item in entitySearch.EntitySearchAllColumns)
            {
                if (item.ColumnID != 0)
                {
                    SearchProperty searchProperty = new SearchProperty();
                    searchProperty.SearchColumnID = item.ID;
                    searchProperty.ColumnID       = item.ColumnID;
                    searchProperty.IsKey          = item.Column.PrimaryKey;
                    searchProperty.Value          = text;
                    LogicPhraseDTO logic = null;
                    if (item.RelationshipTail == null)
                    {
                        logic = quickSearchLogic;
                    }
                    else
                    {
                        logic           = AgentHelper.GetOrCreateSearchRepositoryFromRelationshipTail(quickSearchLogic, item.RelationshipTail, null);
                        logic.AndOrType = AndOREqualType.Or;
                    }

                    int      n;
                    var      isNumeric = int.TryParse(text, out n);
                    DateTime a;
                    var      isDateTime = DateTime.TryParse(text, out a);

                    if (item.Column.ColumnType == Enum_ColumnType.Numeric)
                    {
                        if (!isNumeric)
                        {
                            continue;
                        }
                        searchProperty.Operator = CommonOperator.Equals;
                    }
                    else if (item.Column.ColumnType == Enum_ColumnType.Date)
                    {
                        continue;
                    }
                    else if (item.Column.ColumnType == Enum_ColumnType.Boolean)
                    {
                        continue;
                    }
                    else if (item.Column.ColumnType == Enum_ColumnType.String)
                    {
                        searchProperty.Operator = CommonOperator.Contains;
                    }
                    else
                    {
                        continue;
                    }
                    logic.Phrases.Add(searchProperty);
                }
            }
            return(quickSearchLogic);
        }
コード例 #3
0
 public int UpdateEntitySearchs(EntitySearchDTO message)
 {
     using (var projectContext = new DataAccess.MyProjectEntities())
     {
         var dbItem = SaveItem(projectContext, message);
         projectContext.SaveChanges();
         return(dbItem.ID);
     }
 }
コード例 #4
0
        //public void UpdateDefaultSearchInModel(int databaseID)
        //{

        //}
        public EntitySearchDTO GenerateDefaultSearchList(TableDrivedEntityDTO entity, List <TableDrivedEntityDTO> allEntities)
        {
            EntitySearchDTO result = new EntitySearchDTO();

            result.TableDrivedEntityID = entity.ID;
            result.Title = "لیست جستجوی پیش فرض";
            result.EntitySearchAllColumns = GenereateDefaultSearchColumns(entity, allEntities);

            return(result);
        }
コード例 #5
0
        private bool ImposeSecurity(DR_Requester requester, EntitySearchDTO entitySearchDTO, TableDrivedEntity entity)
        {
            BizColumn bizColumn = new BizColumn();

            if (requester.SkipSecurity)
            {
                return(true);
            }

            if (!bizTableDrivedEntity.DataIsAccessable(requester, entity))
            {
                return(false);
            }
            var permission = bizTableDrivedEntity.GetEntityAssignedPermissions(requester, entitySearchDTO.TableDrivedEntityID, true);

            List <EntitySearchColumnsDTO> removeList = new List <ModelEntites.EntitySearchColumnsDTO>();

            foreach (var columnGroup in entitySearchDTO.EntitySearchAllColumns.GroupBy(x => x.RelationshipTailID))
            {
                bool pathPermission = true;
                if (columnGroup.Key == 0)
                {
                    pathPermission = true;
                }
                else
                {
                    var relationshipTail = columnGroup.First(x => x.RelationshipTailID == columnGroup.Key).RelationshipTail;
                    pathPermission = bizEntityRelationshipTail.DataIsAccessable(requester, relationshipTail);
                }
                if (!pathPermission)
                {
                    foreach (var column in columnGroup)
                    {
                        removeList.Add(column);
                    }
                }
                else
                {
                    foreach (var column in columnGroup)
                    {
                        if (column.ColumnID != 0 && !bizColumn.DataIsAccessable(requester, column.ColumnID))
                        {
                            removeList.Add(column);
                        }
                    }
                }
            }
            foreach (var remove in removeList)
            {
                entitySearchDTO.EntitySearchAllColumns.Remove(remove);
            }
            return(true);
        }
コード例 #6
0
        public EntitySearchDTO GetDefaultEntitySearch(DR_Requester requester, int entityID)
        {
            EntitySearchDTO result = null;

            using (var projectContext = new DataAccess.MyProjectEntities())
            {
                var entity = projectContext.TableDrivedEntity.First(x => x.ID == entityID);
                if (entity.EntitySearch != null)
                {
                    if (DataIsAccessable(requester, entity.EntitySearch))
                    {
                        result = ToEntitySearchDTO(requester, entity.EntitySearch, true);
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    var defaultListView = entity.EntitySearch1.FirstOrDefault();
                    if (defaultListView != null)
                    {
                        if (DataIsAccessable(requester, defaultListView))
                        {
                            result = ToEntitySearchDTO(requester, defaultListView, true);
                        }
                        else
                        {
                            return(null);
                        }
                    }
                    else
                    {
                        //باید یک دیفالت ساخته و فرستاده شه
                        BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity();
                        var entityDTO = bizTableDrivedEntity.GetPermissionedEntity(requester, entityID);
                        result = ToEntitySimpleSearch(entityDTO);
                    }
                }
            }
            return(result);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
 private void btnNew_Click(object sender, RoutedEventArgs e)
 {
     Message = new EntitySearchDTO();
     ShowMessage();
 }