public FunctionResult GetCodeFunctionEntityResult(DR_Requester resuester, int codeFunctionEntityID, DP_DataRepository dataItem)
        {
            var codeFunctionEntity = bizCodeFunction.GetCodeFunctionEntity(resuester, codeFunctionEntityID);
            var parameters         = new List <object>();

            //var formulaUsageParemeters = new List<FormulaUsageParemetersDTO>();
            foreach (var column in codeFunctionEntity.CodeFunctionEntityColumns)
            {
                EntityInstanceProperty property = dataItem.GetProperty(column.ColumnID);
                if (property != null)
                {
                    //FormulaUsageParemetersDTO formulaUsageParemeter = new FormulaUsageParemetersDTO();
                    //formulaUsageParemeter.ParameterName = property.Name;
                    //formulaUsageParemeter.ParameterValue = (property.Value != null ? property.Value.ToString() : "<Null>");
                    //formulaUsageParemeters.Add(formulaUsageParemeter);
                    //stringParamList += (stringParamList == "" ? "" : ",") + column.FunctionColumnParamName;
                    //paramList.Add(column.FunctionColumnParamName);
                    if (property.Value != null)
                    {
                        parameters.Add(Convert.ChangeType(property.Value, column.FunctionColumnDotNetType));
                    }
                    else
                    {
                        parameters.Add(null);
                    }
                }
            }
            var result = GetCodeFunctionResult(resuester, codeFunctionEntity.CodeFunctionID, parameters);

            //   result.FormulaUsageParemeters = formulaUsageParemeters;
            return(result);
        }
Exemplo n.º 2
0
        private Tuple <Enum_QueryItemType, List <EntityInstanceProperty> > GetQueryDeleteOrUpdateNull(DP_DataRepository item, ChildRelationshipInfo parentChildRelatoinshipInfo)
        {
            Enum_QueryItemType            queryItemType;
            List <EntityInstanceProperty> listEditProperties = new List <EntityInstanceProperty>();

            if (parentChildRelatoinshipInfo == null)
            {
                queryItemType = Enum_QueryItemType.Delete;
            }
            else
            {
                if (parentChildRelatoinshipInfo.RelationshipDeleteOption == RelationshipDeleteOption.DeleteCascade)
                {
                    queryItemType = Enum_QueryItemType.Delete;
                }
                else
                {
                    queryItemType = Enum_QueryItemType.Update;

                    foreach (var col in parentChildRelatoinshipInfo.Relationship.RelationshipColumns)
                    {
                        var prop = item.GetProperty(col.SecondSideColumnID);
                        if (prop == null)
                        {
                            prop = new EntityInstanceProperty(col.SecondSideColumn);
                        }
                        prop.Value = null;
                        listEditProperties.Add(prop);
                    }
                }
            }
            return(new Tuple <Enum_QueryItemType, List <EntityInstanceProperty> >(queryItemType, listEditProperties));
        }
        //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);
        }
        public FunctionResult GetDatabaseFunctionValue(DR_Requester requester, int functionID, DP_DataRepository dataItem)
        {
            //   var formulaUsageParemeters = new List<FormulaUsageParemetersDTO>();
            var databaseFunctionEntity = bizDatabaseFunction.GetDatabaseFunctionEntity(requester, functionID);
            //   List<object> paramList = new List<object>();
            List <Tuple <string, object> > parameters = new List <Tuple <string, object> >();

            if (databaseFunctionEntity != null)
            {
                foreach (var column in databaseFunctionEntity.DatabaseFunctionEntityColumns)
                {
                    object value = null;
                    if (column.ColumnID != 0)
                    {
                        EntityInstanceProperty property = dataItem.GetProperty(column.ColumnID);
                        if (property != null)
                        {
                            value = property.Value;
                        }
                    }
                    else
                    {
                        if (column.FixedParam == Enum_FixedParam.RequesterIdentity)
                        {
                            value = requester.Identity.ToString();
                        }
                    }
                    //FormulaUsageParemetersDTO formulaUsageParemeter = new FormulaUsageParemetersDTO();
                    //formulaUsageParemeter.ParameterName = column.FunctionColumnParamName;
                    //formulaUsageParemeter.ParameterValue = (value != null ? value.ToString() : "<Null>");
                    //formulaUsageParemeters.Add(formulaUsageParemeter);

                    parameters.Add(new Tuple <string, object>(column.FunctionColumnParamName, value));
                }
            }

            var result = GetDatabaseFunctionValue(requester, databaseFunctionEntity.DatabaseFunction, parameters);

            //    result.FormulaUsageParemeters = formulaUsageParemeters;
            return(result);
        }
        private bool ValidateData(DP_DataRepository data)
        {
            bool result = true;

            data.ISValid = true;

            //اگر داده جدید باشد ستونها و رابطی که اجباری باشند اما در فرم ورود اطلاعات وجود نداشته باشند را چک میکند
            CheckAccessValidation(data);

            foreach (var simplePropertyControl in EditArea.SimpleColumnControls)
            {
                var dataProperty = data.GetProperty(simplePropertyControl.Column.ID);
                if (dataProperty != null)
                {
                    ValidateSimpleColumn(data, dataProperty, simplePropertyControl);
                }
            }

            foreach (var relationshipControl in EditArea.RelationshipColumnControls)
            {
                relationshipControl.EditNdTypeArea.SetChildRelationshipInfo(data.ChildRelationshipInfos.First(x => x.Relationship == relationshipControl.Relationship));

                ValidateRelationshipColumn(data, data.ChildRelationshipInfos.First(x => x.Relationship == relationshipControl.Relationship), relationshipControl);
            }
            ValidateRelationshipFilters(data);
            ValidateISARelationships(data);
            ValidateUnionRelationships(data);
            ValidateEntityValidations(data);
            if (EditArea.AreaInitializer.TailDataValidation != null)
            {
                ValidateTailDataValidation(data);
            }
            if (data.ISValid == false)
            {
                result = false;
            }

            return(result);
        }
