Esempio n. 1
0
        public override void ChartConfigCondition(Sungero.Domain.Client.ExecuteChildCollectionActionArgs e)
        {
            ICondition condition;

            if (_obj.Condition == null)
            {
                condition = Functions.Condition.Remote.CreateCondition();
            }
            else
            {
                condition = _obj.Condition;
            }

            Functions.ApprovalRuleBase.AddDocumentKindToCondition(_obj.ApprovalRuleBase, condition);

            condition.ShowModal();

            // TODO Belyak: баг платформы 32055. Убрать переполучение условия после исправления.
            if (!condition.State.IsInserted)
            {
                condition = Conditions.As(Functions.ConditionBase.Remote.GetCondition(condition.Id));
            }

            if (!condition.State.IsInserted && !Equals(_obj.Condition, condition))
            {
                _obj.Condition = condition;
            }
        }
Esempio n. 2
0
        public override void Created(Sungero.Domain.CreatedEventArgs e)
        {
            base.Created(e);

            if (_obj.State.IsCopied)
            {
                foreach (var conditionsList in _obj.Conditions)
                {
                    var newCondition = Conditions.Copy(Conditions.As(conditionsList.Condition));
                    newCondition.Save();
                    conditionsList.Condition = newCondition;
                }
            }
        }
        /// <summary>
        /// Проверить возможность существования данного маршрута с условиями по адресату.
        /// </summary>
        /// <param name="allConditions">Все условия в данном маршруте.</param>
        /// <param name="condition">Текущее условие.</param>
        /// <returns>Возможность существования данного маршрута.</returns>
        public bool CheckAddresseeConditions(List <Structures.ApprovalRuleBase.RouteStep> allConditions, Structures.ApprovalRuleBase.RouteStep condition)
        {
            var conditionItem = _obj.Conditions.Where(x => x.Number == condition.StepNumber).FirstOrDefault();
            var addressees    = Conditions.As(conditionItem.Condition).Addressees.Select(x => x.Addressee).ToList();

            foreach (var previousCondition in allConditions.TakeWhile(x => !Equals(x, condition)))
            {
                var previoisConditionItem = _obj.Conditions.Where(x => x.Number == previousCondition.StepNumber).FirstOrDefault();
                var previousAddressees    = Conditions.As(previoisConditionItem.Condition).Addressees.Select(x => x.Addressee).ToList();

                var result = CheckConsistencyConditions(addressees, previousAddressees, condition, previousCondition);
                if (result != null)
                {
                    return(result.Value);
                }
            }

            return(true);
        }