public void GetPlotStrataProxies(string method)
        {
            var units          = Units;
            var unit           = units[0];
            var newStratumCode = "01";

            using (var database = new CruiseDatastore_V3())
            {
                var saleID   = SaleID;
                var cruiseID = CruiseID;

                var datastore = new CuttingUnitDatastore(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));
                InitializeDatabase(database, cruiseID, saleID, units, null, null, null, null, null, null);

                datastore.GetPlotStrataProxies(unit).Should().HaveCount(0);

                var stratumID = Guid.NewGuid().ToString();
                database.Execute($"INSERT INTO Stratum (CruiseID, StratumID, StratumCode, Method) VALUES ('{cruiseID}', '{stratumID}', '{newStratumCode}', '{method}');");
                database.Execute($"INSERT INTO CuttingUnit_Stratum (CruiseID, CuttingUnitCode, StratumCode) VALUES ('{cruiseID}', '{unit}', '{newStratumCode}')");

                var result = datastore.GetPlotStrataProxies(unit).ToArray();

                result.Should().HaveCount(1);
            }
        }
        public void InitializeDatabase(CruiseDatastore_V3 db,
                                       string cruiseID,
                                       string saleID,
                                       string saleNumber,
                                       string[] units,
                                       CruiseDAL.V3.Models.Stratum[] strata,
                                       CruiseDAL.V3.Models.CuttingUnit_Stratum[] unitStrata,
                                       CruiseDAL.V3.Models.SampleGroup[] sampleGroups,
                                       string[] species,
                                       CruiseDAL.V3.Models.TreeDefaultValue[] tdvs,
                                       CruiseDAL.V3.Models.SubPopulation[] subPops)
        {
            db.Insert(new Sale()
            {
                SaleID     = saleID,
                SaleNumber = saleNumber,
            });;

            db.Insert(new Cruise()
            {
                CruiseID     = cruiseID,
                SaleID       = saleID,
                CruiseNumber = saleNumber,
                SaleNumber   = saleNumber,
            });

            //Cutting Units
            foreach (var unit in units.OrEmpty())
            {
                var unitID = Guid.NewGuid().ToString();
                db.Execute(
                    "INSERT INTO CuttingUnit (" +
                    "CruiseID, CuttingUnitID, CuttingUnitCode" +
                    ") VALUES " +
                    $"('{cruiseID}', '{unitID}', '{unit}');");
            }

            //Strata
            foreach (var st in strata.OrEmpty())
            {
                st.CruiseID  = cruiseID;
                st.StratumID = Guid.NewGuid().ToString();
                db.Insert(st);
            }

            //Unit - Strata
            foreach (var cust in unitStrata.OrEmpty())
            {
                cust.CruiseID = cruiseID;
                db.Insert(cust);
            }

            //Sample Groups
            foreach (var sg in sampleGroups.OrEmpty())
            {
                sg.SampleGroupID = Guid.NewGuid().ToString();
                sg.CruiseID      = cruiseID;
                db.Insert(sg);
            }

            foreach (var sp in species.OrEmpty())
            {
                db.Execute($"INSERT INTO Species (CruiseID, SpeciesCode) VALUES ('{cruiseID}', '{sp}');");
            }

            foreach (var tdv in tdvs.OrEmpty())
            {
                tdv.CruiseID = cruiseID;
                db.Insert(tdv);
            }

            foreach (var sub in subPops.OrEmpty())
            {
                sub.SubPopulationID = Guid.NewGuid().ToString();
                sub.CruiseID        = cruiseID;
                db.Insert(sub);
            }
        }
