Beispiel #1
0
        // Обновляем данные в БД в фоновом режиме
        private void backgroundDbUpdateWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            DbRecordChangesTask updateDbTask = e.Argument as DbRecordChangesTask;

            try
            {
                using (MedicamentRemainsContext mc = new MedicamentRemainsContext())
                {
                    MedicamentRemain record = updateDbTask.DbRecord as MedicamentRemain;
                    record.UpdateDate = DateTime.Now;

                    switch (updateDbTask.ChangesType)
                    {
                    case DbRecordChangesType.Create:
                        backgroundDbUpdateWorker.ReportProgress(0, "Створення запису по медикаменту " + record.Medicament + " ...");

                        mc.Medicaments.Attach(record.Medicament);
                        mc.MedicamentRemains.Add(record);
                        mc.SaveChanges();

                        backgroundDbUpdateWorker.ReportProgress(0, "Запис успішно доданий до бази данних!");
                        break;

                    case DbRecordChangesType.Update:
                        backgroundDbUpdateWorker.ReportProgress(0, "Оновлення запису по медикаменту " + record.Medicament + " ...");

                        mc.Medicaments.Attach(record.Medicament);
                        mc.Entry <MedicamentRemain>(record).State = System.Data.Entity.EntityState.Modified;
                        mc.SaveChanges();

                        backgroundDbUpdateWorker.ReportProgress(0, "Запис успішно оновлений у базі данних!");
                        break;

                    case DbRecordChangesType.Remove:
                        backgroundDbUpdateWorker.ReportProgress(0, "Видалення запису по медикаменту " + record.Medicament + " ...");

                        MedicamentRemain item = mc.MedicamentRemains.Where(p => (p.Id == record.Id)).First();
                        mc.MedicamentRemains.Remove(item);
                        mc.SaveChanges();

                        backgroundDbUpdateWorker.ReportProgress(0, "Запис успішно видалений з бази данних!");
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                backgroundDbUpdateWorker.ReportProgress(0, "Помилка: " + ex.Message);
            }

            // Задержка, чтобы пользователь смог прочитать сообщение об успехе операции либо об ошибке
            System.Threading.Thread.Sleep(3000);
        }
        private void actionButton_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(medicamentNameTextBox.Text))
            {
                NotificationHelper.ShowError("Ви не ввели назву");
                return;
            }

            try
            {
                using (MedicamentRemainsContext mc = new MedicamentRemainsContext())
                {
                    if (loadedMedicament == null)
                    {
                        currentMedicament = new Medicament();
                    }
                    else
                    {
                        currentMedicament = loadedMedicament;
                    }

                    currentMedicament.Name              = medicamentNameTextBox.Text.Trim();
                    currentMedicament.Meter             = meterCBList.SelectedItem as Meter;
                    currentMedicament.MeterId           = Convert.ToInt32(meterCBList.SelectedValue);
                    currentMedicament.Group             = null;
                    currentMedicament.MedicamentGroupId = Convert.ToInt32(medGroupsCBList.SelectedValue);

                    mc.Meters.Attach(currentMedicament.Meter);

                    if (currentMedicament.Id > 0)
                    {
                        mc.Medicaments.Attach(currentMedicament);
                        mc.Entry <Medicament>(currentMedicament).State = System.Data.Entity.EntityState.Modified;
                    }
                    else
                    {
                        mc.Medicaments.Add(currentMedicament);
                    }

                    mc.SaveChanges();
                    NotificationHelper.ShowInfo("Данні успішно збережено!");
                }
            }
            catch (Exception ex)
            {
                NotificationHelper.ShowError("Помилка при збережені данних до БД.\n Подробиці: \n" + ex.Message);
            }

            Close();
        }
