From feb4764a4fcddaa70e99683af87359573bd8e35b Mon Sep 17 00:00:00 2001 From: vikto Date: Tue, 19 May 2026 16:25:27 +1000 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=9F?= =?UTF-8?q?=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.idea.Policlinica/.idea/avalonia.xml | 1 + Policlinica/DB/RecordRep.cs | 26 +++++--- Policlinica/Policlinica.csproj | 6 ++ Policlinica/ViewLocator.cs | 13 +++- Policlinica/ViewModels/AdminViewModel.cs | 41 +++++++++++-- Policlinica/Views/AdminView.axaml | 70 ++++++++++++++-------- Policlinica/Views/DoctorView.axaml | 49 +++++++++++---- Policlinica/Views/RecordItemsView.axaml | 38 +++++++----- Policlinica/Views/ServiceView.axaml | 52 ++++++++++------ 9 files changed, 210 insertions(+), 86 deletions(-) diff --git a/.idea/.idea.Policlinica/.idea/avalonia.xml b/.idea/.idea.Policlinica/.idea/avalonia.xml index 989b0ca..aa23744 100644 --- a/.idea/.idea.Policlinica/.idea/avalonia.xml +++ b/.idea/.idea.Policlinica/.idea/avalonia.xml @@ -22,6 +22,7 @@ + diff --git a/Policlinica/DB/RecordRep.cs b/Policlinica/DB/RecordRep.cs index 10e72ce..c580a86 100644 --- a/Policlinica/DB/RecordRep.cs +++ b/Policlinica/DB/RecordRep.cs @@ -74,8 +74,8 @@ public class RecordRep:BaseRep mc.Parameters.AddWithValue("@total_amount", record.TotalAmount); mc.Parameters.AddWithValue("@record_date", record.RecordDate); - int result = mc.ExecuteNonQuery(); - Console.WriteLine($"ExecuteNonQuery returned: {result}"); + mc.ExecuteNonQuery(); + Console.WriteLine($"ExecuteNonQuery returned"); } // Получаем ID последней вставленной записи @@ -119,21 +119,31 @@ public class RecordRep:BaseRep public bool Delete(int id) { - string sql = @"delete from `records` where `id` = @id"; try { - using (var mc = new MySqlCommand(sql, connection)) + // Сначала удаляем все связанные record_items + string deleteItemsSql = @"delete from `record_items` where `record_id` = @id"; + using (var mc = new MySqlCommand(deleteItemsSql, connection)) { - mc.Parameters.AddWithValue("@id",id); + mc.Parameters.AddWithValue("@id", id); mc.ExecuteNonQuery(); - + Console.WriteLine($"Deleted record items for record {id}"); } - return true; + // Затем удаляем саму запись + string deleteRecordSql = @"delete from `records` where `id` = @id"; + using (var mc = new MySqlCommand(deleteRecordSql, connection)) + { + mc.Parameters.AddWithValue("@id", id); + mc.ExecuteNonQuery(); + Console.WriteLine($"Deleted record {id}"); + } + + return true; } catch (Exception e) { - Console.WriteLine(e); + Console.WriteLine($"Error deleting record: {e}"); } return false; } diff --git a/Policlinica/Policlinica.csproj b/Policlinica/Policlinica.csproj index fbff73c..ec1a6e3 100644 --- a/Policlinica/Policlinica.csproj +++ b/Policlinica/Policlinica.csproj @@ -34,4 +34,10 @@ PreserveNewest + + + + SugarCheckView.axaml + + diff --git a/Policlinica/ViewLocator.cs b/Policlinica/ViewLocator.cs index 4150eb1..ea9a044 100644 --- a/Policlinica/ViewLocator.cs +++ b/Policlinica/ViewLocator.cs @@ -3,6 +3,7 @@ using System.Diagnostics.CodeAnalysis; using Avalonia.Controls; using Avalonia.Controls.Templates; using Policlinica.ViewModels; +using Policlinica.Views; namespace Policlinica; @@ -24,7 +25,15 @@ public class ViewLocator : IDataTemplate if (type != null) { - return (Control)Activator.CreateInstance(type)!; + var view = (Control)Activator.CreateInstance(type)!; + + // Специальная обработка для SugarCheckViewModel + if (param is SugarCheckViewModel sugarVm && view is SugarCheckView sugarView) + { + sugarVm.SetView(sugarView); + } + + return view; } return new TextBlock { Text = "Not Found: " + name }; @@ -34,4 +43,4 @@ public class ViewLocator : IDataTemplate { return data is ViewModelBase; } -} \ No newline at end of file +} diff --git a/Policlinica/ViewModels/AdminViewModel.cs b/Policlinica/ViewModels/AdminViewModel.cs index 119549a..679ac2f 100644 --- a/Policlinica/ViewModels/AdminViewModel.cs +++ b/Policlinica/ViewModels/AdminViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; @@ -23,6 +23,7 @@ public partial class AdminViewModel : ViewModelBase [ObservableProperty] ObservableCollection _recordsList = new(); [ObservableProperty] private Record _selectedRecord; [ObservableProperty] private ObservableCollection userList = new ObservableCollection(); + [ObservableProperty] string statusMessage = ""; public AdminViewModel(Navigation navigation, IServiceProvider provider, RecordRep recordRep,User user,UserRepository userRepository) { @@ -40,16 +41,37 @@ public partial class AdminViewModel : ViewModelBase Id = obj.Id; } - - RecordsList = new ObservableCollection(recordRep.GetRecord(Id)); } [RelayCommand] void DeleteRecord() { - _recordRep.Delete(SelectedRecord.Id); - RecordsList = new ObservableCollection(_recordRep.GetRecord(Id)); + if (SelectedRecord == null) + { + StatusMessage = "Выберите запись для удаления"; + Console.WriteLine("No record selected for deletion"); + return; + } + + try + { + bool deleted = _recordRep.Delete(SelectedRecord.Id); + if (deleted) + { + StatusMessage = "Запись успешно удалена"; + RecordsList = new ObservableCollection(_recordRep.GetRecord(Id)); + } + else + { + StatusMessage = "Ошибка при удалении записи"; + } + } + catch (Exception ex) + { + StatusMessage = $"Ошибка: {ex.Message}"; + Console.WriteLine($"Error deleting record: {ex}"); + } } [RelayCommand] @@ -59,4 +81,11 @@ public partial class AdminViewModel : ViewModelBase _navigation.Navigate(vm); } -} \ No newline at end of file + [RelayCommand] + void GoSugarCheck() + { + var vm = ActivatorUtilities.CreateInstance(_provider); + _navigation.Navigate(vm); + } + +} diff --git a/Policlinica/Views/AdminView.axaml b/Policlinica/Views/AdminView.axaml index b1cf9f0..3c4629f 100644 --- a/Policlinica/Views/AdminView.axaml +++ b/Policlinica/Views/AdminView.axaml @@ -1,33 +1,53 @@ - - - - - - - - - - - - - - - - - - -