Exemplo n.º 1
0
        public void UpsertTreeFieldSetup(TreeFieldSetup tfs)
        {
            Database.Execute2(
                @"INSERT INTO TreeFieldSetup (
    CruiseID,
    StratumCode,
    SampleGroupCode,
    Field,
    FieldOrder,
    IsHidden,
    IsLocked,
    DefaultValueInt,
    DefaultValueReal,
    DefaultValueBool,
    DefaultValueText
) VALUES (
    @CruiseID,
    @StratumCode,
    @SampleGroupCode,
    @Field,
    @FieldOrder,
    @IsHidden,
    @IsLocked,
    @DefaultValueInt,
    @DefaultValueReal,
    @DefaultValueBool,
    @DefaultValueText
)
ON CONFLICT (CruiseID, StratumCode, ifnull(SampleGroupCode, ''), Field) DO
UPDATE SET
    FieldOrder = @FieldOrder,
    IsHidden = @IsHidden,
    IsLocked = @IsLocked,
    DefaultValueInt = @DefaultValueInt,
    DefaultValueReal = @DefaultValueReal,
    DefaultValueBool = @DefaultValueBool,
    DefaultValueText = @DefaultValueText
WHERE CruiseID = @CruiseID AND StratumCode = @StratumCode AND ifnull(SampleGroupCode, '') = ifnull(@SampleGroupCode, '') AND Field = @Field;",
                new
            {
                CruiseID,
                tfs.StratumCode,
                tfs.SampleGroupCode,
                tfs.Field.Field,
                tfs.FieldOrder,
                tfs.IsHidden,
                tfs.IsLocked,
                tfs.DefaultValueInt,
                tfs.DefaultValueReal,
                tfs.DefaultValueText,
                tfs.DefaultValueBool
            });
        }
Exemplo n.º 2
0
        public void DeleteTreeFieldSetup(TreeFieldSetup tfs)
        {
            if (tfs is null)
            {
                throw new ArgumentNullException(nameof(tfs));
            }
            if (tfs.Field is null)
            {
                throw new ArgumentNullException(nameof(TreeField.Field));
            }

            Database.Execute("DELETE FROM TreeFieldSetup WHERE CruiseID = @p1 AND StratumCode = @p2 AND ifnull(SampleGroupCode, '') = ifnull(@p3, '') AND Field = @p4;",
                             CruiseID, tfs.StratumCode, tfs.SampleGroupCode, tfs.Field.Field);
        }
Exemplo n.º 3
0
        public void Read_With_FieldSetup()
        {
            var init = new DatabaseInitializer
            {
                TreeDefaults = null,
            };

            using var db = init.CreateDatabase();

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

            db.Insert(tree);

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

            db.Insert(tm);

            var tfs = new TreeFieldSetup
            {
                CruiseID         = init.CruiseID,
                Field            = "DBH",
                StratumCode      = "st1",
                SampleGroupCode  = "sg1",
                DefaultValueReal = 101.3,
            };

            db.Insert(tfs);

            var tm_defaults = db.From <TreeMeasurment_DefaultResolved>().Query().Single();

            tm_defaults.Should().NotBeNull();

            tm_defaults.DBH.Should().Be("101.3");
        }
Exemplo n.º 4
0
        public void Read_With_FieldSetup_and_TreeDefault()
        {
            var init = new DatabaseInitializer
            {
                TreeDefaults = null,
            };

            using var db = init.CreateDatabase();

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

            db.Insert(tree);

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

            db.Insert(tm);

            var tfs = new TreeFieldSetup
            {
                CruiseID         = init.CruiseID,
                Field            = "Grade",
                StratumCode      = "st1",
                SampleGroupCode  = "sg1",
                DefaultValueText = "09",
            };

            db.Insert(tfs);

            var tdv = new AutoFaker <TreeDefaultValue>()
                      .Ignore(x => x.TreeDefaultValue_CN)
                      .Ignore(x => x.CreatedBy)
                      .Ignore(x => x.Created_TS)
                      .Ignore(x => x.ModifiedBy)
                      .Ignore(x => x.Modified_TS)
                      .RuleFor(x => x.CruiseID, y => init.CruiseID)
                      .Generate();

            tdv.CruiseID       = init.CruiseID;
            tdv.SpeciesCode    = "sp1";
            tdv.PrimaryProduct = "01";

            db.Insert(tdv);

            var tm_defaults = db.From <TreeMeasurment_DefaultResolved>().Query().Single();

            tm_defaults.Should().NotBeNull();

            tm_defaults.FormClass.Should().Be(tdv.FormClass.ToString());
            tm_defaults.Grade.Should().Be(tfs.DefaultValueText);
            tm_defaults.HiddenPrimary.Should().Be(tdv.HiddenPrimary.ToString());
            tm_defaults.RecoverablePrimary.Should().Be(tdv.Recoverable.ToString());
        }
        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
        }