Загрузка данных


using System;
using System.Data.Entity;
using System.Linq;
using System.Windows;
using System.Windows.Controls;

namespace StudentsProgressEdmxApp
{
    public partial class MainWindow : Window
    {
        // ============================================================
        // 1. КОНТЕКСТ БАЗЫ ДАННЫХ
        // ============================================================
        private rassosEntities db = new rassosEntities();

        // ============================================================
        // 2. ГРИДЫ (ЭЛЕМЕНТЫ УПРАВЛЕНИЯ)
        // ============================================================
        public DataGrid DepartmentsGrid { get; private set; }
        public DataGrid DoctorsGrid { get; private set; }
        public DataGrid PatientsGrid { get; private set; }
        public DataGrid DiagnosesGrid { get; private set; }
        public DataGrid HistoryOfDiseasesGrid { get; private set; }
        public TabControl MainTabs { get; private set; }
        public TextBlock CountText { get; private set; }

        // ============================================================
        // 3. КОНСТРУКТОР
        // ============================================================
        public MainWindow()
        {
            InitializeComponent();
            
            // Находим элементы по имени из XAML
            DepartmentsGrid = FindName("DepartmentsGrid") as DataGrid;
            DoctorsGrid = FindName("DoctorsGrid") as DataGrid;
            PatientsGrid = FindName("PatientsGrid") as DataGrid;
            DiagnosesGrid = FindName("DiagnosesGrid") as DataGrid;
            HistoryOfDiseasesGrid = FindName("HistoryOfDiseasesGrid") as DataGrid;
            MainTabs = FindName("MainTabs") as TabControl;
            CountText = FindName("CountText") as TextBlock;
            
            LoadData();
        }

        // ============================================================
        // 4. ЗАГРУЗКА ДАННЫХ
        // ============================================================
        private void LoadData()
        {
            try
            {
                db.departments.Load();
                db.doctors.Load();
                db.patients.Load();
                db.diagnoses.Load();
                db.history_of_diseases.Load();

                if (DepartmentsGrid != null)
                    DepartmentsGrid.ItemsSource = db.departments.Local;
                if (DoctorsGrid != null)
                    DoctorsGrid.ItemsSource = db.doctors.Local;
                if (PatientsGrid != null)
                    PatientsGrid.ItemsSource = db.patients.Local;
                if (DiagnosesGrid != null)
                    DiagnosesGrid.ItemsSource = db.diagnoses.Local;
                if (HistoryOfDiseasesGrid != null)
                    HistoryOfDiseasesGrid.ItemsSource = db.history_of_diseases.Local;

                ShowCount();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка загрузки: " + ex.Message);
            }
        }

        // ============================================================
        // 5. ПОКАЗАТЬ КОЛИЧЕСТВО ЗАПИСЕЙ
        // ============================================================
        private void ShowCount()
        {
            if (CountText == null) return;
            
            if (MainTabs == null)
            {
                CountText.Text = "Записей: 0";
                return;
            }

            try
            {
                int index = MainTabs.SelectedIndex;
                int count = 0;

                switch (index)
                {
                    case 0:
                        count = db.departments.Local.Count;
                        break;
                    case 1:
                        count = db.doctors.Local.Count;
                        break;
                    case 2:
                        count = db.patients.Local.Count;
                        break;
                    case 3:
                        count = db.diagnoses.Local.Count;
                        break;
                    case 4:
                        count = db.history_of_diseases.Local.Count;
                        break;
                    default:
                        count = 0;
                        break;
                }

                CountText.Text = "Записей: " + count;
            }
            catch { CountText.Text = "Записей: 0"; }
        }

        // ============================================================
        // 6. ОБНОВЛЕНИЕ ДАННЫХ (кнопка Refresh)
        // ============================================================
        private void RefreshData(object sender, RoutedEventArgs e)
        {
            LoadData();
        }

        // ============================================================
        // 7. СМЕНА ВКЛАДКИ
        // ============================================================
        private void MainTabs_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ShowCount();
        }

        // ============================================================
        // 8. ДОБАВЛЕНИЕ ЗАПИСИ
        // ============================================================
        private void AddData(object sender, RoutedEventArgs e)
        {
            try
            {
                if (MainTabs == null) return;
                int index = MainTabs.SelectedIndex;

                switch (index)
                {
                    case 0: // Отделения
                        db.departments.Add(new departments
                        {
                            name = "Новое отделение",
                            floor = 1,
                            office_numbers = "101",
                            head_doctor = "Иванов И.И."
                        });
                        break;

                    case 1: // Врачи
                        db.doctors.Add(new doctors
                        {
                            surname = "Новый",
                            name = "Врач",
                            middleName = "Н",
                            position = "Терапевт",
                            experience = 0,
                            scientific_rank = "Нет",
                            address = "г. Москва",
                            id_department = 1
                        });
                        break;

                    case 2: // Пациенты
                        db.patients.Add(new patients
                        {
                            surname = "Новый",
                            name = "Пациент",
                            middleName = "П",
                            address = "г. Москва",
                            city = "Москва",
                            age = 30,
                            sex = "М"
                        });
                        break;

                    case 3: // Диагнозы
                        db.diagnoses.Add(new diagnoses
                        {
                            name = "Новый диагноз",
                            signs = "Симптомы",
                            treatment_period = "7 дней",
                            prescriptions = "Лекарства"
                        });
                        break;

                    case 4: // История болезней
                        db.history_of_diseases.Add(new history_of_diseases
                        {
                            id_patient = 1,
                            id_doctor = 1,
                            id_diagnosis = 1,
                            treatment = "Лечение",
                            date_of_disease = DateTime.Today,
                            date_of_recovery = null,
                            type_of_treatment = "амбулаторное"
                        });
                        break;
                }

                db.SaveChanges();
                LoadData();
                MessageBox.Show("Запись добавлена!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка добавления: " + ex.Message);
            }
        }

        // ============================================================
        // 9. УДАЛЕНИЕ ЗАПИСИ
        // ============================================================
        private void DeleteData(object sender, RoutedEventArgs e)
        {
            try
            {
                if (MainTabs == null) return;
                int index = MainTabs.SelectedIndex;

                switch (index)
                {
                    case 0: // Отделения
                        var dept = DepartmentsGrid?.SelectedItem as departments;
                        if (dept != null) db.departments.Remove(dept);
                        break;

                    case 1: // Врачи
                        var doc = DoctorsGrid?.SelectedItem as doctors;
                        if (doc != null) db.doctors.Remove(doc);
                        break;

                    case 2: // Пациенты
                        var pat = PatientsGrid?.SelectedItem as patients;
                        if (pat != null) db.patients.Remove(pat);
                        break;

                    case 3: // Диагнозы
                        var diag = DiagnosesGrid?.SelectedItem as diagnoses;
                        if (diag != null) db.diagnoses.Remove(diag);
                        break;

                    case 4: // История болезней
                        var hist = HistoryOfDiseasesGrid?.SelectedItem as history_of_diseases;
                        if (hist != null) db.history_of_diseases.Remove(hist);
                        break;
                }

                db.SaveChanges();
                LoadData();
                MessageBox.Show("Запись удалена!", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch
            {
                MessageBox.Show("Запись удалить нельзя! Есть связанные данные.");
            }
        }

        // ============================================================
        // 10. СОХРАНЕНИЕ ПРИ ЗАКРЫТИИ
        // ============================================================
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            try
            {
                db.SaveChanges();
            }
            catch { }
        }
    }
}