コード例 #1
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0)
            {
                return;
            }

            foreach (ExtendedDataEntity item in dataEntities)
            {
                DynamicObject requestDynamic       = item.DataEntity;
                bool          isCreate             = Convert.ToBoolean(requestDynamic["FIsCreateApply"]);       //是否生成佣金费用申请单
                string        costReqBillNo        = Convert.ToString(requestDynamic["FCostApplyNo"]);          //佣金费用申请单单号
                bool          ISCREATEOTHERAP      = Convert.ToBoolean(requestDynamic["FISCREATEOTHERAP"]);     //是否生成其他应付单
                string        OTHERAPNO            = Convert.ToString(requestDynamic["FOTHERAPNO"]);            //其他应付单号
                bool          ISCREATEBOUNS        = Convert.ToBoolean(requestDynamic["FISCREATEBOUNS"]);       //是否生成提点申请单
                string        BOUNSAPPLYBILLNO     = Convert.ToString(requestDynamic["FBOUNSAPPLYBILLNO"]);     //提点申请单号
                bool          ISCREATELOGISTICS    = Convert.ToBoolean(requestDynamic["FISCREATELOGISTICS"]);   //是否生成管销申请单
                string        LOGISTICSAPPLYBILLNO = Convert.ToString(requestDynamic["FLOGISTICSAPPLYBILLNO"]); //管销申请单号
                string        billNo = Convert.ToString(requestDynamic["BillNo"]);
                if (isCreate || ISCREATEOTHERAP || ISCREATEBOUNS || ISCREATELOGISTICS)
                {
                    string msg     = string.Format("单据:{0}配送出库单,已生成下游单据,不允许反审核,具体信息见单据资金池页签", billNo);
                    var    errInfo = new ValidationErrorInfo(
                        item.BillNo,
                        item.DataEntity["Id"].ToString(),
                        item.DataEntityIndex,
                        item.RowIndex,
                        "SALOUTValid019",
                        msg,
                        " ",
                        Kingdee.BOS.Core.Validation.ErrorLevel.Error);
                    validateContext.AddError(item.DataEntity, errInfo);
                }
            }
        }
コード例 #2
0
ファイル: ValidateEmpty.cs プロジェクト: guangxb/learn
        public override bool Validate(ValidateContext context)
        {
            BOMStruct bOMStruct = context.ValidateList as BOMStruct;

            if (bOMStruct != null)
            {
                this.SupportMultiConfig = context.ExtendProperty.GetValue(_.MultiConfiguration, false);

                foreach (DocStruct doc in bOMStruct.BOMView.Cast <DocView>().Where(p => !((DocStruct)p).STD_IsStandardParts))
                {
                    IList     dbRelation = this.dvManager.SearchObjectRelationByParent(doc.RealityVerId);
                    ArrayList arrayList  = new ArrayList(5);
                    IEnumerable <ChildStruct> children =
                        from p in doc.DataView.ChildRelation
                        where p.ChildNode != null && p.ParentNode != null
                        select p;
                    if (!this.ValidateRelation(dbRelation, (ObjectRelation DBR) => this.ObjectRelationExists(DBR, doc, children), doc, arrayList))
                    {
                        return(false);
                    }
                    if (!BOMHelp.IsNullOrEmpty(arrayList))
                    {
                        BOMHelp.Add <string, ArrayList>(this.dicDeleteSTDRelation, doc.RealityVerId, arrayList, (ArrayList il) => true);
                    }
                }
            }
            return(true);
        }