Example #3
0
        public void GetTallyPopulation(string unitCode, string stratum, string sampleGroup, string species, string liveDead, bool tallyBySubpop)
        {
            var tallyDescription = $"{stratum} {sampleGroup} {species} {liveDead}";
            var hotKey           = "A";
            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 = new[]
            {
                new SubPopulation()
                {
                    StratumCode     = stratum,
                    SampleGroupCode = sampleGroup,
                    SpeciesCode     = species ?? "dummy",
                    LiveDead        = liveDead ?? "L",
                }
            };

            using (var database = new CruiseDatastore_V3())
            {
                base.InitializeDatabase(database, cruiseID, SaleID, units, strata, unit_strata, sampleGroups, new[] { species ?? "dummy" }, null, subPop);

                //database.Execute($"INSERT INTO CuttingUnit (CuttingUnitCode, CruiseID) VALUES ('{unitCode}', '{cruiseID}');");

                //database.Execute($"INSERT INTO Stratum (CruiseID, StratumCode, Method) VALUES ('{cruiseID}', '{stratum}', '{method}');");

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

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

                //database.Execute($"INSERT INTO SpeciesCode (CruiseID, SpeciesCode) VALUES ('{cruiseID}', '{((species == null || species == "") ? "dummy" : species)}');");

                //database.Execute(
                //"INSERT INTO SubPopulation (" +
                //"CruiseID, " +
                //"StratumCode, " +
                //"SampleGroupCode, " +
                //"Species, " +
                //"LiveDead)" +
                //"VALUES " +
                //$"('{cruiseID}', '{stratum}', '{sampleGroup}', " +
                //$"'{((species == null || species == "") ? "dummy" : species)}', " +
                //$"'{((liveDead == null || liveDead == "") ? "L" : liveDead)}');");

                database.Execute("INSERT INTO TallyDescription (CruiseID, StratumCode, SampleGroupCode, SpeciesCode, LiveDead, Description) VALUES " +
                                 "(@p1, @p2, @p3, @p4, @p5, @p6);", new object[] { cruiseID, stratum, sampleGroup, species, liveDead, tallyDescription });

                database.Execute("INSERT INTO TallyHotKey (CruiseID, StratumCode, SampleGroupCode, SpeciesCode, LiveDead, HotKey) VALUES " +
                                 "(@p1, @p2, @p3, @p4, @p5, @p6);", new object[] { cruiseID, stratum, sampleGroup, species, liveDead, hotKey });

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

                var spResult = database.QueryGeneric("select * from SubPopulation;");
                var tpresult = database.QueryGeneric("select * from TallyPopulation;");

                var pop = datastore.GetTallyPopulation(unitCode, stratum, sampleGroup, species, liveDead);
                pop.Should().NotBeNull();

                VerifyTallyPopulation(pop);

                pop.TallyDescription.Should().NotBeNullOrWhiteSpace();
                pop.TallyHotKey.Should().NotBeNullOrWhiteSpace();
                pop.Method.Should().NotBeNullOrWhiteSpace();
            }
        }
        private void InitializeFizCNT(CruiseDatastore_V3 database, string cruiseID)
        {
            var stratum = new CruiseDAL.V3.Models.Stratum()
            {
                CruiseID    = cruiseID,
                StratumID   = Guid.NewGuid().ToString(),
                StratumCode = "fixCnt1",
                Method      = CruiseDAL.Schema.CruiseMethods.FIXCNT,
                FixCNTField = "DBH",
            };

            database.Insert(stratum);

            var sg = new CruiseDAL.V3.Models.SampleGroup()
            {
                CruiseID        = cruiseID,
                SampleGroupID   = Guid.NewGuid().ToString(),
                SampleGroupCode = "sgFixCnt",
                CutLeave        = "C",
                UOM             = "01",
                PrimaryProduct  = "01",
                StratumCode     = stratum.StratumCode
            };

            database.Insert(sg);

            database.Execute($"INSERT INTO Species (SpeciesCode, CruiseID) values ('someSpecies', '{cruiseID}');");

            var tdv = new CruiseDAL.V3.Models.TreeDefaultValue()
            {
                CruiseID       = cruiseID,
                SpeciesCode    = "someSpecies",
                PrimaryProduct = "01"
            };

            database.Insert(tdv);

            var sgTdv = new CruiseDAL.V3.Models.SubPopulation()
            {
                CruiseID        = cruiseID,
                SubPopulationID = Guid.NewGuid().ToString(),
                StratumCode     = sg.StratumCode,
                SampleGroupCode = sg.SampleGroupCode,
                SpeciesCode     = tdv.SpeciesCode,
                LiveDead        = "L",
            };

            database.Insert(sgTdv);

            var fixCntTallyPop = new CruiseDAL.V3.Models.FixCNTTallyPopulation()
            {
                CruiseID        = cruiseID,
                StratumCode     = stratum.StratumCode,
                SampleGroupCode = sg.SampleGroupCode,
                SpeciesCode     = tdv.SpeciesCode,
                LiveDead        = "L",
                IntervalSize    = 101,
                Min             = 102,
                Max             = 103
            };

            database.Insert(fixCntTallyPop);

            database.Insert(new CruiseDAL.V3.Models.Plot
            {
                CruiseID        = cruiseID,
                PlotID          = Guid.NewGuid().ToString(),
                CuttingUnitCode = "u1",
                PlotNumber      = 1
            });
        }
        public void GetPlot_Stratum()
        {
            var units  = new string[] { "u1" };
            var strata = new[]
            {
                new dbModels.Stratum {
                    StratumCode = "st1", Method = "FIX"
                },
                new dbModels.Stratum {
                    StratumCode = "st2", Method = "FIX"
                },
                new dbModels.Stratum {
                    StratumCode = "st3", Method = "FIX"
                },
            };
            var unit_strata = new[]
            {
                new dbModels.CuttingUnit_Stratum {
                    CuttingUnitCode = "u1", StratumCode = "st1"
                },
                new dbModels.CuttingUnit_Stratum {
                    CuttingUnitCode = "u1", StratumCode = "st2"
                },
                new dbModels.CuttingUnit_Stratum {
                    CuttingUnitCode = "u1", StratumCode = "st3"
                },
            };

            var plotNumber = 1;
            var plotID     = Guid.NewGuid().ToString();

            using (var database = new CruiseDatastore_V3())
            {
                var saleID   = SaleID;
                var cruiseID = CruiseID;
                InitializeDatabase(database, cruiseID, saleID, units, strata, unit_strata, null, null, null, null);

                var datastore = new CuttingUnitDatastore(database, cruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));

                datastore.GetPlotsByUnitCode(units[0]).Should().BeEmpty("we havn't added any plots yet");

                database.Execute($"INSERT INTO Plot (CruiseID, PlotID, CuttingUnitCode, PlotNumber) VALUES " +
                                 $"('{cruiseID}', '{plotID}', '{units[0]}', {plotNumber})");

                foreach (var st in strata)
                {
                    if (st.StratumCode == "st3")
                    {
                        continue;
                    }

                    database.Execute($"INSERT INTO Plot_Stratum (CruiseID, CuttingUnitCode, PlotNumber, StratumCode) VALUES " +
                                     $"('{cruiseID}', '{units[0]}', {plotNumber}, '{st.StratumCode}');");
                }

                foreach (var st in strata)
                {
                    var plotStratum = datastore.GetPlot_Stratum(units[0], st.StratumCode, plotNumber);
                    ValidatePlot_Stratum(plotStratum, st.StratumCode != "st3");
                }

                var nonExistantPS = datastore.GetPlot_Stratum(units[0], "st3", plotNumber);
                ValidatePlot_Stratum(nonExistantPS, false);
            }
        }