public override void Validate(ValidationContext ctx) { base.Validate(ctx); if (!Packages.Any()) { ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Warning, Catalog, this, StringConsts.METABASE_NO_APP_PACKAGES_WARNING.Args(Name))); } if (Packages.Count() != Packages.Distinct().Count()) { ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Error, Catalog, this, StringConsts.METABASE_APP_PACKAGE_REDECLARED_ERROR.Args(Name))); } foreach (var ap in Packages) { if (ap.Name.IsNullOrEmpty()) { ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Error, Catalog, this, StringConsts.METABASE_APP_PACKAGE_BLANK_NAME_ERROR.Args(Name))); continue; } var refed = Metabank.CatalogBin.Packages.Where(pi => Metabank.INVSTRCMP.Equals(pi.Name, ap.Name)).Select(pi => pi.Name).FirstOrDefault(); if (refed == null) { ctx.Output.Add(new MetabaseValidationMsg(MetabaseValidationMessageType.Error, Catalog, this, StringConsts.METABASE_APP_PACKAGE_NOT_FOUND_IN_BIN_CATALOG_ERROR.Args(Name, ap.Name))); } } }