public void ToStringTest() { var tallyAction = new TallyAction(); tallyAction.ToString().Should().NotBeNullOrWhiteSpace(); tallyAction.ToString().Should().Be("-- ----"); tallyAction.Count = new CountTree(); tallyAction.ToString().Should().NotBeNullOrWhiteSpace(); tallyAction.ToString().Should().Be("-- ----"); tallyAction.Count.SampleGroup = new SampleGroup() { Code = "1111111", Stratum = new Stratum() { Code = "222" } }; tallyAction.ToString().Should().NotBeNullOrWhiteSpace(); tallyAction.ToString().Should().Be("22 1111"); tallyAction.Count.SampleGroup.Code = "1"; tallyAction.Count.SampleGroup.Stratum.Code = "2"; tallyAction.ToString().Should().NotBeNullOrWhiteSpace(); tallyAction.ToString().Should().Be("2 1"); }
[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); } }
public void RemoveAt_Test() { var tallyHistoryCollection = new TallyHistoryCollection(1); var ta1 = new TallyAction(); tallyHistoryCollection.Add(ta1); using (var monitoredTallyHistoryCollection = tallyHistoryCollection.Monitor()) { tallyHistoryCollection.RemoveAt(0); monitoredTallyHistoryCollection.Should().Raise(nameof(TallyHistoryCollection.ItemRemoving)); } }
private static TallyAction CreateTally(string unitCode, TallyPopulation population, SampleResult sampleResult, int treeCount = 1, int kpi = 0, int threePRandomeValue = 0, bool stm = false) { var tallyEntry = new TallyAction(unitCode, population) { SampleResult = sampleResult, //CountOrMeasure = countOrMeasure, TreeCount = treeCount, KPI = kpi, ThreePRandomValue = threePRandomeValue, STM = stm, }; return(tallyEntry); }
public void InflateTest() { using (var dataStore = new CruiseDAL.DAL()) { dataStore.Insert(new CuttingUnit() { Code = "01", CuttingUnit_CN = 1 }); dataStore.Insert(new Stratum() { Code = "01", Method = "", Stratum_CN = 1 }); dataStore.Insert(new SampleGroup() { Code = "01", CutLeave = "", UOM = "", Stratum_CN = 1, SampleGroup_CN = 1, PrimaryProduct = "01" }); dataStore.Insert(new CruiseDAL.DataObjects.TallyDO() { Tally_CN = 1, Hotkey = "", Description = "" }); dataStore.Insert(new Tree() { TreeNumber = 1, Tree_CN = 1, CuttingUnit_CN = 1, Stratum_CN = 1 }); dataStore.Insert(new CountTree() { CountTree_CN = 1, CuttingUnit_CN = 1, SampleGroup_CN = 1 }); dataStore.Insert(new CruiseDAL.DataObjects.TreeEstimateDO() { CountTree_CN = 1 }); var tallyAction = new TallyAction() { TreeCN = 1, CountCN = 1, TreeEstimateCN = 1 }; TallyHistoryCollection.Inflate(dataStore, tallyAction); tallyAction.TreeRecord.Should().NotBeNull(); tallyAction.Count.Should().NotBeNull(); tallyAction.TreeEstimate.Should().NotBeNull(); } }
public void Add_Test_WithLimitedSize() { var tallHistoryCollection = new TallyHistoryCollection(1); var ta1 = new TallyAction(); tallHistoryCollection.Add(ta1); tallHistoryCollection.Should().HaveCount(1); var ta2 = new TallyAction(); tallHistoryCollection.Add(ta2); tallHistoryCollection.Should().HaveCount(1); tallHistoryCollection.Should().Contain(ta2); tallHistoryCollection.Should().NotContain(ta1); }
public void SaveTallyAction(TallyAction tallyAction) { var database = DataStore; var countTree = tallyAction.Count; var tree = tallyAction.TreeRecord; var persistedTreeCount = countTree.TreeCount; var persistedSumKPI = countTree.SumKPI; var treeCountDelta = tallyAction.TreeCount; var kpiDelta = tallyAction.KPI; if (treeCountDelta > 0) { countTree.TreeCount = persistedTreeCount + treeCountDelta; } if (kpiDelta > 0) { countTree.SumKPI = persistedSumKPI + kpiDelta; } database.BeginTransaction(); try { database.Save(countTree); if (tree != null) { database.Save(tree); } database.CommitTransaction(); if (tree != null) { AddNonPlotTree(tree); } } catch (Exception) { countTree.TreeCount = persistedTreeCount; countTree.SumKPI = persistedSumKPI; database.RollbackTransaction(); } }
//ViewController (askKPI) //TODO use Dialog Service instead //DataService (CreateNewTreeEntry) //DAL (LogTreeEstimate) //should be dataservice instead //SampleGroup (MinKPI/MaxKPI) public static TallyAction TallyThreeP(CountTree count, ISampleSelector sampler, SampleGroup sg, ITreeDataService dataService, IDialogService dialogService) { TallyAction action = new TallyAction(count) { TreeCount = 1, }; var sgCode = sg.Code; var stCode = sg.Stratum.Code; var spCode = count.TreeDefaultValue.Species; int kpi = 0; int?value = dialogService.AskKPI((int)sg.MinKPI, (int)sg.MaxKPI, stCode, sgCode, spCode); if (value == null) { return(null); } else { kpi = value.Value; } if (kpi == -1) //user entered sure to measure { var tree = dataService.CreateNewTreeEntry(count); tree.STM = "Y"; action.TreeRecord = tree; } else { action.TreeEstimate = dataService.LogTreeEstimate(count, kpi); action.KPI = kpi; var result = ((IThreePSelector)sampler).Sample(kpi); if (result != SampleResult.C) { var tree = dataService.CreateNewTreeEntry(count); tree.KPI = kpi; tree.CountOrMeasure = result.ToString(); action.TreeRecord = tree; } } return(action); }
//DataService (CreateNewTreeEntry) // public static TallyAction TallyStandard(CountTree count, ISampleSelector sampleSelecter, ITreeDataService dataService, IDialogService dialogService) { TallyAction action = new TallyAction(count) { TreeCount = 1, }; var result = ((IFrequencyBasedSelecter)sampleSelecter).Sample(); //If we receive nothing from the sampler, we don't have a sample if (result != SampleResult.C)//&& (item.IsSelected || item.IsInsuranceItem)) { var tree = dataService.CreateNewTreeEntry(count); tree.CountOrMeasure = result.ToString(); action.TreeRecord = tree; } return(action); }
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"); } }
protected void OnUntallyButtonClicked(object sender, EventArgs e) { if (_viewLoading) { return; } TallyAction selectedAction = _BS_tallyHistory.Current as TallyAction; if (selectedAction == null) { return; } if (MessageBox.Show("Are you sure you want to untally the selected record?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.No) { return; } DataService.TallyHistory.Remove(selectedAction); }
public void SaveTallyAction() { using (var database = CreateDataStore(methods: new[] { "STR" })) { var treeCount = 1; var unitCode = "01"; var ds = new IDataEntryDataService(unitCode, database); var count = ds.TreeStrata.First().Counts.First(); var treecountBefore = count.TreeCount; var tallyAction = new TallyAction(count) { TreeCount = treeCount, }; ds.SaveTallyAction(tallyAction); count.TreeCount.Should().Be(treeCount + treecountBefore); } }
public TallyEntry InsertTallyAction(TallyAction atn) { if (atn is null) { throw new ArgumentNullException(nameof(atn)); } if (atn.IsInsuranceSample == true && atn.IsSample == false) { throw new InvalidOperationException("If action is insurance sample it must be sample aswell"); } Database.BeginTransaction(); try { var tallyEntry = new TallyEntry(atn); tallyEntry.TallyLedgerID = Guid.NewGuid().ToString(); if (atn.IsSample) { tallyEntry.TreeID = tallyEntry.TallyLedgerID; tallyEntry.TreeNumber = Database.ExecuteScalar2 <int>( "SELECT " + "ifnull(max(TreeNumber), 0) + 1 " + "FROM Tree " + "WHERE CuttingUnitCode = @CuttingUnitCode AND CruiseID = @CruiseID " + "AND ifnull(PlotNumber, -1) = ifnull(@PlotNumber, -1)", new { CruiseID, atn.CuttingUnitCode, atn.PlotNumber }); Database.Execute2( @"INSERT INTO Tree ( TreeID, CruiseID, CuttingUnitCode, PlotNumber, StratumCode, SampleGroupCode, SpeciesCode, LiveDead, TreeNumber, CountOrMeasure, CreatedBy ) VALUES ( @TreeID, @CruiseID, @CuttingUnitCode, @PlotNumber, @StratumCode, @SampleGroupCode, @SpeciesCode, @LiveDead, @TreeNumber, @CountOrMeasure, @CreatedBy ); INSERT INTO TreeMeasurment ( TreeID ) VALUES ( @TreeID );", new { CruiseID, tallyEntry.TreeID, tallyEntry.TreeNumber, atn.CuttingUnitCode, atn.PlotNumber, atn.StratumCode, atn.SampleGroupCode, atn.SpeciesCode, atn.LiveDead, tallyEntry.CountOrMeasure, CreatedBy = DeviceID, }); } Database.Execute2( @"INSERT INTO TallyLedger ( TreeID, TallyLedgerID, CruiseID, CuttingUnitCode, PlotNumber, StratumCode, SampleGroupCode, SpeciesCode, LiveDead, TreeCount, KPI, STM, ThreePRandomValue, EntryType, CreatedBy ) VALUES ( @TreeID, @TallyLedgerID, @CruiseID, @CuttingUnitCode, @PlotNumber, @StratumCode, @SampleGroupCode, @SpeciesCode, @LiveDead, @TreeCount, @KPI, @STM, @ThreePRandomValue, @EntryType, @CreatedBy );", new { CruiseID, tallyEntry.TreeID, tallyEntry.TallyLedgerID, atn.CuttingUnitCode, atn.PlotNumber, atn.StratumCode, atn.SampleGroupCode, atn.SpeciesCode, atn.LiveDead, atn.TreeCount, atn.KPI, atn.STM, atn.ThreePRandomValue, atn.EntryType, CreatedBy = DeviceID, }); var samplerState = atn.SamplerState; if (samplerState != null) { SampleInfoDataservice.UpsertSamplerState(samplerState); } Database.CommitTransaction(); return(tallyEntry); } catch { Database.RollbackTransaction(); throw; } }
public Task <TallyEntry> InsertTallyActionAsync(TallyAction tallyAction) { return(Task.Run(() => InsertTallyAction(tallyAction))); //return Task.Factory.StartNew(() => InsertTallyAction(tallyAction)); }
public static void OnTally(CountTree count, IDataEntryDataService dataService, ICollection <TallyAction> tallyHistory, IApplicationSettings appSettings, IDataEntryView view, IDialogService dialogService, ISoundService soundService, ISampleSelectorRepository sampleSelectorRepository) { TallyAction action = null; SampleGroup sg = count.SampleGroup; var sampler = sampleSelectorRepository.GetSamplerBySampleGroupCode(sg.Stratum.Code, sg.Code); if (sampler == null) { } // if doing a manual tally create a tree and jump out else if (sampler is ExternalSampleSelectorPlaceholder) { try { action = new TallyAction(count); var newTree = dataService.CreateNewTreeEntry(count, true); //create measure tree newTree.TreeCount = sg.SamplingFrequency; //increment tree count on tally action.TreeRecord = newTree; } catch (FMSC.ORM.SQLException) //count save fail { dialogService.ShowMessage("File error"); } } else if (count.SampleGroup.Stratum.Is3P)//threeP sampling { action = TallyThreeP(count, sampler, sg, dataService, dialogService); } else//non 3P sampling (STR) { action = TallyStandard(count, sampler, dataService, dialogService); } //action may be null if cruising 3P and user doesn't enter a kpi if (action != null) { dataService.SaveTallyAction(action); soundService.SignalTally(); var tree = action.TreeRecord; if (tree != null) { if (tree.CountOrMeasure == "M") { soundService.SignalMeasureTree(); } else if (tree.CountOrMeasure == "I") { soundService.SignalInsuranceTree(); } if (appSettings.EnableCruiserPopup) { dialogService.AskCruiser(tree); tree.TrySave(); } else { var sampleType = (tree.CountOrMeasure == "M") ? "Measure Tree" : (tree.CountOrMeasure == "I") ? "Insurance Tree" : String.Empty; dialogService.ShowMessage("Tree #" + tree.TreeNumber.ToString(), sampleType); } if (tree.CountOrMeasure == "M" && AskEnterMeasureTreeData(appSettings, dialogService)) { view.GotoTreePage(); //this.View.TreeViewMoveLast(); } } tallyHistory.Add(action); } }