//public bool EntityHasState(DP_DataRepository dataItem, int stateID)
        //{
        //    if (dataItem != null)
        //        using (var projectContext = new DataAccess.MyProjectEntities())
        //        {
        //            var foundDataItem = GetDataItem(projectContext, dataItem);
        //            if (foundDataItem != null)
        //            {
        //                return foundDataItem.DataItem_EntityState.Any(x => x.TableDrivedEntityStateID == stateID);
        //            }
        //        }
        //    return false;
        //}
        //public bool EntityHasState(DP_DataRepository dataItem, string state)
        //{

        //    using (var projectContext = new DataAccess.MyProjectEntities())
        //    {
        //        var foundDataItem = GetDataItem(projectContext, dataItem);
        //        if (foundDataItem != null)
        //        {
        //            return foundDataItem.DataItem_EntityState.Any(x => x.TableDrivedEntityState.Title == state);
        //        }
        //    }
        //    return false;
        //}

        //private DataItem GetDataItem(DataAccess.MyProjectEntities projectContext, DP_DataRepository dataItem)
        //{
        //    if (dataItem != null)
        //    {
        //        var keyColumns = dataItem.KeyProperties;
        //        if (keyColumns.Any())
        //        {
        //            var dataItems = projectContext.DataItem.Where(x => x.TableDrivedEntityID == dataItem.TargetEntityID);
        //            foreach (var keyColumn in keyColumns)
        //                dataItems = dataItems.Where(x => x.DataItemKeyColumns.Any(y => y.ColumnID == keyColumn.ColumnID && y.Value == keyColumn.Value));
        //            return dataItems.FirstOrDefault();
        //        }
        //    }
        //    return null;
        //}

        public EntityStateDTO ToEntityStateDTO(DR_Requester requester, TableDrivedEntityState item, bool withDetails)
        {
            EntityStateDTO result = new EntityStateDTO();

            result.TableDrivedEntityID = item.TableDrivedEntityID;
            //result.Preserve = item.Preserve;
            //result.ActionActivityID = item.ActionActivityID ?? 0;
            //if (result.ActionActivityID != 0 && withDetails)
            //{
            //    var bizActionActivity = new BizActionActivity();
            //    result.ActionActivity = bizActionActivity.GetActionActivity(item.ActionActivityID.Value);
            //}

            if (item.ConditionOperator != null)
            {
                result.ConditionOperator = (AndOREqualType)item.ConditionOperator;
            }

            var bizActionActivity = new BizUIActionActivity();

            foreach (var actionActivity in item.EntityState_UIActionActivity)
            {
                result.ActionActivities.Add(bizActionActivity.ToActionActivityDTO(actionActivity.UIActionActivity, withDetails));
            }
            result.ID    = item.ID;
            result.Title = item.Title;
            foreach (var dbCondition in item.TableDrivedEntityStateCondition)
            {
                result.StateConditions.Add(ToEntityStateConditionDTO(requester, dbCondition, withDetails));
            }

            return(result);
        }
        public void HandleDelete(int id, int processId, string entityTypeName)
        {
            var entityState = new EntityStateDTO {
                ID = id, EntityStateID = id, ProcessID = processId, EntityTypeName = entityTypeName
            };

            TransportMock.HandleMessageFromTp(Profile, new EntityStateDeletedMessage {
                Dto = entityState
            });
        }
        //internal void CalculateFormula(EditEntityArea editEntityArea, ColumnControl columnControl, DP_DataRepository data)
        //{

        //    var result = CalculateFormula(editEntityArea, columnControl.Column.CustomFormula, data);


        //    editEntityArea.ShowTypePropertyControlValue(data, columnControl, result.ToString());
        //}

        internal object CalculateState(I_EditEntityArea editEntityArea, EntityStateDTO state, DP_DataRepository data)
        {
            // List<DP_DataRepository> mainItems = new List<DP_DataRepository>();
            // mainItems.Add(data);
            //    List<DP_DataRepository> dataItems = new List<DP_DataRepository>();
            // dataItems.Add(data);
            //if (state.FormulaID != 0)
            //{
            //    GetDataItems(dataItems, editEntityArea, data, state.Formula.FormulaItems);
            //}
            return(AgentUICoreMediator.GetAgentUICoreMediator.StateFunctionManager.CalculateFormula(state.ID, data, AgentUICoreMediator.GetAgentUICoreMediator.GetRequester()));
        }
