28 private ICollectionView _competitionsCollectionView;
34 get => _competitionsCollectionView;
35 private set => SetProperty(ref _competitionsCollectionView, value);
62 private ICollectionView _competitionDistanceRuleCollectionView;
68 get => _competitionDistanceRuleCollectionView;
69 private set => SetProperty(ref _competitionDistanceRuleCollectionView, value);
76 => _competitionDistanceRuleService.ValidateRules();
91 private IDialogCoordinator _dialogCoordinator;
104 _competitionService = competitionService;
105 _competitionDistanceRuleService = competitionDistanceRuleService;
106 _workspaceService = workspaceService;
107 _dialogCoordinator = dialogCoordinator;
110 _competitionDistanceRuleService.PropertyChanged += (sender, e) =>
112 switch(e.PropertyName)
122 private ICommand _addCompetitionCommand;
129 _competitionService.AddCompetition(competition);
130 competition.PropertyChanged += Competition_PropertyChanged;
131 SelectedCompetition = competition;
136 private ICommand _removeCompetitionCommand;
140 public ICommand
RemoveCompetitionCommand => _removeCompetitionCommand ?? (_removeCompetitionCommand =
new RelayCommand<Competition>(async (competition) =>
143 if (result == MessageDialogResult.Affirmative)
145 competition.PropertyChanged -= Competition_PropertyChanged;
146 _competitionService.RemoveCompetition(competition);
154 private ICommand _addDistanceRuleCommand;
161 _competitionDistanceRuleService.AddDistanceRule(rule);
164 private ICommand _removeDistanceRuleCommand;
168 public ICommand
RemoveDistanceRuleCommand => _removeDistanceRuleCommand ?? (_removeDistanceRuleCommand =
new RelayCommand<CompetitionDistanceRule>(async (rule) =>
171 if (result == MessageDialogResult.Affirmative)
173 _competitionDistanceRuleService.RemoveDistanceRule(rule);
179 private ICommand _updateCompetitionTimesFromRudolphTableCommand;
185 OpenFileDialog fileDialog =
new OpenFileDialog();
186 fileDialog.InitialDirectory = _workspaceService.PersistentPath;
189 if (fileDialog.ShowDialog() ==
true)
192 if (inputStr !=
null)
194 byte rudolphScore = 0;
195 if (
byte.TryParse(inputStr, out rudolphScore) && rudolphScore >= 1 && rudolphScore <= 20)
197 _competitionService.UpdateAllCompetitionTimesFromRudolphTable(fileDialog.FileName, rudolphScore);
212 private ICommand _createCompetitionsFromRudolphTableCommand;
219 if (result == MessageDialogResult.Affirmative)
221 OpenFileDialog fileDialog =
new OpenFileDialog();
222 fileDialog.InitialDirectory = _workspaceService.PersistentPath;
225 if (fileDialog.ShowDialog() ==
true)
228 if (inputStr !=
null)
230 byte rudolphScore = 0;
231 if (
byte.TryParse(inputStr, out rudolphScore) && rudolphScore >= 1 && rudolphScore <= 20)
233 _competitionService.CreateCompetitionsFromRudolphTable(fileDialog.FileName, rudolphScore);
255 Competitions = _competitionService?.GetCompetitions();
257 SelectedCompetition = Competitions?.FirstOrDefault();
259 CompetitionDistanceRules = _competitionDistanceRuleService?.GetCompetitionDistanceRules();
265 competition.PropertyChanged -= Competition_PropertyChanged;
266 competition.PropertyChanged += Competition_PropertyChanged;
280 competition.PropertyChanged -= Competition_PropertyChanged;
286 #region Property changed event handler
288 private void Competition_PropertyChanged(
object sender, PropertyChangedEventArgs e)
290 switch (e.PropertyName)