public void TestReadPlots()
        {
            using (var ds = new CruiseDAL.DAL(":memory:", true))
            {
                var unit = new CuttingUnit()
                {
                    Code = "1"
                };

                var st = new PlotStratum()
                {
                    Code   = "1",
                    Method = CruiseMethods.THREEPPNT
                };

                ds.Insert(unit);

                ds.Insert(st);

                ds.Insert(new Plot()
                {
                    CuttingUnit = unit,
                    Stratum     = st,
                    PlotNumber  = 1
                });

                st.DAL = ds;
                st.PopulatePlots(unit.CuttingUnit_CN.Value);

                st.Plots.Should().NotBeNullOrEmpty();
                st.Plots.Should().OnlyContain(x => x is Plot3PPNT);
            }
        }
        private void LoadCuttingUnitInfo(CuttingUnit unit)
        {
            _strataView.SuspendLayout();
            _strataView.Controls.Clear();
            this._dataEntryMI.Enabled = (unit != null);
            if (unit != null)
            {
                var strata = unit.DAL.From <StratumDO>()
                             .Join("CuttingUnitStratum", "USING (Stratum_CN)", "CUST")
                             .Where("CUST.CuttingUnit_CN = ?")
                             .Query(unit.CuttingUnit_CN);

                foreach (StratumDO st in strata)
                {
                    Label stLBL = new Label();
                    stLBL.Text = st.GetDescriptionShort();
                    if (_fontHeight == 0)
                    {
                        using (Graphics g = base.CreateGraphics())
                        {
                            SizeF s = g.MeasureString(" ", stLBL.Font);
                            _fontHeight = (int)Math.Ceiling(s.Height);
                        }
                    }

                    stLBL.Dock   = DockStyle.Top;
                    stLBL.Height = _fontHeight;
                    _strataView.Controls.Add(stLBL);
                }
            }
            _strataView.ResumeLayout();
        }
        public void TestMakePlot_3ppnt()
        {
            using (var dal = new CruiseDAL.DAL(":memory:", true))
            {
                var unit = new CuttingUnit()
                {
                    Code = "01",
                    DAL  = dal
                };

                dal.Insert(unit);

                var stratum = new PlotStratum()
                {
                    Code   = "01",
                    Method = CruiseMethods.THREEPPNT,
                    DAL    = dal
                };

                dal.Insert(stratum);

                var plot = stratum.MakePlot(unit);

                plot.Should().BeOfType <Plot3PPNT>();

                plot.PlotNumber.Should().Be(1L);

                plot.CuttingUnit.Should().Be(unit);
                plot.Stratum.Should().Be(stratum);

                plot.Trees.Should().NotBeNull();
            }
        }
Beispiel #4
0
        private void _plotInfo_BTN_Click(object sender, EventArgs e)
        {
            using (var ds = new DAL())
            {
                var stratum = new PlotStratum()
                {
                    DAL = ds, Code = "1", Method = "something"
                };
                var unit = new CuttingUnit()
                {
                    DAL = ds, Code = "1"
                };
                ds.Insert(unit, OnConflictOption.Default);
                ds.Insert(stratum, OnConflictOption.Default);
                stratum.PopulatePlots(unit.CuttingUnit_CN.Value);

                var plot = new Plot()
                {
                    Stratum = stratum
                };

                using (var view = new FormPlotInfo())
                {
                    view.ShowDialog(plot, stratum, false);
                }
            }
        }
Beispiel #5
0
        public void Sync_Unit_Delete()
        {
            var init     = new DatabaseInitializer();
            var fromPath = base.GetTempFilePath(".crz3", "Sync_Unit_Delete_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_Unit_Delete_toFile");

            using var fromDb = init.CreateDatabaseFile(fromPath);
            var cruiseID = init.CruiseID;
            var saleID   = init.SaleID;

            var newUnit = new CuttingUnit()
            {
                CruiseID        = cruiseID,
                CuttingUnitID   = Guid.NewGuid().ToString(),
                CuttingUnitCode = "newUnitCode1",
            };

            fromDb.Insert(newUnit);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            fromDb.Delete(newUnit);

            var syncer      = new DeleteSysncer();
            var syncOptions = new CruiseSyncOptions();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("CuttingUnit", "WHERE CuttingUnitID = @p1", newUnit.CuttingUnitID)
            .Should().Be(0);
        }
