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); } }
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(); }
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); }
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); } }
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; }
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); } }
private void btnAddCondition_Click(object sender, RoutedEventArgs e) { EntityStateConditionDTO condition = new EntityStateConditionDTO(); AddConditin(condition); }
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); }
private void btnNew_Click(object sender, RoutedEventArgs e) { Message = new EntityStateConditionDTO(); ShowMessage(); }
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); }