コード例 #3
0
 public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
 {
     foreach (ExtendedDataEntity entity in dataEntities)
     {
         if ((Convert.ToString(entity["BUDGETCALENDARTYPE"]) == "1") && !(entity["ACID"] is DynamicObject))
         {
             validateContext.AddError(entity, new ValidationErrorInfo("ACID", "", 0, 0, Convert.ToString(entity["ID"]), ResManager.LoadKDString("日历类型选择会计日历时,会计日历字段必录。", "0032056000017550", SubSystemType.FIN, new object[0]), ResManager.LoadKDString("生成预算期间", "0032056000017551", SubSystemType.FIN, new object[0]), ErrorLevel.Error));
         }
         bool           flag = false;
         IList <string> list = new List <string> {
             "YEAR", "HALFOFYEAR", "SEASON", "MONTH", "TENDAYS", "WEEKS", "DAYS"
         };
         foreach (string str2 in list)
         {
             if (Convert.ToBoolean(entity[str2]))
             {
                 flag = true;
                 break;
             }
         }
         if (!flag)
         {
             validateContext.AddError(entity, new ValidationErrorInfo("ACID", "", 0, 0, Convert.ToString(entity["ID"]), ResManager.LoadKDString("生成预算期间,应当选择至少一个周期类型。", "0032056000017552", SubSystemType.FIN, new object[0]), ResManager.LoadKDString("生成预算期间", "0032056000017551", SubSystemType.FIN, new object[0]), ErrorLevel.Error));
         }
     }
 }
コード例 #4
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0)
            {
                return;
            }

            foreach (ExtendedDataEntity item in dataEntities)
            {
                DynamicObject           requestDynamic = item.DataEntity;
                bool                    isCreate       = Convert.ToBoolean(requestDynamic["FIsCreateApply"]);                //是否生成费用申请单
                string                  billNo         = Convert.ToString(requestDynamic["BillNo"]);                         //收款单单号
                string                  costReqBillNo  = Convert.ToString(requestDynamic["FCostApplyNo"]);                   //费用申请单单号
                DynamicObjectCollection Entry          = requestDynamic["RECEIVEBILLENTRY"] as DynamicObjectCollection;
                string                  PurPoseNum     = Convert.ToString(((DynamicObject)Entry[0]["PURPOSEID"])["Number"]); //门店加盟费:005
                if (PurPoseNum.Equals("005") && isCreate)
                {
                    string msg     = string.Format("单据:{0}收付款用途包含门店加盟费,已生成费用申请单:{1},不允许反审核", billNo, costReqBillNo);
                    var    errInfo = new ValidationErrorInfo(
                        item.BillNo,
                        item.DataEntity["Id"].ToString(),
                        item.DataEntityIndex,
                        item.RowIndex,
                        "ARValid019",
                        msg,
                        " ",
                        Kingdee.BOS.Core.Validation.ErrorLevel.Error);
                    validateContext.AddError(item.DataEntity, errInfo);
                }
            }
        }
コード例 #5
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0)
            {
                return;
            }
            foreach (ExtendedDataEntity item in dataEntities)
            {
                DynamicObject requestDynamic = item.DataEntity;
                string        reason         = Convert.ToString(requestDynamic["FWinReason"]);

                if (reason.Equals(" "))
                {
                    string msg     = string.Format("商机编号{0}输赢原因没填", requestDynamic["FBillNo"]);
                    var    errInfo = new ValidationErrorInfo(
                        item.BillNo,
                        item.DataEntity["Id"].ToString(),
                        item.DataEntityIndex,
                        item.RowIndex,
                        "ARValid019",
                        msg,
                        " ",
                        Kingdee.BOS.Core.Validation.ErrorLevel.Error);
                    validateContext.AddError(item.DataEntity, errInfo);
                }
            }
        }
コード例 #6
0
 public bool CanExecute(IValidateRule rule, ValidateContext context)
 {
     return(string.IsNullOrEmpty(rule.RuleSet) ||
            context.RuleSetList.IsEmptyOrNull()
             ? true
             : context.RuleSetList.Contains(rule.RuleSet));
 }
コード例 #7
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            if (dataEntities == null || dataEntities.Length <= 0)
            {
                return;
            }

            foreach (var et in dataEntities)
            {
                var dyEntrys = et.DataEntity["POOrderEntry"] as DynamicObjectCollection;
                if (dyEntrys != null)
                {
                    var count = 0;
                    foreach (var dy in dyEntrys)
                    {
                        count += Convert.ToInt32(dy["Qty"]);
                    }
                    if (count > 10)
                    {
                        validateContext.AddError(et, new ValidationErrorInfo(
                                                     "",
                                                     Convert.ToString(et.DataEntity[0]),
                                                     et.DataEntityIndex,
                                                     et.RowIndex,
                                                     "E1",
                                                     string.Format("单据{0}数量超额,总数量不能超过10个,当前物料总数量为:{1}", et.BillNo, count),
                                                     "数量超额检查"));
                    }
                }
            }
        }
