private CustomObject GetMainFormulaObject(DP_DataRepository mainDataItem) { CustomObject formulaObject = new CustomObject(); if (!mainDataItem.IsNewItem && MyDataHelper.DataItemPrimaryKeysHaveValue(mainDataItem) && !MyDataHelper.DataItemNonPrimaryKeysHaveValues(mainDataItem)) { SearchRequestManager searchProcessor = new SearchRequestManager(); DP_SearchRepository searchDataItem = new DP_SearchRepository(mainDataItem.TargetEntityID); foreach (var property in mainDataItem.GetProperties()) { searchDataItem.Phrases.Add(new SearchProperty() { ColumnID = property.ColumnID, Value = property.Value }); } //سکوریتی داده اعمال میشود //یعنی ممکن است به خود داده دسترسی نداشته باشد و یا حتی به بعضی از فیلدها و روابط DR_SearchFullDataRequest request = new DR_SearchFullDataRequest(Requester, searchDataItem); var result = searchProcessor.Process(request); if (result.Result == Enum_DR_ResultType.SeccessfullyDone) { formulaObject.DataItem = result.ResultDataItems.FirstOrDefault(); // searchProcessor.GetDataItemsByListOFSearchProperties(Requester, searchDataItem).FirstOrDefault(); } else if (result.Result == Enum_DR_ResultType.ExceptionThrown) { throw (new Exception(result.Message)); } } else { formulaObject.DataItem = mainDataItem; } return(formulaObject); }
void DataOrRelatedDataHasChanged(DP_DataRepository data) { if (data.DataOrRelatedDataIsChanged == null) { if (data.IsNewItem) { data.IsEdited = true; } else { if (data.GetProperties().Any(x => x.ValueIsChanged)) { data.IsEdited = true; } if (data.ChildRelationshipInfos.Any(x => x.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromForeignToPrimary && x.RelationshipIsChangedForUpdate)) { data.IsEdited = true; } if (data.ParantChildRelationshipInfo != null && data.ParantChildRelationshipInfo.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromPrimartyToForeign && data.ParantChildRelationshipInfo.DataItemIsAdded(data)) { data.IsEdited = true; } } if (data.IsEdited || data.ChildRelationshipInfos.Any(x => x.RelationshipIsChangedForUpdate)) { data.DataOrRelatedDataIsChanged = true; } foreach (var child in data.ChildRelationshipInfos) { foreach (var childData in child.RelatedData) { if (childData.DataOrRelatedDataIsChanged == null) { DataOrRelatedDataHasChanged(childData); } if (childData.DataOrRelatedDataIsChanged == true) { data.DataOrRelatedDataIsChanged = true; } } } if (data.DataOrRelatedDataIsChanged == null) { data.DataOrRelatedDataIsChanged = false; } } }
public FormulaObject(DP_DataRepository dataItem, DR_Requester requester, bool isDefinitionFormulaObject = false) { Requester = requester; bool getFromDB = false; if (isDefinitionFormulaObject == false) { if (!dataItem.IsNewItem && MyDataHelper.DataItemPrimaryKeysHaveValue(dataItem) && !MyDataHelper.DataItemNonPrimaryKeysHaveValues(dataItem)) { getFromDB = true; } } if (getFromDB) { SearchRequestManager searchProcessor = new SearchRequestManager(); DP_SearchRepository searchDataItem = new DP_SearchRepository(dataItem.TargetEntityID); foreach (var property in dataItem.GetProperties()) { searchDataItem.Phrases.Add(new SearchProperty() { ColumnID = property.ColumnID, Value = property.Value }); } //سکوریتی داده اعمال میشود //یعنی ممکن است به خود داده دسترسی نداشته باشد و یا حتی به بعضی از فیلدها و روابط DR_SearchFullDataRequest request = new DR_SearchFullDataRequest(Requester, searchDataItem); var result = searchProcessor.Process(request); if (result.Result == Enum_DR_ResultType.SeccessfullyDone) { dataItem = result.ResultDataItems.FirstOrDefault(); // searchProcessor.GetDataItemsByListOFSearchProperties(Requester, searchDataItem).FirstOrDefault(); } else if (result.Result == Enum_DR_ResultType.ExceptionThrown) { throw (new Exception(result.Message)); } } DataItem = dataItem; this.PropertyGetCalled += FormulaObject_PropertyGetCalled; IsDefinitionFormulaObject = isDefinitionFormulaObject; var entity = bizTableDrivedEntity.GetPermissionedEntity(Requester, DataItem.TargetEntityID); var properties = FormulaInstanceInternalHelper.GetProperties(entity, null, false, true); SetProperties(properties); }
//private void Item_RelatedDataChanged(object sender, RelatedDataChangedArg e) //{ //} //private List<DP_DataRepository> AddViewSearchData(List<DP_DataView> searchedData, I_EditEntityArea editEntityArea) //{ // CheckEditArea(editEntityArea); // List<DP_DataRepository> result = new List<DP_DataRepository>(); // foreach (var item in searchedData) // { // var keys = item.Properties.Where(x => x.IsKey); // var existData = DataList.FirstOrDefault(x => x.IsNewItem == false && keys.All(z => x.KeyProperties.Any(h => h.ColumnID == z.ColumnID && z.Value == h.Value))); // if (existData == null) // { // result.Add(ConvertDataViewToDataRepository(item, editEntityArea)); // //CheckItemInfo(item, item, editEntityArea); // } // else // { // if (existData.IsFullData) // { // result.Add(existData); // } // else // { // result.Add(existData); // } // } // } // return result; //} //private DP_DataRepository ConvertDataViewToDataRepository(DP_DataView item, I_EditEntityArea editEntityArea) //{ //} //private void CheckItemInfo(DP_DataRepository mainItem, I_EditEntityArea editEntityArea) //{ // if (string.IsNullOrEmpty(mainItem.ViewInfo)) // { // List<int> columnIDs = new List<int>(); // if (editEntityArea.EntityListViewDTO.EntityListViewAllColumns.Any(x => x.RelationshipTailID == 0)) // { // foreach (var prop in editEntityArea.EntityListViewDTO.EntityListViewAllColumns.Where(x => x.RelationshipTailID == 0)) // { // columnIDs.Add(prop.ColumnID); // } // } // else // { // var columnList = editEntityArea.FullEntity.Columns; // int columnID = 0; // if (columnList.Any(x => x.Name.ToLower() == "name")) // { // columnID = columnList.First(x => x.Name.ToLower() == "name").ID; // } // else if (columnList.Any(x => x.Name.ToLower() == "title")) // { // columnID = columnList.First(x => x.Name.ToLower() == "title").ID; // } // else if (columnList.Any(x => x.Name.ToLower() == "desc")) // { // columnID = columnList.First(x => x.Name.ToLower() == "desc").ID; // } // else if (columnList.Any(x => x.Name.ToLower() == "description")) // { // columnID = columnList.First(x => x.Name.ToLower() == "description").ID; // } // else if (columnList.Any(x => x.Name.ToLower() == "code")) // { // columnID = columnList.First(x => x.Name.ToLower() == "code").ID; // } // else if (columnList.Any(x => x.Name.ToLower() == "id")) // { // columnID = columnList.First(x => x.Name.ToLower() == "id").ID; // } // else // columnID = mainItem.Properties.FirstOrDefault(x => !string.IsNullOrEmpty(x.Value))?.ColumnID ?? 0; // if (columnID != 0) // columnIDs.Add(columnID); // } // List<EntityInstanceProperty> viewItemProperties = new List<EntityInstanceProperty>(); // foreach (var col in columnIDs) // { // var title = ""; // var property = mainItem.Properties.FirstOrDefault(x => x.ColumnID == col); // if (property != null) // { // if (property.Value == "<Null>" || property.Value == "0" || property.Value == "") // { // title += (title == "" ? "" : ",") + " Selected " + (string.IsNullOrEmpty(editEntityArea.SimpleEntity.Alias) ? editEntityArea.SimpleEntity.Name : editEntityArea.SimpleEntity.Alias); // } // else // title += (title == "" ? "" : ",") + property.Value; // } // viewItemProperties.Add(property); // } // mainItem.ViewEntityProperties.Add(new Tuple<int, List<EntityInstanceProperty>>(editEntityArea.AreaInitializer.EntityID, viewItemProperties)); // } //} //private void CheckItemInfo(DP_DataRepository mainItem, DP_DataRepository viewItem, I_EditEntityArea editEntityArea) //{ // if (string.IsNullOrEmpty(mainItem.ViewInfo)) // { // List<EntityInstanceProperty> viewItemProperties = null; // if (viewItem != null) // { // viewItemProperties = viewItem.Properties; // } // else // { // viewItemProperties = new List<EntityInstanceProperty>(); // foreach (var column in editEntityArea.EntityListViewDTO.EntityListViewAllColumns) // { // if (column.RelationshipTailID == 0) // { // var value = editEntityArea.FetchTypePorpertyValue() // } // l // } // DR_SearchViewRequest request = new DR_SearchViewRequest(); // request.Requester = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester(); // foreach (var keyProperty in mainItem.Properties.Where(x => x.IsKey)) // { // var searchProperty = new SearchProperty(); // searchProperty.ColumnID = keyProperty.ColumnID; // searchProperty.Value = keyProperty.Value; // request.SearchDataItems.Phrases.Add(searchProperty); // } // request.EntityID = request.SearchDataItems.TargetEntityID; // request.Requester.SkipSecurity = true; // request.EntityViewID = editEntityArea.EntityListViewDTO.ID; // var foundView = AgentUICoreMediator.GetAgentUICoreMediator.SendSearchViewRequest(request).ResultDataItems[0]; // viewItemProperties = foundView.Properties; // } // foreach (var property in viewItemProperties) // { // if (!string.IsNullOrEmpty(property.Value)) // { // mainItem.ViewInfo += (string.IsNullOrEmpty(mainItem.ViewInfo) ? "" : ",") + property.Name + ":" + property.Value; // } // } // } //} //public List<DP_DataRepository> SerachDataViewFromParentRelation(int relationshipID, DP_DataRepository parentRelationData) //{ // return null; //} //private void Data_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) //{ // //if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) // //{ // // foreach (DP_DataRepository item in e.NewItems) // // { // // if (item.IsNewItem) // // { // // item.ViewInfo = GetDataItemInfo(editArea, data[0]); // // } // // } // //} // SetTempInfo(sender as I_EditEntityArea); //} //internal void SetTempInfo(I_EditEntityArea editArea) //{ // if (editArea.AreaInitializer.SourceRelationColumnControl != null) // { // if (editArea.AreaInitializer.IntracionMode == IntracionMode.CreateSelectInDirect || // editArea.AreaInitializer.IntracionMode == IntracionMode.CreateInDirect) // { // var data = editArea.AreaInitializer.SourceRelationColumnControl.RelatedData.GetRelatedData(editArea.AreaInitializer.SourceRelationColumnControl.Relationship.ID); // if (data.Any()) // { // var text = ""; // if (editArea is I_EditEntityAreaOneData) // { // if (data.Count > 1) // throw new Exception("asdasd"); // text = GetInfo(data[0], editArea); // } // else if (editArea is I_EditEntityAreaMultipleData) // { // text = data.Count + " " + "داده وجود دارد"; // foreach (var item in data) // { // text += Environment.NewLine; // text += GetInfo(item, editArea); // } // } // if (editArea.AreaInitializer.SourceRelationColumnControl.SourceEditArea is I_EditEntityAreaOneData) // editArea.TemporaryDisplayView.SetLinkText(text); // else if (editArea.AreaInitializer.SourceRelationColumnControl.SourceEditArea is I_EditEntityAreaMultipleData) // { // var parentMultipleEditArea = (editArea.AreaInitializer.SourceRelationColumnControl.SourceEditArea as I_EditEntityAreaMultipleData); // var relationshipControl = parentMultipleEditArea.RelationshipColumnControls.FirstOrDefault(x => x.Relationship.ID == editArea.AreaInitializer.SourceRelationColumnControl.Relationship.ID); // if (relationshipControl != null) // relationshipControl.ControlPackage.View.SetTemporaryViewText(editArea.AreaInitializer.SourceRelationColumnControl.RelatedData, text); // } // } // else // { // if (editArea.AreaInitializer.SourceRelationColumnControl.SourceEditArea is I_EditEntityAreaOneData) // editArea.TemporaryDisplayView.SetLinkText(""); // else if (editArea.AreaInitializer.SourceRelationColumnControl.SourceEditArea is I_EditEntityAreaMultipleData) // { // var parentMultipleEditArea = (editArea.AreaInitializer.SourceRelationColumnControl.SourceEditArea as I_EditEntityAreaMultipleData); // var relationshipControl = parentMultipleEditArea.RelationshipColumnControls.FirstOrDefault(x => x.Relationship.ID == editArea.AreaInitializer.SourceRelationColumnControl.Relationship.ID); // if (relationshipControl != null) // relationshipControl.ControlPackage.View.SetTemporaryViewText(editArea.AreaInitializer.SourceRelationColumnControl.RelatedData, ""); // } // } // } // } //} private string GetInfo(DP_DataRepository dP_DataRepository, I_EditEntityArea editEntityArea) { string result = ""; if (dP_DataRepository.DataView == null) { if (!dP_DataRepository.IsFullData) { throw new Exception("Asdadsf"); } var columns = editEntityArea.DefaultEntityListViewDTO.EntityListViewAllColumns.Where(x => x.RelationshipTailID == 0); if (columns.Any()) { foreach (var item in columns) { var property = dP_DataRepository.GetProperty(item.ColumnID); result += (result == "" ? "" : ",") + property.Name + ":" + property.Value; } } else { foreach (var item in dP_DataRepository.GetProperties().Take(3)) { var property = dP_DataRepository.GetProperty(item.ColumnID); result += (result == "" ? "" : ",") + property.Name + ":" + property.Value; } result += " ..."; } } else { foreach (var item in dP_DataRepository.DataView.Properties) { //var column = dP_DataRepository.DataView.Properties; result += (result == "" ? "" : ",") + item.Name + ":" + item.Value; } } return(result); }
//صدا زده میشود 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); }
private EditAreaDataActionLog ToDataLog(DP_DataRepository item) { EditAreaDataActionLog log = new EditAreaDataActionLog(); if (item.ParantChildRelationshipInfo != null && item.ParantChildRelationshipInfo.DataItemIsAdded(item)) { if (item.IsNewItem) { log.ActionType = LogAction.AddedToRelationshipNewData; } else { if (item.IsEdited) { log.ActionType = LogAction.AddedToRelationshipAndEdited; } else { log.ActionType = LogAction.AddedToRelationshipAndNotEdited; } } } else { if (item.IsNewItem) { log.ActionType = LogAction.NewData; } else { if (item.IsEdited) { log.ActionType = LogAction.EditData; } else { log.ActionType = LogAction.EditDataNotEdited; } } } log.EntityID = item.TargetEntityID; //log.EntityName = item.; log.DataInfo = item.ViewInfo; log.KeyProperties = item.KeyProperties; List <EntityInstanceProperty> changedPropeties = null; if (item.IsNewItem) { changedPropeties = item.GetProperties(); } else { changedPropeties = item.GetProperties().Where(x => x.ValueIsChanged).ToList(); } foreach (var property in changedPropeties) { var actionLogProperty = new ActionLogProperty(); actionLogProperty.ColumnaName = property.Column.Alias; actionLogProperty.ColumnID = property.ColumnID; actionLogProperty.InfoColor = InfoColor.Black; var stringvalue = property.Value == null ? "<Null>" : property.Value; if (property.FormulaID != 0) { if (string.IsNullOrEmpty(property.FormulaException)) { actionLogProperty.NewValue = stringvalue + " " + "محاسبه شده توسط فرمول" + " " + property.FormulaID; } else { actionLogProperty.NewValue = stringvalue + " " + property.FormulaException; actionLogProperty.InfoColor = InfoColor.Red; } } else { actionLogProperty.NewValue = stringvalue.ToString(); } if (item.IsNewItem) { if (property.Column.IsIdentity) { if (AgentHelper.ValueIsEmpty(property)) { actionLogProperty.NewValue = "<identity>"; } } } if (item.OriginalProperties.Any(x => x.ColumnID == property.ColumnID)) { var oldvalue = item.OriginalProperties.First(x => x.ColumnID == property.ColumnID).Value; actionLogProperty.OldValue = oldvalue == null ? "<Null>" : oldvalue.ToString(); } log.LogProperties.Add(actionLogProperty); } foreach (var child in item.ChildRelationshipInfos) { var relatedLog = new RelatedDataLog(); relatedLog.RelationshipID = child.Relationship.ID; relatedLog.RelationshipInfo = child.Relationship.Alias; foreach (var childData in child.RelatedData) { relatedLog.RelatedActions.Add(ToDataLog(childData)); } foreach (var childData in child.RemovedDataForUpdate) { relatedLog.RelatedActions.Add(ToRemovedDataLog(childData)); } log.RelatedLog.Add(relatedLog); } return(log); }
public static bool DataItemNonPrimaryKeysHaveValues(DP_DataRepository dataItem) { return(dataItem.GetProperties().Where(x => !x.IsKey).Any(x => x.Value != null && !string.IsNullOrEmpty(x.Value.ToString()))); }
private DP_DataRepository GetData(DP_DataRepository item) { DP_DataRepository newItem = new DP_DataRepository(item.TargetEntityID, item.TargetEntityAlias); foreach (var property in item.GetProperties()) { if (!property.IsHidden && (property.IsKey || !property.ISFK)) { var originalProperty = item.OriginalProperties.First(x => x.ColumnID == property.ColumnID); var newProperty = newItem.AddCopyProperty(property); newItem.OriginalProperties.Add(originalProperty); if (property.IsReadonly) { newProperty.Value = originalProperty.Value; } } } newItem.IsFullData = item.IsFullData; newItem.DataView = item.DataView; // newItem.HasDirectData = item.HasDirectData; newItem.IsDBRelationship = item.IsDBRelationship; //newItem.IsHiddenBecauseOfCreatorRelationshipOnShow = item.IsHiddenBecauseOfCreatorRelationshipOnShow; newItem.IsHiddenBecauseOfCreatorRelationshipOnState = item.IsHiddenBecauseOfCreatorRelationshipOnState; newItem.IsReadonlyBecauseOfCreatorRelationshipOnShow = item.IsReadonlyBecauseOfCreatorRelationshipOnShow; newItem.IsReadonlyBecauseOfCreatorRelationshipOnState = item.IsReadonlyBecauseOfCreatorRelationshipOnState; newItem.IsReadonlyBecauseOfState = item.IsReadonlyBecauseOfState; newItem.EntityListView = item.EntityListView; newItem.IsNewItem = item.IsNewItem; // newItem.ParantChildRelationshipInfo = newParentChildRelationshipInfo; foreach (var childItem in item.ChildRelationshipInfos) { //مطمئنن رابطه فارن به پرایمری هست وقتی که هیدن یا ریدونلی ترو باشه // bool skipChildRel = false; //if (childItem.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromForeignToPrimary) //{ // if (childItem.IsHidden) // skipChildRel = true; //////else if ((childItem.Relationship.IsReadonly || childItem.IsReadonly) && childItem.CheckRelationshipIsChanged()) ////// skipChildRel = true; //} if (!childItem.IsHidden) { var newChildItems = new ChildRelationshipInfo(); newChildItems.Relationship = childItem.Relationship; newChildItems.RelationshipDeleteOption = childItem.RelationshipDeleteOption; foreach (var orginalData in childItem.OriginalRelatedData) { //if (childItem.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromPrimartyToForeign) //{ newChildItems.OriginalRelatedData.Add(orginalData); } foreach (var orginalData in childItem.RemovedOriginalDatas) { //bool skipOriginalData = false; //برای وقتی که شرط داده اجازه حذف میداده و داده حذف شده اما قبل از آپد یت دیگه شرط اجازه حذف را به علت هیدن یا ریدونلی بودن نمیده if (orginalData.IsHiddenBecauseOfCreatorRelationshipOnState || childItem.IsReadonly || orginalData.IsReadonlySomeHow ) { } else { newChildItems.RemovedDataForUpdate.Add(orginalData); } //else //{ // var relatedDataToOriginalData = childItem.GetRelatedDataOfOriginalData(orginalData); // if (relatedDataToOriginalData.IsHiddenBecauseOfCreatorRelationshipOnState) // skipOriginalData = true; //} //if (!skipOriginalData) // newChildItems.RemovedDataForUpdate.Add(orginalData); //} //else //{ // newChildItems.OriginalRelatedData.Add(orginalData); //} } var relatedData = childItem.RelatedData.ToList(); foreach (var ritem in relatedData) { if (ritem.ShoudBeCounted) { newChildItems.RelatedData.Add(GetData(ritem)); } } //var childDataItems = GetData(childItem, newChildItems); //foreach (var cItem in childDataItems) // newChildItems.RelatedData.Add(cItem); // newChildItems.CheckAddedRemovedRelationships(); newItem.ChildRelationshipInfos.Add(newChildItems); } // } } return(newItem); }