[InlineData("st3", "sg1", "sp1", "L", SampleResult.I)] // tally by subpop - insurance
        public void InsertTallyAction(string stratumCode, string sgCode, string species, string liveDead, SampleResult sampleResult)
        {
            var unitCode  = "u1";
            var treeCount = 50;

            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 cuds      = new CuttingUnitDatastore(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));

                var tallyPops = database.QueryGeneric($"Select * from TallyPopulation WHERE StratumCode = '{stratumCode}';")
                                .ToArray();

                var pop = tpds.GetTallyPopulation(unitCode, stratumCode, sgCode, species, liveDead);

                pop.Should().NotBeNull();

                var tallyAction = new TallyAction(unitCode, pop)
                {
                    SampleResult = sampleResult,
                    TreeCount    = treeCount,
                };

                var entry = datastore.InsertTallyAction(tallyAction);

                entry.TallyLedgerID.Should().NotBeEmpty();

                ValidateTallyEntry(entry, sampleResult == SampleResult.M || sampleResult == SampleResult.I);

                var entryAgain = datastore.GetTallyEntry(entry.TallyLedgerID);

                ValidateTallyEntry(entryAgain, sampleResult == SampleResult.M || sampleResult == SampleResult.I);

                //var tree = database.From<Tree>().Where("TreeID = @p1").Query(entry.TreeID).FirstOrDefault();

                if (sampleResult == SampleResult.M || sampleResult == SampleResult.I)
                {
                    var tree = cuds.GetTree(entry.TreeID);

                    tree.Should().NotBeNull();

                    tree.TreeID.Should().Be(entry.TreeID);
                    tree.StratumCode.Should().Be(stratumCode);
                    tree.SampleGroupCode.Should().Be(sgCode);
                    tree.SpeciesCode.Should().Be(pop.SpeciesCode);
                    tree.LiveDead.Should().Be(pop.LiveDead);
                    tree.CountOrMeasure.Should().Be(sampleResult.ToString());
                }

                var tallyPopulate = tpds.GetTallyPopulationsByUnitCode(unitCode).Where(x => (x.SpeciesCode ?? "") == (species ?? "")).Single();

                tallyPopulate.TreeCount.Should().Be(treeCount);
            }
        }
Esempio n. 2
0
        public void GetTallyPopulationsByUnitCode_multiCruise()
        {
            var init1 = new DatastoreInitializer();
            var init2 = new DatastoreInitializer("1");

            var unitCode = init1.Units[0];

            using var db = init1.CreateDatabase();

            init2.InitializeCruise(db);

            var ds = new TallyPopulationDataservice(db, init1.CruiseID, init1.DeviceID);

            var tp = ds.GetTallyPopulationsByUnitCode(unitCode).ToArray();

            tp.Should().HaveCount(4);
        }
        public void DeleteTallyEntry()
        {
            var unitCode      = "u1";
            var stratumCode   = "st3";
            var sgCode        = "sg1";
            var species       = "sp1";
            var liveDead      = "L";
            var tree_guid     = Guid.NewGuid().ToString();
            var tallyLedgerID = Guid.NewGuid().ToString();
            var treeCount     = 1;
            var cruiseID      = CruiseID;

            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 tallyPop = tpds.GetTallyPopulation(unitCode, stratumCode, sgCode, species, liveDead);

                tallyPop.Should().NotBeNull("tallyPop");

                var tallyEntry = new TallyAction(unitCode, tallyPop)
                {
                    TreeCount = treeCount
                };

                var entry = datastore.InsertTallyAction(tallyEntry);

                datastore.DeleteTallyEntry(entry.TallyLedgerID);

                var tallyPopAgain = tpds.GetTallyPopulationsByUnitCode(unitCode)
                                    .Where(x => x.StratumCode == stratumCode &&
                                           x.SampleGroupCode == sgCode &&
                                           x.SpeciesCode == species).Single();

                tallyPopAgain.TreeCount.Should().Be(0, "TreeCount");
                tallyPopAgain.SumKPI.Should().Be(0, "SumKPI");

                database.ExecuteScalar <int>("SELECT count(*) FROM Tree WHERE TreeID = @p1", entry.TreeID).Should().Be(0, "tree should be deleted");
            }
        }