コード例 #8
0
 public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
 {
     if (dataEntities.IsNullOrEmpty() || dataEntities.Length == 0)
     {
         return;
     }
     foreach (ExtendedDataEntity item in dataEntities)
     {
         DynamicObject requestDynamic = item.DataEntity;
         if (Convert.ToInt32(requestDynamic["F_PAEZ_SFYQZF"]) == 0)
         {
             string msg     = string.Format("单据:{0},未启用银企支付参数,不可通过银企进行付款", requestDynamic["BillNo"]);
             var    errInfo = new ValidationErrorInfo(
                 item.BillNo,
                 item.DataEntity["Id"].ToString(),
                 item.DataEntityIndex,
                 item.RowIndex,
                 "Valid019",
                 msg,
                 " ",
                 Kingdee.BOS.Core.Validation.ErrorLevel.Error);
             validateContext.AddError(item.DataEntity, errInfo);
         }
     }
 }
コード例 #9
0
 public override void InitializeConfiguration(ValidateContext validateContext, Context ctx)
 {
     base.InitializeConfiguration(validateContext, ctx);
     if (validateContext.BusinessInfo != null)
     {
         EntityKey = validateContext.BusinessInfo.GetEntity(0).Key;
     }
 }
コード例 #10
0
ファイル: CommonValidate.cs プロジェクト: hypnosis01/shudev
 public static void AddMsg(ValidateContext validateContext, ExtendedDataEntity entity, string title, string msg, string displayToFieldKey = "", ErrorLevel errorLevel = 2)
 {
     if (displayToFieldKey.IsNullOrEmptyOrWhiteSpace())
     {
         displayToFieldKey = validateContext.BusinessInfo.GetBillNoField().Key;
     }
     AddMsg(validateContext, entity, displayToFieldKey, entity["Id"].ToString(), title, msg, errorLevel);
 }
コード例 #11
0
 public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
 {
     if (Result != null && !Result.Success && !string.IsNullOrEmpty(Result.Message))
     {
         ValidationErrorInfo info = new ValidationErrorInfo("FBillNo", Convert.ToString(new Guid()), 0, 0, FormId, Result.Message, "");
         validateContext.AddError(new Guid(), info);
     }
 }
コード例 #12
0
        public void ModelValidation()
        {
            var result = ValidateContext.Validate <AppDbContext>();

            foreach (var test in result)
            {
                Assert.True(test.WasSuccessful, $"{test.Area}: {test.Message}");
            }
        }
コード例 #13
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            ReportSchemeService service = new ReportSchemeService();

            foreach (ExtendedDataEntity entity in dataEntities)
            {
                this.DeleteValidator(ctx, validateContext, entity, service);
            }
        }
コード例 #14
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            BudgetFormulaService service = new BudgetFormulaService();

            foreach (ExtendedDataEntity entity in dataEntities)
            {
                this.CheckFormula(ctx, validateContext, entity, service);
            }
        }
