diff --git a/AvaloniaApplication14_Inventory_300326/Models/Factories/EmployeesFactory.cs b/AvaloniaApplication14_Inventory_300326/Models/Factories/EmployeesFactory.cs new file mode 100644 index 0000000..890758f --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/Factories/EmployeesFactory.cs @@ -0,0 +1,6 @@ +namespace AvaloniaApplication14_Inventory_300326.Models.Factoryes; + +public class EmployeesFactory +{ + +} \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/Factories/EmployeesVisualFactory.cs b/AvaloniaApplication14_Inventory_300326/Models/Factories/EmployeesVisualFactory.cs new file mode 100644 index 0000000..62eb032 --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/Factories/EmployeesVisualFactory.cs @@ -0,0 +1,14 @@ +using AvaloniaApplication14_Inventory_300326.Models.Models; + +namespace AvaloniaApplication14_Inventory_300326.Models.Factoryes; + +public static class EmployeesVisualFactory +{ + public static EmployeeVisual CreateFromEmployee(Employee employee) + { + var result = new EmployeeVisual(); + result.Id = employee.Id; + result.FullName = employee.FullName; + return result; + } +} \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/Factories/EquipmentFactory.cs b/AvaloniaApplication14_Inventory_300326/Models/Factories/EquipmentFactory.cs new file mode 100644 index 0000000..c129800 --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/Factories/EquipmentFactory.cs @@ -0,0 +1,21 @@ +using System; +using AvaloniaApplication14_Inventory_300326.Models.Models; + +namespace AvaloniaApplication14_Inventory_300326.Models.Factoryes; + +public static class EquipmentFactory +{ + public static Equipment CreateFromVisual(EquipmentVisual visual) + { + var result = new Equipment(); + + result.InvNumber = visual.InvNumber; + result.Name = visual.Name; + result.Date = DateOnly.FromDateTime(visual.Date.Value.DateTime); + result.Cost = visual.Cost; + result.IsWrittenOff = visual.IsWrittenOff != "Нет"; + result.CurrentEmployeeId = visual.CurrentEmployee.Id; + + return result; + } +} \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/Factories/EquipmentVisualFactory.cs b/AvaloniaApplication14_Inventory_300326/Models/Factories/EquipmentVisualFactory.cs new file mode 100644 index 0000000..fa03f6e --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/Factories/EquipmentVisualFactory.cs @@ -0,0 +1,21 @@ +using System; +using AvaloniaApplication14_Inventory_300326.Models.Models; + +namespace AvaloniaApplication14_Inventory_300326.Models.Factoryes; + +public static class EquipmentVisualFactory +{ + public static EquipmentVisual CreateFromEquipment(Equipment equipment) + { + var result = new EquipmentVisual(); + + result.Id = equipment.Id; + result.InvNumber = equipment.InvNumber; + result.Name = equipment.Name; + result.Date = new DateTimeOffset(equipment.Date.ToDateTime(TimeOnly.MinValue)); + result.Cost = equipment.Cost; + result.IsWrittenOff = equipment.IsWrittenOff?"Да":"Нет"; + + return result; + } +} \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/Models/EmployeeVisual.cs b/AvaloniaApplication14_Inventory_300326/Models/Models/EmployeeVisual.cs index f77306f..08d589a 100644 --- a/AvaloniaApplication14_Inventory_300326/Models/Models/EmployeeVisual.cs +++ b/AvaloniaApplication14_Inventory_300326/Models/Models/EmployeeVisual.cs @@ -6,9 +6,4 @@ public class EmployeeVisual public string FullName { get; set; } public Position Position { get; set; } - public void CreateFromEmployee(Employee employee) - { - Id = employee.Id; - FullName = employee.FullName; - } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/Models/Equipment.cs b/AvaloniaApplication14_Inventory_300326/Models/Models/Equipment.cs index 376420a..fbd3e54 100644 --- a/AvaloniaApplication14_Inventory_300326/Models/Models/Equipment.cs +++ b/AvaloniaApplication14_Inventory_300326/Models/Models/Equipment.cs @@ -10,4 +10,5 @@ public class Equipment : DBObj public decimal Cost { get; set; } public bool IsWrittenOff {get; set;} public int CurrentEmployeeId { get; set; } + } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/Models/EquipmentVisual.cs b/AvaloniaApplication14_Inventory_300326/Models/Models/EquipmentVisual.cs index 8c5de8a..5490e1a 100644 --- a/AvaloniaApplication14_Inventory_300326/Models/Models/EquipmentVisual.cs +++ b/AvaloniaApplication14_Inventory_300326/Models/Models/EquipmentVisual.cs @@ -7,18 +7,9 @@ public class EquipmentVisual public int Id { get; set; } public string InvNumber { get; set; } public string Name { get; set; } - public DateOnly Date { get; set; } + public DateTimeOffset? Date { get; set; } public decimal Cost { get; set; } - public string IsWrittenOff {get; set;} + public string IsWrittenOff { get; set; } public Employee CurrentEmployee { get; set; } - - public void CreateFromEquipment(Equipment equipment) - { - Id = equipment.Id; - InvNumber = equipment.InvNumber; - Name = equipment.Name; - Date = equipment.Date; - Cost = equipment.Cost; - IsWrittenOff = equipment.IsWrittenOff?"Да":"Нет"; - } + } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs index 2068425..350a1ea 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/EquipmentEditingWindowViewModel.cs @@ -1,12 +1,29 @@ +using AvaloniaApplication14_Inventory_300326.Models.Factoryes; +using AvaloniaApplication14_Inventory_300326.Models.Models; using AvaloniaApplication14_Inventory_300326.Views; +using CommunityToolkit.Mvvm.ComponentModel; namespace AvaloniaApplication14_Inventory_300326.ViewModels; -public class EquipmentEditingWindowViewModel : ViewModelBase +public partial class EquipmentEditingWindowViewModel : ViewModelBase { private EquipmentEditingWindow _currentWindow; + [ObservableProperty] private EquipmentVisual _equipment; + + public EquipmentEditingWindowViewModel(Equipment equipment) + { + Equipment = EquipmentVisualFactory.CreateFromEquipment(equipment); + } public void SetWindow(EquipmentEditingWindow window) { _currentWindow = window; + if (Equipment == EquipmentVisualFactory.CreateFromEquipment(new Equipment())) + { + _currentWindow.OkButton.Content = "Изменить"; + } + else + { + _currentWindow.OkButton.Content = "Добавить"; + } } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs index 5b4782f..4f7430d 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs @@ -8,6 +8,7 @@ using Avalonia.Data; using Avalonia.Input; using Avalonia.LogicalTree; using AvaloniaApplication14_Inventory_300326.Models.DataBase; +using AvaloniaApplication14_Inventory_300326.Models.Factoryes; using AvaloniaApplication14_Inventory_300326.Models.Models; using AvaloniaApplication14_Inventory_300326.Views; using CommunityToolkit.Mvvm.ComponentModel; @@ -136,7 +137,9 @@ public partial class MainWindowViewModel : ViewModelBase private void DoubleTappedTechDataGrid() { - Console.WriteLine("DoubleTappedTechDataGrid"); + var vm = ActivatorUtilities.CreateInstance(_serviceProvider, EquipmentFactory.CreateFromVisual(SelectedEquipmentVisual)); + var win = ActivatorUtilities.CreateInstance(_serviceProvider, vm); + win.ShowDialog(_currentWindow); } private void DoubleTappedEmployeeDataGrid() @@ -157,7 +160,7 @@ public partial class MainWindowViewModel : ViewModelBase EquipmentVisual eq = new EquipmentVisual(); using (var empRepo = _serviceProvider.GetRequiredService()) { - eq.CreateFromEquipment(item); + eq = EquipmentVisualFactory.CreateFromEquipment(item); eq.CurrentEmployee = empRepo.GetById(item.CurrentEmployeeId); } result.Add(eq); @@ -173,7 +176,7 @@ public partial class MainWindowViewModel : ViewModelBase EmployeeVisual eve = new EmployeeVisual(); using (var posRepo = _serviceProvider.GetRequiredService()) { - eve.CreateFromEmployee(item); + eve = EmployeesVisualFactory.CreateFromEmployee(item); eve.Position = posRepo.GetById(item.PositionId); } result.Add(eve); diff --git a/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml b/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml index b94cb0f..c58b128 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml +++ b/AvaloniaApplication14_Inventory_300326/Views/EquipmentEditingWindow.axaml @@ -2,24 +2,26 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:vm="using:AvaloniaApplication14_Inventory_300326.ViewModels" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="AvaloniaApplication14_Inventory_300326.Views.EquipmentEditingWindow" + x:DataType="vm:EquipmentEditingWindowViewModel" Title="EquipmentEditingWindow"> - + - + - + - + @@ -37,7 +39,7 @@ - + diff --git a/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml b/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml index 0623b23..4bd621a 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml +++ b/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml @@ -23,7 +23,7 @@ - + diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/Avalonia/resources b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/Avalonia/resources index b8cce1e..e4612a0 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 79dcd36..58634ee 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+780c9aad7c6af2565938cf22ec4549263f45beda")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+211c219a7b912ccb4d85ae18d8c9a6ea6db420d4")] [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 dc04523..db5e833 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 @@ -beec506b9d2b5f03e2d47924c1154535ad2de3f1cf50518116adabdbdcfd24be +454401d59e479b388b4887324f8782d3eb2b2898eabb3e94f09f42fd002f2e16 diff --git a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.csproj.CoreCompileInputs.cache b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.csproj.CoreCompileInputs.cache index 9752a85..ed4ff55 100644 --- a/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.csproj.CoreCompileInputs.cache +++ b/AvaloniaApplication14_Inventory_300326/obj/Debug/net9.0/AvaloniaApplication14_Inventory_300326.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -806493d39e5a14b7d6db72aa25a7c7887da7ba0828275029c2fe7758240bdf47 +5bc4c528ec3f534aa8ca0cf3a075bf3146165660900677036c54b6cf77df99d8 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 97d7e70..62aa023 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 817c3a0..95e8028 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 d0a0264..f7a7406 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 d0a0264..f7a7406 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