diff --git a/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmentRepository.cs b/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmentRepository.cs index 7181a1e..ef71fca 100644 --- a/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmentRepository.cs +++ b/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmentRepository.cs @@ -137,4 +137,21 @@ public class EquipmentRepository : BaseRepository, IDisposable return false; } } + + public bool ValidateInvNumber(string invNumber) + { + string sql = "select * from `Equipment` where InvNumber=@invNumber"; + using(var mc = new MySqlCommand(sql, connection)) + { + mc.Parameters.AddWithValue("@invNumber", invNumber); + using (var reader = mc.ExecuteReader()) + { + while (reader.Read()) + { + return false; + } + } + } + return true; + } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/EmployeeEditingWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/EmployeeEditingWindowViewModel.cs index 1aa3c93..05b8f84 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/EmployeeEditingWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/EmployeeEditingWindowViewModel.cs @@ -113,9 +113,9 @@ public partial class EmployeeEditingWindowViewModel : ViewModelBase { _currentWindow = window; _currentWindow.ConfirmButton.Content = _isEditing ? "Изменить" : "Добавить"; - if (_isEditing) + if (!_isEditing) { - + _currentWindow.FireButton.IsVisible = false; } } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs index 18bd3d7..084d556 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs @@ -1,6 +1,7 @@ using System; using System.Collections.ObjectModel; using System.Linq; +using System.Threading.Tasks; using AvaloniaApplication14_Inventory_300326.Models.DataBase; using AvaloniaApplication14_Inventory_300326.Models.Factoryes; using AvaloniaApplication14_Inventory_300326.Models.Models; @@ -8,6 +9,8 @@ using AvaloniaApplication14_Inventory_300326.Views; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Microsoft.Extensions.DependencyInjection; +using MsBox.Avalonia; +using MsBox.Avalonia.Enums; namespace AvaloniaApplication14_Inventory_300326.ViewModels; @@ -26,29 +29,46 @@ public partial class EquipmentEditingWindowViewModel : ViewModelBase [ObservableProperty] private DateTimeOffset? _date; [ObservableProperty] private decimal _cost; [ObservableProperty] private bool _isWrittenOff; + [ObservableProperty] private string _isWrittenOffString; [ObservableProperty] private Employee _currentEmployee; [ObservableProperty] private ObservableCollection _employees; [RelayCommand] - private void Confrm() + private async Task Confrm() { - _equipment.InvNumber = InvNumber; - _equipment.Date = Date; - _equipment.Cost = Cost; - _equipment.IsWrittenOff = IsWrittenOff; - _equipment.CurrentEmployee = CurrentEmployee; - _equipment.Name = Name; - using (var repo = _serviceProvider.GetService()) { - if (_isEditing) - { - repo.Update(_equipmentFactory.CreateFromVisual(_equipment)); - } - else - { - repo.Add(_equipmentFactory.CreateFromVisual(_equipment)); - } + _equipment.InvNumber = InvNumber; + _equipment.Date = Date; + _equipment.Cost = Cost; + _equipment.IsWrittenOff = IsWrittenOff; + _equipment.CurrentEmployee = CurrentEmployee; + _equipment.Name = Name; + + if (_isEditing) + { + repo.Update(_equipmentFactory.CreateFromVisual(_equipment)); + } + else + { + if (repo.ValidateInvNumber(InvNumber)) + { + if (Cost>0) + { + repo.Add(_equipmentFactory.CreateFromVisual(_equipment)); + } + else + { + var ErrorWin = MessageBoxManager.GetMessageBoxStandard("Ошибка", "Стоимость должна быть больше 0", ButtonEnum.Ok, Icon.Error); + await ErrorWin.ShowWindowDialogAsync(_currentWindow); + } + } + else + { + var ErrorWin = MessageBoxManager.GetMessageBoxStandard("Ошибка", "Объект с таким инвентарным номером уже существует", ButtonEnum.Ok, Icon.Error); + await ErrorWin.ShowWindowDialogAsync(_currentWindow); + } + } } _currentWindow.Close(); } @@ -80,6 +100,7 @@ public partial class EquipmentEditingWindowViewModel : ViewModelBase Date = _equipment.Date; Cost = _equipment.Cost; IsWrittenOff = _equipment.IsWrittenOff; + IsWrittenOffString = _equipment.IsWrittenOff?"Да":"Нет"; CurrentEmployee = _equipment.CurrentEmployee; Employees = new ObservableCollection(); Employees.Add(CurrentEmployee); @@ -102,10 +123,12 @@ public partial class EquipmentEditingWindowViewModel : ViewModelBase if (_isEditing) { _currentWindow.CurrentEmployeeBox.IsVisible = false; + _currentWindow.IsWrittenOffCheckBox.IsVisible = false; } else { _currentWindow.CurrentEmployeeLabel.IsVisible = false; + _currentWindow.IsWrittenOffLabel.IsVisible = false; } } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs index cbcef2c..27c0d0e 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs @@ -43,9 +43,9 @@ public partial class MainWindowViewModel : ViewModelBase case 0: var equipment = new Equipment(); - var EquipmentVm = ActivatorUtilities.CreateInstance(_serviceProvider, equipment); - var EquipmentWin = ActivatorUtilities.CreateInstance(_serviceProvider, EquipmentVm); - await EquipmentWin.ShowDialog(_currentWindow); + var equipmentVm = ActivatorUtilities.CreateInstance(_serviceProvider, equipment); + var equipmentWin = ActivatorUtilities.CreateInstance(_serviceProvider, equipmentVm); + await equipmentWin.ShowDialog(_currentWindow); EquipmentViewModel.ShowTeches(); EquipmentViewModel.GetTeches(); @@ -54,15 +54,24 @@ public partial class MainWindowViewModel : ViewModelBase case 1: var employee = new Employee(); - var EmployeeVm = ActivatorUtilities.CreateInstance(_serviceProvider, employee); - var EmployeeWin = ActivatorUtilities.CreateInstance(_serviceProvider, EmployeeVm); - await EmployeeWin.ShowDialog(_currentWindow); + var employeeVm = ActivatorUtilities.CreateInstance(_serviceProvider, employee); + var employeeWin = ActivatorUtilities.CreateInstance(_serviceProvider, employeeVm); + await employeeWin.ShowDialog(_currentWindow); EmployeesViewModel.ShowEmployees(); EmployeesViewModel.GetEmployees(); + break; case 2: + var position = new Position(); + var positionVm = ActivatorUtilities.CreateInstance(_serviceProvider, position); + var positionWin = ActivatorUtilities.CreateInstance(_serviceProvider, positionVm); + await positionWin.ShowDialog(_currentWindow); + + PositionViewModel.ShowPositions(); + PositionViewModel.GetPositions(); + break; } } diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/PositionEditingWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/PositionEditingWindowViewModel.cs index 5dee212..00103bf 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/PositionEditingWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/PositionEditingWindowViewModel.cs @@ -1,8 +1,10 @@ using System; +using AvaloniaApplication14_Inventory_300326.Models.DataBase; using AvaloniaApplication14_Inventory_300326.Models.Models; using AvaloniaApplication14_Inventory_300326.Views; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using Microsoft.Extensions.DependencyInjection; namespace AvaloniaApplication14_Inventory_300326.ViewModels; @@ -11,24 +13,38 @@ public partial class PositionEditingWindowViewModel : ViewModelBase private IServiceProvider _serviceProvider; private bool _isEditing; private PositionEditingWindow _currentWindow; + private Position _position; [ObservableProperty] private string _positionName; [RelayCommand] private void Cancel() { - + _currentWindow.Close(); } [RelayCommand] private void Confirm() { - + _position.Name = PositionName; + using (var _positionRepository = _serviceProvider.GetService()) + { + if (_isEditing) + { + _positionRepository.Update(_position); + } + else + { + _positionRepository.Add(_position); + } + } + _currentWindow.Close(); } public PositionEditingWindowViewModel(IServiceProvider serviceProvider, Position position) { _serviceProvider = serviceProvider; _isEditing = !position.IsNew(); + _position = position; if (_isEditing) { PositionName = position.Name; diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/PositionViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/PositionViewModel.cs index 88a62de..62ed464 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/PositionViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/PositionViewModel.cs @@ -39,8 +39,8 @@ public partial class PositionViewModel : ViewModelBase public async Task DoubleTappedPositionDataGrid() { - var PositionVm = ActivatorUtilities.CreateInstance(_serviceProvider, SelectedPosition); - var win = ActivatorUtilities.CreateInstance(_serviceProvider, PositionVm); + var positionVm = ActivatorUtilities.CreateInstance(_serviceProvider, SelectedPosition); + var win = ActivatorUtilities.CreateInstance(_serviceProvider, positionVm); await win.ShowDialog(_currentWindow); ShowPositions(); GetPositions(); diff --git a/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml b/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml index a5b45c2..954323a 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml +++ b/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml @@ -33,7 +33,8 @@ - + + diff --git a/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml b/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml index 980ecc9..9a486ef 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml +++ b/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml @@ -41,16 +41,11 @@ - - - - - - + @@ -59,7 +54,10 @@ - + + + + diff --git a/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml b/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml index f204c1e..801a1b7 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml +++ b/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml @@ -6,13 +6,15 @@ mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="AvaloniaApplication14_Inventory_300326.Views.PositionEditingWindow" x:DataType="vm:PositionEditingWindowViewModel" - Title="PositionEditingWindow"> + Title="PositionEditingWindow" + WindowStartupLocation="CenterOwner" + SizeToContent="WidthAndHeight"> - + - + - + diff --git a/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml.cs b/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml.cs index f7ba274..f5d28e1 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml.cs +++ b/AvaloniaApplication14_Inventory_300326/Views/PositionEditingWindow.axaml.cs @@ -1,13 +1,16 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; +using AvaloniaApplication14_Inventory_300326.ViewModels; namespace AvaloniaApplication14_Inventory_300326.Views; public partial class PositionEditingWindow : Window { - public PositionEditingWindow() + public PositionEditingWindow(PositionEditingWindowViewModel vm) { + DataContext = vm; InitializeComponent(); + vm.SetWindow(this); } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/Avalonia/resources b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/Avalonia/resources index c42e3f4..192d698 100644 Binary files a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/Avalonia/resources and b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/Avalonia/resources differ diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfo.cs b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfo.cs index e9c4373..f975b13 100644 --- a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfo.cs +++ b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("AvaloniaApplication14_Inventory_300326")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+cca23316ccaf6ff854c560608fe74ea070bdd85a")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+114de77f0db0da5ab82bfb620f42bf9b0cec4498")] [assembly: System.Reflection.AssemblyProductAttribute("AvaloniaApplication14_Inventory_300326")] [assembly: System.Reflection.AssemblyTitleAttribute("AvaloniaApplication14_Inventory_300326")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfoInputs.cache b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfoInputs.cache index 649d2e3..95d8086 100644 --- a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfoInputs.cache +++ b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.AssemblyInfoInputs.cache @@ -1 +1 @@ -63e3e38dd183c9ac63856099ca701d49eeb37cffc3fb48b85df28a550d81ee4f +fda96c39694f07179b132880ffdf1ac5e54167a8724825f882522f81db71ce13 diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.dll b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.dll index a8dc561..aebd0c4 100644 Binary files a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.dll and b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.dll differ diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.pdb b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.pdb index d5d029e..d91ca43 100644 Binary files a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.pdb and b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.pdb differ diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/ref/AvaloniaApplication14_Inventory_300326.dll b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/ref/AvaloniaApplication14_Inventory_300326.dll index 4ab2258..958fa36 100644 Binary files a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/ref/AvaloniaApplication14_Inventory_300326.dll and b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/ref/AvaloniaApplication14_Inventory_300326.dll differ diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/refint/AvaloniaApplication14_Inventory_300326.dll b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/refint/AvaloniaApplication14_Inventory_300326.dll index 4ab2258..958fa36 100644 Binary files a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/refint/AvaloniaApplication14_Inventory_300326.dll and b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/refint/AvaloniaApplication14_Inventory_300326.dll differ