コード例 #15
0
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx)
        {
            if (dataEntities == null || dataEntities.Length == 0)
            {
                return;
            }

            List <long> dictErrMaterialId = new List <long>();

            //取所有物料
            List <long> listMaterialId = new List <long>();

            foreach (ExtendedDataEntity entityObj in dataEntities)
            {
                DynamicObjectCollection collection = (DynamicObjectCollection)entityObj["Entity"];

                //取酶活量小于等于于零的
                var checkRows = collection.Where(f => Convert.ToDecimal(f["FJNUnitEnzymes"]) <= 0).ToList();
                if (checkRows == null || checkRows.Count() <= 0)
                {
                    continue;
                }

                foreach (DynamicObject rowObj in checkRows)
                {
                    listMaterialId.Add((long)rowObj["MaterialId_Id"]);
                }
            }
            if (listMaterialId.Count > 0)
            {
                string   sql   = "   select a.FMATERIALID from T_BD_MATERIAL a where exists (select 1 from TABLE(fn_StrSplit(@FMATERIALID, ',',1)) t where t.FID=a. FMATERIALID  and a.FISMEASURE='1' )  ";
                SqlParam param = new SqlParam("@FMATERIALID", KDDbType.udt_inttable, listMaterialId.Distinct().ToArray());
                using (IDataReader dr = DBUtils.ExecuteReader(this.Context, sql, param))
                {
                    while (dr.Read())
                    {
                        if (dr != null)
                        {
                            dictErrMaterialId.Add(Convert.ToInt64(dr["FMATERIALID"]));
                        }
                    }
                }
            }
            foreach (ExtendedDataEntity entityObj in dataEntities)
            {
                DynamicObjectCollection collection = (DynamicObjectCollection)entityObj["Entity"];
                foreach (DynamicObject rowObj in collection)
                {
                    if (dictErrMaterialId.Contains((long)rowObj["MaterialId_Id"]))
                    {
                        ValidationErrorInfo errinfo = new ValidationErrorInfo("FMATERIALID", Convert.ToString(entityObj.DataEntity["Id"]),
                                                                              entityObj.DataEntityIndex, Convert.ToInt32(rowObj["Id"]), "SubmitValidator", "第" + Convert.ToString(rowObj["Seq"]) + "行启用双计量,单位酶活必须大于0", "校验失败", ErrorLevel.Error);
                        validateContext.AddError(entityObj, errinfo);
                    }
                }
            }
        }
コード例 #16
0
 public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
 {
     foreach (ExtendedDataEntity entity in dataEntities)
     {
         if (!ServiceFactory.GetService <IReportSchemeService>(base.Context).CheckSampleDistribute(base.Context, entity["Id"].ToString()))
         {
             validateContext.AddError(entity, new ValidationErrorInfo("FNumber", "FRptID", entity.DataEntityIndex, 0, Convert.ToString(entity["ID"]), "一个模板样式方案只能在一个组织/方案下,存在一次", "预算模版反禁用", ErrorLevel.Error));
         }
     }
 }
コード例 #17
0
        private void CheckFormula(Context ctx, ValidateContext validateContext, ExtendedDataEntity entity, BudgetFormulaService service)
        {
            string formula = Convert.ToString(entity["Express"]);

            if (!service.ValidityFormula(formula))
            {
                string title = ResManager.LoadKDString("合法性校验", "003286000011212", SubSystemType.FIN, new object[0]);
                string msg   = ResManager.LoadKDString("公式设置不正确,请重新设置!", "003286000011305", SubSystemType.FIN, new object[0]);
                CommonValidate.AddMsg(validateContext, entity, title, msg, "", ErrorLevel.Error);
            }
        }
コード例 #18
0
        public async void Test_Validator_Validate()
        {
            var v    = new Validator(_Validation);
            var rule = new ValidateRule(_Validation)
            {
                ValidateAsyncFunc = (c, name, error) =>
                {
                    var f = new ValidateFailure()
                    {
                        Name  = name,
                        Error = error,
                        Value = c
                    };
                    return(Task.FromResult <IValidateResult>(new ValidateResult(new List <ValidateFailure>()
                    {
                        f
                    })));
                }
            };

            var context = new ValidateContext()
            {
                RuleSelector = new RuleSelector()
            };
            var result = await v.ValidateAsync(context);

            Assert.NotNull(result);
            Assert.True(result.IsValid);
            Assert.NotNull(result.Failures);
            Assert.Equal(0, result.Failures.Count);

            v.SetRules(new List <ValidateRule>()
            {
                rule
            });
            result = await v.ValidateAsync(context);

            Assert.NotNull(result);
            Assert.False(result.IsValid);
            Assert.NotNull(result.Failures);
            Assert.Equal(1, result.Failures.Count);

            rule.ValidateAsyncFunc = (c, name, error) =>
            {
                return(Task.FromResult <IValidateResult>(new ValidateResult()));
            };

            result = await v.ValidateAsync(context);

            Assert.NotNull(result);
            Assert.True(result.IsValid);
            Assert.NotNull(result.Failures);
            Assert.Equal(0, result.Failures.Count);
        }
