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);
            }
        }
        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
            });
        }