From 93c765b48b85efb35436aed0194a40a9649abb20 Mon Sep 17 00:00:00 2001 From: vkobi Date: Mon, 11 Nov 2024 11:57:47 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/DoctorPatient.cs | 21 -- .../Entities/Enums/MedicineType.cs | 11 + .../Entities/Medicine.cs | 22 ++ .../Entities/Payment.cs | 2 +- .../Entities/Reception.cs | 6 +- .../Entities/ReceptionMedicine.cs | 17 ++ .../RegistrationOfPatients/Form1.Designer.cs | 39 --- .../RegistrationOfPatients/Form1.cs | 10 - .../FormRegistration.Designer.cs | 138 ++++++++++ .../FormRegistration.cs | 74 ++++++ .../FormRegistration.resx | 123 +++++++++ .../Forms/FormDoctor.Designer.cs | 96 +++++++ .../Forms/FormDoctor.cs | 80 ++++++ .../{Form1.resx => Forms/FormDoctor.resx} | 54 ++-- .../Forms/FormDoctors.Designer.cs | 127 +++++++++ .../Forms/FormDoctors.cs | 110 ++++++++ .../Forms/FormDoctors.resx | 120 +++++++++ .../Forms/FormMedicine.Designer.cs | 120 +++++++++ .../Forms/FormMedicine.cs | 96 +++++++ .../Forms/FormMedicine.resx | 120 +++++++++ .../Forms/FormMedicines.Designer.cs | 127 +++++++++ .../Forms/FormMedicines.cs | 107 ++++++++ .../Forms/FormMedicines.resx | 120 +++++++++ .../Forms/FormPatient.Designer.cs | 118 +++++++++ .../Forms/FormPatient.cs | 81 ++++++ .../Forms/FormPatient.resx | 120 +++++++++ .../Forms/FormPatients.Designer.cs | 127 +++++++++ .../Forms/FormPatients.cs | 109 ++++++++ .../Forms/FormPatients.resx | 120 +++++++++ .../Forms/FormPayment.Designer.cs | 192 ++++++++++++++ .../Forms/FormPayment.cs | 51 ++++ .../Forms/FormPayment.resx | 120 +++++++++ .../Forms/FormPayments.Designer.cs | 113 ++++++++ .../Forms/FormPayments.cs | 86 ++++++ .../Forms/FormPayments.resx | 120 +++++++++ .../Forms/FormReception.Designer.cs | 245 ++++++++++++++++++ .../Forms/FormReception.cs | 71 +++++ .../Forms/FormReception.resx | 132 ++++++++++ .../Forms/FormReceptions.Designer.cs | 99 +++++++ .../Forms/FormReceptions.cs | 52 ++++ .../Forms/FormReceptions.resx | 120 +++++++++ .../RegistrationOfPatients/Program.cs | 20 +- .../Properties/Resources.Designer.cs | 103 ++++++++ .../Properties/Resources.resx | 133 ++++++++++ .../RegistrationOfPatients.csproj | 21 +- .../Repositories/IDoctorRepository.cs | 2 +- .../Repositories/IMedicineRepository.cs | 16 ++ .../Repositories/IPatientRepository.cs | 2 +- .../Repositories/IPaymentRepository.cs | 2 +- .../Repositories/IReceptionRepository.cs | 2 +- .../Implementations/DoctorRepository.cs | 4 +- .../Implementations/MedicineRepository.cs | 30 +++ .../Implementations/PatientRepository.cs | 4 +- .../Implementations/PaymentRepository.cs | 4 +- .../Implementations/ReceptionRepository.cs | 5 +- .../RegistrationOfPatients/Resources/add.png | Bin 0 -> 32680 bytes .../Resources/minus.jpg | Bin 0 -> 24362 bytes .../Resources/pencil.jpg | Bin 0 -> 68995 bytes .../Resources/polyclinic.jpg | Bin 0 -> 93898 bytes 59 files changed, 4049 insertions(+), 115 deletions(-) delete mode 100644 RegistrationOfPatients/RegistrationOfPatients/Entities/DoctorPatient.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Entities/Enums/MedicineType.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Entities/Medicine.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Entities/ReceptionMedicine.cs delete mode 100644 RegistrationOfPatients/RegistrationOfPatients/Form1.Designer.cs delete mode 100644 RegistrationOfPatients/RegistrationOfPatients/Form1.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/FormRegistration.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/FormRegistration.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/FormRegistration.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.cs rename RegistrationOfPatients/RegistrationOfPatients/{Form1.resx => Forms/FormDoctor.resx} (92%) create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.Designer.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.resx create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Repositories/IMedicineRepository.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/MedicineRepository.cs create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Resources/add.png create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Resources/minus.jpg create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Resources/pencil.jpg create mode 100644 RegistrationOfPatients/RegistrationOfPatients/Resources/polyclinic.jpg diff --git a/RegistrationOfPatients/RegistrationOfPatients/Entities/DoctorPatient.cs b/RegistrationOfPatients/RegistrationOfPatients/Entities/DoctorPatient.cs deleted file mode 100644 index 76a37cb..0000000 --- a/RegistrationOfPatients/RegistrationOfPatients/Entities/DoctorPatient.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace RegistrationOfPatients.Entities; - -public class DoctorPatient -{ - public int Id { get; private set; } - public int PatientId { get; private set; } - public int DoctorId { get; private set; } - public DateTime DateStart { get; private set; } - public DateTime? DateStop { get; private set; } - public static DoctorPatient CreateElement(int id, int patientId, int doctorId, DateTime? dateStop = null) - { - return new DoctorPatient - { - Id = id, - PatientId = patientId, - DoctorId = doctorId, - DateStart = DateTime.Now, - DateStop = dateStop - }; - } -} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Entities/Enums/MedicineType.cs b/RegistrationOfPatients/RegistrationOfPatients/Entities/Enums/MedicineType.cs new file mode 100644 index 0000000..a7fcc5f --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Entities/Enums/MedicineType.cs @@ -0,0 +1,11 @@ +namespace RegistrationOfPatients.Entities.Enums; + +[Flags] +public enum MedicineType +{ + None = 0, + Aspirin = 1, + Sertraline = 2, + Claritin = 4, + Tylenol = 8 +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Entities/Medicine.cs b/RegistrationOfPatients/RegistrationOfPatients/Entities/Medicine.cs new file mode 100644 index 0000000..ba0d199 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Entities/Medicine.cs @@ -0,0 +1,22 @@ +using Microsoft.VisualBasic.FileIO; +using RegistrationOfPatients.Entities.Enums; +using System.Security.Cryptography.Pkcs; + +namespace RegistrationOfPatients.Entities; + +public class Medicine +{ + + public int Id { get; set; } + public MedicineType MedicineType { get; private set; } + public string Description { get; private set; } = string.Empty; + public static Medicine CreateEntity(int id, MedicineType medicineType, string description) + { + return new Medicine + { + Id = id, + MedicineType = medicineType, + Description = description ?? string.Empty + }; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Entities/Payment.cs b/RegistrationOfPatients/RegistrationOfPatients/Entities/Payment.cs index f659723..f9182ec 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Entities/Payment.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Entities/Payment.cs @@ -8,7 +8,7 @@ public class Payment public DateTime Date { get; private set; } public int PercentageOfRecoveries { get; private set; } public int DoctorId { get; private set; } - public static Payment CreateOperation(int id, int salary, int totalPatients, int percentageOfRecoveries, int doctorId) + public static Payment CreateOperation(int id, int salary, int totalPatients, DateTime date, int percentageOfRecoveries, int doctorId) { return new Payment { diff --git a/RegistrationOfPatients/RegistrationOfPatients/Entities/Reception.cs b/RegistrationOfPatients/RegistrationOfPatients/Entities/Reception.cs index f865805..2d837f1 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Entities/Reception.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Entities/Reception.cs @@ -10,7 +10,8 @@ public class Reception public string Illness { get; private set; } = string.Empty; public int PatientId { get; private set; } public int DoctorId { get; private set; } - public static Reception CreateOperation(int id, HealthStatus healthStatus, string illness, int patientId, int doctorId) + public IEnumerable ReceptionMedicine { get; private set; } = []; + public static Reception CreateOperation(int id, DateTime date, HealthStatus healthStatus, string illness, int patientId, int doctorId, IEnumerable receptionMedicine) { return new Reception { @@ -19,7 +20,8 @@ public class Reception HealthStatus = healthStatus, Illness = illness ?? string.Empty, PatientId = patientId, - DoctorId = doctorId + DoctorId = doctorId, + ReceptionMedicine = receptionMedicine }; } } diff --git a/RegistrationOfPatients/RegistrationOfPatients/Entities/ReceptionMedicine.cs b/RegistrationOfPatients/RegistrationOfPatients/Entities/ReceptionMedicine.cs new file mode 100644 index 0000000..af2ab20 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Entities/ReceptionMedicine.cs @@ -0,0 +1,17 @@ +namespace RegistrationOfPatients.Entities; + +public class ReceptionMedicine +{ + public int Id { get; set; } + public int MedicineId { get; private set; } + public int Count { get; private set; } + public static ReceptionMedicine CreateElement(int id, int medicineId, int count) + { + return new ReceptionMedicine + { + Id = id, + MedicineId = medicineId, + Count = count + }; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Form1.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Form1.Designer.cs deleted file mode 100644 index aa4323e..0000000 --- a/RegistrationOfPatients/RegistrationOfPatients/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace RegistrationOfPatients -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Form1.cs b/RegistrationOfPatients/RegistrationOfPatients/Form1.cs deleted file mode 100644 index 916617f..0000000 --- a/RegistrationOfPatients/RegistrationOfPatients/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace RegistrationOfPatients -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.Designer.cs new file mode 100644 index 0000000..69dbdac --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.Designer.cs @@ -0,0 +1,138 @@ +namespace RegistrationOfPatients +{ + partial class FormRegistration + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + menuStrip = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + DoctorsToolStripMenuItem = new ToolStripMenuItem(); + PatientsToolStripMenuItem = new ToolStripMenuItem(); + MedicinesToolStripMenuItem = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + ReceptionToolStripMenuItem = new ToolStripMenuItem(); + PaymentToolStripMenuItem = new ToolStripMenuItem(); + отчетыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip.SuspendLayout(); + SuspendLayout(); + // + // menuStrip + // + menuStrip.ImageScalingSize = new Size(20, 20); + menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчетыToolStripMenuItem }); + menuStrip.Location = new Point(0, 0); + menuStrip.Name = "menuStrip"; + menuStrip.Size = new Size(571, 28); + menuStrip.TabIndex = 0; + menuStrip.Text = "menuStrip1"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { DoctorsToolStripMenuItem, PatientsToolStripMenuItem, MedicinesToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(117, 24); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // DoctorsToolStripMenuItem + // + DoctorsToolStripMenuItem.Name = "DoctorsToolStripMenuItem"; + DoctorsToolStripMenuItem.Size = new Size(163, 26); + DoctorsToolStripMenuItem.Text = "Доктора"; + DoctorsToolStripMenuItem.Click += DoctorsToolStripMenuItem_Click; + // + // PatientsToolStripMenuItem + // + PatientsToolStripMenuItem.Name = "PatientsToolStripMenuItem"; + PatientsToolStripMenuItem.Size = new Size(163, 26); + PatientsToolStripMenuItem.Text = "Пациенты"; + PatientsToolStripMenuItem.Click += PatientsToolStripMenuItem_Click; + // + // MedicinesToolStripMenuItem + // + MedicinesToolStripMenuItem.Name = "MedicinesToolStripMenuItem"; + MedicinesToolStripMenuItem.Size = new Size(163, 26); + MedicinesToolStripMenuItem.Text = "Лекарства"; + MedicinesToolStripMenuItem.Click += MedicinesToolStripMenuItem_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ReceptionToolStripMenuItem, PaymentToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(95, 24); + операцииToolStripMenuItem.Text = "Операции"; + // + // ReceptionToolStripMenuItem + // + ReceptionToolStripMenuItem.Name = "ReceptionToolStripMenuItem"; + ReceptionToolStripMenuItem.Size = new Size(224, 26); + ReceptionToolStripMenuItem.Text = "Запись"; + ReceptionToolStripMenuItem.Click += ReceptionToolStripMenuItem_Click; + // + // PaymentToolStripMenuItem + // + PaymentToolStripMenuItem.Name = "PaymentToolStripMenuItem"; + PaymentToolStripMenuItem.Size = new Size(224, 26); + PaymentToolStripMenuItem.Text = "Зарплата"; + PaymentToolStripMenuItem.Click += PaymentToolStripMenuItem_Click; + // + // отчетыToolStripMenuItem + // + отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; + отчетыToolStripMenuItem.Size = new Size(73, 24); + отчетыToolStripMenuItem.Text = "Отчеты"; + // + // FormRegistration + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources.polyclinic; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(571, 738); + Controls.Add(menuStrip); + MainMenuStrip = menuStrip; + Name = "FormRegistration"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Поликлиника"; + menuStrip.ResumeLayout(false); + menuStrip.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem отчетыToolStripMenuItem; + private ToolStripMenuItem DoctorsToolStripMenuItem; + private ToolStripMenuItem PatientsToolStripMenuItem; + private ToolStripMenuItem ReceptionToolStripMenuItem; + private ToolStripMenuItem PaymentToolStripMenuItem; + private ToolStripMenuItem MedicinesToolStripMenuItem; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.cs b/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.cs new file mode 100644 index 0000000..f009aa0 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.cs @@ -0,0 +1,74 @@ +using RegistrationOfPatients.Forms; +using Unity; + +namespace RegistrationOfPatients; + +public partial class FormRegistration : Form +{ + private readonly IUnityContainer _container; + public FormRegistration(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + + private void DoctorsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void PatientsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void MedicinesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ReceptionToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void PaymentToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.resx b/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.resx new file mode 100644 index 0000000..31084d5 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/FormRegistration.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.Designer.cs new file mode 100644 index 0000000..21bc36e --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.Designer.cs @@ -0,0 +1,96 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormDoctor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label = new Label(); + TextBoxName = new TextBox(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + SuspendLayout(); + // + // label + // + label.AutoSize = true; + label.Location = new Point(77, 94); + label.Name = "label"; + label.Size = new Size(45, 20); + label.TabIndex = 0; + label.Text = "ФИО:"; + // + // TextBoxName + // + TextBoxName.Location = new Point(196, 91); + TextBoxName.Name = "TextBoxName"; + TextBoxName.Size = new Size(219, 27); + TextBoxName.TabIndex = 1; + // + // ButtonSave + // + ButtonSave.Location = new Point(77, 278); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(94, 29); + ButtonSave.TabIndex = 2; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(196, 278); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(94, 29); + ButtonCancel.TabIndex = 3; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // FormDoctor + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(523, 360); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(TextBoxName); + Controls.Add(label); + Name = "FormDoctor"; + StartPosition = FormStartPosition.CenterParent; + Text = "Доктор"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label; + private TextBox TextBoxName; + private Button ButtonSave; + private Button ButtonCancel; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.cs new file mode 100644 index 0000000..cb3622b --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.cs @@ -0,0 +1,80 @@ +using RegistrationOfPatients.Entities; +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace RegistrationOfPatients.Forms; + +public partial class FormDoctor : Form +{ + private readonly IDoctorRepository _doctorRepository; + private int? _doctorId; + public int Id + { + set + { + try + { + var doctor = _doctorRepository.ReadDoctorById(value); + + if (doctor == null) + { + throw new InvalidDataException(nameof(doctor)); + } + + TextBoxName.Text = doctor.Name; + + _doctorId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormDoctor(IDoctorRepository doctorRepository) + { + InitializeComponent(); + _doctorRepository = doctorRepository ?? throw new ArgumentNullException(nameof(doctorRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(TextBoxName.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_doctorId.HasValue) + { + + _doctorRepository.UpdateDoctor(CreateDoctor(_doctorId.Value)); + } + else + { + _doctorRepository.CreateDoctor(CreateDoctor(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Doctor CreateDoctor(int id) => Doctor.CreateEntity(id, TextBoxName.Text); +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Form1.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.resx similarity index 92% rename from RegistrationOfPatients/RegistrationOfPatients/Form1.resx rename to RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.resx index 1af7de1..8b2ff64 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Form1.resx +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctor.resx @@ -1,17 +1,17 @@  - diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.Designer.cs new file mode 100644 index 0000000..5407c35 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.Designer.cs @@ -0,0 +1,127 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormDoctors + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(650, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(150, 450); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.minus; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(26, 168); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(94, 60); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = Properties.Resources.pencil; + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.Location = new Point(26, 102); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(94, 60); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.add; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(26, 36); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(94, 60); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(650, 450); + dataGridViewData.TabIndex = 1; + // + // FormDoctors + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormDoctors"; + StartPosition = FormStartPosition.CenterParent; + Text = "Доктора"; + Load += FormDoctors_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.cs new file mode 100644 index 0000000..84ebfa7 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.cs @@ -0,0 +1,110 @@ +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace RegistrationOfPatients.Forms; + +public partial class FormDoctors : Form +{ + private readonly IUnityContainer _container; + + private readonly IDoctorRepository _doctorRepository; + + public FormDoctors(IUnityContainer container, IDoctorRepository doctorRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _doctorRepository = doctorRepository ?? throw new ArgumentNullException(nameof(doctorRepository)); + } + + private void FormDoctors_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _doctorRepository.DeleteDoctor(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _doctorRepository.ReadDoctors(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormDoctors.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.Designer.cs new file mode 100644 index 0000000..50c8e8b --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.Designer.cs @@ -0,0 +1,120 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormMedicine + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + checkedListBoxMedicineType = new CheckedListBox(); + label2 = new Label(); + textBoxDescription = new TextBox(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(56, 45); + label1.Name = "label1"; + label1.Size = new Size(111, 20); + label1.TabIndex = 0; + label1.Text = "Тип лекарства:"; + // + // checkedListBoxMedicineType + // + checkedListBoxMedicineType.FormattingEnabled = true; + checkedListBoxMedicineType.Location = new Point(195, 45); + checkedListBoxMedicineType.Name = "checkedListBoxMedicineType"; + checkedListBoxMedicineType.Size = new Size(247, 114); + checkedListBoxMedicineType.TabIndex = 1; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(65, 190); + label2.Name = "label2"; + label2.Size = new Size(82, 20); + label2.TabIndex = 2; + label2.Text = "Описание:"; + // + // textBoxDescription + // + textBoxDescription.Location = new Point(195, 190); + textBoxDescription.Multiline = true; + textBoxDescription.Name = "textBoxDescription"; + textBoxDescription.Size = new Size(247, 72); + textBoxDescription.TabIndex = 3; + // + // ButtonSave + // + ButtonSave.Location = new Point(65, 314); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(94, 29); + ButtonSave.TabIndex = 4; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(195, 314); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(94, 29); + ButtonCancel.TabIndex = 5; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // FormMedicine + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(593, 421); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(textBoxDescription); + Controls.Add(label2); + Controls.Add(checkedListBoxMedicineType); + Controls.Add(label1); + Name = "FormMedicine"; + StartPosition = FormStartPosition.CenterParent; + Text = "Лекарства"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private CheckedListBox checkedListBoxMedicineType; + private Label label2; + private TextBox textBoxDescription; + private Button ButtonSave; + private Button ButtonCancel; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.cs new file mode 100644 index 0000000..58fde9e --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.cs @@ -0,0 +1,96 @@ +using Microsoft.VisualBasic.FileIO; +using RegistrationOfPatients.Entities; +using RegistrationOfPatients.Entities.Enums; +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace RegistrationOfPatients.Forms; + +public partial class FormMedicine : Form +{ + private readonly IMedicineRepository _medicineRepository; + private int? _medicineId; + public int Id + { + set + { + try + { + var medicine = _medicineRepository.ReadMedicineById(value); + if (medicine == null) + { + throw new InvalidDataException(nameof(medicine)); + } + foreach (MedicineType elem in Enum.GetValues(typeof(MedicineType))) + { + if ((elem & medicine.MedicineType) != 0) + { + checkedListBoxMedicineType.SetItemChecked(checkedListBoxMedicineType.Items.IndexOf(elem), true); + } + } + + textBoxDescription.Text = medicine.Description; + _medicineId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormMedicine(IMedicineRepository medicineRepository) + { + InitializeComponent(); + _medicineRepository = medicineRepository ?? throw new ArgumentNullException(nameof(medicineRepository)); + + foreach (var elem in Enum.GetValues(typeof(MedicineType))) + { + checkedListBoxMedicineType.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxDescription.Text) || checkedListBoxMedicineType.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_medicineId.HasValue) + { + _medicineRepository.UpdateMedicine(CreateMedicine(_medicineId.Value)); + } + else + { + _medicineRepository.CreateMedicine(CreateMedicine(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private Medicine CreateMedicine(int id) + { + MedicineType medicineType = MedicineType.None; + foreach (var elem in checkedListBoxMedicineType.CheckedItems) + { + medicineType |= (MedicineType)elem; + } + return Medicine.CreateEntity(id, medicineType, textBoxDescription.Text); + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicine.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.Designer.cs new file mode 100644 index 0000000..dfe0fbe --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.Designer.cs @@ -0,0 +1,127 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormMedicines + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(600, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(200, 450); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.minus; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(45, 202); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(94, 69); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = Properties.Resources.pencil; + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.Location = new Point(45, 127); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(94, 69); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.add; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(45, 52); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(94, 69); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(600, 450); + dataGridViewData.TabIndex = 1; + // + // FormMedicines + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormMedicines"; + StartPosition = FormStartPosition.CenterParent; + Text = "Лекарства"; + Load += FormMedicines_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.cs new file mode 100644 index 0000000..4743011 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.cs @@ -0,0 +1,107 @@ +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace RegistrationOfPatients.Forms; + +public partial class FormMedicines : Form +{ + private readonly IUnityContainer _container; + + private readonly IMedicineRepository _medicineRepository; + public FormMedicines(IUnityContainer container, IMedicineRepository medicineRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _medicineRepository = medicineRepository ?? throw new ArgumentNullException(nameof(medicineRepository)); + } + + private void FormMedicines_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _medicineRepository.DeleteMedicine(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _medicineRepository.ReadMedicine(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormMedicines.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.Designer.cs new file mode 100644 index 0000000..c905b8a --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.Designer.cs @@ -0,0 +1,118 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormPatient + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + label2 = new Label(); + TextBoxName = new TextBox(); + TextBoxNumber = new TextBox(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(44, 54); + label1.Name = "label1"; + label1.Size = new Size(45, 20); + label1.TabIndex = 0; + label1.Text = "ФИО:"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(44, 104); + label2.Name = "label2"; + label2.Size = new Size(130, 20); + label2.TabIndex = 1; + label2.Text = "Номер телефона:"; + // + // TextBoxName + // + TextBoxName.Location = new Point(200, 47); + TextBoxName.Name = "TextBoxName"; + TextBoxName.Size = new Size(191, 27); + TextBoxName.TabIndex = 2; + // + // TextBoxNumber + // + TextBoxNumber.Location = new Point(200, 97); + TextBoxNumber.Name = "TextBoxNumber"; + TextBoxNumber.Size = new Size(191, 27); + TextBoxNumber.TabIndex = 3; + // + // ButtonSave + // + ButtonSave.Location = new Point(44, 190); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(94, 29); + ButtonSave.TabIndex = 4; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(200, 190); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(94, 29); + ButtonCancel.TabIndex = 5; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // FormPatient + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(422, 334); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(TextBoxNumber); + Controls.Add(TextBoxName); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormPatient"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormPatient"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private Label label2; + private TextBox TextBoxName; + private TextBox TextBoxNumber; + private Button ButtonSave; + private Button ButtonCancel; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.cs new file mode 100644 index 0000000..e47a44a --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.cs @@ -0,0 +1,81 @@ +using RegistrationOfPatients.Entities; +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace RegistrationOfPatients.Forms; + +public partial class FormPatient : Form +{ + private readonly IPatientRepository _patientRepository; + + private int? _patientId; + public int Id + { + set + { + try + { + var patient = _patientRepository.ReadPatientById(value); + if (patient == null) + { + throw new InvalidDataException(nameof(patient)); + } + + TextBoxName.Text = patient.Name; + TextBoxNumber.Text = patient.Phone; + _patientId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormPatient(IPatientRepository patientRepository) + { + InitializeComponent(); + _patientRepository = patientRepository ?? throw new ArgumentNullException(nameof(patientRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(TextBoxName.Text) || string.IsNullOrWhiteSpace(TextBoxNumber.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_patientId.HasValue) + { + + _patientRepository.UpdatePatient(CreatePatient(_patientId.Value)); + } + else + { + + _patientRepository.CreatePatient(CreatePatient(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Patient CreatePatient(int id) => Patient.CreateEntity(id, TextBoxName.Text, TextBoxNumber.Text); +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatient.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.Designer.cs new file mode 100644 index 0000000..11c3efb --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.Designer.cs @@ -0,0 +1,127 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormPatients + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(625, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(175, 450); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.minus; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(40, 173); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(94, 62); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = Properties.Resources.pencil; + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.Location = new Point(40, 105); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(94, 62); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.add; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(40, 37); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(94, 62); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(625, 450); + dataGridViewData.TabIndex = 1; + // + // FormPatients + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormPatients"; + StartPosition = FormStartPosition.CenterParent; + Text = "Пациенты"; + Load += FormPatients_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.cs new file mode 100644 index 0000000..5a445be --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.cs @@ -0,0 +1,109 @@ +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace RegistrationOfPatients.Forms; + +public partial class FormPatients : Form +{ + private readonly IUnityContainer _container; + + private readonly IPatientRepository _patientRepository; + public FormPatients(IUnityContainer container, IPatientRepository patientRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _patientRepository = patientRepository ?? throw new ArgumentNullException(nameof(patientRepository)); + } + + private void FormPatients_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _patientRepository.DeletePatient(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _patientRepository.ReadPatients(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPatients.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.Designer.cs new file mode 100644 index 0000000..8f873ac --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.Designer.cs @@ -0,0 +1,192 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormPayment + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + comboBoxDoctor = new ComboBox(); + label2 = new Label(); + label3 = new Label(); + label4 = new Label(); + dateTimePickerPayment = new DateTimePicker(); + label5 = new Label(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + numericUpDownSalary = new NumericUpDown(); + numericUpDownTotalPatients = new NumericUpDown(); + numericUpDownPercentage = new NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)numericUpDownSalary).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownTotalPatients).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownPercentage).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(12, 49); + label1.Name = "label1"; + label1.Size = new Size(62, 20); + label1.TabIndex = 0; + label1.Text = "Доктор:"; + // + // comboBoxDoctor + // + comboBoxDoctor.FormattingEnabled = true; + comboBoxDoctor.Location = new Point(235, 46); + comboBoxDoctor.Name = "comboBoxDoctor"; + comboBoxDoctor.Size = new Size(178, 28); + comboBoxDoctor.TabIndex = 1; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(12, 104); + label2.Name = "label2"; + label2.Size = new Size(76, 20); + label2.TabIndex = 2; + label2.Text = "Зарплата:"; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(12, 155); + label3.Name = "label3"; + label3.Size = new Size(130, 20); + label3.TabIndex = 4; + label3.Text = "Всего пациентов:"; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(12, 201); + label4.Name = "label4"; + label4.Size = new Size(189, 20); + label4.TabIndex = 6; + label4.Text = "Процент выздоровлений:"; + // + // dateTimePickerPayment + // + dateTimePickerPayment.Enabled = false; + dateTimePickerPayment.Location = new Point(235, 238); + dateTimePickerPayment.Name = "dateTimePickerPayment"; + dateTimePickerPayment.Size = new Size(178, 27); + dateTimePickerPayment.TabIndex = 7; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(12, 243); + label5.Name = "label5"; + label5.Size = new Size(44, 20); + label5.TabIndex = 8; + label5.Text = "Дата:"; + // + // ButtonSave + // + ButtonSave.Location = new Point(62, 398); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(94, 29); + ButtonSave.TabIndex = 10; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(249, 398); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(94, 29); + ButtonCancel.TabIndex = 11; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // numericUpDownSalary + // + numericUpDownSalary.Location = new Point(235, 102); + numericUpDownSalary.Name = "numericUpDownSalary"; + numericUpDownSalary.Size = new Size(178, 27); + numericUpDownSalary.TabIndex = 12; + // + // numericUpDownTotalPatients + // + numericUpDownTotalPatients.Location = new Point(235, 153); + numericUpDownTotalPatients.Name = "numericUpDownTotalPatients"; + numericUpDownTotalPatients.Size = new Size(178, 27); + numericUpDownTotalPatients.TabIndex = 13; + // + // numericUpDownPercentage + // + numericUpDownPercentage.Location = new Point(235, 199); + numericUpDownPercentage.Name = "numericUpDownPercentage"; + numericUpDownPercentage.Size = new Size(178, 27); + numericUpDownPercentage.TabIndex = 14; + // + // FormPayment + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(441, 487); + Controls.Add(numericUpDownPercentage); + Controls.Add(numericUpDownTotalPatients); + Controls.Add(numericUpDownSalary); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(label5); + Controls.Add(dateTimePickerPayment); + Controls.Add(label4); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(comboBoxDoctor); + Controls.Add(label1); + Name = "FormPayment"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormPayment"; + ((System.ComponentModel.ISupportInitialize)numericUpDownSalary).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownTotalPatients).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownPercentage).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private ComboBox comboBoxDoctor; + private Label label2; + private Label label3; + private Label label4; + private DateTimePicker dateTimePickerPayment; + private Label label5; + private Button ButtonSave; + private Button ButtonCancel; + private NumericUpDown numericUpDownSalary; + private NumericUpDown numericUpDownTotalPatients; + private NumericUpDown numericUpDownPercentage; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.cs new file mode 100644 index 0000000..2064d70 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.cs @@ -0,0 +1,51 @@ +using RegistrationOfPatients.Entities; +using RegistrationOfPatients.Entities.Enums; +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; + +namespace RegistrationOfPatients.Forms; + +public partial class FormPayment : Form +{ + private readonly IPaymentRepository _paymentRepository; + + private int? _paymentId; + public FormPayment(IPaymentRepository paymentRepository, IDoctorRepository doctorRepository) + { + InitializeComponent(); + _paymentRepository = paymentRepository ?? throw new ArgumentNullException(nameof(paymentRepository)); + + comboBoxDoctor.DataSource = doctorRepository.ReadDoctors(); + comboBoxDoctor.DisplayMember = "DoctorName"; + comboBoxDoctor.ValueMember = "Id"; + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxDoctor.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + _paymentRepository.CreatePayment(Payment.CreateOperation(0, Convert.ToInt32(numericUpDownSalary.Value), Convert.ToInt32(numericUpDownTotalPatients.Value), dateTimePickerPayment.Value, Convert.ToInt32(numericUpDownPercentage.Value), (int)comboBoxDoctor.SelectedValue!)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayment.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.Designer.cs new file mode 100644 index 0000000..4aa57ea --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.Designer.cs @@ -0,0 +1,113 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormPayments + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(703, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(133, 429); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.minus; + ButtonDel.BackgroundImageLayout = ImageLayout.Zoom; + ButtonDel.Location = new Point(23, 107); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(94, 68); + ButtonDel.TabIndex = 1; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.add; + ButtonAdd.BackgroundImageLayout = ImageLayout.Zoom; + ButtonAdd.Location = new Point(23, 33); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(94, 68); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(703, 429); + dataGridViewData.TabIndex = 1; + // + // FormPayments + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(836, 429); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormPayments"; + StartPosition = FormStartPosition.CenterParent; + Text = "Зарплаты"; + Load += FormPayments_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.cs new file mode 100644 index 0000000..fa5239b --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.cs @@ -0,0 +1,86 @@ +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace RegistrationOfPatients.Forms; + +public partial class FormPayments : Form +{ + private readonly IUnityContainer _container; + + private readonly IPaymentRepository _paymentRepository; + public FormPayments(IUnityContainer container, IPaymentRepository paymentRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _paymentRepository = paymentRepository ?? throw new ArgumentNullException(nameof(paymentRepository)); + } + + private void FormPayments_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _paymentRepository.DeletePayment(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _paymentRepository.ReadPayment(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormPayments.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.Designer.cs new file mode 100644 index 0000000..aa48e19 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.Designer.cs @@ -0,0 +1,245 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormReception + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + label2 = new Label(); + comboBoxStatus = new ComboBox(); + comboBoxPatient = new ComboBox(); + comboBoxDoctor = new ComboBox(); + textBoxIllness = new TextBox(); + label3 = new Label(); + label4 = new Label(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + groupBoxMedicine = new GroupBox(); + dataGridViewMedicines = new DataGridView(); + Column1 = new DataGridViewComboBoxColumn(); + Column2 = new DataGridViewTextBoxColumn(); + label5 = new Label(); + dateTimePickerReception = new DateTimePicker(); + groupBoxMedicine.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewMedicines).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(69, 15); + label1.Name = "label1"; + label1.Size = new Size(156, 20); + label1.TabIndex = 0; + label1.Text = "Состояние здоровья:"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(69, 67); + label2.Name = "label2"; + label2.Size = new Size(70, 20); + label2.TabIndex = 1; + label2.Text = "Болезнь:"; + // + // comboBoxStatus + // + comboBoxStatus.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxStatus.FormattingEnabled = true; + comboBoxStatus.Location = new Point(276, 12); + comboBoxStatus.Name = "comboBoxStatus"; + comboBoxStatus.Size = new Size(178, 28); + comboBoxStatus.TabIndex = 2; + // + // comboBoxPatient + // + comboBoxPatient.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPatient.FormattingEnabled = true; + comboBoxPatient.Location = new Point(276, 107); + comboBoxPatient.Name = "comboBoxPatient"; + comboBoxPatient.Size = new Size(178, 28); + comboBoxPatient.TabIndex = 3; + // + // comboBoxDoctor + // + comboBoxDoctor.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxDoctor.FormattingEnabled = true; + comboBoxDoctor.Location = new Point(276, 159); + comboBoxDoctor.Name = "comboBoxDoctor"; + comboBoxDoctor.Size = new Size(178, 28); + comboBoxDoctor.TabIndex = 4; + // + // textBoxIllness + // + textBoxIllness.Location = new Point(276, 60); + textBoxIllness.Name = "textBoxIllness"; + textBoxIllness.Size = new Size(178, 27); + textBoxIllness.TabIndex = 5; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(69, 167); + label3.Name = "label3"; + label3.Size = new Size(62, 20); + label3.TabIndex = 7; + label3.Text = "Доктор:"; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(69, 115); + label4.Name = "label4"; + label4.Size = new Size(72, 20); + label4.TabIndex = 6; + label4.Text = "Пациент:"; + // + // ButtonSave + // + ButtonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + ButtonSave.Location = new Point(70, 452); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(94, 29); + ButtonSave.TabIndex = 8; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + ButtonCancel.Location = new Point(251, 452); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(94, 29); + ButtonCancel.TabIndex = 9; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // groupBoxMedicine + // + groupBoxMedicine.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBoxMedicine.Controls.Add(dataGridViewMedicines); + groupBoxMedicine.Location = new Point(70, 274); + groupBoxMedicine.Name = "groupBoxMedicine"; + groupBoxMedicine.Size = new Size(279, 172); + groupBoxMedicine.TabIndex = 10; + groupBoxMedicine.TabStop = false; + groupBoxMedicine.Text = "Лекарства"; + // + // dataGridViewMedicines + // + dataGridViewMedicines.AllowUserToResizeColumns = false; + dataGridViewMedicines.AllowUserToResizeRows = false; + dataGridViewMedicines.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + dataGridViewMedicines.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewMedicines.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewMedicines.Columns.AddRange(new DataGridViewColumn[] { Column1, Column2 }); + dataGridViewMedicines.Location = new Point(3, 23); + dataGridViewMedicines.MultiSelect = false; + dataGridViewMedicines.Name = "dataGridViewMedicines"; + dataGridViewMedicines.RowHeadersVisible = false; + dataGridViewMedicines.RowHeadersWidth = 51; + dataGridViewMedicines.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewMedicines.Size = new Size(276, 121); + dataGridViewMedicines.TabIndex = 0; + // + // Column1 + // + Column1.HeaderText = "Лекарство"; + Column1.MinimumWidth = 6; + Column1.Name = "Column1"; + // + // Column2 + // + Column2.HeaderText = "Количество"; + Column2.MinimumWidth = 6; + Column2.Name = "Column2"; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(69, 214); + label5.Name = "label5"; + label5.Size = new Size(44, 20); + label5.TabIndex = 11; + label5.Text = "Дата:"; + // + // dateTimePickerReception + // + dateTimePickerReception.Enabled = false; + dateTimePickerReception.Location = new Point(276, 214); + dateTimePickerReception.Name = "dateTimePickerReception"; + dateTimePickerReception.Size = new Size(178, 27); + dateTimePickerReception.TabIndex = 12; + // + // FormReception + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(486, 493); + Controls.Add(dateTimePickerReception); + Controls.Add(label5); + Controls.Add(groupBoxMedicine); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(label3); + Controls.Add(label4); + Controls.Add(textBoxIllness); + Controls.Add(comboBoxDoctor); + Controls.Add(comboBoxPatient); + Controls.Add(comboBoxStatus); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormReception"; + Text = "FormReception"; + groupBoxMedicine.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewMedicines).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private Label label2; + private ComboBox comboBoxStatus; + private ComboBox comboBoxPatient; + private ComboBox comboBoxDoctor; + private TextBox textBoxIllness; + private Label label3; + private Label label4; + private Button ButtonSave; + private Button ButtonCancel; + private GroupBox groupBoxMedicine; + private DataGridView dataGridViewMedicines; + private DataGridViewComboBoxColumn Column1; + private DataGridViewTextBoxColumn Column2; + private Label label5; + private DateTimePicker dateTimePickerReception; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.cs new file mode 100644 index 0000000..be55d42 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.cs @@ -0,0 +1,71 @@ +using RegistrationOfPatients.Entities; +using RegistrationOfPatients.Entities.Enums; +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace RegistrationOfPatients.Forms; + +public partial class FormReception : Form +{ + private readonly IReceptionRepository _receptionRepository; + + private int? _receptionId; + + public FormReception(IReceptionRepository receptionRepository, IPatientRepository patientRepository, IDoctorRepository doctorRepository) + { + InitializeComponent(); + _receptionRepository = receptionRepository ?? throw new ArgumentNullException(nameof(receptionRepository)); + + comboBoxStatus.DataSource = Enum.GetValues(typeof(HealthStatus)); + + comboBoxPatient.DataSource = patientRepository.ReadPatients(); + comboBoxPatient.DisplayMember = "Name"; + comboBoxPatient.ValueMember = "Id"; + + comboBoxDoctor.DataSource = doctorRepository.ReadDoctors(); + comboBoxDoctor.DisplayMember = "DoctorName"; + comboBoxDoctor.ValueMember = "Id"; + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxPatient.SelectedIndex < 0 || string.IsNullOrWhiteSpace(textBoxIllness.Text) || comboBoxStatus.SelectedIndex < 0 || comboBoxDoctor.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + _receptionRepository.CreateReception(Reception.CreateOperation(0, dateTimePickerReception.Value, (HealthStatus)comboBoxStatus.SelectedItem!, textBoxIllness.Text, (int)comboBoxPatient.SelectedValue!, (int)comboBoxDoctor.SelectedValue!, CreateListReceptionMedicineFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private List CreateListReceptionMedicineFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridViewMedicines.Rows) + { + if (row.Cells["ColumnFeed"].Value == null || row.Cells["ColumnCount"].Value == null) + { + continue; + } + list.Add(ReceptionMedicine.CreateElement(0, Convert.ToInt32(row.Cells["ColumnFeed"].Value), Convert.ToInt32(row.Cells["ColumnCount"].Value))); + } + return list; + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.resx new file mode 100644 index 0000000..59d37f1 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReception.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.Designer.cs new file mode 100644 index 0000000..3b1c018 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.Designer.cs @@ -0,0 +1,99 @@ +namespace RegistrationOfPatients.Forms +{ + partial class FormReceptions + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(639, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(161, 450); + panel1.TabIndex = 0; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(31, 49); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 65); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(639, 450); + dataGridViewData.TabIndex = 1; + // + // FormReceptions + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormReceptions"; + StartPosition = FormStartPosition.CenterParent; + Text = "Прием"; + Load += FormReceptions_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.cs b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.cs new file mode 100644 index 0000000..f7edde8 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.cs @@ -0,0 +1,52 @@ +using RegistrationOfPatients.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace RegistrationOfPatients.Forms; + +public partial class FormReceptions : Form +{ + private readonly IUnityContainer _container; + + private readonly IReceptionRepository _receptionRepository; + public FormReceptions(IUnityContainer container, IReceptionRepository receptionRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _receptionRepository = receptionRepository ?? throw new ArgumentNullException(nameof(receptionRepository)); + } + + private void FormReceptions_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _receptionRepository.ReadReceptions(); +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.resx b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Forms/FormReceptions.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Program.cs b/RegistrationOfPatients/RegistrationOfPatients/Program.cs index b4de88e..d202395 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Program.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Program.cs @@ -1,3 +1,8 @@ +using RegistrationOfPatients.Repositories; +using RegistrationOfPatients.Repositories.Implementations; +using Unity; +using Unity.Lifetime; + namespace RegistrationOfPatients { internal static class Program @@ -11,7 +16,20 @@ namespace RegistrationOfPatients // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(CreateContainer().Resolve()); + } + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + + return container; } } } \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.Designer.cs b/RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.Designer.cs new file mode 100644 index 0000000..3c2ce24 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace RegistrationOfPatients.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RegistrationOfPatients.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap add { + get { + object obj = ResourceManager.GetObject("add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap minus { + get { + object obj = ResourceManager.GetObject("minus", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pencil { + get { + object obj = ResourceManager.GetObject("pencil", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap polyclinic { + get { + object obj = ResourceManager.GetObject("polyclinic", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.resx b/RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.resx new file mode 100644 index 0000000..56b123d --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\polyclinic.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\minus.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\pencil.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/RegistrationOfPatients.csproj b/RegistrationOfPatients/RegistrationOfPatients/RegistrationOfPatients.csproj index e1a0735..accbdf0 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/RegistrationOfPatients.csproj +++ b/RegistrationOfPatients/RegistrationOfPatients/RegistrationOfPatients.csproj @@ -2,10 +2,29 @@ WinExe - net7.0-windows + net8.0-windows enable true enable + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IDoctorRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IDoctorRepository.cs index 328b078..1928a86 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IDoctorRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IDoctorRepository.cs @@ -9,7 +9,7 @@ namespace RegistrationOfPatients.Repositories; public interface IDoctorRepository { - IEnumerable ReadDoctor(); + IEnumerable ReadDoctors(); Doctor ReadDoctorById(int id); diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IMedicineRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IMedicineRepository.cs new file mode 100644 index 0000000..26e940c --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IMedicineRepository.cs @@ -0,0 +1,16 @@ +using RegistrationOfPatients.Entities; + +namespace RegistrationOfPatients.Repositories; + +public interface IMedicineRepository +{ + IEnumerable ReadMedicine(); + + Medicine ReadMedicineById(int id); + + void CreateMedicine(Medicine medicine); + + void UpdateMedicine(Medicine medicine); + + void DeleteMedicine(int id); +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPatientRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPatientRepository.cs index 373b793..554062c 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPatientRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPatientRepository.cs @@ -4,7 +4,7 @@ namespace RegistrationOfPatients.Repositories; public interface IPatientRepository { - IEnumerable ReadPatient(); + IEnumerable ReadPatients(); Patient ReadPatientById(int id); diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPaymentRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPaymentRepository.cs index 2d12838..6934080 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPaymentRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IPaymentRepository.cs @@ -11,7 +11,7 @@ public interface IPaymentRepository { IEnumerable ReadPayment(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null); - void CreateReception(Payment payment); + void CreatePayment(Payment payment); void DeletePayment(int id); } diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IReceptionRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IReceptionRepository.cs index 9868442..3c12361 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/IReceptionRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/IReceptionRepository.cs @@ -4,7 +4,7 @@ namespace RegistrationOfPatients.Repositories; public interface IReceptionRepository { - IEnumerable ReadReception(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null, int? patientId = null); + IEnumerable ReadReceptions(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null, int? patientId = null, int? medicineId = null); void CreateReception(Reception reception); } diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/DoctorRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/DoctorRepository.cs index ec81141..f5af473 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/DoctorRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/DoctorRepository.cs @@ -19,9 +19,9 @@ public class DoctorRepository : IDoctorRepository } - public IEnumerable ReadDoctor() + public IEnumerable ReadDoctors() { - return Enumerable.Empty(); + return []; } public Doctor ReadDoctorById(int id) diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/MedicineRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/MedicineRepository.cs new file mode 100644 index 0000000..cf3ac58 --- /dev/null +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/MedicineRepository.cs @@ -0,0 +1,30 @@ +using Microsoft.VisualBasic.FileIO; +using RegistrationOfPatients.Entities; +using RegistrationOfPatients.Entities.Enums; + +namespace RegistrationOfPatients.Repositories.Implementations; + +public class MedicineRepository : IMedicineRepository +{ + public void CreateMedicine(Medicine medicine) + { + } + + public void DeleteMedicine(int id) + { + } + + public Medicine ReadMedicineById(int id) + { + return Medicine.CreateEntity(0, MedicineType.None, string.Empty); + } + + public IEnumerable ReadMedicine() + { + return []; + } + + public void UpdateMedicine(Medicine medicine) + { + } +} diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PatientRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PatientRepository.cs index caf5f45..43cbf64 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PatientRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PatientRepository.cs @@ -19,9 +19,9 @@ internal class PatientRepository : IPatientRepository } - public IEnumerable ReadPatient() + public IEnumerable ReadPatients() { - return Enumerable.Empty(); + return []; } public Patient ReadPatientById(int id) diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PaymentRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PaymentRepository.cs index 8e7ba5a..34c8595 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PaymentRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/PaymentRepository.cs @@ -9,7 +9,7 @@ namespace RegistrationOfPatients.Repositories.Implementations; public class PaymentRepository : IPaymentRepository { - public void CreateReception(Payment payment) + public void CreatePayment(Payment payment) { } @@ -21,6 +21,6 @@ public class PaymentRepository : IPaymentRepository public IEnumerable ReadPayment(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null) { - return Enumerable.Empty(); + return []; } } diff --git a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/ReceptionRepository.cs b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/ReceptionRepository.cs index ab777d6..c92c4a0 100644 --- a/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/ReceptionRepository.cs +++ b/RegistrationOfPatients/RegistrationOfPatients/Repositories/Implementations/ReceptionRepository.cs @@ -11,11 +11,10 @@ public class ReceptionRepository : IReceptionRepository { public void CreateReception(Reception reception) { - } - public IEnumerable ReadReception(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null, int? patientId = null) + public IEnumerable ReadReceptions(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null, int? patientId = null, int? medicineId = null) { - return Enumerable.Empty(); + return []; } } diff --git a/RegistrationOfPatients/RegistrationOfPatients/Resources/add.png b/RegistrationOfPatients/RegistrationOfPatients/Resources/add.png new file mode 100644 index 0000000000000000000000000000000000000000..76896107cc8baeab82b4b9e0439073e37f11d58d GIT binary patch literal 32680 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 literal 0 HcmV?d00001 diff --git a/RegistrationOfPatients/RegistrationOfPatients/Resources/polyclinic.jpg b/RegistrationOfPatients/RegistrationOfPatients/Resources/polyclinic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd1b643f50a45610850fd5344253be193d959813 GIT binary patch literal 93898 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´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 Vn;

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
nGrBITy%YQ`3ap( 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