コード例 #1
0
        private bool ConditionSecuritySubjectIsValid(DR_Requester requester, EntityStateConditionDTO condition)
        {
            if (condition.SecuritySubjects.Any())
            {
                bool hasAnyOfSubjects = false;
                foreach (var subject in condition.SecuritySubjects)
                {
                    if (requester.Posts.Any(x => x.CurrentUserID == subject.SecuritySubjectID) ||
                        requester.Posts.Any(x => x.ID == subject.SecuritySubjectID) ||
                        requester.Posts.Any(x => x.OrganizationID == subject.SecuritySubjectID) ||
                        requester.Posts.Any(x => x.OrganizationTypeID == subject.SecuritySubjectID) ||
                        requester.Posts.Any(x => x.OrganizationTypeRoleTypeID == subject.SecuritySubjectID) ||
                        requester.Posts.Any(x => x.RoleTypeID == subject.SecuritySubjectID)
                        )
                    {
                        hasAnyOfSubjects = true;
                    }
                }

                if (condition.SecuritySubjectInORNotIn == InORNotIn.In)
                {
                    return(hasAnyOfSubjects);
                }
                else
                {
                    return(!hasAnyOfSubjects);
                }
            }
            else
            {
                return(true);
            }
        }
コード例 #2
0
        public frmEntityStateCondition(int entityID, EntityStateConditionDTO entityStateConditionDTO)
        {
            InitializeComponent();
            Message  = entityStateConditionDTO;
            EntityID = entityID;
            SetColumns();
            SetRelationshipTails();
            SetFromulas();
            SetSecuritySubjects();

            ControlHelper.GenerateContextMenu(dtgColumnValue);
            ControlHelper.GenerateContextMenu(dtgFormulaValue);
            ControlHelper.GenerateContextMenu(dtgSecuritySubjects);
            lokRelationshipTail.SelectionChanged += LokRelationshipTail_SelectionChanged;
            lokRelationshipTail.EditItemClicked  += LokRelationshipTail_EditItemClicked;
            cmbOperator.ItemsSource      = Enum.GetValues(typeof(Enum_EntityStateOperator)).Cast <Enum_EntityStateOperator>();
            cmbInOrNotIn.ItemsSource     = Enum.GetValues(typeof(InORNotIn)).Cast <InORNotIn>();
            colReservedValue.ItemsSource = Enum.GetValues(typeof(SecurityReservedValue));
            //colHasOrHasNot.ItemsSource = Enum.GetValues(typeof(Enum_SecuritySubjectOperator));

            lokFormula.EditItemEnabled  = true;
            lokFormula.NewItemEnabled   = true;
            lokFormula.EditItemClicked += LokFormula_EditItemClicked;


            ShowMessage();
        }
コード例 #3
0
        public EntityStateConditionDTO ToEntityStateConditionDTO(DR_Requester requester, TableDrivedEntityStateCondition item, bool withDetails)
        {
            var result = new EntityStateConditionDTO();

            result.ID        = item.ID;
            result.FormulaID = item.FormulaID ?? 0;
            if (result.FormulaID != 0 && withDetails)
            {  //??با جزئیات؟؟........................................................................
                var bizFormula = new BizFormula();
                result.Formula = bizFormula.GetFormula(requester, item.FormulaID.Value, withDetails);
            }
            result.ColumnID = item.ColumnID ?? 0;
            if (item.Column != null)
            {
                BizColumn bizColumn = new BizColumn();
                result.Column = bizColumn.ToColumnDTO(item.Column, true);
            }
            result.Title = item.Title;
            result.RelationshipTailID = item.EntityRelationshipTailID ?? 0;
            if (item.EntityRelationshipTail != null)
            {
                BizEntityRelationshipTail bizEntityRelationshipTail = new BizEntityRelationshipTail();
                result.RelationshipTail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(item.EntityRelationshipTail);
            }
            if (item.ValueOpoerator != null)
            {
                result.EntityStateOperator = (Enum_EntityStateOperator)item.ValueOpoerator;
            }

            foreach (var valItem in item.TableDrivedEntityStateConditionValues)
            {
                result.Values.Add(new ModelEntites.EntityStateValueDTO()
                {
                    Value = valItem.Value, SecurityReservedValue = valItem.ReservedValue == null ? SecurityReservedValue.None : (SecurityReservedValue)valItem.ReservedValue
                });
            }

            foreach (var valItem in item.TableDrivedEntityStateConditionSecuritySubject)
            {
                result.SecuritySubjects.Add(new ChildSecuritySubjectDTO {
                    SecuritySubjectID = valItem.SecuritySubjectID
                });                                                                                                        //, SecuritySubjectOperator = (Enum_SecuritySubjectOperator)valItem.SecuritySubjectOperator });
            }
            if (item.SecuritySubjectInOrNotIn == null)
            {
                result.SecuritySubjectInORNotIn = InORNotIn.In;
            }
            else
            {
                result.SecuritySubjectInORNotIn = (InORNotIn)item.SecuritySubjectInOrNotIn;
            }
            return(result);
        }
コード例 #4
0
        private void View_DeleteConditionRequest(object sender, EntityStateConditionDTO e)
        {
            TabItem foundTab = null;

            foreach (TabItem item in tabMain.Items)
            {
                if ((item.Content as frmEntityStateCondition).Message == e)
                {
                    foundTab = item;
                }
            }
            if (foundTab != null)
            {
                tabMain.Items.Remove(foundTab);
            }
        }
