Работают все формы редактирования

This commit is contained in:
Никита Потапов 2024-05-16 01:41:37 +04:00
parent 440a888011
commit 92d9928cd2
9 changed files with 166 additions and 7 deletions

View File

@ -53,7 +53,7 @@ namespace MedicalBusinessLogic.BusinessLogics
{
throw new ArgumentNullException(nameof(model));
}
else if (ReadList(new VisitSearchModel {
if (!modelUpdate && ReadList(new VisitSearchModel {
DoctorId = model.DoctorId,
Date = model.Date,
Time = model.Time

View File

@ -13,5 +13,13 @@ namespace MedicalDatabaseContracts.ViewModels
public string Patronymic { get; set; } = string.Empty;
[DisplayName("Телефон")]
public string PhoneNumber { get; set; } = string.Empty;
public string GetFIO()
{
return Name + " " + Surname + " " + Patronymic ?? string.Empty;
}
public override string ToString()
{
return GetFIO();
}
}
}

View File

@ -6,5 +6,9 @@ namespace MedicalDatabaseContracts.ViewModels
{
[DisplayName("Название")]
public string Name { get; set; } = string.Empty;
public override string ToString()
{
return Name;
}
}
}

View File

@ -7,5 +7,9 @@ namespace MedicalDatabaseContracts.ViewModels
public int SpecializationId { get; set; }
[DisplayName("Специальность")]
public string SpecializationName { get; set; } = string.Empty;
public override string ToString()
{
return GetFIO() + ", " + SpecializationName.ToLower();
}
}
}

View File

@ -5,12 +5,16 @@ namespace MedicalDatabaseContracts.ViewModels
public class PatientViewModel : AbstractPersonViewModel
{
[DisplayName("Пол")]
public string Gender { get; set; }
public string Gender { get; set; } = string.Empty;
[DisplayName("Дата рождения")]
public DateTime Birthday { get; set; }
[DisplayName("Вес, кг")]
public int Weight { get; set; }
[DisplayName("Рост, см")]
public int Height { get; set; }
public override string ToString()
{
return GetFIO() + ", " + Birthday.ToShortDateString();
}
}
}

View File

@ -148,6 +148,7 @@
buttonDelete.TabIndex = 3;
buttonDelete.Text = "Удалить";
buttonDelete.UseVisualStyleBackColor = true;
buttonDelete.Click += buttonDelete_Click;
//
// buttonAdd
//

View File

