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); }
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); }
public int UpdateEntitySearchs(EntitySearchDTO message) { using (var projectContext = new DataAccess.MyProjectEntities()) { var dbItem = SaveItem(projectContext, message); projectContext.SaveChanges(); return(dbItem.ID); } }
//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); }
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); }
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); }
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); }
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 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); }
private void btnNew_Click(object sender, RoutedEventArgs e) { Message = new EntitySearchDTO(); ShowMessage(); }