Exemplo n.º 6
0
        private QueryItem SetSortedTree(DR_Requester requester, List <QueryItem> result, DP_DataRepository item, QueryItem parentQueryItem = null, ChildRelationshipInfo parentChildRelationshipInfo = null)
        {
            List <EntityInstanceProperty> editingProperties = new List <EntityInstanceProperty>();

            foreach (var child in item.ChildRelationshipInfos.Where(x => x.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromForeignToPrimary))
            {
                List <EntityInstanceProperty> foreignKeyProperties = new List <EntityInstanceProperty>();
                //foreach (var relCol in child.Relationship.RelationshipColumns)
                //{
                //    var prop = item.GetProperty(relCol.FirstSideColumnID);
                //    foreignKeyProperties.Add(prop);
                //}

                bool isSelfTable = false;
                if (child.Relationship.RelationshipColumns.All(x => x.FirstSideColumnID == x.SecondSideColumnID))
                {
                    isSelfTable = true;
                    //foreach (var prop in item.GetProperties())
                    //    childItem.AddProperty(prop.Column, prop.Value);
                }
                if (child.RelatedData.Any())
                {
                    foreach (var pkData in child.RelatedData)
                    {
                        var pkQueryItem = SetSortedTree(requester, result, pkData);

                        //int pkIdentityColumnID = 0;
                        //if (pkData.IsNewItem)
                        //    if (pkData.KeyProperties.Any(x => x.IsIdentity))
                        //    {
                        //        pkIdentityColumnID = pkData.KeyProperties.First(x => x.IsIdentity).ColumnID;
                        //    }
                        // queryItem.FKSources.Add(new FKToPK(child.Relationship, pkQueryItem, pkIdentityColumnID, isSelfTable));
                        if (child.RelationshipIsChangedForUpdate)
                        {
                            foreach (var relCol in child.Relationship.RelationshipColumns)
                            {
                                var fkprop = item.GetProperty(relCol.FirstSideColumnID);
                                if (fkprop == null)
                                {
                                    fkprop = new EntityInstanceProperty(relCol.FirstSideColumn);
                                }
                                var pkprop = pkData.GetProperty(relCol.SecondSideColumnID);
                                if (pkData.IsNewItem && (pkprop.Column.IsIdentity || pkprop.PKIdentityColumn != null))
                                {
                                    fkprop.Value            = "{" + fkprop.ColumnID + "}";
                                    fkprop.PKIdentityColumn = pkprop;
                                }
                                else
                                {
                                    fkprop.Value = pkData.GetProperty(relCol.SecondSideColumnID).Value;
                                }
                                //fkprop.IsHidden = child.IsHidden;
                                foreignKeyProperties.Add(fkprop);
                            }
                        }
                    }
                }
                else
                {
                    if (item.IsNewItem || (child.RelationshipIsChangedForUpdate && child.RemovedDataForUpdate.Any()))
                    {
                        foreach (var relCol in child.Relationship.RelationshipColumns)
                        {
                            var fkprop = item.GetProperty(relCol.FirstSideColumnID);
                            if (fkprop == null)
                            {
                                fkprop = new EntityInstanceProperty(relCol.FirstSideColumn);
                            }
                            fkprop.Value = null;
                            //prop.IsHidden = child.IsHidden;
                            foreignKeyProperties.Add(fkprop);
                        }
                    }
                }
                foreach (var fkProp in foreignKeyProperties)
                {
                    fkProp.HasForeignKeyData = true;
                    editingProperties.Add(fkProp);
                }
            }


            if (parentChildRelationshipInfo != null && parentChildRelationshipInfo.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromPrimartyToForeign)
            {
                bool isSelfTable = false;
                if (parentChildRelationshipInfo.Relationship.RelationshipColumns.All(x => x.FirstSideColumnID == x.SecondSideColumnID))
                {
                    isSelfTable = true;
                    //foreach (var prop in item.GetProperties())
                    //    childItem.AddProperty(prop.Column, prop.Value);
                }

                //int pkIdentityColumnID = 0;
                //if (parentItem.IsNewItem)
                //    if (parentItem.KeyProperties.Any(x => x.IsIdentity))
                //    {
                //        pkIdentityColumnID = parentItem.KeyProperties.First(x => x.IsIdentity).ColumnID;
                //    }
                //parentQueryItem همون طرف pk هست
                //var relationship = bizRelationship.GetRelationship(parentChildRelationshipInfo.Relationship.PairRelationshipID);
                //queryItem.FKSources.Add(new FKToPK(relationship, parentQueryItem, pkIdentityColumnID, isSelfTable));

                if (parentChildRelationshipInfo.RelationshipIsChangedForUpdate && item.IsEdited) //اینجا edited اضافه شد چون ممکنه یک به چند باشه و فقط یک داده فرزند اضافه شده باشد
                {
                    foreach (var relCol in parentChildRelationshipInfo.Relationship.RelationshipColumns)
                    {
                        var fkprop = item.GetProperty(relCol.SecondSideColumnID);
                        if (fkprop == null)
                        {
                            fkprop = new EntityInstanceProperty(relCol.SecondSideColumn);
                        }
                        var pkprop = parentQueryItem.DataItem.GetProperty(relCol.FirstSideColumnID);
                        if (parentQueryItem.DataItem.IsNewItem && (pkprop.Column.IsIdentity || pkprop.PKIdentityColumn != null))
                        {
                            fkprop.Value            = "{" + fkprop.ColumnID + "}";
                            fkprop.PKIdentityColumn = pkprop;
                        }
                        else
                        {
                            fkprop.Value = pkprop.Value;
                        }
                        fkprop.HasForeignKeyData = true;
                        //fkprop.IsHidden = parentChildRelationshipInfo.IsHidden;
                        editingProperties.Add(fkprop);
                    }
                }
            }
            QueryItem queryItem = new QueryItem(GetTableDrivedDTO(requester, item.TargetEntityID), item.IsNewItem ? Enum_QueryItemType.Insert : Enum_QueryItemType.Update, editingProperties, item);

            result.Add(queryItem);

            foreach (var child in item.ChildRelationshipInfos.Where(x => x.Relationship.MastertTypeEnum == Enum_MasterRelationshipType.FromPrimartyToForeign))
            {
                foreach (var childItem in child.RelatedData)
                {
                    SetSortedTree(requester, result, childItem, queryItem, child);
                }
            }

            return(queryItem);
        }
