Example #1
0
        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);
        }
Example #5
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
        }
Example #6
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);
        }
Example #7
0
        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);
        }