public void AddRuleSelector(TreeAuditRuleSelector tars)
        {
            Database.Execute2(
                @"INSERT INTO TreeAuditRuleSelector (
    CruiseID,
    SpeciesCode,
    LiveDead,
    PrimaryProduct,
    TreeAuditRuleID
) VALUES (
    @CruiseID,
    @SpeciesCode,
    @LiveDead,
    @PrimaryProduct,
    @TreeAuditRuleID
);"
                , new
            {
                CruiseID,
                tars.SpeciesCode,
                tars.LiveDead,
                tars.PrimaryProduct,
                tars.TreeAuditRuleID,
            });
        }
 public void DeleteRuleSelector(TreeAuditRuleSelector tars)
 {
     Database.Execute2("DELETE FROM TreeAuditRuleSelector WHERE CruiseID = @CruiseID AND SpeciesCode = @SpeciesCode AND PrimaryProduct = @PrimaryProduct AND LiveDead = @LiveDead;",
                       new
     {
         CruiseID,
         tars.SpeciesCode,
         tars.PrimaryProduct,
         tars.LiveDead,
     });
 }
        public void ReadTreeAuditErrors_With_Two_AuditRules()
        {
            var init = new DatabaseInitializer();

            using var db = init.CreateDatabase();

            var tree = new Tree
            {
                CruiseID        = init.CruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                TreeNumber      = 1,
                CuttingUnitCode = "u1",
                StratumCode     = "st3",
                SampleGroupCode = "sg1",
                SpeciesCode     = "sp1",
                CountOrMeasure  = "M",
                LiveDead        = "L",
            };

            db.Insert(tree);

            var tm = new TreeMeasurment
            {
                TreeID = tree.TreeID,
                DBH    = 101,
            };

            db.Insert(tm);

            var tar = new TreeAuditRule
            {
                CruiseID        = init.CruiseID,
                TreeAuditRuleID = Guid.NewGuid().ToString(),
                Field           = "DBH",
                Max             = 100,
            };

            db.Insert(tar);

            var tars = new TreeAuditRuleSelector
            {
                CruiseID        = init.CruiseID,
                TreeAuditRuleID = tar.TreeAuditRuleID,
                SpeciesCode     = "sp1",
                PrimaryProduct  = "01",
                LiveDead        = "L",
            };

            db.Insert(tars);

            var tfs = new TreeFieldSetup
            {
                CruiseID    = init.CruiseID,
                Field       = "DBH",
                StratumCode = "st3",
            };

            db.Insert(tfs);

            var tar2 = new TreeAuditRule
            {
                CruiseID        = init.CruiseID,
                TreeAuditRuleID = Guid.NewGuid().ToString(),
                Field           = "DBH",
                Max             = 99,
            };

            db.Insert(tar2);

            var tars2 = new TreeAuditRuleSelector
            {
                CruiseID        = init.CruiseID,
                TreeAuditRuleID = tar.TreeAuditRuleID,
                SpeciesCode     = "sp1",
            };

            db.Insert(tars2);

            var taeRecords = db.QueryGeneric("SELECT * FROM TreeAuditError").ToArray();

            taeRecords.Should().HaveCount(1); // not sure how to make TreeAuditErrors return only one error per tree, but its a low impact issue
        }