Beispiel #3
0
        // TODO: Проверить удалиться ли элемент из DataGridView, если удалить его из связаного источника без вызова метода Update на DataGridView
        private void removeMedicamentButton_Click(object sender, EventArgs e)
        {
            Medicament selectedMedicament = medicamentsTable.SelectedRows[0].DataBoundItem as Medicament;
            int        currentRowIndex    = medicamentsTable.SelectedRows[0].Index;

            if (NotificationHelper.ShowQuestion(string.Format("Ви впевнені, що хочете видалити всі данні про медикамент '{0}'", selectedMedicament))
                == System.Windows.Forms.DialogResult.Yes)
            {
                medicamentsList.Remove(selectedMedicament);
                new Task(
                    () =>
                {
                    using (MedicamentRemainsContext mc = new MedicamentRemainsContext())
                    {
                        mc.Medicaments.Attach(selectedMedicament);
                        mc.Medicaments.Remove(selectedMedicament);
                        mc.SaveChanges();
                    }
                }
                    ).Start();
                RecalculateRowsNumbers(currentRowIndex);
            }
        }
        private void dbUpdateWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            DbRecordChangesTask dbChangesTask = e.Argument as DbRecordChangesTask;

            try
            {
                using (MedicamentRemainsContext mc = new MedicamentRemainsContext())
                {
                    if (tableItem is Meter)
                    {
                        Meter record = dbChangesTask.DbRecord as Meter;

                        switch (dbChangesTask.ChangesType)
                        {
                        case DbRecordChangesType.Create:
                            dbUpdateWorker.ReportProgress(0, "Створення нової одиниці виміру...");
                            record.Name = record.Name.Trim();
                            mc.Meters.Add(record);
                            break;

                        case DbRecordChangesType.Update:
                            dbUpdateWorker.ReportProgress(0, "Змінення одиниці виміру...");
                            record.Name = record.Name.Trim();
                            mc.Meters.Attach(record);
                            mc.Entry <Meter>(record).State = System.Data.Entity.EntityState.Modified;
                            break;

                        case DbRecordChangesType.Remove:
                            dbUpdateWorker.ReportProgress(0, "Видалення одиниці виміру...");
                            mc.Meters.Attach(record);
                            mc.Meters.Remove(record);
                            break;
                        }
                    }
                    else if (tableItem is HospitalDepartment)
                    {
                        HospitalDepartment record = dbChangesTask.DbRecord as HospitalDepartment;

                        switch (dbChangesTask.ChangesType)
                        {
                        case DbRecordChangesType.Create:
                            dbUpdateWorker.ReportProgress(0, "Створення нового відділення...");
                            record.Name = record.Name.Trim();
                            mc.HospitalDepartments.Add(record);
                            break;

                        case DbRecordChangesType.Update:
                            dbUpdateWorker.ReportProgress(0, "Змінення даних про відділення...");
                            record.Name = record.Name.Trim();
                            mc.HospitalDepartments.Attach(record);
                            mc.Entry <HospitalDepartment>(record).State = System.Data.Entity.EntityState.Modified;
                            break;

                        case DbRecordChangesType.Remove:
                            dbUpdateWorker.ReportProgress(0, "Видалення даних про відділення...");
                            mc.HospitalDepartments.Attach(record);
                            mc.HospitalDepartments.Remove(record);
                            break;
                        }
                    }
                    else if (tableItem is MedicamentGroup)
                    {
                        MedicamentGroup record = dbChangesTask.DbRecord as MedicamentGroup;

                        switch (dbChangesTask.ChangesType)
                        {
                        case DbRecordChangesType.Create:
                            dbUpdateWorker.ReportProgress(0, "Створення нової группи медикаментів...");
                            record.Name = record.Name.Trim();
                            mc.MedicamentsGroups.Add(record);
                            break;

                        case DbRecordChangesType.Update:
                            dbUpdateWorker.ReportProgress(0, "Змінення группи медикаментів...");
                            record.Name = record.Name.Trim();
                            mc.MedicamentsGroups.Attach(record);
                            mc.Entry <MedicamentGroup>(record).State = System.Data.Entity.EntityState.Modified;
                            break;

                        case DbRecordChangesType.Remove:
                            dbUpdateWorker.ReportProgress(0, "Видалення группи медикаментів...");
                            mc.MedicamentsGroups.Attach(record);
                            mc.MedicamentsGroups.Remove(record);
                            break;
                        }
                    }

                    mc.SaveChanges();

                    if (tableItem is HospitalDepartment)
                    {
                        isDepartmentListUpdated = true;
                    }

                    dbUpdateWorker.ReportProgress(0, "Дані успішно збережені!");
                }
            }
            catch (Exception ex)
            {
                dbUpdateWorker.ReportProgress(0, "Помилка: " + ex.Message);
            }

            Thread.Sleep(3000);
        }