Esempio n. 4
0
        public void GetTallyPopulationsByUnitCode_Test_with_clicker_tally()
        {
            string unitCode    = "u1";
            string stratum     = "st1";
            string sampleGroup = "sg1";

            string[] species  = new string[] { "sp1", "sp2" };
            string   liveDead = "L";

            var tallyBySubpop = false;

            var cruiseID = CruiseID;

            var units  = new[] { unitCode };
            var strata = new[]
            {
                new Stratum()
                {
                    StratumCode = stratum,
                    Method      = CruiseDAL.Schema.CruiseMethods.STR,
                }
            };
            var unit_strata = new[]
            {
                new CuttingUnit_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    StratumCode     = stratum,
                }
            };
            var sampleGroups = new[]
            {
                new SampleGroup()
                {
                    StratumCode        = stratum,
                    SampleGroupCode    = sampleGroup,
                    SamplingFrequency  = 101,
                    TallyBySubPop      = tallyBySubpop,
                    UseExternalSampler = true,
                }
            };
            var subPop = species.Select(x => new SubPopulation()
            {
                StratumCode     = stratum,
                SampleGroupCode = sampleGroup,
                SpeciesCode     = x,
                LiveDead        = liveDead,
            }).ToArray();

            using (var database = new CruiseDatastore_V3())
            {
                InitializeDatabase(database, cruiseID, SaleID, units, strata, unit_strata, sampleGroups, species, null, subPop);

                //database.Execute($"INSERT INTO CuttingUnit (Code) VALUES ('{unitCode}');");

                //database.Execute($"INSERT INTO Stratum (Code) VALUES ('{stratum}');");

                //database.Execute($"INSERT INTO CuttingUnit_Stratum (CuttingUnitCode, StratumCode) VALUES " +
                //    $"('{unitCode}','{stratum}');");

                //database.Execute($"INSERT INTO SampleGroup_V3 (StratumCode, SampleGroupCode, SamplingFrequency, TallyBySubPop, UseExternalSampler) VALUES " +
                //    $"('{stratum}', '{sampleGroup}', 101, {tallyBySubpop}, 1);");

                //foreach (var sp in species)
                //{
                //    database.Execute($"INSERT INTO SpeciesCode (Species) VALUES ('{sp}');");

                //    database.Execute(
                //        "INSERT INTO SubPopulation (" +
                //        "StratumCode, " +
                //        "SampleGroupCode, " +
                //        "Species, " +
                //        "LiveDead)" +
                //        "VALUES " +
                //        $"('{stratum}', '{sampleGroup}', '{sp}', '{liveDead}');");
                //}

                var ds = new TallyPopulationDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID);

                //database.Execute($"INSERT INTO SamplerState (StratumCode, SampleGroupCode, SampleSelectorType) " +
                //    $"SELECT StratumCode, SampleGroupCode, '{CruiseDAL.Schema.CruiseMethods.CLICKER_SAMPLER_TYPE}' AS SampleSelectorType FROM SampleGroup_V3;");

                var results = ds.GetTallyPopulationsByUnitCode(unitCode);
                //results.Should().HaveCount(2);

                foreach (var pop in results)
                {
                    pop.UseExternalSampler.Should().BeTrue();

                    VerifyTallyPopulation(pop);
                }
            }
        }
