コード例 #1
0
        string GetMessageTo(UnitOfWork unitOfWork, MessageGeneratorRule rule)
        {
            var criteria = rule.CustomMessage2ObjectCriteria;

            if (!string.IsNullOrEmpty(criteria))
            {
                var to      = "";
                var objects = unitOfWork.GetObjects(unitOfWork.Dictionary.GetClassInfo(rule.BusinessObject4MessageTo), CriteriaOperator.Parse(rule.CustomMessage2ObjectCriteria), null, 100, false, true);

                foreach (var item in objects)
                {
                    to += EvaluetedObject(unitOfWork, item, rule.CustomMessageTo) + "; ";
                }

                return(to);
            }
            return(rule.MessageTo);
        }
コード例 #2
0
        bool CancelNotSentMessage(UnitOfWork unitOfWork, object obj, MessageGeneratorRule rule)
        {
            var cancellationCriteriaResult = ObjectSpace.IsObjectFitForCriteria(obj, CriteriaOperator.Parse(rule.CancellationCriteria));

            if (cancellationCriteriaResult != true)
            {
                return(false);
            }

            var classInfo      = unitOfWork.GetClassInfo(obj);
            var key            = classInfo.KeyProperty.GetValue(obj).ToString();
            var notSentMessage = unitOfWork.Query <DoSoMessageBase>().Where(x => x.ExpiredOn == null && !x.IsSent && !x.IsCanceled && x.ObjectKey == key && x.ObjectTypeName == obj.GetType().FullName);

            foreach (var item in notSentMessage)
            {
                item.IsCanceled    = true;
                item.StatusComment = string.Format("Cancelled From Rule - {0} {1}{2}{3}", rule.ID, DateTime.Now, Environment.NewLine, rule.CancellationComment);
            }

            return(true);
        }