/// <summary> /// /////////////////////////مشترک /// </summary> /// <param name="relationshipID"></param> /// <param name="editEntityArea"></param> /// <param name="parentRelationData"></param> /// <returns></returns> public ChildRelationshipInfo SerachDataFromParentRelationForChildDataView(RelationshipDTO relationship, I_EditEntityAreaOneData sourceEditEntityArea, I_EditEntityArea targetEditEntityArea, DP_DataRepository parentRelationData) { var requester = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester(); ChildRelationshipInfo childRelationshipInfo = null; childRelationshipInfo = parentRelationData.ChildRelationshipInfos.FirstOrDefault(x => x.Relationship.ID == relationship.ID); if (childRelationshipInfo == null) { childRelationshipInfo = parentRelationData.AddChildRelationshipInfo(relationship); } else { throw new Exception("Asd"); } //سکوریتی داده اعمال میشود var searchDataItem = relationshipManager.GetSecondSideSearchDataItemByRelationship(parentRelationData, relationship.ID); if (searchDataItem != null) { // DR_SearchEditRequest request = new DR_SearchEditRequest(requester, searchDataItem, targetEditEntityArea.AreaInitializer.SecurityReadOnly, true); DR_SearchEditRequest request = new DR_SearchEditRequest(requester, searchDataItem); var childFullData = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendSearchEditRequest(request).ResultDataItems; var countRequest = new DR_SearchCountRequest(requester); countRequest.SearchDataItems = searchDataItem; countRequest.Requester.SkipSecurity = true; var count = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendSearchCountRequest(countRequest); bool secutrityImposed = false; if (count.ResultCount != childFullData.Count) { secutrityImposed = true; } if (!secutrityImposed) { foreach (var data in childFullData) { data.IsDBRelationship = true; data.DataView = GetDataView(data); childRelationshipInfo.AddDataToChildRelationshipInfo(data, true); } } else { childRelationshipInfo.SecurityIssue = true; } } return(childRelationshipInfo); //foreach (var item in childFullData) // searchedData.Add(new Tuple<DP_DataRepository, DP_DataView>(item, null)); //return AddEditSearchData(searchedData, editEntityArea); }
//صدا زده میشود RelationData تنها بوسیله ShowData برای نمایش داده های اضافه شده در آن صدا زده میشود.در مابقی موارد ShowData که AddData فقط یکجا مشخص میشود و آنهم در specificDate public override bool ShowDataInDataView(DP_DataRepository specificDate) { if (!specificDate.IsFullData) { throw new Exception("asdasd"); } foreach (var propertyControl in SimpleColumnControls) { var property = specificDate.GetProperty(propertyControl.Column.ID); if (property != null) { //////ShowTypePropertyControlValue(specificDate, propertyControl, property.Value); //if (propertyControl.Column.ColumnValueRange != null && propertyControl.Column.ColumnValueRange.Details.Any()) //{ // var columnKeyValue = propertyControl.Column.ColumnValueRange; // CheckItemsSourceAndPropertyValue(propertyControl, specificDate); //} SetBinding(specificDate, propertyControl, property); } else { //???? } } bool result = true; //جدید--دقت شود که اگر نمایش مستقیم نیست داخل فرم رابطه ای نباید همه کنترلها مقداردهی شوند foreach (var relationshipControl in RelationshipColumnControls) { bool relationshipFirstSideHasValue = relationshipControl.Relationship.RelationshipColumns.Any() && relationshipControl.Relationship.RelationshipColumns.All(x => specificDate.GetProperties().Any(y => !AgentHelper.ValueIsEmpty(y) && y.ColumnID == x.FirstSideColumnID)); //relationshipControl.EditNdTypeArea.AreaInitializer.SourceRelationColumnControl.RelatedData = specificDate; //اینجا یکارایی بشه دسترسی موقت bool childLoadedBefore = specificDate.ChildRelationshipInfos.Any(x => x.Relationship.ID == relationshipControl.Relationship.ID); ChildRelationshipInfo childData = null; if (childLoadedBefore) { childData = specificDate.ChildRelationshipInfos.First(x => x.Relationship.ID == relationshipControl.Relationship.ID); } else { if (!relationshipFirstSideHasValue) { childData = specificDate.AddChildRelationshipInfo(relationshipControl.Relationship); } else { bool childIsDataView = (relationshipControl.EditNdTypeArea.AreaInitializer.IntracionMode == IntracionMode.CreateDirect || relationshipControl.EditNdTypeArea.AreaInitializer.IntracionMode == IntracionMode.CreateSelectDirect); if (childIsDataView) { childData = AreaInitializer.EditAreaDataManager.SerachDataFromParentRelationForChildDataView(relationshipControl.Relationship, this, relationshipControl.EditNdTypeArea, specificDate); } else { childData = AreaInitializer.EditAreaDataManager.SerachDataFromParentRelationForChildTempView(relationshipControl.Relationship, this, relationshipControl.EditNdTypeArea, specificDate); } } } if (childData.SecurityIssue == false) { // if (relationshipControl.EditNdTypeArea.AreaInitializer.IntracionMode == IntracionMode.CreateInDirect || //relationshipControl.EditNdTypeArea.AreaInitializer.IntracionMode == IntracionMode.CreateSelectInDirect) // { // if (relationshipControl.EditNdTypeArea.TemporaryDisplayView != null) // relationshipControl.EditNdTypeArea.TemporaryDisplayView.DisableEnable(TemporaryLinkType.DataView, true); // if (relationshipControl.EditNdTypeArea.TemporaryDisplayView != null) // { // if (relationshipControl.EditNdTypeArea.SecurityReadOnlyByParent|| relationshipControl.EditNdTypeArea.AreaInitializer.SecurityReadOnly ) // { // if (!childData.RelatedData.Any()) // { // //اگر مستقیم بود چی..اصن نباید دیتای دیفالت تولید بشه .درست شود // relationshipControl.EditNdTypeArea.TemporaryDisplayView.DisableEnable(TemporaryLinkType.DataView, false); // } // } // } // } var childResult = relationshipControl.EditNdTypeArea.SetChildRelationshipInfoAndShow(childData); if (!childResult) { result = false; } } else { result = false; } } if (result) { OnDataItemShown(new EditAreaDataItemLoadedArg() { DataItem = specificDate, InEditMode = true }); } // CheckRelationshipReadonlyEnablity(); DecideDataSectionEnablity(); return(result); //else }
//بعدا بررسی شود private bool InternalShowDataInDataView(DP_DataRepository specificDate) { if (!specificDate.IsFullData) { throw new Exception("asdasd"); } foreach (var propertyControl in SimpleColumnControls) { var property = specificDate.GetProperty(propertyControl.Column.ID); if (property != null) { //if (AreaInitializer.IntracionMode == IntracionMode.Create // || AreaInitializer.IntracionMode == IntracionMode.CreateSelect) //{ //if (propertyControl.Column.ColumnValueRange != null && propertyControl.Column.ColumnValueRange.Details.Any()) //{ // var columnKeyValue = propertyControl.Column.ColumnValueRange; // if (!string.IsNullOrEmpty(property.Value)) // { // if (columnKeyValue.ValueFromTitleOrValue) // { // if (!columnKeyValue.Details.Any(x => x.KeyTitle == property.Value)) // property.Value = ""; // } // else // { // if (!columnKeyValue.Details.Any(x => x.Value == property.Value)) // property.Value = ""; // } // } //} SetBinding(specificDate, propertyControl, property); //ShowTypePropertyControlValue(specificDate, propertyControl, property.Value); //} } else { //???? } } bool result = true; foreach (var relationshipControl in RelationshipColumnControls) { bool relationshipFirstSideHasValue = relationshipControl.Relationship.RelationshipColumns.Any() && relationshipControl.Relationship.RelationshipColumns.All(x => specificDate.GetProperties().Any(y => y.Value != null && !string.IsNullOrEmpty(y.Value.ToString()) && y.ColumnID == x.FirstSideColumnID)); bool childLoadedBefore = specificDate.ChildRelationshipInfos.Any(x => x.Relationship.ID == relationshipControl.Relationship.ID); ChildRelationshipInfo childData = null; if (childLoadedBefore) { childData = specificDate.ChildRelationshipInfos.First(x => x.Relationship.ID == relationshipControl.Relationship.ID); } else { if (!relationshipFirstSideHasValue) { childData = specificDate.AddChildRelationshipInfo(relationshipControl.Relationship); } else { childData = AreaInitializer.EditAreaDataManager.SerachDataFromParentRelationForChildTempView(relationshipControl.Relationship, this, relationshipControl.EditNdTypeArea, specificDate); } } if (childData.SecurityIssue == false) { relationshipControl.EditNdTypeArea.SetChildRelationshipInfoAndShow(childData); //if (relationshipControl.EditNdTypeArea.SecurityReadOnlyByParent || relationshipControl.EditNdTypeArea.AreaInitializer.SecurityReadOnly) // if (!childData.RelatedData.Any()) // { // relationshipControl.View.DisableEnable(specificDate, TemporaryLinkType.DataView, false); // } } else { result = false; } } if (result) { OnDataItemShown(new EditAreaDataItemLoadedArg() { DataItem = specificDate, InEditMode = true }); } // OnDataItemLoaded(new EditAreaDataItemLoadedArg() { DataItem = specificDate, InEditMode = true }); return(result); }
public ChildRelationshipInfo SerachDataFromParentRelationForChildTempView(RelationshipDTO relationship, I_EditEntityArea sourceEditEntityArea, I_EditEntityArea targetEditEntityArea, DP_DataRepository parentRelationData) { //List<DP_DataRepository> re = null; //if (parentRelationData.ChildRelationshipInfos.Any(x => x.Relationship.ID == relationshipID)) //{ // childViewData = new List<DP_DataView>(); // foreach (var child in parentRelationData.ChildRelationshipInfos.First(x => x.Relationship.ID == relationshipID).RelatedData) // childViewData.Add(child.DataView); //} //else //{ ChildRelationshipInfo childRelationshipInfo = null; childRelationshipInfo = parentRelationData.ChildRelationshipInfos.FirstOrDefault(x => x.Relationship.ID == relationship.ID); if (childRelationshipInfo == null) { childRelationshipInfo = parentRelationData.AddChildRelationshipInfo(relationship); } else { throw new Exception("Asd"); } List <DP_DataRepository> result = new List <DP_DataRepository>(); var searchDataItem = relationshipManager.GetSecondSideSearchDataItemByRelationship(parentRelationData, relationship.ID); if (searchDataItem != null) { var requester = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester(); DR_SearchViewRequest request = new DR_SearchViewRequest(requester, searchDataItem); if (targetEditEntityArea.DefaultEntityListViewDTO != null) { request.EntityViewID = targetEditEntityArea.DefaultEntityListViewDTO.ID; } var childViewData = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendSearchViewRequest(request).ResultDataItems; var countRequest = new DR_SearchCountRequest(requester); countRequest.SearchDataItems = searchDataItem; countRequest.Requester.SkipSecurity = true; var count = AgentUICoreMediator.GetAgentUICoreMediator.requestRegistration.SendSearchCountRequest(countRequest); bool secutrityImposed = false; if (count.ResultCount != childViewData.Count) { secutrityImposed = true; } if (!secutrityImposed) { foreach (var item in childViewData) { var dpItem = ConvertDP_DataViewToDP_DataRepository(item, targetEditEntityArea); result.Add(dpItem); dpItem.IsDBRelationship = true; childRelationshipInfo.AddDataToChildRelationshipInfo(dpItem, true); } } else { childRelationshipInfo.SecurityIssue = true; } } //} return(childRelationshipInfo); }