예제 #4
0
        public static EntityStateEN Convert(EntityStateDTO dto)
        {
            EntityStateEN newinstance = null;

            try
            {
                if (dto != null)
                {
                    newinstance = new EntityStateEN();



                    newinstance.Id = dto.Id;
                    if (dto.VirtualEntity_oid != -1)
                    {
                        MoSIoTGenNHibernate.CAD.MosIoT.IEntityCAD entityCAD = new MoSIoTGenNHibernate.CAD.MosIoT.EntityCAD();

                        newinstance.VirtualEntity = entityCAD.ReadOIDDefault(dto.VirtualEntity_oid);
                    }
                    if (dto.OriginOperations_oid != null)
                    {
                        MoSIoTGenNHibernate.CAD.MosIoT.IEntityOperationCAD entityOperationCAD = new MoSIoTGenNHibernate.CAD.MosIoT.EntityOperationCAD();

                        newinstance.OriginOperations = new System.Collections.Generic.List <MoSIoTGenNHibernate.EN.MosIoT.EntityOperationEN>();
                        foreach (int entry in dto.OriginOperations_oid)
                        {
                            newinstance.OriginOperations.Add(entityOperationCAD.ReadOIDDefault(entry));
                        }
                    }
                    if (dto.TargetOperations_oid != null)
                    {
                        MoSIoTGenNHibernate.CAD.MosIoT.IEntityOperationCAD entityOperationCAD = new MoSIoTGenNHibernate.CAD.MosIoT.EntityOperationCAD();

                        newinstance.TargetOperations = new System.Collections.Generic.List <MoSIoTGenNHibernate.EN.MosIoT.EntityOperationEN>();
                        foreach (int entry in dto.TargetOperations_oid)
                        {
                            newinstance.TargetOperations.Add(entityOperationCAD.ReadOIDDefault(entry));
                        }
                    }
                    newinstance.Type        = dto.Type;
                    newinstance.Name        = dto.Name;
                    newinstance.Description = dto.Description;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(newinstance);
        }
예제 #5
0
 public static EntityState ConvertState(EntityStateDTO state)
 {
     switch (state)
     {
         case EntityStateDTO.Added:
             return EntityState.Added;
         case EntityStateDTO.Modified:
             return EntityState.Modified;
         case EntityStateDTO.Deleted:
             return EntityState.Deleted;
         default:
             return EntityState.Unchanged;
     }
 }
예제 #6
0
        public static EntityState ConvertState(EntityStateDTO state)
        {
            switch (state)
            {
            case EntityStateDTO.Added:
                return(EntityState.Added);

            case EntityStateDTO.Modified:
                return(EntityState.Modified);

            case EntityStateDTO.Deleted:
                return(EntityState.Deleted);

            default:
                return(EntityState.Unchanged);
            }
        }
예제 #7
0
        public frmEntityStates(int entityID, int entityStateID)
        {
            InitializeComponent();
            EntityID      = entityID;
            EntityStateID = entityStateID;


            SetActionActivities();


            cmbConditionOperator.ItemsSource = Enum.GetValues(typeof(AndOREqualType)).Cast <AndOREqualType>();

            if (EntityStateID == 0)
            {
                StateDTO = new EntityStateDTO();
                ShowStateDTO();
            }
            else
            {
                GetEntityState(EntityStateID);
            }
        }
예제 #8
0
        public StateResult GetStateResult(EntityStateDTO state, DP_DataRepository mainDataItem, DR_Requester requester)
        {
            StateResult result             = new StateResult();
            bool        hasAnyOfConditions = false;
            bool        hasAllOfConditions = true;

            foreach (var condition in state.StateConditions)
            {
                var conditionResult = GetConditionResult(condition, mainDataItem, requester);
                if (conditionResult)
                {
                    hasAnyOfConditions = true;
                }
                else
                {
                    hasAllOfConditions = false;
                }
            }
            if (state.ConditionOperator == AndOREqualType.And)
            {
                result.Result = hasAllOfConditions;
            }
            else if (state.ConditionOperator == AndOREqualType.Or)
            {
                result.Result = hasAnyOfConditions;
            }
            else if (state.ConditionOperator == AndOREqualType.NotAnd)
            {
                result.Result = !hasAllOfConditions;
            }
            else if (state.ConditionOperator == AndOREqualType.NotOr)
            {
                result.Result = !hasAnyOfConditions;
            }
            return(result);
        }
예제 #9
0
 private void btnNew_Click(object sender, RoutedEventArgs e)
 {
     StateDTO = new EntityStateDTO();
     ShowStateDTO();
 }
        //public void ClearAndSaveStates(DataItemState item)
        //{
        //    using (var projectContext = new DataAccess.MyProjectEntities())
        //    {
        //        var foundDataItem = GetDataItem(projectContext, item.DataItem);
        //        if (foundDataItem != null)
        //        {
        //            foundDataItem = new DataItem() { TableDrivedEntityID = item.DataItem.TargetEntityID };
        //            var keyColumns = item.DataItem.KeyProperties;
        //            foreach (var keyColumn in keyColumns)
        //                foundDataItem.DataItemKeyColumns.Add(new DataItemKeyColumns() { ColumnID = keyColumn.ColumnID, Value = keyColumn.Value });
        //            projectContext.DataItem.Add(foundDataItem);
        //        }
        //        while (foundDataItem.DataItem_EntityState.Any())
        //            projectContext.DataItem_EntityState.Remove(foundDataItem.DataItem_EntityState.First());
        //        foreach (var state in item.States.Where(x => x.Preserve))
        //            foundDataItem.DataItem_EntityState.Add(new DataItem_EntityState() { TableDrivedEntityStateID = state.ID });
        //        projectContext.SaveChanges();
        //    }
        //}

        public int UpdateEntityStates(EntityStateDTO EntityState)
        {
            using (var projectContext = new DataAccess.MyProjectEntities())
            {
                //if (EntityState.RelationshipTailID != 0)

                //{
                //    var stateTail = projectContext.EntityRelationshipTail.First(x => x.ID == EntityState.RelationshipTailID);
                //    foreach (var actionActivity in EntityState.ActionActivities)
                //    {
                //        var actionActivityEntity = projectContext.UIActionActivity.First(x => x.ID == actionActivity.ID);
                //        if (actionActivityEntity.UIEnablityDetails.Any(x => stateTail.RelationshipPath == x.RelationshipID.ToString() ||
                //             stateTail.RelationshipPath.StartsWith(x.RelationshipID.ToString())))
                //        {
                //            var actionItem = actionActivityEntity.UIEnablityDetails.First(x => stateTail.RelationshipPath == x.RelationshipID.ToString() ||
                //                 stateTail.RelationshipPath.StartsWith(x.RelationshipID.ToString()));
                //            var relationshipAlias = actionItem.Relationship.Alias;
                //            throw new Exception("امکان استفاده از رابطه" + " " + relationshipAlias + " " + "در اقدام" + " "
                //                + actionItem.UIActionActivity.Title + " " + "به علت وجود اشتراک با رشته رابطه وضعیت وجود ندارد");

                //            //زیرا تناقض است. از طرفی رشته رابطه جزو خصوصیات موجودیت برای تعیین وضعیت هست و از طرفی میخواهیم فقط خواندنی و یا مخفی کنیم
                //            //اگر در لود شدن فرمهای ورود اطلاعات فرض کنیم رشته رابطه پرنت و خود موجودیت فرم چایلد باشد منطقی است اما اگر
                //            // فرض کنیم که رشته رابطه چایلد باشد و موجودیت اصلی خود این موجودیات باشد آنوقت برای تغییر رابطه باید به صورت مصنوعی رشته رابطه را تغییر دهیم تا رابطه قابل اصلاح شود
                //            // آنوقت با تغییر رابطه دیگر تغییراتی که در رشته رابطه یا وضعیت داده ایم هیچوقت ثبت نخواهد شد چون ریموو شده اند
                //            // پس بهتر است اشتراکی وجود نداشته باشد و وضعیت آزادانه تغییر کند

                //        }
                //    }
                //}


                foreach (var condition in EntityState.StateConditions)
                {
                    if (condition.RelationshipTailID == 0 && condition.ColumnID != 0)
                    {
                        foreach (var actionActivity in EntityState.ActionActivities)
                        {
                            var actionActivityEntity = projectContext.UIActionActivity.First(x => x.ID == actionActivity.ID);
                            if (actionActivityEntity.UIEnablityDetails.Any(x => x.ColumnID == condition.ColumnID))
                            {
                                var actionItem  = actionActivityEntity.UIEnablityDetails.First(x => x.ColumnID == condition.ColumnID);
                                var columnAlias = actionItem.Column.Alias;
                                throw new Exception("امکان استفاده از ستون" + " " + columnAlias + " " + "در اقدام" + " "
                                                    + actionItem.UIActionActivity.Title + " " + "به علت همسان بودن با ستون تعیین وضعیت وجود ندارد");
                                //ستون تعیین وضعیت نمیتواند خود مخفی یا فقط خواندنی باشد زیرا دیگر نمی تواند مقدار بگیرد
                                // باید دسترسی مخصوص در صورت نیاز برای این ستون تعریف شود
                            }
                        }
                    }
                }
                var dbEntityState = projectContext.TableDrivedEntityState.FirstOrDefault(x => x.ID == EntityState.ID);
                if (dbEntityState == null)
                {
                    dbEntityState = new DataAccess.TableDrivedEntityState();
                }



                //if (EntityState.ActionActivityID != 0)
                //    dbEntityState.ActionActivityID = EntityState.ActionActivityID;
                //else
                //    dbEntityState.ActionActivityID = null;
                dbEntityState.TableDrivedEntityID = EntityState.TableDrivedEntityID;
                dbEntityState.ID = EntityState.ID;
                //   dbEntityState.Preserve = EntityState.Preserve;
                dbEntityState.Title             = EntityState.Title;
                dbEntityState.ConditionOperator = (short)EntityState.ConditionOperator;

                while (dbEntityState.EntityState_UIActionActivity.Any())
                {
                    //dbEntityState.EntityState_ActionActivity.Remove(dbEntityState.EntityState_ActionActivity.First());
                    projectContext.EntityState_UIActionActivity.Remove(dbEntityState.EntityState_UIActionActivity.First());
                }
                foreach (var actionActivity in EntityState.ActionActivities)
                {
                    dbEntityState.EntityState_UIActionActivity.Add(new EntityState_UIActionActivity()
                    {
                        UIActionActivityID = actionActivity.ID
                    });
                }
                List <TableDrivedEntityStateCondition> removeList = new List <TableDrivedEntityStateCondition>();
                foreach (var item in dbEntityState.TableDrivedEntityStateCondition)
                {
                    if (!EntityState.StateConditions.Any(x => x.ID == item.ID))
                    {
                        removeList.Add(item);
                    }
                }
                foreach (var item in removeList)
                {
                    while (item.TableDrivedEntityStateConditionValues.Any())
                    {
                        item.TableDrivedEntityStateConditionValues.Remove(item.TableDrivedEntityStateConditionValues.First());
                    }
                    while (item.TableDrivedEntityStateConditionSecuritySubject.Any())
                    {
                        item.TableDrivedEntityStateConditionSecuritySubject.Remove(item.TableDrivedEntityStateConditionSecuritySubject.First());
                    }
                    projectContext.TableDrivedEntityStateCondition.Remove(item);
                }
                foreach (var condition in EntityState.StateConditions)
                {
                    TableDrivedEntityStateCondition dbCondition = null;
                    if (condition.ID == 0)
                    {
                        dbCondition = new TableDrivedEntityStateCondition();
                        dbEntityState.TableDrivedEntityStateCondition.Add(dbCondition);
                    }
                    else
                    {
                        dbCondition = projectContext.TableDrivedEntityStateCondition.First(x => x.ID == condition.ID);
                    }

                    if (condition.FormulaID != 0)
                    {
                        dbCondition.FormulaID = condition.FormulaID;
                    }
                    else
                    {
                        dbCondition.FormulaID = null;
                    }
                    if (condition.ColumnID != 0)
                    {
                        dbCondition.ColumnID = condition.ColumnID;
                        if (condition.RelationshipTailID == 0)
                        {
                            dbCondition.EntityRelationshipTailID = null;
                        }
                        else
                        {
                            dbCondition.EntityRelationshipTailID = condition.RelationshipTailID;
                        }
                    }
                    else
                    {
                        dbCondition.ColumnID = null;
                        dbCondition.EntityRelationshipTailID = null;
                    }
                    dbCondition.Title                    = condition.Title;
                    dbCondition.ValueOpoerator           = (short)condition.EntityStateOperator;
                    dbCondition.SecuritySubjectInOrNotIn = (short)condition.SecuritySubjectInORNotIn;

                    while (dbCondition.TableDrivedEntityStateConditionValues.Any())
                    {
                        projectContext.TableDrivedEntityStateConditionValues.Remove(dbCondition.TableDrivedEntityStateConditionValues.First());
                    }
                    foreach (var nItem in condition.Values)
                    {
                        dbCondition.TableDrivedEntityStateConditionValues.Add(new TableDrivedEntityStateConditionValues()
                        {
                            Value = nItem.Value, ReservedValue = (short)nItem.SecurityReservedValue
                        });
                    }


                    while (dbCondition.TableDrivedEntityStateConditionSecuritySubject.Any())
                    {
                        projectContext.TableDrivedEntityStateConditionSecuritySubject.Remove(dbCondition.TableDrivedEntityStateConditionSecuritySubject.First());
                    }
                    foreach (var nItem in condition.SecuritySubjects)
                    {
                        dbCondition.TableDrivedEntityStateConditionSecuritySubject.Add(new TableDrivedEntityStateConditionSecuritySubject()
                        {
                            SecuritySubjectID = nItem.SecuritySubjectID
                        });                                                                                                                                                                  //, SecuritySubjectOperator = (short)nItem.SecuritySubjectOperator });
                    }
                }

                if (dbEntityState.ID == 0)
                {
                    projectContext.TableDrivedEntityState.Add(dbEntityState);
                }
                projectContext.SaveChanges();
                return(dbEntityState.ID);
            }
        }
예제 #11
0
        //public StateResult CalculateState(int stateID, DP_DataRepository mainDataItem, DR_Requester requester)
        //{
        //    StateHandler handler = new StateHandler();
        //    return handler.GetStateResult(stateID, mainDataItem,requester);
        //}
        public StateResult CalculateState(EntityStateDTO state, DP_DataRepository mainDataItem, DR_Requester requester)
        {
            StateHandler handler = new StateHandler();

            return(handler.GetStateResult(state, mainDataItem, requester));
        }
		public void ChangeState(AssignableSimpleDTO assignable, EntityStateDTO entityState)
		{
			if (!_connected)
			{
				throw new InvalidOperationException("Not connected");
			}
			try
			{
				_webServices.ChangeState(assignable, entityState);
			}
			catch (Exception ex)
			{
				_env.Trace.WriteLine(ex);
				_env.ShowMessageBox(ex.Message, "Could not change state", MessageBoxButtons.OK, MessageBoxIcon.Error);
				Disconnect();
				return;
			}
			_env.Trace.WriteLine(string.Format("State changed to {0}", entityState.Name));
			Refresh();
		}
			public void ChangeState(AssignableSimpleDTO assignable, EntityStateDTO entityState)
			{
				//
			}
		public ToDoListItemTag(AssignableSimpleDTO assignable, EntityStateDTO entityState)
		{
			_assignable = assignable;
			_entityState = entityState;
		}