diff --git a/AvaloniaApplication14_Inventory_300326/Models/DataBase/BaseRepository.cs b/AvaloniaApplication14_Inventory_300326/Models/DataBase/BaseRepository.cs index da72c28..8813f8f 100644 --- a/AvaloniaApplication14_Inventory_300326/Models/DataBase/BaseRepository.cs +++ b/AvaloniaApplication14_Inventory_300326/Models/DataBase/BaseRepository.cs @@ -81,6 +81,6 @@ public abstract class BaseRepository : IRepository, IDisposable where T : } public void Dispose() { - connection.Dispose(); + connection.Close(); } } \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/DataBase/EmployeeRepository.cs b/AvaloniaApplication14_Inventory_300326/Models/DataBase/EmployeeRepository.cs new file mode 100644 index 0000000..023b4cb --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/DataBase/EmployeeRepository.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using AvaloniaApplication14_autoTest_190326.Models; +using AvaloniaApplication14_Di_test_1125.Models; +using AvaloniaApplication14_Inventory_300326.Models.Models; +using Microsoft.Extensions.Options; +using MySqlConnector; + +namespace AvaloniaApplication14_Inventory_300326.Models.DataBase; + +public class EmployeeRepository : BaseRepository, IDisposable +{ + public EmployeeRepository(IOptions ConnectionString) : base(ConnectionString) + { + OpenConnection(); + } + + public override List? GetAll() + { + string sql = "SELECT * FROM `Employees`"; + List result = new List(); + try + { + using var mc = new MySqlCommand(sql, connection); + using var reader = mc.ExecuteReader(); + while (reader.Read()) + { + Employee employee = new Employee() + { + Id = reader.GetInt32("Id"), + FullName = reader.GetString("FullName"), + PositionId = reader.GetInt32("PositionId"), + }; + result.Add(employee); + } + } + catch (Exception e) + { + Console.WriteLine(e); + + } + return result; + } + + public override Employee? GetById(int id) + { + string sql = "SELECT * FROM `Employees` WHERE Id = @Id"; + Employee result = null; + try + { + using var mc = new MySqlCommand(sql, connection); + mc.Parameters.AddWithValue("@Id", id); + using var reader = mc.ExecuteReader(); + while (reader.Read()) + { + result = new Employee() + { + Id = reader.GetInt32("Id"), + FullName = reader.GetString("FullName"), + PositionId = reader.GetInt32("PositionId"), + }; + } + } + catch (Exception e) + { + Console.WriteLine(e); + } + return result; + } + + public override bool Delete(int id) + { + throw new NotImplementedException(); + } + + public override bool Update(Employee item) + { + throw new NotImplementedException(); + } + + public override bool Add(Employee item) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmeentRepository.cs b/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmeentRepository.cs new file mode 100644 index 0000000..b9695e8 --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/DataBase/EquipmeentRepository.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using AvaloniaApplication14_autoTest_190326.Models; +using AvaloniaApplication14_Di_test_1125.Models; +using AvaloniaApplication14_Inventory_300326.Models.Models; +using Microsoft.Extensions.Options; +using MySqlConnector; + +namespace AvaloniaApplication14_Inventory_300326.Models.DataBase; + +public class EquipmeentRepository : BaseRepository, IDisposable +{ + public EquipmeentRepository(IOptions ConnectionString) : base(ConnectionString) + { + OpenConnection(); + } + + public override List? GetAll() + { + string sql = "select * from `Equipment`"; + List result = new List(); + try + { + using var mc = new MySqlCommand(sql, connection); + mc.ExecuteNonQuery(); + using var reader = mc.ExecuteReader(); + while (reader.Read()) + { + Equipment equipment = new Equipment() + { + Id = reader.GetInt32("Id"), + Name = reader.GetString("Name"), + InvNumber = reader.GetString("InvNumber"), + Date = reader.GetDateOnly("PurchaseDate"), + Cost = reader.GetDecimal("Cost"), + IsWrittenOff = reader.GetBoolean("IsWrittenOff"), + CurrentEmployeeId = reader.GetInt32("CurrentEmployeeId") + }; + result.Add(equipment); + } + } + catch (Exception e) + { + Console.WriteLine(e); + } + return result; + } + + public override Equipment? GetById(int id) + { + throw new NotImplementedException(); + } + + public override bool Delete(int id) + { + throw new NotImplementedException(); + } + + public override bool Update(Equipment item) + { + throw new NotImplementedException(); + } + + public override bool Add(Equipment item) + { + throw new NotImplementedException(); + } +} \ 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 5dae5aa..376420a 100644 --- a/AvaloniaApplication14_Inventory_300326/Models/Models/Equipment.cs +++ b/AvaloniaApplication14_Inventory_300326/Models/Models/Equipment.cs @@ -7,7 +7,7 @@ public class Equipment : DBObj public string InvNumber { get; set; } public string Name { get; set; } public DateOnly Date { get; set; } - public int Cost { get; set; } + 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 new file mode 100644 index 0000000..8c5de8a --- /dev/null +++ b/AvaloniaApplication14_Inventory_300326/Models/Models/EquipmentVisual.cs @@ -0,0 +1,24 @@ +using System; + +namespace AvaloniaApplication14_Inventory_300326.Models.Models; + +public class EquipmentVisual +{ + public int Id { get; set; } + public string InvNumber { get; set; } + public string Name { get; set; } + public DateOnly 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?"Да":"Нет"; + } +} \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/Program.cs b/AvaloniaApplication14_Inventory_300326/Program.cs index fed685e..59458e4 100644 --- a/AvaloniaApplication14_Inventory_300326/Program.cs +++ b/AvaloniaApplication14_Inventory_300326/Program.cs @@ -1,6 +1,7 @@ using Avalonia; using System; using AvaloniaApplication14_Di_test_1125.Models; +using AvaloniaApplication14_Inventory_300326.Models.DataBase; using AvaloniaApplication14_Inventory_300326.ViewModels; using AvaloniaApplication14_Inventory_300326.Views; using Microsoft.Extensions.Configuration; @@ -25,6 +26,7 @@ sealed class Program service.Configure(context.Configuration.GetSection("DatabaseSettings")); service.AddTransient(); service.AddTransient(); + service.AddTransient(); }).Build(); BuildAvaloniaApp(host.Services) diff --git a/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs b/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs index 31158c2..e26639e 100644 --- a/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs +++ b/AvaloniaApplication14_Inventory_300326/ViewModels/MainWindowViewModel.cs @@ -1,17 +1,26 @@ using System; +using System.Collections.Generic; using System.Collections.ObjectModel; +using Avalonia.Controls; +using Avalonia.Data; +using AvaloniaApplication14_Inventory_300326.Models.DataBase; using AvaloniaApplication14_Inventory_300326.Models.Models; using AvaloniaApplication14_Inventory_300326.Views; using CommunityToolkit.Mvvm.ComponentModel; +using Microsoft.Extensions.DependencyInjection; namespace AvaloniaApplication14_Inventory_300326.ViewModels; public partial class MainWindowViewModel : ViewModelBase { private MainWindow _currentWindow; + private IServiceProvider _serviceProvider; [ObservableProperty] private ObservableCollection _entities; [ObservableProperty] private Entity _selectedEntity; + [ObservableProperty] private ObservableCollection _techs; + [ObservableProperty] private ObservableCollection _employees; + [ObservableProperty] private ObservableCollection _positions; partial void OnEntitiesChanged(ObservableCollection value) { @@ -20,22 +29,27 @@ public partial class MainWindowViewModel : ViewModelBase partial void OnSelectedEntityChanged(Entity value) { - switch (value.Id) + if (_currentWindow != null) { - case 0: + switch (value.Id) + { + case 0: + + break; + case 1: - break; - case 1: + break; + case 2: - break; - case 2: - - break; + break; + } } } - public MainWindowViewModel() + public MainWindowViewModel(IServiceProvider serviceProvider, EquipmeentRepository equipmeentRepository) { + _serviceProvider = serviceProvider; + Entities = new(); Entities.Add(new Entity(){Id = 0, Name = "Техника"}); @@ -43,8 +57,26 @@ public partial class MainWindowViewModel : ViewModelBase Entities.Add(new Entity(){Id = 2, Name = "Должности"}); SelectedEntity = Entities[0]; + List test = equipmeentRepository.GetAll(); + + Techs = new ObservableCollection(); + } + + public List ConvertListEqToEqVis(List equipments) + { + List result = new List(); + foreach (var item in equipments) + { + EquipmentVisual eq = new EquipmentVisual(); + using (var empRepo = _serviceProvider.GetRequiredService()) + { + eq.CreateFromEquipment(item); + eq.CurrentEmployee = empRepo.GetById(item.CurrentEmployeeId); + } + result.Add(eq); + } + return result; } - public void SetScreen(MainWindow window) { _currentWindow = window; diff --git a/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml b/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml index da41ff1..f74fb14 100644 --- a/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml +++ b/AvaloniaApplication14_Inventory_300326/Views/MainWindow.axaml @@ -19,9 +19,30 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AvaloniaApplication14_Inventory_300326/appsettings.json b/AvaloniaApplication14_Inventory_300326/appsettings.json index 08e6e48..eded5f2 100644 --- a/AvaloniaApplication14_Inventory_300326/appsettings.json +++ b/AvaloniaApplication14_Inventory_300326/appsettings.json @@ -1,5 +1,5 @@ { "DatabaseSettings": { - "ConnectionString": "server=192.168.200.13;user=student;password=student;database=auto_service_db" + "ConnectionString": "server=192.168.200.13;user=student;password=student;database=TechInventory" } } \ 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 e7f4706..94f727b 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 5b1824b..ac162ec 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+87bcd6176eb43df17d7b079092cb9e1b53850c6e")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b169a275b4b92a8d251235436b93bd0960f3e459")] [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 ea0febb..6d4f169 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 @@ -b1305692aaf9ea52dd6e8e5b2f0805a7d6dc4ecebd5c9a4f90e93bdc05375d82 +8207d089541f27ef630877f99fb8ddb693d2b2d0d47fd66842c9106296f96e66 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 73e1c5c..3e573ef 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 @@ -09f782a9500158492fe24bbc2960ab4ec88cc1ab647d05341362637bd6f000ce +05243996e8958daf2ebabc094115b0206a262c6457c45b77b7c6600d3aa1f314 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 4c780a4..6afb468 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 153314e..5adf943 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 c1ab3a8..d5588c7 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 c1ab3a8..d5588c7 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 diff --git a/AvaloniaApplication14_Inventory_300326/obj/rider.project.model.nuget.info b/AvaloniaApplication14_Inventory_300326/obj/rider.project.model.nuget.info index 9a72598..73ae30a 100644 --- a/AvaloniaApplication14_Inventory_300326/obj/rider.project.model.nuget.info +++ b/AvaloniaApplication14_Inventory_300326/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17750958785606392 \ No newline at end of file +17751742412854983 \ No newline at end of file diff --git a/AvaloniaApplication14_Inventory_300326/obj/rider.project.restore.info b/AvaloniaApplication14_Inventory_300326/obj/rider.project.restore.info index 055862a..73ae30a 100644 --- a/AvaloniaApplication14_Inventory_300326/obj/rider.project.restore.info +++ b/AvaloniaApplication14_Inventory_300326/obj/rider.project.restore.info @@ -1 +1 @@ -17750958843205400 \ No newline at end of file +17751742412854983 \ No newline at end of file