コード例 #19
0
 public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
 {
     foreach (ExtendedDataEntity entity in dataEntities)
     {
         DynamicObjectCollection objects = entity["BM_Sheet"] as DynamicObjectCollection;
         if ((objects == null) || (objects.Count <= 0))
         {
             validateContext.AddError(entity, new ValidationErrorInfo("FNumber", "FRptID", entity.DataEntityIndex, 0, Convert.ToString(entity["ID"]), string.Format(ResManager.LoadKDString("预算模板 {0} 未编辑,不允许提交!", "0032056000021823", SubSystemType.FIN, new object[0]), entity["Name"].ToString()), string.Format(ResManager.LoadKDString("预算模板 {0} 未编辑,不允许提交!", "0032056000021823", SubSystemType.FIN, new object[0]), entity["Name"].ToString()), ErrorLevel.Error));
         }
     }
 }
コード例 #20
0
            /// <summary>
            /// 客户管理员
            /// </summary>
            /// <param name="dataEntity"></param>
            /// <param name="validateContext"></param>
            /// <param name="ctx"></param>
            /// <param name="FID"></param>
            private void Act_CtrlCustAdmin(ExtendedDataEntity dataEntity, ValidateContext validateContext, Context ctx, string FID)
            {
                string FCustId = dataEntity["FCustName"] == null ? "0" : (dataEntity["FCustName"] as DynamicObject)["Id"].ToString();

                if (FCustId == "0")
                {
                    ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo(
                        string.Empty,
                        FID,
                        dataEntity.DataEntityIndex,
                        dataEntity.RowIndex,
                        FID,
                        "客户不能为空!",
                        string.Empty);
                    validateContext.AddError(null, ValidationErrorInfo);
                }
                string sql  = string.Format("SELECT FISTRADE FROM T_BD_CUSTOMER WHERE FCUSTID='{0}'", FCustId);
                var    objs = DBUtils.ExecuteDynamicObject(ctx, sql);

                if (objs.Count > 0)
                {
                    string FISTRADE = objs[0]["FISTRADE"].ToString();
                    if (FISTRADE == "0" || FISTRADE == "")
                    {
                        ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo(
                            string.Empty,
                            FID,
                            dataEntity.DataEntityIndex,
                            dataEntity.RowIndex,
                            FID,
                            "当前客户为非交易客户,请转为交易客户后再进行提交!",
                            string.Empty);
                        validateContext.AddError(null, ValidationErrorInfo);
                    }
                    else
                    {
                        string FCustName = dataEntity["FCustName"] == null ? "" : (dataEntity["FCustName"] as DynamicObject)["Name"].ToString();
                        sql  = "SELECT FCUSTID FROM T_BD_CUSTOMER_L WHERE FNAME='" + FCustName + "' AND FLOCALEID='2052'";
                        objs = DBUtils.ExecuteDynamicObject(ctx, sql);
                        if (objs.Count < 1)
                        {
                            ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo(
                                string.Empty,
                                FID,
                                dataEntity.DataEntityIndex,
                                dataEntity.RowIndex,
                                FID,
                                "当前客户还未进行分配,请分配到相应组织后再进行提交!",
                                string.Empty);
                            validateContext.AddError(null, ValidationErrorInfo);
                        }
                    }
                }
            }
コード例 #21
0
        private void DeleteValidator(Context ctx, ValidateContext validateContext, ExtendedDataEntity entity, ReportSchemeService service)
        {
            long reportSchemeId     = Convert.ToInt64(entity["Id"]);
            bool flag               = service.IsReportSchemeUsed(ctx, reportSchemeId);
            bool ctrlRuleBySchemeId = service.GetCtrlRuleBySchemeId(ctx, reportSchemeId);

            if (flag || ctrlRuleBySchemeId)
            {
                string.Format("模板样式方案 {0} 已经被引用,不允许删除!", entity["Name"]);
                validateContext.AddError(entity, new ValidationErrorInfo("Name", "Id", entity.DataEntityIndex, 0, Convert.ToString(entity["Id"]), "该模板样式方案已经被其他单据引用,不能删除!", "删除:", ErrorLevel.Error));
            }
        }