Beispiel #6
0
        public void SelectUnit(CuttingUnit unit)
        {
            if (unit == null)
            {
                throw new ArgumentNullException(nameof(unit));
            }

            NavigationService.ShowCuttingUnitInfo(unit.CuttingUnitCode);
        }
Beispiel #7
0
        private void logsButton_Click(object sender, EventArgs e)
        {
            using (var ds = new DAL())
            {
                var cuttingUnit = new CuttingUnit()
                {
                    DAL  = ds,
                    Code = "01"
                };
                cuttingUnit.Save();

                var stratum = new Stratum()
                {
                    DAL  = ds,
                    Code = "01"
                };
                stratum.Save();

                var fieldSetup = new LogFieldSetupDO()
                {
                    DAL        = ds,
                    Stratum_CN = stratum.Stratum_CN,
                    Field      = LOG.LOGNUMBER,
                    Heading    = LOG.LOGNUMBER
                };
                fieldSetup.Save();

                fieldSetup = new LogFieldSetupDO()
                {
                    DAL        = ds,
                    Stratum_CN = stratum.Stratum_CN,
                    Field      = LOG.GRADE,
                    Heading    = LOG.GRADE
                };
                fieldSetup.Save();

                var controller = new ApplicationController(null);
                var tree       = new Tree()
                {
                    DAL            = ds,
                    CuttingUnit_CN = cuttingUnit.CuttingUnit_CN,
                    Stratum_CN     = stratum.Stratum_CN,
                    TreeNumber     = 1
                };
                tree.Save();

                var dataService = new ILogDataService(tree, (RegionLogInfo)null, ds);

                using (var view = new FormLogs(dataService))
                {
                    view.ShowDialog();
                }
            }
        }
        public void UpdateCuttingUnit(CuttingUnit unit)
        {
            Database.Execute2(
                @"UPDATE CuttingUnit SET
    CuttingUnitCode = @CuttingUnitCode,
    Area = @Area,
    Description = @Description,
    Remarks = @Remarks,
    LoggingMethod = @LoggingMethod,
    PaymentUnit = @PaymentUnit,
    Rx = @Rx
WHERE CuttingUnitID = @CuttingUnitID;", unit);
        }
Beispiel #9
0
        public void Sync_CuttingUnit_Update()
        {
            var fromPath = base.GetTempFilePath(".crz3", "CuttingUnit_Updated_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "CuttingUnit_Update_toFile");

            var syncOptions = new CruiseSyncOptions();

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            // initialize source database
            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);
            var cuttingUnitID = Guid.NewGuid().ToString();
            var cuttingUnit   = new CuttingUnit()
            {
                CruiseID        = cruiseID,
                CuttingUnitID   = cuttingUnitID,
                CuttingUnitCode = "10",
            };

            fromDb.Insert(cuttingUnit);

            // initialize dest database
            // as exact copy of source database
            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            // modify cutting unit value and save to source database
            cuttingUnit.Area          = Rand.Int();
            cuttingUnit.Description   = Rand.String();
            cuttingUnit.LoggingMethod = "401";
            cuttingUnit.PaymentUnit   = Rand.AlphaNumeric(3);
            cuttingUnit.Rx            = Rand.AlphaNumeric(3);
            cuttingUnit.ModifiedBy    = Rand.AlphaNumeric(4);
            fromDb.Update(cuttingUnit);

            // run sync
            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var cuttingUnitAgain = toDb.From <CuttingUnit>().Where("CuttingUnitID =  @p1")
                                   .Query(cuttingUnitID).FirstOrDefault();

            cuttingUnitAgain.Should().BeEquivalentTo(cuttingUnit, x => x.Excluding(y => y.Modified_TS));
        }
        public void AddCuttingUnit(CuttingUnit unit)
        {
            unit.CuttingUnitID ??= Guid.NewGuid().ToString();

            Database.Execute2(
                @"INSERT INTO CuttingUnit (
    CuttingUnitID,
    CruiseID,
    CuttingUnitCode,
    Area,
    Description,
    Remarks,
    LoggingMethod,
    PaymentUnit,
    Rx,
    CreatedBy
) VALUES (
    @CuttingUnitID,
    @CruiseID,
    @CuttingUnitCode,
    @Area,
    @Description,
    @Remarks,
    @LoggingMethod,
    @PaymentUnit,
    @Rx,
    @DeviceID
);", new
            {
                unit.CuttingUnitID,
                CruiseID,
                unit.CuttingUnitCode,
                unit.Area,
                unit.Description,
                unit.Remarks,
                unit.LoggingMethod,
                unit.PaymentUnit,
                unit.Rx,
                DeviceID,
            });
        }