Esempio n. 5
0
        public void GetTallyPopulationsByUnitCode_with_TallyBySG_Test()
        {
            string unitCode    = "u1";
            string stratum     = "st1";
            string sampleGroup = "sg1";

            string[] species  = new string[] { "sp1", "sp2" };
            string   liveDead = "L";

            var tallyBySubpop = false;
            //var method = CruiseDAL.Schema.CruiseMethods.FIX;

            var cruiseID = CruiseID;

            var units  = new[] { unitCode };
            var strata = new[]
            {
                new Stratum()
                {
                    StratumCode = stratum,
                    Method      = CruiseDAL.Schema.CruiseMethods.STR,
                }
            };
            var unit_strata = new[]
            {
                new CuttingUnit_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    StratumCode     = stratum,
                }
            };
            var sampleGroups = new[]
            {
                new SampleGroup()
                {
                    StratumCode       = stratum,
                    SampleGroupCode   = sampleGroup,
                    SamplingFrequency = 101,
                    TallyBySubPop     = tallyBySubpop,
                }
            };
            var subPop = species.Select(x => new SubPopulation()
            {
                StratumCode     = stratum,
                SampleGroupCode = sampleGroup,
                SpeciesCode     = x,
                LiveDead        = liveDead,
            }).ToArray();

            using (var database = new CruiseDatastore_V3())
            {
                base.InitializeDatabase(database, cruiseID, SaleID, units, strata, unit_strata, sampleGroups, species, null, subPop);

                //database.Execute($"INSERT INTO CuttingUnit (Code) VALUES ('{unitCode}');");

                //database.Execute($"INSERT INTO Stratum (Code) VALUES ('{stratum}');");

                //database.Execute($"INSERT INTO CuttingUnit_Stratum (CuttingUnitCode, StratumCode) VALUES " +
                //    $"('{unitCode}','{stratum}');");

                //database.Execute($"INSERT INTO SampleGroup (StratumCode, SampleGroupCode, SamplingFrequency, TallyBySubPop ) VALUES " +
                //    $"('{stratum}', '{sampleGroup}', 101, {tallyBySubpop});");

                //foreach (var sp in species)
                //{
                //    database.Execute($"INSERT INTO SpeciesCode (Species) VALUES ('{sp}');");

                //    database.Execute(
                //        "INSERT INTO SubPopulation (" +
                //        "StratumCode, " +
                //        "SampleGroupCode, " +
                //        "Species, " +
                //        "LiveDead)" +
                //        "VALUES " +
                //        $"('{stratum}', '{sampleGroup}', '{sp}', '{liveDead}');");
                //}

                var datastore = new TallyPopulationDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID);

                var results = datastore.GetTallyPopulationsByUnitCode(unitCode);
                results.Should().HaveCount(1);

                foreach (var pop in results)
                {
                    VerifyTallyPopulation(pop);
                }
            }
        }
Esempio n. 6
0
        public void GetTallyPopulationsByUnitCode_with_tallybysubpop_Test()
        {
            string unitCode    = "u1";
            string stratum     = "st1";
            string sampleGroup = "sg1";

            string[] species  = new string[] { "sp1", "sp2" };
            string   liveDead = "L";

            var tallyBySubpop = true;
            var method        = CruiseDAL.Schema.CruiseMethods.STR;

            var cruiseID = CruiseID;

            var units  = new[] { unitCode };
            var strata = new[]
            {
                new Stratum()
                {
                    StratumCode = stratum,
                    Method      = method,
                }
            };
            var unit_strata = new[]
            {
                new CuttingUnit_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    StratumCode     = stratum,
                }
            };
            var sampleGroups = new[]
            {
                new SampleGroup()
                {
                    StratumCode       = stratum,
                    SampleGroupCode   = sampleGroup,
                    SamplingFrequency = 101,
                    TallyBySubPop     = tallyBySubpop,
                }
            };
            var subPop = species.Select(x => new SubPopulation()
            {
                StratumCode     = stratum,
                SampleGroupCode = sampleGroup,
                SpeciesCode     = x,
                LiveDead        = liveDead,
            }).ToArray();

            using (var database = new CruiseDatastore_V3())
            {
                base.InitializeDatabase(database, cruiseID, SaleID, units, strata, unit_strata, sampleGroups, species, null, subPop);

                var datastore = new TallyPopulationDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID);

                var results = datastore.GetTallyPopulationsByUnitCode(unitCode);
                results.Should().HaveCount(species.Count());

                foreach (var pop in results)
                {
                    VerifyTallyPopulation(pop);
                }
            }
        }