Работает редактирование пациентов, врачей, также добавил редактирование по двойному клику

This commit is contained in:
Никита Потапов 2024-05-16 01:04:54 +04:00
parent 2becaa2045
commit 440a888011
8 changed files with 155 additions and 35 deletions

View File

@ -4,7 +4,7 @@ namespace MedicalDatabaseContracts.Models
{
public class Patient : AbstractPersonModel
{
public char Gender { get; set; }
public string Gender { get; set; } = string.Empty;
public DateTime Birthday { get; set; }
public int Weight { get; set; }
public int Height { get; set; }

View File

@ -2,6 +2,6 @@
{
public class PatientSearchModel : AbstractPersonSearchModel
{
public char? Gender { get; set; }
public string? Gender { get; set; }
}
}

View File

@ -5,7 +5,7 @@ namespace MedicalDatabaseContracts.ViewModels
public class PatientViewModel : AbstractPersonViewModel
{
[DisplayName("Пол")]
public char Gender { get; set; }
public string Gender { get; set; }
[DisplayName("Дата рождения")]
public DateTime Birthday { get; set; }
[DisplayName("Вес, кг")]

View File

@ -18,7 +18,7 @@ namespace MedicalPostgresqlDatabase.Storages
Surname = Convert.ToString(reader.GetValue("surname")),
Patronymic = Convert.ToString(reader.GetValue("patronymic")),
PhoneNumber = Convert.ToString(reader.GetValue("phone_number")),
Gender = Convert.ToChar(reader.GetValue("gender")),
Gender = Convert.ToString(reader.GetValue("gender")),
Birthday = Convert.ToDateTime(reader.GetValue("birthday")),
Weight = Convert.ToInt32(reader.GetValue("weight")),
Height = Convert.ToInt32(reader.GetValue("height")),

View File

@ -19,6 +19,8 @@ namespace MedicalView
public FormAbstractList(ILogger<FormAbstractList<M, V, S, F>> logger, ILogic<M, V, S> logic)
{
InitializeComponent();
dataGridView.CellDoubleClick += EditItemToolStripMenuItem_Click;
dataGridView.CellContentDoubleClick += EditItemToolStripMenuItem_Click;
_logger = logger;
_logic = logic;
}

View File

@ -17,6 +17,8 @@ namespace MedicalView.Visits
public FormMain(ILogger<FormMain> logger, ILogic<Visit, VisitViewModel, VisitSearchModel> visitLogic)
{
InitializeComponent();
dataGridView.CellDoubleClick += buttonEdit_Click;
dataGridView.CellContentDoubleClick += buttonEdit_Click;
_logger = logger;
_visitLogic = visitLogic;
}

View File

@ -28,11 +28,11 @@
/// </summary>
private void InitializeComponent()
{
numericUpDown2 = new NumericUpDown();
numericUpDown1 = new NumericUpDown();
numericUpDownWeight = new NumericUpDown();
numericUpDownHeight = new NumericUpDown();
radioButtonGenderFemale = new RadioButton();
radioButtonGenderMale = new RadioButton();
dateTimePicker1 = new DateTimePicker();
datePickerBirthday = new DateTimePicker();
label8 = new Label();
label7 = new Label();
label6 = new Label();
@ -48,24 +48,28 @@
label3 = new Label();
label2 = new Label();
label1 = new Label();
((System.ComponentModel.ISupportInitialize)numericUpDown2).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDown1).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownWeight).BeginInit();
((System.ComponentModel.ISupportInitialize)numericUpDownHeight).BeginInit();
menuStrip.SuspendLayout();
SuspendLayout();
//
// numericUpDown2
// numericUpDownWeight
//
numericUpDown2.Location = new Point(86, 263);
numericUpDown2.Name = "numericUpDown2";
numericUpDown2.Size = new Size(150, 27);
numericUpDown2.TabIndex = 44;
numericUpDownWeight.Location = new Point(86, 263);
numericUpDownWeight.Maximum = new decimal(new int[] { 500, 0, 0, 0 });
numericUpDownWeight.Name = "numericUpDownWeight";
numericUpDownWeight.Size = new Size(150, 27);
numericUpDownWeight.TabIndex = 44;
numericUpDownWeight.Value = new decimal(new int[] { 50, 0, 0, 0 });
//
// numericUpDown1
// numericUpDownHeight
//
numericUpDown1.Location = new Point(86, 230);
numericUpDown1.Name = "numericUpDown1";
numericUpDown1.Size = new Size(150, 27);
numericUpDown1.TabIndex = 43;
numericUpDownHeight.Location = new Point(86, 230);
numericUpDownHeight.Maximum = new decimal(new int[] { 300, 0, 0, 0 });
numericUpDownHeight.Name = "numericUpDownHeight";
numericUpDownHeight.Size = new Size(150, 27);
numericUpDownHeight.TabIndex = 43;
numericUpDownHeight.Value = new decimal(new int[] { 150, 0, 0, 0 });
//
// radioButtonGenderFemale
//
@ -74,27 +78,30 @@
radioButtonGenderFemale.Name = "radioButtonGenderFemale";
radioButtonGenderFemale.Size = new Size(43, 24);
radioButtonGenderFemale.TabIndex = 42;
radioButtonGenderFemale.TabStop = true;
radioButtonGenderFemale.Tag = "Ж";
radioButtonGenderFemale.Text = "Ж";
radioButtonGenderFemale.UseVisualStyleBackColor = true;
//
// radioButtonGenderMale
//
radioButtonGenderMale.AutoSize = true;
radioButtonGenderMale.Checked = true;
radioButtonGenderMale.Location = new Point(71, 199);
radioButtonGenderMale.Name = "radioButtonGenderMale";
radioButtonGenderMale.Size = new Size(43, 24);
radioButtonGenderMale.TabIndex = 41;
radioButtonGenderMale.TabStop = true;
radioButtonGenderMale.Tag = "М";
radioButtonGenderMale.Text = "М";
radioButtonGenderMale.UseVisualStyleBackColor = true;
//
// dateTimePicker1
// datePickerBirthday
//
dateTimePicker1.Location = new Point(140, 165);
dateTimePicker1.Name = "dateTimePicker1";
dateTimePicker1.Size = new Size(185, 27);
dateTimePicker1.TabIndex = 40;
datePickerBirthday.Format = DateTimePickerFormat.Short;
datePickerBirthday.Location = new Point(140, 165);
datePickerBirthday.Name = "datePickerBirthday";
datePickerBirthday.Size = new Size(120, 27);
datePickerBirthday.TabIndex = 40;
//
// label8
//
@ -147,12 +154,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;
//
// textBoxPhoneNumber
//
@ -227,11 +236,11 @@
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(570, 297);
Controls.Add(numericUpDown2);
Controls.Add(numericUpDown1);
Controls.Add(numericUpDownWeight);
Controls.Add(numericUpDownHeight);
Controls.Add(radioButtonGenderFemale);
Controls.Add(radioButtonGenderMale);
Controls.Add(dateTimePicker1);
Controls.Add(datePickerBirthday);
Controls.Add(label8);
Controls.Add(label7);
Controls.Add(label6);
@ -248,8 +257,9 @@
MinimumSize = new Size(0, 344);
Name = "FormPatient";
Text = "Редактировать пациента";
((System.ComponentModel.ISupportInitialize)numericUpDown2).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDown1).EndInit();
Load += FormPatient_Load;
((System.ComponentModel.ISupportInitialize)numericUpDownWeight).EndInit();
((System.ComponentModel.ISupportInitialize)numericUpDownHeight).EndInit();
menuStrip.ResumeLayout(false);
menuStrip.PerformLayout();
ResumeLayout(false);
@ -258,11 +268,11 @@
#endregion
private NumericUpDown numericUpDown2;
private NumericUpDown numericUpDown1;
private NumericUpDown numericUpDownWeight;
private NumericUpDown numericUpDownHeight;
private RadioButton radioButtonGenderFemale;
private RadioButton radioButtonGenderMale;
private DateTimePicker dateTimePicker1;
private DateTimePicker datePickerBirthday;
private Label label8;
private Label label7;
private Label label6;

View File

@ -1,10 +1,116 @@
namespace MedicalView.Patients
using MedicalDatabaseContracts.Models;
using MedicalDatabaseContracts.SearchModels;
using MedicalDatabaseContracts.ViewModels;
using MedicalDatabaseContracts;
using Microsoft.Extensions.Logging;
using MedicalBusinessLogic.BusinessLogics;
namespace MedicalView.Patients
{
public partial class FormPatient : FormAbstractDetail
{
public FormPatient()
private readonly ILogger<FormPatient> _logger;
private readonly ILogic<Patient, PatientViewModel, PatientSearchModel> _logic;
public FormPatient(
ILogger<FormPatient> logger,
ILogic<Patient, PatientViewModel, PatientSearchModel> logic)
{
InitializeComponent();
_logger = logger;
_logic = logic;
}
private void ApplyToolStripMenuItem_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBoxName.Text))
{
MessageBox.Show("Заполните имя", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (string.IsNullOrEmpty(textBoxSurname.Text))
{
MessageBox.Show("Заполните фамилию", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (string.IsNullOrEmpty(textBoxPhoneNumber.Text))
{
MessageBox.Show("Заполните номер телефона", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (!radioButtonGenderMale.Checked && !radioButtonGenderFemale.Checked)
{
MessageBox.Show("Укажите пол", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_logger.LogInformation("Сохранение модели пациента");
try
{
var model = new Patient
{
Id = ModelId ?? 0,
Name = textBoxName.Text,
Surname = textBoxSurname.Text,
Patronymic = textBoxPatronymic.Text,
PhoneNumber = textBoxPhoneNumber.Text,
Birthday = datePickerBirthday.Value,
Gender = (string)(radioButtonGenderMale.Checked ? radioButtonGenderMale.Tag : radioButtonGenderFemale.Tag),
Weight = (int)numericUpDownWeight.Value,
Height = (int)numericUpDownHeight.Value
};
var operationResult = ModelId.HasValue ? _logic.Update(model) : _logic.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 FormPatient_Load(object sender, EventArgs e)
{
if (ModelId.HasValue)
{
try
{
_logger.LogInformation("Получение модели врача");
var view = _logic.ReadElement(ModelId.Value);
if (view != null)
{
textBoxName.Text = view.Name;
textBoxSurname.Text = view.Surname;
textBoxPatronymic.Text = view.Patronymic;
textBoxPhoneNumber.Text = view.PhoneNumber;
datePickerBirthday.Value = view.Birthday;
if (view.Gender == (string)radioButtonGenderMale.Tag)
{
radioButtonGenderMale.Checked = true;
}
else
{
radioButtonGenderFemale.Checked = true;
}
numericUpDownHeight.Value = view.Height;
numericUpDownWeight.Value = view.Weight;
}
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения модели пациента");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}