public void UpdateStratumCodeCascade() { 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 = "st1", SampleGroupCode = "sg1", }; db.Insert(tree); var tl = new TallyLedger { CruiseID = init.CruiseID, TallyLedgerID = Guid.NewGuid().ToString(), CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", TreeID = tree.TreeID, }; db.Insert(tl); var unitStratum = db.From <CuttingUnit_Stratum>().Where("StratumCode = 'st1'").Query().First(); var stratum = db.From <Stratum>().Where("StratumCode = 'st1'").Query().Single(); stratum.StratumCode = "st101"; db.Update(stratum); var unitStratumAgain = db.From <CuttingUnit_Stratum>().Where("CuttingUnit_Stratum_CN = @p1").Query(unitStratum.CuttingUnit_Stratum_CN).Single(); unitStratumAgain.StratumCode.Should().Be(stratum.StratumCode); var tlAgain = db.From <TallyLedger>().Query().First(); tlAgain.StratumCode.Should().Be(stratum.StratumCode); var treeAgain = db.From <Tree>().Query().First(); treeAgain.StratumCode.Should().Be(stratum.StratumCode); }
public void Update_Tree_Species_Cascades_To_TallyLedger_TallyBySg() { 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 = "st1", SampleGroupCode = "sg1", //SpeciesCode = "sp1", //LiveDead = "L", }; db.Insert(tree); var tl = new TallyLedger { CruiseID = init.CruiseID, TallyLedgerID = Guid.NewGuid().ToString(), CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", //SpeciesCode = "sp1", //LiveDead = "L", TreeID = tree.TreeID, }; db.Insert(tl); tree.SpeciesCode = "sp2"; tree.LiveDead = "D"; db.Update(tree); var tlAgain = db.From <TallyLedger>().Query().First(); tlAgain.SpeciesCode.Should().Be(tree.SpeciesCode); tlAgain.LiveDead.Should().Be(tree.LiveDead); }
public void Sync_TallyLedger_Add() { var fromPath = base.GetTempFilePath(".crz3", "Sync_Unit_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "Sync_Unit_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Design = SyncFlags.Insert, FieldData = SyncFlags.Insert, TreeDataFlags = SyncFlags.Insert, TreeFlags = SyncFlags.Insert, }; var cruiseID = Guid.NewGuid().ToString(); var saleID = Guid.NewGuid().ToString(); using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var newTallyLedger = new TallyLedger() { CruiseID = cruiseID, TallyLedgerID = Guid.NewGuid().ToString(), CuttingUnitCode = Units[0], StratumCode = SampleGroups[0].StratumCode, SampleGroupCode = SampleGroups[0].SampleGroupCode, TreeCount = 1, }; fromDb.Insert(newTallyLedger); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.GetRowCount("TallyLedger", "WHERE TallyLedgerID = @p1", newTallyLedger.TallyLedgerID) .Should().Be(1); }
public void InsertTallyLedger() { string unitCode = UnitStrata[0].CuttingUnitCode; string stratum = UnitStrata[0].StratumCode; string sampleGroup = Subpops[0].SampleGroupCode; string species = Subpops[0].SpeciesCode; string liveDead = Subpops[0].LiveDead; int treeCountDiff = 1; int kpi = 1; using (var database = CreateDatabase()) { var datastore = new TallyDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID)); var tpds = new TallyPopulationDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID); var pop = tpds.GetTallyPopulation(unitCode, stratum, sampleGroup, species, liveDead); pop.Should().NotBeNull(); VerifyTallyPopulation(pop); pop.TreeCount.Should().Be(0); pop.SumKPI.Should().Be(0); var tallyLedger = new TallyLedger(unitCode, pop); tallyLedger.TreeCount = treeCountDiff; tallyLedger.KPI = 1; datastore.InsertTallyLedger(tallyLedger); database.ExecuteScalar <int>("SELECT count(*) FROM TallyLedger;").Should().Be(1); database.ExecuteScalar <int>("SELECT sum(TreeCount) FROM TallyLedger;").Should().Be(treeCountDiff); var popAfter = tpds.GetTallyPopulation(unitCode, stratum, sampleGroup, species, liveDead); popAfter.TreeCount.Should().Be(treeCountDiff); popAfter.SumKPI.Should().Be(kpi); } }
public void InsertTallyLedger(TallyLedger tallyLedger) { if (tallyLedger is null) { throw new ArgumentNullException(nameof(tallyLedger)); } var tallyLedgerID = tallyLedger.TallyLedgerID ?? Guid.NewGuid().ToString(); Database.Execute2( @"INSERT INTO TallyLedger ( TallyLedgerID, CruiseID, CuttingUnitCode, StratumCode, SampleGroupCode, PlotNumber, SpeciesCode, LiveDead, TreeCount, KPI, ThreePRandomValue, TreeID, CreatedBy, Reason, Signature, Remarks, EntryType ) VALUES ( @TallyLedgerID, @CruiseID, @CuttingUnitCode, @StratumCode, @SampleGroupCode, @PlotNumber, @SpeciesCode, @LiveDead, @TreeCount, @KPI, @ThreePRandomValue, @TreeID, @CreatedBy, @Reason, @Signature, @Remarks, @EntryType );", new { CruiseID, TallyLedgerID = tallyLedgerID, tallyLedger.CuttingUnitCode, tallyLedger.StratumCode, tallyLedger.SampleGroupCode, tallyLedger.PlotNumber, tallyLedger.SpeciesCode, tallyLedger.LiveDead, tallyLedger.TreeCount, tallyLedger.KPI, tallyLedger.ThreePRandomValue, tallyLedger.TreeID, tallyLedger.CreatedBy, tallyLedger.Reason, tallyLedger.Signature, tallyLedger.Remarks, tallyLedger.EntryType, }); tallyLedger.TallyLedgerID = tallyLedgerID; }
public void UpdatePlotNumberCascade() { var init = new DatabaseInitializer(); using var db = init.CreateDatabase(); var plot = new Plot { CruiseID = init.CruiseID, PlotID = Guid.NewGuid().ToString(), PlotNumber = 1, CuttingUnitCode = "u1", }; db.Insert(plot); var plotStratum = new Plot_Stratum { CruiseID = init.CruiseID, PlotNumber = 1, StratumCode = "st1", CuttingUnitCode = "u1", }; db.Insert(plotStratum); var tree = new Tree { CruiseID = init.CruiseID, TreeID = Guid.NewGuid().ToString(), TreeNumber = 1, CuttingUnitCode = "u1", PlotNumber = 1, StratumCode = "st1", SampleGroupCode = "sg1", }; db.Insert(tree); var tl = new TallyLedger { CruiseID = init.CruiseID, TallyLedgerID = Guid.NewGuid().ToString(), CuttingUnitCode = "u1", PlotNumber = 1, StratumCode = "st1", SampleGroupCode = "sg1", TreeID = tree.TreeID, }; db.Insert(tl); plot.PlotNumber = 2; db.Update(plot); var tlAgain = db.From <TallyLedger>().Query().First(); tlAgain.PlotNumber.Should().Be(plot.PlotNumber); var treeAgain = db.From <Tree>().Query().First(); treeAgain.PlotNumber.Should().Be(plot.PlotNumber); }
public void CountTree_TreeBased_SingleTallyPop_SingleUnit() { var fromPath = GetTempFilePath(" CountTree_TreeBased_SingleTallyPop_SingleUnit_MigrateFromV3ToV2.crz3"); var toPath = GetTempFilePath(" CountTree_TreeBased_SingleTallyPop_SingleUnit_MigrateFromV3ToV2.cruise"); var init = new DatabaseInitializer() { Units = new[] { "u1" }, Strata = new[] { new Stratum { StratumCode = "st1", Method = "STR" } }, UnitStrata = new[] { new CuttingUnit_Stratum { StratumCode = "st1", CuttingUnitCode = "u1" } }, SampleGroups = new[] { new SampleGroup { StratumCode = "st1", SampleGroupCode = "sg1", SamplingFrequency = 101, TallyBySubPop = false } }, Subpops = new[] { new SubPopulation { StratumCode = "st1", SampleGroupCode = "sg1", SpeciesCode = "sp1", LiveDead = "L" } }, }; var expectedCountTreeCount = 1; using var fromdb = init.CreateDatabaseFile(fromPath); using var todb = new DAL(toPath, true); var unit = "u1"; var stratum = "st1"; var sg = "sg1"; var tallyLedgers = new TallyLedger[] { new TallyLedger { CruiseID = init.CruiseID, CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", TreeCount = 101, SpeciesCode = "sp1", LiveDead = "L" }, }; foreach (var tl in tallyLedgers) { tl.TallyLedgerID = Guid.NewGuid().ToString(); fromdb.Insert(tl); } var tallyPops = fromdb.From <TallyPopulation>().Query().ToArray(); tallyPops.Should().NotBeEmpty(); var downMigrator = new DownMigrator(); downMigrator.MigrateFromV3ToV2(init.CruiseID, fromdb, todb); var tls = fromdb.From <TallyLedger>().Query().ToArray(); tls.Should().HaveCount(1); var countTrees = todb.From <V2.Models.CountTree>().Query().ToArray(); countTrees.Should().HaveCount(expectedCountTreeCount); countTrees.Should().OnlyContain(x => x.TreeCount > 0); }