Beispiel #11
0
        public void Sync_CuttingUnit_Update_CuttingUnitCode()
        {
            var fromPath = base.GetTempFilePath(".crz3", "CuttingUnit_Updated_code_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "CuttingUnit_Update_code_toFile");

            var syncOptions = new CruiseSyncOptions();

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            // initialize source database
            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);
            var cuttingUnitID = Guid.NewGuid().ToString();
            var cuttingUnit   = new CuttingUnit()
            {
                CruiseID        = cruiseID,
                CuttingUnitID   = cuttingUnitID,
                CuttingUnitCode = "10",
            };

            fromDb.Insert(cuttingUnit);

            // initialize dest database
            // as exact copy of source database
            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            // modify cutting unit value and save to source database
            cuttingUnit.CuttingUnitCode = "11";
            fromDb.Update(cuttingUnit);

            // run sync
            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var cuttingUnitAgain = toDb.From <CuttingUnit>().Where("CuttingUnitID =  @p1")
                                   .Query(cuttingUnitID).FirstOrDefault();

            cuttingUnitAgain.CuttingUnitCode.Should().BeEquivalentTo(cuttingUnit.CuttingUnitCode);
        }
        public void ShowDataEntry(CuttingUnit unit)
        {
            lock (_dataEntrySyncLock)
            {
                IDataEntryDataService     dataService;
                ISampleSelectorRepository sampleSelectorReop;
                try
                {
                    dataService        = new IDataEntryDataService(unit.Code, ApplicationController.DataStore);
                    sampleSelectorReop = new SampleSelectorRepository(new SamplerInfoDataservice_V2(ApplicationController.DataStore));
                }
                catch (CruiseConfigurationException e)
                {
                    MessageBox.Show(e.Message, e.GetType().Name);
                    return;
                }
                catch (UserFacingException e)
                {
                    var exType = e.GetType();
                    MessageBox.Show(e.Message, exType.Name);
                    return;
                }

                try
                {
                    ShowDataEntry(dataService, sampleSelectorReop);
                }
                catch (Exception ex)
                {
                    ReportException(ex);
                    //var timeStamp = DateTime.Now.ToString("HH_mm");

                    //var dumFilePath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "FScruiserDump" + timeStamp + ".xml");
                    //MessageBox.Show("FScruiser encountered a unexpected problem\r\n"
                    //    + "Dumping tree data to " + dumFilePath);
                    //dataService.Dump(dumFilePath);
                }
            }
        }
 public void DeleteCuttingUnit(CuttingUnit unit)
 {
     Database.Execute("DELETE FROM  CuttingUnit WHERE CuttingUnitCode = @p1 AND CruiseID = @p2", unit.CuttingUnitCode, CruiseID);
 }
