Example #1
0
        public void Read_With_TDV()
        {
            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 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(tdv.TreeGrade);
            tm_defaults.HiddenPrimary.Should().Be(tdv.HiddenPrimary.ToString());
            tm_defaults.RecoverablePrimary.Should().Be(tdv.Recoverable.ToString());
        }
        public void UpsertTreeMeasurments(TreeMeasurment mes)
        {
            if (mes is null)
            {
                throw new ArgumentNullException(nameof(mes));
            }

            Database.Execute2(
                UPSERT_TREEMEASURMENT_COMMAND,
                new
            {
                mes.TreeID,

                mes.SeenDefectPrimary,
                mes.SeenDefectSecondary,
                mes.RecoverablePrimary,
                mes.HiddenPrimary,
                mes.Grade,

                mes.HeightToFirstLiveLimb,
                mes.PoleLength,
                mes.ClearFace,
                mes.CrownRatio,
                mes.DBH,

                mes.DRC,
                mes.TotalHeight,
                mes.MerchHeightPrimary,
                mes.MerchHeightSecondary,
                mes.FormClass,

                mes.UpperStemDiameter,
                mes.UpperStemHeight,
                mes.DBHDoubleBarkThickness,
                mes.TopDIBPrimary,
                mes.TopDIBSecondary,

                mes.DefectCode,
                mes.DiameterAtDefect,
                mes.VoidPercent,
                mes.Slope,
                mes.Aspect,

                mes.Remarks,
                mes.IsFallBuckScale,
                mes.Initials,
                DeviceID,
            }
                );
        }
Example #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");
        }
        public void MigrateTreeErrors_measureTree()
        {
            var toPath   = GetTempFilePath("MigrateTreeErrors_measureTree.cruise");
            var fromPath = GetTempFilePath("MigrateTreeErrors_measureTree.crz3");


            var init     = new DatabaseInitializer();
            var cruiseID = init.CruiseID;

            using var db = init.CreateDatabaseFile(fromPath);

            var tree = new Tree
            {
                CruiseID        = cruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                CuttingUnitCode = "u1",
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
                TreeNumber      = 1,
                CountOrMeasure  = "M",
            };

            db.Insert(tree);

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

            db.Insert(tm);


            using var toDb = new DAL(toPath, true);


            var downMigrator = new DownMigrator();

            downMigrator.MigrateFromV3ToV2(cruiseID, db, toDb);

            var errorLogs = toDb.From <CruiseDAL.V2.Models.ErrorLog>().Query().ToArray();

            errorLogs.Should().HaveCount(4);
            errorLogs.Should().Contain(x => x.Message == "Species Code Is Missing");
            errorLogs.Should().Contain(x => x.Message == "Live/Dead Value Is Missing");
            errorLogs.Should().Contain(x => x.Message == "Aleast One Height Parameter Must Be Greater Than 0");
            errorLogs.Should().Contain(x => x.Message == "DBH or DRC must be greater than 0");
        }
Example #5
0
        public void MigrateFromV3ToV2_With_FieldDefaults()
        {
            var initializer = new DatabaseInitializer();
            var fromPath    = GetTempFilePath("MigrateFromV3ToV2.crz3");
            var toPath      = GetTempFilePath("MigrateFromV3ToV2.cruise");

            using var fromDb = initializer.CreateDatabaseFile(fromPath);

            var sg = initializer.SampleGroups.First();

            fromDb.Insert(new TreeFieldSetup()
            {
                CruiseID         = initializer.CruiseID,
                SampleGroupCode  = sg.SampleGroupCode,
                StratumCode      = sg.StratumCode,
                Field            = "DBH",
                DefaultValueReal = 12.0,
            });

            fromDb.Insert(new TreeFieldSetup()
            {
                CruiseID         = initializer.CruiseID,
                StratumCode      = sg.StratumCode,
                Field            = "DBH",
                DefaultValueReal = 11.0,
            });

            fromDb.Insert(new TreeFieldSetup()
            {
                CruiseID         = initializer.CruiseID,
                StratumCode      = sg.StratumCode,
                Field            = "DRC",
                DefaultValueReal = 13.0,
            });

            var tree = new Tree()
            {
                CruiseID        = initializer.CruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                TreeNumber      = 101,
                CuttingUnitCode = initializer.Units.First(),
                StratumCode     = sg.StratumCode,
                SampleGroupCode = sg.SampleGroupCode,
            };

            fromDb.Insert(tree);

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

            fromDb.Insert(tm);


            using var toDb = new DAL(toPath, true);

            var downMigrator = new DownMigrator();

            downMigrator.MigrateFromV3ToV2(initializer.CruiseID, fromDb, toDb);

            var treeAgain = toDb.From <V2.Models.Tree>().Where("TreeNumber = 101").Query().Single();

            treeAgain.Should().NotBeNull();
            treeAgain.DBH.Should().Be(12.0);
            treeAgain.DRC.Should().Be(13.0);

            ValidateMigration(fromDb, toDb);
        }
        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
        }