From 0efb72816daff20daf5f8aa68e5b744a4ce053f8 Mon Sep 17 00:00:00 2001 From: august Date: Mon, 15 Jun 2026 22:15:01 +1000 Subject: [PATCH] =?UTF-8?q?=D0=AF=20=D1=83=D1=81=D1=82=D0=B0=D0=BB,=20?= =?UTF-8?q?=D0=B1=D0=BE=D1=81=D1=81=E2=80=A6=20=D0=A3=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=B1=D1=8B=D1=82=D1=8C=20=D0=B2=20=D0=B4=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D0=B5,=20=D0=BE=D0=B4=D0=B8=D0=BD=D0=BE=D0=BA?= =?UTF-8?q?=D0=B8=D0=B9,=20=D0=BA=D0=B0=D0=BA=20=D0=B2=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B1=D0=B5=D0=B9=20=D0=BF=D0=BE=D0=B4=20=D0=B4=D0=BE=D0=B6?= =?UTF-8?q?=D0=B4=D1=91=D0=BC=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/avalonia.xml | 2 + Models/Classes/Client.cs | 1 + Models/Database/ClientRepository.cs | 3 ++ Program.cs | 4 ++ .../Adds/AddClientWindowViewModel.cs | 51 ++++++++++++++++++ .../Adds/AddPositionWindowViewModel.cs | 4 +- .../Adds/AddServiceWindowViewModel.cs | 50 +++++++++++++++++ .../WindowViewModels/MainWindowViewModel.cs | 22 ++++++++ Views/AddWindows/AddClientWindow.axaml | 23 ++++++++ Views/AddWindows/AddClientWindow.axaml.cs | 13 +++++ Views/AddWindows/AddPositionWindow.axaml | 2 + Views/AddWindows/AddServiceWindow.axaml | 23 ++++++++ Views/AddWindows/AddServiceWindow.axaml.cs | 13 +++++ Views/AddWindows/AddZoneWindow.axaml | 2 + Views/UserControls/ClientView.axaml | 2 +- Views/Windows/MainWindow.axaml | 9 +++- .../net10.0/Avalonia/Resources.Inputs.cache | 2 +- obj/Debug/net10.0/Avalonia/resources | Bin 192997 -> 196425 bytes .../net10.0/BathHouseManagmet.AssemblyInfo.cs | 4 +- ...BathHouseManagmet.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 6 +++ 21 files changed, 229 insertions(+), 9 deletions(-) create mode 100644 ViewModels/WindowViewModels/Adds/AddClientWindowViewModel.cs create mode 100644 ViewModels/WindowViewModels/Adds/AddServiceWindowViewModel.cs create mode 100644 Views/AddWindows/AddClientWindow.axaml create mode 100644 Views/AddWindows/AddClientWindow.axaml.cs create mode 100644 Views/AddWindows/AddServiceWindow.axaml create mode 100644 Views/AddWindows/AddServiceWindow.axaml.cs 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 @@ + + + + + + + + + + +