コード例 #22
0
        public override void Validate(BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, BOS.Context ctx)
        {
            Dictionary <string, decimal> dic = new Dictionary <string, decimal>();

            foreach (var row in dataEntities)
            {
                DynamicObject material       = row["MaterialID"] as DynamicObject;
                decimal       qty            = Convert.ToDecimal(row["Qty"]);
                decimal       maxQty         = Convert.ToDecimal(material["F_PAEZ_maxSaleQty"]);
                Boolean       isLimitSaleQty = Convert.ToBoolean(material["F_PAEZ_isLimitSaleQty"]);
                DateTime      startDate      = Convert.ToDateTime(material["F_PAEZ_startDate"]);
                int           seq            = Convert.ToInt32(row["Seq"]);
                if (null == material || !isLimitSaleQty || startDate > DateTime.Now || Convert.ToString(startDate) == "0001-01-01 00:00:00")
                {
                    continue;
                }
                //用字典记录下上面物料的数量   最大销量是这个单据上所有数量 + 其它已经审核 + 其它审核中 的数量
                string number = material["Number"].ToString();
                if (dic.ContainsKey(number))
                {
                    decimal qty1 = dic[number];
                    dic.Remove(number);
                    dic.Add(number, qty1 + qty);
                }
                else
                {
                    dic.Add(number, qty);
                }

                string sql = string.Format(@"SELECT sum(b.FQTY) qty FROM T_SAL_ORDER a inner join T_SAL_ORDERENTRY b  on a.fid =b.fid  WHERE b.FMATERIALID ='{0}' AND a.FDOCUMENTSTATUS in ('B','C') and a.FDATE>='{1}'", material["Id"], startDate.Date);
                DynamicObjectCollection saleOrderCol = DBUtils.ExecuteDynamicObject(this.Context, sql);
                if (saleOrderCol.Count > 0)
                {
                    qty = dic[number] + Convert.ToDecimal(saleOrderCol[0]["qty"]);
                }
                if (qty > maxQty)
                {
                    ValidationErrorInfo errinfo = new ValidationErrorInfo(
                        "FSeq", //单据体序号标识
                        Convert.ToString(row.DataEntity["Id"]),
                        row.DataEntityIndex,
                        Convert.ToInt32(row["Id"]),
                        "SubmitValidator",                                   //
                        "序号为" + seq + "这行数量大于此物料的最大销量,不允许提交当前销售订单!请更换其他产品.", //提示信息内容
                        "校验失败",                                              //提示信息标题
                        ErrorLevel.Error);

                    //添加错误信息到validateContext中
                    validateContext.AddError(row, errinfo);
                }
            }
        }
コード例 #23
0
        public async Task <IValidateResult> ValidateAsyncByFunc(ValidateContext context)
        {
            IValidateResult result = await ValidateAsyncFunc(context, ValueName, Error);

            if (NextRuleList.IsEmptyOrNull() || (!result.IsValid && context.Option != ValidateOption.Continue))
            {
                return(result);
            }

            ValidateNextRuleList(context, result);

            return(result);
        }
コード例 #24
0
        private async void ValidateNextRule(ValidateContext context, IValidateResult result, int index, IValidateRule rule)
        {
            var nextResult = await rule.ValidateAsync(context);

            if (!nextResult.IsValid)
            {
                foreach (var failure in nextResult.Failures)
                {
                    failure.Name = string.Format(string.IsNullOrEmpty(failure.Name) ? "{0}[{1}]{2}" : "{0}[{1}].{2}", ValueName, index, failure.Name);
                }
            }
            result.Merge(nextResult.Failures);
        }
コード例 #25
0
ファイル: ValidateEmpty.cs プロジェクト: guangxb/learn
 public override bool Validate(ValidateContext context)
 {
     //var doc = context.ValidateObject as DocStruct;
     //if (doc != null)
     //{
     //    if (DateTime.Now >= GUOQI)
     //    {
     //        doc.SetDocStateL(false, "red", "程序已经过期,请联系实施人员!");
     //        return false;
     //    }
     //}
     return(true);
 }
