Vereinsmeisterschaften  22aa7800eae54b428d40e835886cefe1fdefdfdf
This is a software that can be used to manage the internal competition of the swimming club Illertissen called "Vereinsmeisterschaften".
Loading...
Searching...
No Matches
App.xaml.cs
1using MahApps.Metro.Controls.Dialogs;
2using Microsoft.Extensions.Configuration;
3using Microsoft.Extensions.DependencyInjection;
4using Microsoft.Extensions.Hosting;
5using System.IO;
6using System.Reflection;
8using System.Windows.Threading;
24
26
27// For more information about application lifecycle events see https://docs.microsoft.com/dotnet/framework/wpf/app-development/application-management-overview
28
29// WPF UI elements use language en-US by default.
30// If you need to support other cultures make sure you add converters and review dates and numbers in your UI to ensure everything adapts correctly.
31// Tracking issue for improving this is https://github.com/dotnet/wpf/issues/1946
32public partial class App : Application
33{
34 private IHost _host;
35
41 public T GetService<T>()
42 where T : class
43 => _host.Services.GetService(typeof(T)) as T;
44
48 public App()
49 {
50 }
51
52 private async void OnStartup(object sender, StartupEventArgs e)
53 {
54 var appLocation = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
55
56 // For more information about .NET generic host see https://docs.microsoft.com/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-3.0
57 _host = Host.CreateDefaultBuilder(e.Args)
58 .ConfigureAppConfiguration(c =>
59 {
60 c.SetBasePath(appLocation);
61 })
62 .ConfigureServices(ConfigureServices)
63 .Build();
64
65 await _host.StartAsync();
66 }
67
68 private void ConfigureServices(HostBuilderContext context, IServiceCollection services)
69 {
70 // TODO: Register your services, viewmodels and pages here
71
72 // App Host
73 services.AddHostedService<ApplicationHostService>();
74
75 // Activation Handlers
76
77 // Core Services
78 services.AddSingleton<IFileService, FileService>();
79 services.AddSingleton<IDocumentService, DocumentService>();
80 services.AddSingleton<IPersonService, PersonService>();
81 services.AddSingleton<ICompetitionService, CompetitionService>();
82 services.AddSingleton<ICompetitionDistanceRuleService, CompetitionDistanceRuleService>();
83 services.AddSingleton<IWorkspaceService, WorkspaceService>();
84 services.AddSingleton<IScoreService, ScoreService>();
85 services.AddSingleton<IRaceService, RaceService>();
86 services.AddSingleton<IDocumentPlaceholderResolver<PersonStart>, DocumentPlaceholderResolverPersonStart>();
87 services.AddSingleton<IDocumentPlaceholderResolver<Person>, DocumentPlaceholderResolverPerson>();
88 services.AddSingleton<IDocumentPlaceholderResolver<Race>, DocumentPlaceholderResolverRace>();
89 services.AddSingleton<IDocumentPlaceholderResolver<IAnalyticsModule>, DocumentPlaceholderResolverIAnalyticsModule>();
90 services.AddSingleton<IDocumentStrategy, DocumentStrategyCertificates>();
91 services.AddSingleton<IDocumentStrategy, DocumentStrategyOverviewList>();
92 services.AddSingleton<IDocumentStrategy, DocumentStrategyRaceStartList>();
93 services.AddSingleton<IDocumentStrategy, DocumentStrategyTimeForms>();
94 services.AddSingleton<IDocumentStrategy, DocumentStrategyResultList>();
95 services.AddSingleton<IDocumentStrategy, DocumentStrategyResultListDetail>();
96 services.AddSingleton<IDocumentStrategy, DocumentStrategyAnalytics>();
97 services.AddSingleton<AnalyticsModuleGenderPersons>();
98 services.AddSingleton<AnalyticsModuleGenderStarts>();
99 services.AddSingleton<AnalyticsModuleStartsPerStyle>();
100 services.AddSingleton<AnalyticsModulePersonCounters>();
101 services.AddSingleton<AnalyticsModuleStartsCounters>();
102 services.AddSingleton<AnalyticsModuleAgeDistribution>();
103 services.AddSingleton<AnalyticsModuleStartsPerPerson>();
104 services.AddSingleton<AnalyticsModuleDistancesBetweenStarts>();
105 services.AddSingleton<AnalyticsModuleStartDistances>();
106 services.AddSingleton<AnalyticsModulePlacesAgeDistribution>();
107 services.AddSingleton<AnalyticsModuleRacesAges>();
108 services.AddSingleton<AnalyticsModuleCompetitionTimes>();
109 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleGenderPersons>());
110 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleGenderStarts>());
111 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleStartsPerStyle>());
112 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModulePersonCounters>());
113 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleStartsCounters>());
114 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleAgeDistribution>());
115 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleStartsPerPerson>());
116 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleDistancesBetweenStarts>());
117 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleStartDistances>());
118 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModulePlacesAgeDistribution>());
119 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleRacesAges>());
120 services.AddSingleton<IAnalyticsModule>(sp => sp.GetRequiredService<AnalyticsModuleCompetitionTimes>());
121 services.AddSingleton<IDocumentFileConverterSelector, DocumentFileConverterSelector>();
122 services.AddSingleton<IDocumentFileConverter, MsWordDocumentFileConverter>();
123 services.AddSingleton<IDocumentFileConverter, LibreOfficeDocumentFileConverter>();
124
125 // Services
126 services.AddSingleton<IApplicationInfoService, ApplicationInfoService>();
127 services.AddSingleton<IPersistAndRestoreService, PersistAndRestoreService>();
128 services.AddSingleton<IThemeSelectorService, ThemeSelectorService>();
129 services.AddSingleton<IPageService, PageService>();
130 services.AddSingleton<INavigationService, NavigationService>();
131 services.AddSingleton<IDialogCoordinator>(DialogCoordinator.Instance);
132
133 // Views and ViewModels
134 services.AddSingleton<IShellWindow, ShellWindow>();
135 services.AddSingleton<ShellViewModel>();
136
137 services.AddSingleton<MainViewModel>();
138 services.AddSingleton<MainPage>();
139
140 services.AddSingleton<WorkspaceViewModel>();
141 services.AddSingleton<WorkspacePage>();
142
143 services.AddSingleton<CompetitionViewModel>();
144 services.AddSingleton<CompetitionPage>();
145
146 services.AddSingleton<PeopleViewModel>();
147 services.AddSingleton<PeoplePage>();
148
149 services.AddSingleton<PrepareRacesViewModel>();
150 services.AddSingleton<PrepareRacesPage>();
151
152 services.AddSingleton<CreateDocumentsViewModel>();
153 services.AddSingleton<CreateDocumentsPage>();
154
155 services.AddSingleton<TimeInputViewModel>();
156 services.AddSingleton<TimeInputPage>();
157
158 services.AddSingleton<ResultsViewModel>();
159 services.AddSingleton<ResultsPage>();
160
161 services.AddSingleton<AnalyticsViewModel>();
162 services.AddSingleton<AnalyticsPage>();
163
164 services.AddSingleton<SettingsViewModel>();
165 services.AddSingleton<SettingsPage>();
166
167 services.AddSingleton<IWorkspaceManagerViewModel, WorkspaceManagerViewModel>();
168
169 //Analytics UserControls
170 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetPersonCounters>();
171 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetGenderPersons>();
172 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetStartsCounters>();
173 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetGenderStarts>();
174 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetStartsPerStyle>();
175 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetStartDistances>();
176 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetAgeDistribution>();
177 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetStartsPerPerson>();
178 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetDistancesBetweenStarts>();
179 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetPlacesAgeDistribution>();
180 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetRacesAges>();
181 services.AddSingleton<IAnalyticsWidget, AnalyticsWidgetCompetitionTimes>();
182
183 // Configuration
184 services.Configure<AppConfig>(context.Configuration.GetSection(nameof(AppConfig)));
185 }
186
187 private async void OnExit(object sender, ExitEventArgs e)
188 {
189 await _host.StopAsync();
190 _host.Dispose();
191 _host = null;
192 }
193
194 private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
195 {
196 // TODO: Please log and handle the exception as appropriate to your scenario
197 // For more info see https://docs.microsoft.com/dotnet/api/system.windows.application.dispatcherunhandledexception?view=netcore-3.0
198 }
199}
App()
Constructor for the application.
Definition App.xaml.cs:48
T GetService< T >()
Get a specific service from the host.