To Be Continued

main
itjustworks1 2026-04-09 13:10:31 +10:00
parent 211c219a7b
commit 69e1117916
19 changed files with 101 additions and 30 deletions

View File

@ -0,0 +1,6 @@
namespace AvaloniaApplication14_Inventory_300326.Models.Factoryes;
public class EmployeesFactory
{
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -10,4 +10,5 @@ public class Equipment : DBObj
public decimal Cost { get; set; }
public bool IsWrittenOff {get; set;}
public int CurrentEmployeeId { get; set; }
}

View File

@ -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 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?"Да":"Нет";
}
}

View File

@ -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 = "Добавить";
}
}
}

View File

@ -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<EquipmentEditingWindowViewModel>(_serviceProvider, EquipmentFactory.CreateFromVisual(SelectedEquipmentVisual));
var win = ActivatorUtilities.CreateInstance<EquipmentEditingWindow>(_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<EmployeeRepository>())
{
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<PositionRepository>())
{
eve.CreateFromEmployee(item);
eve = EmployeesVisualFactory.CreateFromEmployee(item);
eve.Position = posRepo.GetById(item.PositionId);
}
result.Add(eve);

View File

@ -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">
<StackPanel HorizontalAlignment="Center">
<StackPanel HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal">
<Label Content="Инвентарный номер: "></Label>
<TextBox></TextBox>
<TextBox Text="{Binding Equipment.InvNumber}"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="Название: "></Label>
<TextBox></TextBox>
<TextBox Text="{Binding Equipment.Name}"></TextBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="Дата приобретения: "></Label>
<DatePicker></DatePicker>
<DatePicker SelectedDate="{Binding Equipment.Date}"></DatePicker>
</StackPanel>
<StackPanel Orientation="Horizontal">
@ -37,7 +39,7 @@
<ComboBox></ComboBox>
</StackPanel>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button x:Name="OkButton"></Button>
<Button Content="Отменить"></Button>
</StackPanel>

View File

@ -23,7 +23,7 @@
<Button Content="Добавить" Margin="10,0,0,0"></Button>
</StackPanel>
<ScrollViewer Grid.Row="1" x:Name="ScrollViewerDataGridTech">
<DataGrid x:Name="DataGridTech" ItemsSource="{Binding Techs}" IsReadOnly="True">
<DataGrid x:Name="DataGridTech" ItemsSource="{Binding Techs}" SelectedItem="{Binding SelectedEquipmentVisual}" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Инвентарный номер" Binding="{Binding InvNumber}"></DataGridTextColumn>
<DataGridTextColumn Header="Название" Binding="{Binding Name}"></DataGridTextColumn>

View File

@ -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")]

View File

@ -1 +1 @@
beec506b9d2b5f03e2d47924c1154535ad2de3f1cf50518116adabdbdcfd24be
454401d59e479b388b4887324f8782d3eb2b2898eabb3e94f09f42fd002f2e16

View File

@ -1 +1 @@
806493d39e5a14b7d6db72aa25a7c7887da7ba0828275029c2fe7758240bdf47
5bc4c528ec3f534aa8ca0cf3a075bf3146165660900677036c54b6cf77df99d8