@ -109,10 +109,42 @@ namespace MedicalView.Visits
private void buttonEdit_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormVisit));
if (service is FormVisit form)
if (dataGridView.SelectedRows.Count == 1)
{
form.ShowDialog();
var service = Program.ServiceProvider?.GetService(typeof(FormVisit));
if (service is FormVisit form)
{
form.ModelId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
if (form.ShowDialog() == DialogResult.OK)
{
LoadData();
}
}
}
}
private void buttonDelete_Click(object sender, EventArgs e)
{
if (dataGridView.SelectedRows.Count == 1)
{
if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
_logger.LogInformation("Удаление элемента");
try
{
if (!_visitLogic.Delete(id))
{
throw new Exception("Ошибка при удалении. Дополнительная информация в логах.");
}
LoadData();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка удаления элемента");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}

View File

@ -61,12 +61,14 @@
ApplyToolStripMenuItem.Name = "ApplyToolStripMenuItem";
ApplyToolStripMenuItem.Size = new Size(97, 24);
ApplyToolStripMenuItem.Text = "Сохранить";
ApplyToolStripMenuItem.Click += ApplyToolStripMenuItem_Click;
//
// CancelToolStripMenuItem
//
CancelToolStripMenuItem.Name = "CancelToolStripMenuItem";
CancelToolStripMenuItem.Size = new Size(76, 24);
CancelToolStripMenuItem.Text = "Отмена";
CancelToolStripMenuItem.Click += CancelToolStripMenuItem_Click;
//
// label1
//
@ -198,6 +200,7 @@
MinimumSize = new Size(484, 500);
Name = "FormVisit";
Text = "Редактировать прием";
Load += FormVisit_Load;
menuStrip.ResumeLayout(false);
menuStrip.PerformLayout();
ResumeLayout(false);

View File

@ -1,10 +1,113 @@
namespace MedicalView.Visits
using MedicalDatabaseContracts;
using MedicalDatabaseContracts.Models;
using MedicalDatabaseContracts.SearchModels;
using MedicalDatabaseContracts.ViewModels;
using Microsoft.Extensions.Logging;
using System.Windows.Forms;
namespace MedicalView.Visits
{
public partial class FormVisit : FormAbstractDetail
{
public FormVisit()
private readonly ILogger _logger;
private readonly ILogic<Visit, VisitViewModel, VisitSearchModel> _visitLogic;
private readonly ILogic<Diagnose, DiagnoseViewModel, DiagnoseSearchModel> _diagnoseLogic;
private readonly ILogic<Doctor, DoctorViewModel, DoctorSearchModel> _doctorLogic;
private readonly ILogic<Patient, PatientViewModel, PatientSearchModel> _patientLogic;
public FormVisit(
ILogger<FormVisit> logger,
ILogic<Visit, VisitViewModel, VisitSearchModel> visitLogic,
ILogic<Diagnose, DiagnoseViewModel, DiagnoseSearchModel> diagnoseLogic,
ILogic<Doctor, DoctorViewModel, DoctorSearchModel> doctorLogic,
ILogic<Patient, PatientViewModel, PatientSearchModel> patientLogic)
{
InitializeComponent();
_logger = logger;
_visitLogic = visitLogic;
_diagnoseLogic = diagnoseLogic;
_doctorLogic = doctorLogic;
_patientLogic = patientLogic;
}
private void ApplyToolStripMenuItem_Click(object sender, EventArgs e)
{
if (comboBoxPatient.SelectedItem == null)
{
MessageBox.Show("Выберите пациента", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (comboBoxDoctor.SelectedItem == null)
{
MessageBox.Show("Выберите врача", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_logger.LogInformation("Сохранение модели приема");
try
{
var model = new Visit
{
Id = ModelId ?? 0,
Comment = textBoxComment.Text,
PatientId = (comboBoxPatient.SelectedItem as PatientViewModel).Id,
DoctorId = (comboBoxDoctor.SelectedItem as DoctorViewModel).Id,
DiagnoseId = comboBoxDiagnose.SelectedItem != null ? (comboBoxDiagnose.SelectedItem as DiagnoseViewModel).Id : null,
Date = DateOnly.FromDateTime(datePicker.Value),
Time = TimeOnly.FromDateTime(timePicker.Value)
};
var operationResult = ModelId.HasValue ? _visitLogic.Update(model) : _visitLogic.Create(model);
if (!operationResult)
{
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
}
MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);
DialogResult = DialogResult.OK;
Close();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка сохранения модели приема");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void CancelToolStripMenuItem_Click(object sender, EventArgs e)
{
Cancel();
}
private void FormVisit_Load(object sender, EventArgs e)
{
if (ModelId.HasValue)
{
try
{
_logger.LogInformation("Получение модели приема");
var view = _visitLogic.ReadElement(ModelId.Value);
if (view != null)
{
textBoxComment.Text = view.Comment;
datePicker.Value = view.Date.ToDateTime(view.Time);
timePicker.Value = view.Date.ToDateTime(view.Time);
var patients = _patientLogic.ReadList();
var doctors = _doctorLogic.ReadList();
var diagnoses = _diagnoseLogic.ReadList();
comboBoxPatient.DataSource = patients;
comboBoxDoctor.DataSource = doctors;
comboBoxDiagnose.DataSource = diagnoses;
if (view.DiagnoseId != null)
{
comboBoxDiagnose.SelectedIndex = diagnoses.FindIndex(x => x.Id == view.DiagnoseId);
}
comboBoxDoctor.SelectedIndex = doctors.FindIndex(x => x.Id == view.DoctorId);
comboBoxPatient.SelectedIndex = patients.FindIndex(x => x.Id == view.PatientId);
}
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения модели приема");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}