Exemplo n.º 7
0
        //صدا زده میشود 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
        }
Exemplo n.º 8
0
        //بعدا بررسی شود
        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 object GetValueSomeHow(DR_Requester requester, DP_DataRepository sentdata, EntityRelationshipTailDTO valueRelationshipTail, int valueColumnID, bool firstIfMultiple = false)
        {
            if (valueRelationshipTail == null)
            {
                var proprty = sentdata.GetProperty(valueColumnID);
                return(proprty?.Value);
            }
            else
            {
                DP_DataRepository relatedData = null;
                if (sentdata.ParantChildRelationshipInfo != null && sentdata.ParantChildRelationshipInfo.Relationship.PairRelationshipID == valueRelationshipTail.Relationship.ID)
                {
                    if (sentdata.ParantChildRelationshipInfo.Relationship.PairRelationshipID == valueRelationshipTail.Relationship.ID)
                    {
                        relatedData = sentdata.ParantChildRelationshipInfo.SourceData;
                    }
                }
                else if (sentdata.ChildRelationshipInfos.Any(x => x.Relationship.ID == valueRelationshipTail.Relationship.ID))
                {
                    var childInfo = sentdata.ChildRelationshipInfos.First(x => x.Relationship.ID == valueRelationshipTail.Relationship.ID);
                    if (childInfo.RelatedData.Count > 1)
                    {
                        if (firstIfMultiple)
                        {
                            relatedData = childInfo.RelatedData.First();
                        }
                        else
                        {
                            throw new Exception("asav");
                        }
                    }
                    else if (childInfo.RelatedData.Count == 1)
                    {
                        relatedData = childInfo.RelatedData.First();
                    }
                    else if (childInfo.RelatedData.Count == 0)
                    {
                        //یعنی یا داده مرتبطی وجود نداشته یا حذف شده
                        return("");
                    }
                }
                if (relatedData != null)
                {
                    return(GetValueSomeHow(requester, relatedData, valueRelationshipTail.ChildTail, valueColumnID, firstIfMultiple));
                }
                else
                {
                    //var columnValues = sentdata.KeyProperties;
                    //if (columnValues == null || columnValues.Count == 0)
                    //    throw new Exception("asasd");

                    //سکوریتی داده اعمال میشود
                    //  var requester = AgentUICoreMediator.GetAgentUICoreMediator.GetRequester();

                    //این شرط منطقیه؟؟
                    if (!sentdata.IsNewItem)
                    {
                        var relationshipTailDataManager  = new RelationshipTailDataManager();
                        var searchDataTuple              = relationshipTailDataManager.GetTargetSearchItemFromRelationshipTail(sentdata, valueRelationshipTail);
                        DR_SearchFullDataRequest request = new DR_SearchFullDataRequest(requester, searchDataTuple);
                        var searchResult = new SearchRequestManager().Process(request);
                        if (searchResult.ResultDataItems.Count > 1)
                        {
                            throw new Exception("asdasd");
                        }
                        else if (searchResult.ResultDataItems.Count == 1)
                        {
                            var foundDataItem = searchResult.ResultDataItems.First();
                            var prop          = foundDataItem.GetProperty(valueColumnID);
                            if (prop != null)
                            {
                                return(prop.Value);
                            }
                            else
                            {
                                return("");
                            }
                        }
                        else
                        {
                            return("");
                        }
                    }
                    else
                    {
                        return("");
                    }
                }
            }
            //return "";
        }