コード例 #5
0
        private void AddConditin(EntityStateConditionDTO condition)
        {
            if (string.IsNullOrEmpty(condition.Title))
            {
                condition.Title = "شرط";
            }
            frmEntityStateCondition view = new frmEntityStateCondition(EntityID, condition);

            view.VerticalAlignment = VerticalAlignment.Stretch;
            TabItem tab = new TabItem();

            tab.VerticalAlignment        = VerticalAlignment.Stretch;
            tab.Header                   = condition.Title;
            tab.Content                  = view;
            view.DeleteConditionRequest += View_DeleteConditionRequest;
            tabMain.Items.Add(tab);
            tab.IsSelected = true;
        }
コード例 #6
0
        private bool StateHasValue(DR_Requester requester, EntityStateConditionDTO condition, object columnValue)
        {
            bool hasAnyOfValues = false;

            if (columnValue == null)
            {
                columnValue = "<Null>";
            }
            foreach (var stateValue in condition.Values)
            {
                if (!string.IsNullOrEmpty(stateValue.Value))
                {
                    if (stateValue.Value.ToLower().Equals(columnValue.ToString().ToLower()))
                    {
                        hasAnyOfValues = true;
                    }
                }
                else if (stateValue.SecurityReservedValue != SecurityReservedValue.None)
                {
                    foreach (var post in requester.Posts)
                    {
                        var reservedPostValue = GerReserveValueFromPost(post, stateValue.SecurityReservedValue);
                        if (reservedPostValue.ToLower().Equals(columnValue.ToString().ToLower()))
                        {
                            hasAnyOfValues = true;
                        }
                    }
                }
            }
            if (condition.EntityStateOperator == Enum_EntityStateOperator.Equals)
            {
                return(hasAnyOfValues == true);
            }
            else
            {
                return(hasAnyOfValues == false);
            }
        }
コード例 #7
0
        private void btnAddCondition_Click(object sender, RoutedEventArgs e)
        {
            EntityStateConditionDTO condition = new EntityStateConditionDTO();

            AddConditin(condition);
        }
コード例 #8
0
 private EntityStateConditionDTO GetConditionDTOWithValues(DR_Requester requester, EntityStateConditionDTO conditionDTO)
 {
     if (conditionDTO.Values.Any(x => x.SecurityReservedValue != SecurityReservedValue.None))
     {
         if (conditionDTO.Values.Any(x => x.SecurityReservedValue != SecurityReservedValue.None))
         {
             List <string> addedValues = new List <string>();
             foreach (var value in conditionDTO.Values.Where(x => x.SecurityReservedValue != SecurityReservedValue.None))
             {
                 foreach (var post in requester.Posts)
                 {
                     var exactValue = GerReserveValueFromPost(post, value.SecurityReservedValue);
                     if (!addedValues.Any(x => x == exactValue))
                     {
                         addedValues.Add(exactValue);
                     }
                 }
             }
             foreach (var value in conditionDTO.Values.Where(x => x.SecurityReservedValue != SecurityReservedValue.None).ToList())
             {
                 conditionDTO.Values.Remove(value);
             }
             foreach (var value in addedValues)
             {
                 if (!conditionDTO.Values.Any(x => x.Value == value))
                 {
                     conditionDTO.Values.Add(new EntityStateValueDTO()
                     {
                         Value = value
                     });
                 }
             }
         }
     }
     return(conditionDTO);
 }
コード例 #9
0
 private void btnNew_Click(object sender, RoutedEventArgs e)
 {
     Message = new EntityStateConditionDTO();
     ShowMessage();
 }
コード例 #10
0
        private bool GetConditionResult(EntityStateConditionDTO condition, DP_DataRepository mainDataItem, DR_Requester requester)
        {
            bool result = false;
            bool securitySubjectIsOk = false;

            if (condition.SecuritySubjects.Any())
            {
                bool hasAnyOfSubjects = false;
                foreach (var subject in condition.SecuritySubjects)
                {
                    foreach (var post in requester.Posts)
                    {
                        if (post.CurrentUserID == subject.SecuritySubjectID ||
                            post.ID == subject.SecuritySubjectID ||
                            post.OrganizationID == subject.SecuritySubjectID ||
                            post.OrganizationTypeID == subject.SecuritySubjectID ||
                            post.OrganizationTypeRoleTypeID == subject.SecuritySubjectID ||
                            post.RoleTypeID == subject.SecuritySubjectID
                            )
                        {
                            hasAnyOfSubjects = true;
                        }
                    }
                }

                if (condition.SecuritySubjectInORNotIn == InORNotIn.In)
                {
                    securitySubjectIsOk = hasAnyOfSubjects == true;
                }
                else
                {
                    securitySubjectIsOk = hasAnyOfSubjects == false;
                }
            }
            else
            {
                securitySubjectIsOk = true;
            }

            if (securitySubjectIsOk)
            {
                if (condition.ColumnID != 0)
                {
                    DataitemRelatedColumnValueHandler dataitemRelatedColumnValueHandler = new MyFormulaFunctionStateFunctionLibrary.DataitemRelatedColumnValueHandler();
                    var value = dataitemRelatedColumnValueHandler.GetValueSomeHow(requester, mainDataItem, condition.RelationshipTail, condition.ColumnID);

                    result = StateHasValue(requester, condition, value);
                }
                else if (condition.FormulaID != 0)
                {
                    FormulaFunctionHandler FormulaFunctionHandler = new FormulaFunctionHandler();
                    var value = FormulaFunctionHandler.CalculateFormula(condition.FormulaID, mainDataItem, requester);
                    result = StateHasValue(requester, condition, value.Result);
                }
                else
                {
                    result = securitySubjectIsOk;
                }
            }
            return(result);
        }