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