Beispiel #14
0
        public void RecursiveDeleteStratum()
        {
            using (var database = new DAL())
            {
                var unit = new CuttingUnit()
                {
                    Code = "u1"
                };
                database.Insert(unit);

                var stratum = new Stratum()
                {
                    Code = "st1", Method = "STR"
                };
                database.Insert(stratum);

                var unitStratum = new CuttingUnitStratum()
                {
                    CuttingUnit_CN = unit.CuttingUnit_CN.Value, Stratum_CN = stratum.Stratum_CN.Value
                };
                database.Insert(unitStratum);

                var sampleGroup = new SampleGroup()
                {
                    Stratum_CN = stratum.Stratum_CN.Value, Code = "sg1", CutLeave = "C", UOM = "01", PrimaryProduct = "01"
                };
                database.Insert(sampleGroup);

                var samplerState = new SamplerState()
                {
                    SampleGroup_CN = sampleGroup.SampleGroup_CN.Value
                };
                database.Insert(samplerState);

                var countTree = new CountTree()
                {
                    CuttingUnit_CN = unit.CuttingUnit_CN.Value, SampleGroup_CN = sampleGroup.SampleGroup_CN.Value
                };
                database.Insert(countTree);

                var treeEstimate = new TreeEstimate()
                {
                    CountTree_CN = countTree.CountTree_CN
                };
                database.Insert(treeEstimate);

                var stratumStats = new StratumStats()
                {
                    Stratum_CN = stratum.Stratum_CN.Value, Code = "ss1"
                };
                database.Insert(stratumStats);

                var sampleGroupStats = new SampleGroupStats()
                {
                    StratumStats_CN = stratumStats.StratumStats_CN.Value, Code = "sgs1"
                };
                database.Insert(sampleGroupStats);

                var stDO = database.Query <StratumDO>("SELECT * FROM Stratum;").First();
                stDO.Should().NotBeNull();

                var plot = new Plot()
                {
                    CuttingUnit_CN = unit.CuttingUnit_CN.Value,
                    Stratum_CN     = stratum.Stratum_CN.Value,
                    PlotNumber     = 1,
                };
                database.Insert(plot);

                var tree = new Tree()
                {
                    CuttingUnit_CN = unit.CuttingUnit_CN.Value,
                    Stratum_CN     = stratum.Stratum_CN.Value,
                    SampleGroup_CN = sampleGroup.SampleGroup_CN.Value,
                    Plot_CN        = plot.Plot_CN.Value,
                    TreeNumber     = 1,
                    Species        = "1",
                };
                database.Insert(tree);

                var log = new Log()
                {
                    Tree_CN   = tree.Tree_CN.Value,
                    LogNumber = "1",
                };
                database.Insert(log);

                database.HasForeignKeyErrors().Should().BeFalse();

                StratumDO.RecursiveDeleteStratum(stDO);

                stDO.Invoking(x => x.Delete()).Should().NotThrow();

                database.GetRowCount("Stratum", "WHERE Stratum_CN = @p1", stratum.Stratum_CN)
                .Should().Be(0);
                database.GetRowCount("Plot", "WHERE Plot_CN = @p1", plot.Plot_CN)
                .Should().Be(0);
                database.GetRowCount("Tree", "WHERE Tree_CN = @p1", tree.Tree_CN)
                .Should().Be(0);
                database.GetRowCount("Log", "WHERE Log_CN = @p1", log.Log_CN)
                .Should().Be(0);
                database.GetRowCount("StratumStats", "WHERE StratumStats_CN = @p1", stratumStats.StratumStats_CN)
                .Should().Be(0);
                database.GetRowCount("SampleGroupStats", "WHERE SampleGroupStats_CN = @p1", sampleGroupStats.SampleGroupStats_CN)
                .Should().Be(0);

                var stuff = database.QueryGeneric("PRAGMA FOREIGN_KEY_CHECK");

                //database.Execute($"DELETE FROM SamplerState WHERE SampleGroup_CN IN (SELECT SampleGroup_CN FROM SampleGroup WHERE SampleGroup.Stratum_CN = {stDO.Stratum_CN});");

                //stuff = database.QueryGeneric("PRAGMA FOREIGN_KEY_CHECK");

                database.HasForeignKeyErrors().Should().BeFalse();
            }
        }
Beispiel #15
0
 public void ShowDataEntry(CuttingUnit unit)
 {
     throw new NotImplementedException();
 }