コード例 #26
0
 private void ValidateElement(ValidateContext context, IValidateResult result, int index)
 {
     foreach (var rule in NextRuleList)
     {
         if (result.IsValid || context.Option == ValidateOption.Continue)
         {
             ValidateNextRule(context, result, index, rule);
         }
         else
         {
             break;
         }
     }
 }
コード例 #27
0
        public void Test_RuleSelector()
        {
            var rule     = new TestValidateRule();
            var context  = new ValidateContext();
            var selector = new RuleSelector();

            m_Data.ForEach(i =>
            {
                rule.RuleSet        = i.Item1;
                context.RuleSetList = i.Item2;

                Assert.Equal(i.Item3, selector.CanExecute(rule, context));
            });
        }
コード例 #28
0
ファイル: ValidateEmpty.cs プロジェクト: guangxb/learn
        public override bool Validate(ValidateContext context)
        {
            DocStruct docStruct = context.ValidateObject as DocStruct;
            BOMStruct bOMStruct = context.ValidateList as BOMStruct;

            if (docStruct != null && bOMStruct != null)
            {
                List <string> list = new List <string>();
                if (docStruct.IsConfigPart && !docStruct.ContainsKey(_.DELETE_CONFIG) &&
                    ValidateCreoConfig.IsZuBiao(docStruct) &&//不是族表实例的时候。判断不了实例的添加与删除
                    !comp_arr.Contains(docStruct.FileName))    //每一个文件只比较一次
                {
                    comp_arr.Add(docStruct.FileName);
                    var Configs = docStruct.GetString(ZuBiaoNames).Trim().Split(';');
                    Configs = Configs.Concat(new string[] { GetFileWithoutExt(docStruct.FileName) }).ToArray();

                    foreach (DocConfig cfg in
                             from p in this.docconfigManager.GetStandardPartsConfigByDVerId(docStruct.RealityVerId)
                             where !string.IsNullOrEmpty(p.ConfigName)
                             select p)
                    {
                        if (!Configs.Any((string p) => BOMHelp.IsEquals(p, cfg.ConfigName, true)))
                        {
                            if (docStruct.IsBorrow || BOMHelp.Contains(docStruct.OperateType, EntityOperateType.NotCheckOut))
                            {
                                string msg = string.Format("{0}:不允许修改文档族表实例", docStruct.IsBorrow ? "借用" : "未检出");
                                this.DealDocStruct(docStruct, delegate(DocStruct p)
                                {
                                    p.SetDocStateL(false, "red", msg);
                                });
                                return(false);
                            }
                            if (!list.Contains(cfg.ConfigID))
                            {
                                list.Add(cfg.ConfigID);
                            }
                        }
                    }
                    if (list.Count > 0)
                    {
                        docStruct.WriteValue(_.DELETE_CONFIG, string.Join(",", list.ToArray()));
                    }
                }
                if (context.CurIndex == bOMStruct.Count && !this.ValidateConfigUse(bOMStruct))
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #29
0
ファイル: ValidateEmpty.cs プロジェクト: guangxb/learn
        public override bool Validate(ValidateContext context)
        {
            var doc = context.ValidateObject as DocStruct;

            if (doc != null)
            {
                var doccopy = BOMHelp.GetOValueFromDictionary(context.CurScopeProperty, _.CURVALIDATEDOCCOPY) as DocumentCopy;
                if (doccopy != null)
                {
                    doc.WriteValue("__FileMD5__DB", doccopy.FileMD5);
                }
            }
            return(true);
        }
コード例 #30
0
        public override Task <IValidateResult> ValidateAsync(ValidateContext context)
        {
            ParamHelper.CheckParamNull(context, "context", "Can't be null");
            IValidateResult result = Validation.Provider.GetService <IValidateResult>();
            var             list   = context.ValidateObject as IEnumerable;

            if (Condition == null || Condition(context))
            {
                if (list != null)
                {
                    ValidateElementList(context, result, list);
                }
            }
            return(Task.FromResult(result));
        }