Kanalschaden werden richtig geparsed

This commit is contained in:
HuskyTeufel
2021-09-30 16:27:28 +02:00
parent 9da7090883
commit 98494be3cf
37 changed files with 576 additions and 136 deletions

View File

@@ -23,6 +23,12 @@ namespace DaSaSo.ViewModel
public sealed class MainWindowViewModel : BaseViewModel
{
private readonly IViewModelAbstractFactory viewModelFactory;
public MainWindowViewModel(IViewModelAbstractFactory viewModelFactory)
{
this.viewModelFactory = viewModelFactory;
}
private readonly IActualProject _actualProject;
private readonly IDataService<Client> _clientDataService;
private readonly IDataService<Project> _projectDataService;
@@ -31,15 +37,15 @@ namespace DaSaSo.ViewModel
private string _clientname = "";
private string _projektname = "";
private string _buildingsitename = "";
RegistryKey registry;
private readonly RegistryKey? registry;
const string REGISTRYKEY = "HKEY_CURRENT_USER\\Software\\Cosysda\\DaSaSo";
public bool CanSelectProject { get => _actualProject.AktuellClient != null; }
public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; }
public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; }
public IMainWindowNavigator _navigator { get; set; }
public IMainWindowNavigator Navigator { get; set; }
public ICommand UpdateCurrentViewModelCommand { get; }
public BaseViewModel CurrentViewModel => _navigator.CurrentViewModel;
public BaseViewModel CurrentViewModel => Navigator.CurrentViewModel;
public string ClientName
{
@@ -78,13 +84,17 @@ namespace DaSaSo.ViewModel
}
}
}
public string ApplicationTitle
public static string ApplicationTitle
{
get
{
string gitVersion;
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DaSaSo.ViewModel.version.txt"))
using (StreamReader reader = new StreamReader(stream))
#pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type.
#pragma warning disable CS8604 // Possible null reference argument.
using (StreamReader reader = new(stream))
#pragma warning restore CS8604 // Possible null reference argument.
{
gitVersion = reader.ReadToEnd();
}
@@ -99,37 +109,37 @@ namespace DaSaSo.ViewModel
IDataService<Buildingsite> buildingsiteDataService
)
{
this._navigator = navigator;
this.Navigator = navigator;
this.viewModelFactory = viewModelFactory;
_clientDataService = clientDataService;
_projectDataService = projectDataService;
_buildingsiteDataService = buildingsiteDataService;
registry = Registry.CurrentUser.OpenSubKey("Software\\Cosysda\\DaSaSo");
if (registry == null) InitRegistry();
_navigator.StateChanged += _navigator_StateChanged;
Navigator.StateChanged += Navigator_StateChanged;
UpdateCurrentViewModelCommand = new UpdateCurrentViewModelCommand(navigator, viewModelFactory);
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Home);
_actualProject = actualProject;
_actualProject.ClientChanged += _actualProject_ClientChanged;
_actualProject.ProjectChanged += _actualProject_ProjectChanged;
_actualProject.BuildingSiteChanged += _actualProject_BuildingSiteChanged;
_actualProject.SewerObjectChanged += _actualProject_SewerObjectChanged;
_actualProject.ClientChanged += ActualProject_ClientChanged;
_actualProject.ProjectChanged += ActualProject_ProjectChanged;
_actualProject.BuildingSiteChanged += ActualProject_BuildingSiteChanged;
_actualProject.SewerObjectChanged += ActualProject_SewerObjectChanged;
ladeRegistry();
LadeRegistry();
}
private async void ladeRegistry()
private async void LadeRegistry()
{
registry = Registry.CurrentUser.OpenSubKey("Software\\Cosysda\\DaSaSo");
if (registry == null) initRegistry();
int clientid = Convert.ToInt32((string)registry.GetValue("lastclient", "-1"));
if (clientid == -1)
return;
Client lastClient = await _clientDataService.Get(clientid);
if (lastClient == null)
{
saveInRegistry("lastclient", "-1");
SaveInRegistry("lastclient", "-1");
return;
}
_actualProject.SetClient(lastClient);
@@ -140,64 +150,65 @@ namespace DaSaSo.ViewModel
Project lastProject = await _projectDataService.Get(projectid);
if(lastProject == null)
{
saveInRegistry("lastproject","-1");
SaveInRegistry("lastproject","-1");
return;
}
_actualProject.SetProject(lastProject);
int buildingsiteid = Convert.ToInt32((string)registry.GetValue("lastbuildingsite", "-1"));
string? value = registry.GetValue("lastbuildingsite", "-1") as string;
int buildingsiteid = Convert.ToInt32(value);
if (buildingsiteid == -1)
return;
Buildingsite lastBuildingiste = await _buildingsiteDataService.Get(buildingsiteid);
if(lastBuildingiste == null)
{
saveInRegistry("lastbuildingsite","-1");
SaveInRegistry("lastbuildingsite","-1");
return;
}
_actualProject.SetBuildingSite(lastBuildingiste);
}
private void saveInRegistry(string key, string value)
private static void SaveInRegistry(string key, string value)
{
Registry.SetValue(REGISTRYKEY, key, value);
}
private void initRegistry()
private void InitRegistry()
{
Registry.CurrentUser.CreateSubKey("Software\\Cosysda\\DaSaSo");
ladeRegistry();
LadeRegistry();
}
private void _actualProject_SewerObjectChanged(object? sender, EventArgs e)
private void ActualProject_SewerObjectChanged(object? sender, EventArgs e)
{
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu);
}
private void _navigator_StateChanged()
private void Navigator_StateChanged()
{
OnPropertyChanged(nameof(CurrentViewModel));
}
private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e)
private void ActualProject_BuildingSiteChanged(object? sender, EventArgs e)
{
saveInRegistry("lastbuildingsite", _actualProject.AktuellBaustelle.Id.ToString());
SaveInRegistry("lastbuildingsite", _actualProject.AktuellBaustelle.Id.ToString());
Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber;
OnPropertyChanged(nameof(CanSelectSewerObjects));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerObjects);
}
private void _actualProject_ProjectChanged(object? sender, EventArgs e)
private void ActualProject_ProjectChanged(object? sender, EventArgs e)
{
saveInRegistry("lastproject", _actualProject.AktuellProjekt.Id.ToString());
SaveInRegistry("lastproject", _actualProject.AktuellProjekt.Id.ToString());
Projektname = _actualProject.AktuellProjekt.Name;
OnPropertyChanged(nameof(CanSelectBuildingSite));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Buildingsites);
}
private void _actualProject_ClientChanged(object? sender, EventArgs e)
private void ActualProject_ClientChanged(object? sender, EventArgs e)
{
saveInRegistry("lastclient", _actualProject.AktuellClient.Id.ToString());
SaveInRegistry("lastclient", _actualProject.AktuellClient.Id.ToString());
ClientName = _actualProject.AktuellClient.Firstname;
OnPropertyChanged(nameof(CanSelectProject));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Projects);