diff --git a/.idea/.idea.BathHouseManagmet/.idea/avalonia.xml b/.idea/.idea.BathHouseManagmet/.idea/avalonia.xml index efb2082..1f4b031 100644 --- a/.idea/.idea.BathHouseManagmet/.idea/avalonia.xml +++ b/.idea/.idea.BathHouseManagmet/.idea/avalonia.xml @@ -5,8 +5,10 @@ + + diff --git a/Models/Classes/Client.cs b/Models/Classes/Client.cs index 56b3245..3433d8b 100644 --- a/Models/Classes/Client.cs +++ b/Models/Classes/Client.cs @@ -5,4 +5,5 @@ public class Client public int Id { get; set; } public string Name { get; set; } public string Surname { get; set; } + public string Email { get; set; } } \ No newline at end of file diff --git a/Models/Database/ClientRepository.cs b/Models/Database/ClientRepository.cs index ca689f7..6232c28 100644 --- a/Models/Database/ClientRepository.cs +++ b/Models/Database/ClientRepository.cs @@ -37,6 +37,7 @@ public class ClientRepository : BaseRepository, IDisposable Id = reader.GetInt32("id"), Name = reader.GetString("name"), Surname = reader.GetString("surname"), + Email = reader.GetString("email") }); } } @@ -56,6 +57,7 @@ public class ClientRepository : BaseRepository, IDisposable { command.Parameters.AddWithValue("@name", client.Name); command.Parameters.AddWithValue("@surname", client.Surname); + command.Parameters.AddWithValue("@email", client.Email); command.ExecuteNonQuery(); } } @@ -76,6 +78,7 @@ public class ClientRepository : BaseRepository, IDisposable { command.Parameters.AddWithValue("@name", client.Name); command.Parameters.AddWithValue("@surname", client.Surname); + command.Parameters.AddWithValue("@email", client.Email); command.ExecuteNonQuery(); } } diff --git a/Program.cs b/Program.cs index 92ff755..5b780ec 100644 --- a/Program.cs +++ b/Program.cs @@ -44,6 +44,10 @@ sealed class Program s.AddTransient(); s.AddTransient(); s.AddTransient(); + s.AddTransient(); + s.AddTransient(); + s.AddTransient(); + s.AddTransient(); s.AddTransient(); diff --git a/ViewModels/WindowViewModels/Adds/AddClientWindowViewModel.cs b/ViewModels/WindowViewModels/Adds/AddClientWindowViewModel.cs new file mode 100644 index 0000000..11c387a --- /dev/null +++ b/ViewModels/WindowViewModels/Adds/AddClientWindowViewModel.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using BathHouseManagmet.Database; +using BathHouseManagmet.Models; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Microsoft.Extensions.DependencyInjection; + +namespace BathHouseManagmet.ViewModels; + +public partial class AddClientWindowViewModel : ViewModelBase +{ + private readonly IServiceProvider _serviceProvider; + [ObservableProperty] List _clients; + [ObservableProperty] string _clientName; + [ObservableProperty] string _clientSurname; + [ObservableProperty] string _clientEmail; + + + public AddClientWindowViewModel(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + [RelayCommand] + public void AddClient() + { + var client = new Client + { + Name = _clientName, + Surname = _clientSurname, + Email = _clientEmail + }; + + using (var rep = _serviceProvider.GetRequiredService()) + rep.Add(client); + CloseWindow(); + } + + [RelayCommand] + public void CloseWindow() + { + close(); + } + + private Action close; + public void SetClose(Action close) + { + this.close = close; + } +} \ No newline at end of file diff --git a/ViewModels/WindowViewModels/Adds/AddPositionWindowViewModel.cs b/ViewModels/WindowViewModels/Adds/AddPositionWindowViewModel.cs index 20a6498..3cb7913 100644 --- a/ViewModels/WindowViewModels/Adds/AddPositionWindowViewModel.cs +++ b/ViewModels/WindowViewModels/Adds/AddPositionWindowViewModel.cs @@ -26,13 +26,13 @@ public partial class AddPositionWindowViewModel : ViewModelBase [RelayCommand] public void AddPosition() { - var pos = new Position() + var position = new Position() { Name = PositionName }; using (var rep = _serviceProvider.GetRequiredService()) - rep.Add(pos); + rep.Add(position); CloseWindow(); } diff --git a/ViewModels/WindowViewModels/Adds/AddServiceWindowViewModel.cs b/ViewModels/WindowViewModels/Adds/AddServiceWindowViewModel.cs new file mode 100644 index 0000000..86c124e --- /dev/null +++ b/ViewModels/WindowViewModels/Adds/AddServiceWindowViewModel.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using BathHouseManagmet.Database; +using BathHouseManagmet.Models; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Microsoft.Extensions.DependencyInjection; + +namespace BathHouseManagmet.ViewModels; + +public partial class AddServiceWindowViewModel : ViewModelBase +{ + private readonly IServiceProvider _serviceProvider; + [ObservableProperty] List _services; + [ObservableProperty] string _serviceName; + [ObservableProperty] string _serviceDescription; + [ObservableProperty] int _servicePrice; + + public AddServiceWindowViewModel(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + [RelayCommand] + public void AddService() + { + var service = new Service + { + Name = _serviceName, + Description = _serviceDescription, + Price = _servicePrice + }; + + using (var rep = _serviceProvider.GetRequiredService()) + rep.Add(service); + CloseWindow(); + } + + [RelayCommand] + public void CloseWindow() + { + close(); + } + + private Action close; + public void SetClose(Action close) + { + this.close = close; + } +} \ No newline at end of file diff --git a/ViewModels/WindowViewModels/MainWindowViewModel.cs b/ViewModels/WindowViewModels/MainWindowViewModel.cs index 7e93d0b..c50ac00 100644 --- a/ViewModels/WindowViewModels/MainWindowViewModel.cs +++ b/ViewModels/WindowViewModels/MainWindowViewModel.cs @@ -20,6 +20,7 @@ public partial class MainWindowViewModel : ViewModelBase [ObservableProperty] ZoneViewModel _zoneViewModel; [ObservableProperty] DiscountViewModel _discountViewModel; [ObservableProperty] PositionViewModel _positionViewModel; + [ObservableProperty] ClientViewModel _clientViewModel; public MainWindowViewModel(IServiceProvider serviceProvider) { @@ -31,6 +32,7 @@ public partial class MainWindowViewModel : ViewModelBase ZoneViewModel = _serviceProvider.GetRequiredService(); DiscountViewModel = _serviceProvider.GetRequiredService(); PositionViewModel = _serviceProvider.GetRequiredService(); + ClientViewModel = _serviceProvider.GetRequiredService(); } [RelayCommand] @@ -62,4 +64,24 @@ public partial class MainWindowViewModel : ViewModelBase win.Show(); vm.SetClose(win.Close); } + + [RelayCommand] + public void AddClient() + { + var vm = ActivatorUtilities.CreateInstance(_serviceProvider); + var win = _serviceProvider.GetService(); + win.DataContext = vm; + win.Show(); + vm.SetClose(win.Close); + } + + [RelayCommand] + public void AddService() + { + var vm = ActivatorUtilities.CreateInstance(_serviceProvider); + var win = _serviceProvider.GetService(); + win.DataContext = vm; + win.Show(); + vm.SetClose(win.Close); + } } \ No newline at end of file diff --git a/Views/AddWindows/AddClientWindow.axaml b/Views/AddWindows/AddClientWindow.axaml new file mode 100644 index 0000000..402ae9e --- /dev/null +++ b/Views/AddWindows/AddClientWindow.axaml @@ -0,0 +1,23 @@ + + + + + + + + + + +