From b8e11680ad3fa915831c75ce4e61641f44e613ff Mon Sep 17 00:00:00 2001 From: funa4i Date: Fri, 8 Nov 2024 19:32:02 +0400 Subject: [PATCH 1/5] =?UTF-8?q?=D1=84=D1=83=D0=BB=D0=BB=20=D0=BB=D0=B0?= =?UTF-8?q?=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/Enums/Operations.cs | 9 +- StudentProgressRecord/Entity/Marks.cs | 8 +- StudentProgressRecord/Entity/Student.cs | 6 +- .../Entity/StudentTransition.cs | 4 +- StudentProgressRecord/Entity/Teacher.cs | 9 +- .../FormViewStatement.Designer.cs | 110 +++++++++++ .../FormViewEntities/FormViewStatement.cs | 95 ++++++++++ .../FormViewEntities/FormViewStatement.resx | 120 ++++++++++++ .../FormViewStudentTransition.Designer.cs | 98 ++++++++++ .../FormViewStudentTransition.cs | 74 ++++++++ .../FormViewStudentTransition.resx | 120 ++++++++++++ .../FormViewStudents.Designer.cs | 124 ++++++++++++ .../FormViewEntities/FormViewStudents.cs | 115 +++++++++++ .../FormViewEntities/FormViewStudents.resx | 120 ++++++++++++ .../FormViewSubjects.Designer.cs | 124 ++++++++++++ .../FormViewEntities/FormViewSubjects.cs | 116 ++++++++++++ .../FormViewEntities/FormViewSubjects.resx | 120 ++++++++++++ .../FormViewTeachers.Designer.cs | 124 ++++++++++++ .../FormViewEntities/FormViewTeachers.cs | 115 +++++++++++ .../FormViewEntities/FormViewTeachers.resx | 120 ++++++++++++ .../FormsEntity/FormStatement.Designer.cs | 179 ++++++++++++++++++ .../Forms/FormsEntity/FormStatement.cs | 88 +++++++++ .../Forms/FormsEntity/FormStatement.resx | 126 ++++++++++++ .../Forms/FormsEntity/FormStudent.Designer.cs | 124 ++++++++++++ .../Forms/FormsEntity/FormStudent.cs | 86 +++++++++ .../Forms/FormsEntity/FormStudent.resx | 123 ++++++++++++ .../FormStudentTransition.Designer.cs | 143 ++++++++++++++ .../FormsEntity/FormStudentTransition.cs | 74 ++++++++ .../FormsEntity/FormStudentTransition.resx | 120 ++++++++++++ .../Forms/FormsEntity/FormSubject.Designer.cs | 96 ++++++++++ .../Forms/FormsEntity/FormSubject.cs | 83 ++++++++ .../Forms/FormsEntity/FormSubject.resx | 120 ++++++++++++ .../Forms/FormsEntity/FormTeacher.Designer.cs | 96 ++++++++++ .../Forms/FormsEntity/FormTeacher.cs | 88 +++++++++ .../Forms/FormsEntity/FormTeacher.resx | 120 ++++++++++++ .../FormsEntity/FormUniversity.Designer.cs} | 96 +++++----- .../Forms/FormsEntity/FormUniversity.cs | 90 +++++++++ .../FormsEntity/FormUniversity.resx} | 0 StudentProgressRecord/Program.cs | 3 +- .../StudentTransitionRepository.cs | 8 +- .../RepositoryImp/TeacherRepository.cs | 2 +- StudentProgressRecord/University.cs | 20 -- 42 files changed, 3515 insertions(+), 101 deletions(-) create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.resx create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.resx create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.resx create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.resx create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.cs create mode 100644 StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.resx create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStatement.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStatement.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStatement.resx create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStudent.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStudent.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStudent.resx create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.resx create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormSubject.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormSubject.resx create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormTeacher.Designer.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormTeacher.cs create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormTeacher.resx rename StudentProgressRecord/{University.Designer.cs => Forms/FormsEntity/FormUniversity.Designer.cs} (77%) create mode 100644 StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs rename StudentProgressRecord/{University.resx => Forms/FormsEntity/FormUniversity.resx} (100%) delete mode 100644 StudentProgressRecord/University.cs diff --git a/StudentProgressRecord/Entity/Enums/Operations.cs b/StudentProgressRecord/Entity/Enums/Operations.cs index bb295a8..fbaa34b 100644 --- a/StudentProgressRecord/Entity/Enums/Operations.cs +++ b/StudentProgressRecord/Entity/Enums/Operations.cs @@ -6,15 +6,12 @@ using System.Threading.Tasks; namespace StudentProgressRecord.Entity.Enums { - [Flags] public enum Operations { - None = 0, + Transfer = 1, - Transfer = 1 << 0, + Enroll = 2, - Enroll = 1 << 1, - - Expel = 1 << 2, + Expel = 3, } } diff --git a/StudentProgressRecord/Entity/Marks.cs b/StudentProgressRecord/Entity/Marks.cs index 5338d97..b54ec69 100644 --- a/StudentProgressRecord/Entity/Marks.cs +++ b/StudentProgressRecord/Entity/Marks.cs @@ -8,21 +8,19 @@ namespace StudentProgressRecord.Entity { public class Marks { - public long Id { get; set; } - public long StatementId { get; set; } public long StudentId { get; set; } public int Mark { get; set; } - public static Marks CreateElement(long id, long statementId, long studentId) + public static Marks CreateElement(long statementId, long studentId, int mark) { return new Marks { - Id = id, StatementId = statementId, - StudentId = studentId + StudentId = studentId, + Mark = mark }; } } diff --git a/StudentProgressRecord/Entity/Student.cs b/StudentProgressRecord/Entity/Student.cs index 3afdc6f..ba2ed2c 100644 --- a/StudentProgressRecord/Entity/Student.cs +++ b/StudentProgressRecord/Entity/Student.cs @@ -11,20 +11,20 @@ namespace StudentProgressRecord.Entity public long Id { get; set; } - public string Fio { get; set; } + public string Name { get; set; } public bool FamilyPos { get; set; } public bool Domitory { get; set; } - public static Student CreateEntity(long id, string fio, bool familyPos, + public static Student CreateEntity(long id, string name, bool familyPos, bool domitory) { return new Student { Id = id, - Fio = fio, + Name = name, FamilyPos = familyPos, Domitory = domitory }; diff --git a/StudentProgressRecord/Entity/StudentTransition.cs b/StudentProgressRecord/Entity/StudentTransition.cs index ab970b1..ed4f112 100644 --- a/StudentProgressRecord/Entity/StudentTransition.cs +++ b/StudentProgressRecord/Entity/StudentTransition.cs @@ -16,7 +16,7 @@ namespace StudentProgressRecord.Entity public Operations Operation { get; set; } - public DateTime timeStamp { get; set; } + public DateTime TimeStamp { get; set; } public static StudentTransition CreateOperation(long id, long studentId, Operations operation, DateTime time) { @@ -25,7 +25,7 @@ namespace StudentProgressRecord.Entity Id = id, StudentId = studentId, Operation = operation, - timeStamp = time + TimeStamp = time }; } } diff --git a/StudentProgressRecord/Entity/Teacher.cs b/StudentProgressRecord/Entity/Teacher.cs index f502129..410b19f 100644 --- a/StudentProgressRecord/Entity/Teacher.cs +++ b/StudentProgressRecord/Entity/Teacher.cs @@ -10,17 +10,14 @@ namespace StudentProgressRecord.Entity { public long Id { get; set; } - public string Fio { get; set; } + public string Name { get; set; } - public long DepartmentID { get; set; } - - public static Teacher CreateEntity(long id, string Fio, long departmentId) + public static Teacher CreateEntity(long id, string name) { return new Teacher { Id = id, - Fio = Fio, - DepartmentID = departmentId + Name = name }; } diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.Designer.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.Designer.cs new file mode 100644 index 0000000..cc5b0f0 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.Designer.cs @@ -0,0 +1,110 @@ +namespace StudentProgressRecord.Forms.FormViewEntities +{ + partial class FormViewStatement + { + /// + /// 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() + { + panel = new Panel(); + buttonDelete = new Button(); + buttonCreate = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDelete); + panel.Controls.Add(buttonCreate); + panel.Dock = DockStyle.Right; + panel.Location = new Point(688, 0); + panel.Name = "panel"; + panel.Size = new Size(112, 450); + panel.TabIndex = 0; + // + // buttonDelete + // + buttonDelete.Location = new Point(6, 47); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(94, 29); + buttonDelete.TabIndex = 1; + buttonDelete.Text = "Удалить"; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += buttonDelete_Click; + // + // buttonCreate + // + buttonCreate.Location = new Point(6, 12); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(94, 29); + buttonCreate.TabIndex = 0; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(688, 450); + dataGridView.TabIndex = 1; + // + // FormViewStatement + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormViewStatement"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Ведомость"; + Load += FormViewStatement_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private DataGridView dataGridView; + private Button buttonDelete; + private Button buttonCreate; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.cs new file mode 100644 index 0000000..ec13869 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.cs @@ -0,0 +1,95 @@ +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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 StudentProgressRecord.Forms.FormViewEntities +{ + public partial class FormViewStatement : Form + { + + private readonly IUnityContainer _container; + + private readonly IStatementRepository _statementRepository; + public FormViewStatement(IUnityContainer container, IStatementRepository statementRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _statementRepository = statementRepository ?? throw new ArgumentNullException(nameof(statementRepository)); + } + private void FormViewStatement_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCreate_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdFromSelectesRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _statementRepository.DeleteStatement(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() + { + dataGridView.DataSource = _statementRepository.ReadStatements(); + } + + private bool TryGetIdFromSelectesRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.resx b/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStatement.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/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.Designer.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.Designer.cs new file mode 100644 index 0000000..53faead --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.Designer.cs @@ -0,0 +1,98 @@ +namespace StudentProgressRecord.Forms.FormViewEntities +{ + partial class FormViewStudentTransition + { + /// + /// 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() + { + panel = new Panel(); + buttonCreate = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonCreate); + panel.Dock = DockStyle.Right; + panel.Location = new Point(695, 0); + panel.Name = "panel"; + panel.Size = new Size(105, 450); + panel.TabIndex = 0; + // + // buttonCreate + // + buttonCreate.Location = new Point(6, 12); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(94, 29); + buttonCreate.TabIndex = 0; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(695, 450); + dataGridView.TabIndex = 1; + // + // FormViewStudentTransition + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormViewStudentTransition"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Перемещения студентов"; + Load += FormViewStudentTransition_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonCreate; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.cs new file mode 100644 index 0000000..9f80bf7 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.cs @@ -0,0 +1,74 @@ +using StudentProgressRecord.IRepositories; +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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.Xml.Linq; +using Unity; + +namespace StudentProgressRecord.Forms.FormViewEntities +{ + public partial class FormViewStudentTransition : Form + { + + private readonly IUnityContainer _container; + + private readonly IStudentTransitionRepository _studentTransitionRepository; + public FormViewStudentTransition(IUnityContainer container, IStudentTransitionRepository studentTransitionRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _studentTransitionRepository= studentTransitionRepository ?? throw new ArgumentNullException(nameof(studentTransitionRepository)); + } + + private void FormViewStudentTransition_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCreate_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() + { + dataGridView.DataSource = _studentTransitionRepository.ReadStudentTransitions(); + } + + private bool TryGetIdFromSelectesRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.resx b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudentTransition.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/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.Designer.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.Designer.cs new file mode 100644 index 0000000..baa8dba --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.Designer.cs @@ -0,0 +1,124 @@ +namespace StudentProgressRecord.Forms.FormViewEntities +{ + partial class FormViewStudents + { + /// + /// 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() + { + panel = new Panel(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonCreate = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDelete); + panel.Controls.Add(buttonUpdate); + panel.Controls.Add(buttonCreate); + panel.Dock = DockStyle.Right; + panel.Location = new Point(676, 0); + panel.Name = "panel"; + panel.Size = new Size(124, 450); + panel.TabIndex = 0; + // + // buttonDelete + // + buttonDelete.Location = new Point(14, 82); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(98, 29); + buttonDelete.TabIndex = 2; + buttonDelete.Text = "Удалить"; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += buttonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.Location = new Point(14, 47); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(98, 29); + buttonUpdate.TabIndex = 1; + buttonUpdate.Text = "Изменить"; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += buttonUpdate_Click; + // + // buttonCreate + // + buttonCreate.Location = new Point(14, 12); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(98, 29); + buttonCreate.TabIndex = 0; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(676, 450); + dataGridView.TabIndex = 1; + // + // FormViewStudents + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormViewStudents"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Студенты"; + Load += FormViewStudents_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDelete; + private Button buttonUpdate; + private Button buttonCreate; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.cs new file mode 100644 index 0000000..9761ff6 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.cs @@ -0,0 +1,115 @@ +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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 StudentProgressRecord.Forms.FormViewEntities +{ + public partial class FormViewStudents : Form + { + + private readonly IUnityContainer _container; + + private readonly IStudentRepository _studentRepository; + public FormViewStudents(IUnityContainer container, IStudentRepository studentRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _studentRepository = studentRepository ?? throw new ArgumentNullException(nameof(studentRepository)); + } + private void buttonCreate_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonUpdate_Click(object sender, EventArgs e) + { + if (!TryGetIdFromSelectesRow(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 buttonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdFromSelectesRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _studentRepository.DeleteStudent(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void FormViewStudents_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() + { + dataGridView.DataSource = _studentRepository.ReadStudents(); + } + + private bool TryGetIdFromSelectesRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.resx b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewStudents.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/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.Designer.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.Designer.cs new file mode 100644 index 0000000..d6b54ad --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.Designer.cs @@ -0,0 +1,124 @@ +namespace StudentProgressRecord.Forms.FormViewEntities +{ + partial class FormViewSubjects + { + /// + /// 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() + { + panel = new Panel(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonCreate = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDelete); + panel.Controls.Add(buttonUpdate); + panel.Controls.Add(buttonCreate); + panel.Dock = DockStyle.Right; + panel.Location = new Point(667, 0); + panel.Name = "panel"; + panel.Size = new Size(133, 450); + panel.TabIndex = 0; + // + // buttonDelete + // + buttonDelete.Location = new Point(6, 82); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(121, 29); + buttonDelete.TabIndex = 2; + buttonDelete.Text = "Удалить"; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += buttonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.Location = new Point(6, 47); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(121, 29); + buttonUpdate.TabIndex = 1; + buttonUpdate.Text = "Изменить"; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += buttonUpdate_Click; + // + // buttonCreate + // + buttonCreate.Location = new Point(6, 12); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(121, 29); + buttonCreate.TabIndex = 0; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(667, 450); + dataGridView.TabIndex = 1; + // + // FormViewSubjects + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormViewSubjects"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Предметы"; + Load += FormViewSubjects_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonCreate; + private DataGridView dataGridView; + private Button buttonDelete; + private Button buttonUpdate; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.cs new file mode 100644 index 0000000..914c8af --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.cs @@ -0,0 +1,116 @@ +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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 StudentProgressRecord.Forms.FormViewEntities +{ + public partial class FormViewSubjects : Form + { + private readonly IUnityContainer _container; + + private readonly ISubjectRepository _subjectRepository; + + public FormViewSubjects(IUnityContainer container, ISubjectRepository subjectRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _subjectRepository = subjectRepository ?? throw new ArgumentNullException(nameof(subjectRepository)); + } + private void buttonCreate_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void buttonUpdate_Click(object sender, EventArgs e) + { + if (!TryGetIdFromSelectesRow(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 buttonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdFromSelectesRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _subjectRepository.DeleteSubject(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void FormViewSubjects_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() + { + dataGridView.DataSource = _subjectRepository.ReadSubjects(); + } + + private bool TryGetIdFromSelectesRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } + + + +} diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.resx b/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewSubjects.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/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.Designer.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.Designer.cs new file mode 100644 index 0000000..0ae759f --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.Designer.cs @@ -0,0 +1,124 @@ +namespace StudentProgressRecord.Forms.FormViewEntities +{ + partial class FormViewTeachers + { + /// + /// 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(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonCreate = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonUpdate); + panel1.Controls.Add(buttonCreate); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(670, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(130, 450); + panel1.TabIndex = 0; + // + // buttonDelete + // + buttonDelete.Location = new Point(3, 82); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(124, 29); + buttonDelete.TabIndex = 2; + buttonDelete.Text = "Удалить"; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += buttonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.Location = new Point(3, 47); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(124, 29); + buttonUpdate.TabIndex = 1; + buttonUpdate.Text = "Изменить"; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += buttonUpdate_Click; + // + // buttonCreate + // + buttonCreate.Location = new Point(3, 12); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(124, 29); + buttonCreate.TabIndex = 0; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(670, 450); + dataGridView.TabIndex = 1; + // + // FormViewTeachers + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormViewTeachers"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Учителя"; + Load += FormViewTeachers_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonDelete; + private Button buttonUpdate; + private Button buttonCreate; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.cs b/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.cs new file mode 100644 index 0000000..a4c34d4 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.cs @@ -0,0 +1,115 @@ +using StudentProgressRecord.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 StudentProgressRecord.Forms.FormViewEntities +{ + public partial class FormViewTeachers : Form + { + private readonly IUnityContainer _container; + + private readonly ITeacherRepository _teacherRepository; + + public FormViewTeachers(IUnityContainer container, ITeacherRepository teacherRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _teacherRepository = teacherRepository ?? throw new ArgumentNullException(nameof(teacherRepository)); + } + + private void FormViewTeachers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCreate_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonUpdate_Click(object sender, EventArgs e) + { + if (!TryGetIdFromSelectesRow(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 buttonDelete_Click(object sender, EventArgs e) + { + if(!TryGetIdFromSelectesRow(out var findId)){ + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _teacherRepository.DeleteTeacher(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + + private void LoadList() + { + dataGridView.DataSource = _teacherRepository.ReadTeachers(); + } + + private bool TryGetIdFromSelectesRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.resx b/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormViewEntities/FormViewTeachers.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/StudentProgressRecord/Forms/FormsEntity/FormStatement.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormStatement.Designer.cs new file mode 100644 index 0000000..305fd83 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStatement.Designer.cs @@ -0,0 +1,179 @@ +namespace StudentProgressRecord.Forms +{ + partial class FormStatement + { + /// + /// 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() + { + labelTeacher = new Label(); + comboBoxTeacher = new ComboBox(); + dateTimePicker = new DateTimePicker(); + labelDate = new Label(); + dataGridView = new DataGridView(); + columnStudent = new DataGridViewComboBoxColumn(); + columnMark = new DataGridViewComboBoxColumn(); + buttonApply = new Button(); + buttonCancel = new Button(); + comboBoxSubject = new ComboBox(); + labelSubject = new Label(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // labelTeacher + // + labelTeacher.AutoSize = true; + labelTeacher.Location = new Point(12, 9); + labelTeacher.Name = "labelTeacher"; + labelTeacher.Size = new Size(125, 20); + labelTeacher.TabIndex = 0; + labelTeacher.Text = "Преподователь: "; + // + // comboBoxTeacher + // + comboBoxTeacher.FormattingEnabled = true; + comboBoxTeacher.Location = new Point(12, 32); + comboBoxTeacher.Name = "comboBoxTeacher"; + comboBoxTeacher.Size = new Size(293, 28); + comboBoxTeacher.TabIndex = 1; + // + // dateTimePicker + // + dateTimePicker.Location = new Point(13, 163); + dateTimePicker.Name = "dateTimePicker"; + dateTimePicker.Size = new Size(250, 27); + dateTimePicker.TabIndex = 2; + // + // labelDate + // + labelDate.AutoSize = true; + labelDate.Location = new Point(12, 139); + labelDate.Name = "labelDate"; + labelDate.Size = new Size(41, 20); + labelDate.TabIndex = 3; + labelDate.Text = "Дата"; + // + // dataGridView + // + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { columnStudent, columnMark }); + dataGridView.Location = new Point(12, 200); + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersWidth = 51; + dataGridView.Size = new Size(378, 258); + dataGridView.TabIndex = 4; + // + // columnStudent + // + columnStudent.HeaderText = "Студент"; + columnStudent.MinimumWidth = 6; + columnStudent.Name = "columnStudent"; + columnStudent.Resizable = DataGridViewTriState.True; + columnStudent.SortMode = DataGridViewColumnSortMode.Automatic; + columnStudent.Width = 200; + // + // columnMark + // + columnMark.HeaderText = "Оценка"; + columnMark.MinimumWidth = 6; + columnMark.Name = "columnMark"; + columnMark.Resizable = DataGridViewTriState.True; + columnMark.SortMode = DataGridViewColumnSortMode.Automatic; + columnMark.Width = 125; + // + // buttonApply + // + buttonApply.Location = new Point(12, 464); + buttonApply.Name = "buttonApply"; + buttonApply.Size = new Size(94, 29); + buttonApply.TabIndex = 5; + buttonApply.Text = "Сохранить"; + buttonApply.UseVisualStyleBackColor = true; + buttonApply.Click += buttonApply_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(296, 464); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 6; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // + // comboBoxSubject + // + comboBoxSubject.FormattingEnabled = true; + comboBoxSubject.Location = new Point(13, 104); + comboBoxSubject.Name = "comboBoxSubject"; + comboBoxSubject.Size = new Size(293, 28); + comboBoxSubject.TabIndex = 8; + // + // labelSubject + // + labelSubject.AutoSize = true; + labelSubject.Location = new Point(13, 81); + labelSubject.Name = "labelSubject"; + labelSubject.Size = new Size(77, 20); + labelSubject.TabIndex = 7; + labelSubject.Text = "Предмет: "; + // + // FormStatement + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(396, 497); + Controls.Add(comboBoxSubject); + Controls.Add(labelSubject); + Controls.Add(buttonCancel); + Controls.Add(buttonApply); + Controls.Add(dataGridView); + Controls.Add(labelDate); + Controls.Add(dateTimePicker); + Controls.Add(comboBoxTeacher); + Controls.Add(labelTeacher); + Name = "FormStatement"; + StartPosition = FormStartPosition.CenterScreen; + Text = "FormStatement"; + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelTeacher; + private ComboBox comboBoxTeacher; + private DateTimePicker dateTimePicker; + private Label labelDate; + private DataGridView dataGridView; + private Button buttonApply; + private Button buttonCancel; + private DataGridViewComboBoxColumn columnStudent; + private DataGridViewComboBoxColumn columnMark; + private ComboBox comboBoxSubject; + private Label labelSubject; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStatement.cs b/StudentProgressRecord/Forms/FormsEntity/FormStatement.cs new file mode 100644 index 0000000..9c9956f --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStatement.cs @@ -0,0 +1,88 @@ +using StudentProgressRecord.Entity; +using StudentProgressRecord.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 StudentProgressRecord.Forms +{ + public partial class FormStatement : Form + { + private readonly IStatementRepository _statementRepository; + + public FormStatement( + IStatementRepository statementRepository, + ITeacherRepository teacherRepository, + IStudentRepository studentRepository, + ISubjectRepository subjectRepository) + { + InitializeComponent(); + _statementRepository = statementRepository ?? throw new ArgumentNullException(nameof(statementRepository)); + + comboBoxTeacher.DataSource = teacherRepository.ReadTeachers(); + comboBoxTeacher.DisplayMember = "Name"; + comboBoxTeacher.ValueMember = "Id"; + + comboBoxSubject.DataSource = subjectRepository.ReadSubjects(); + comboBoxSubject.DisplayMember = "Name"; + comboBoxSubject.ValueMember = "Id"; + + + var list = new List() {1,2,3,4,5}; + columnMark.DataSource = list; + + + columnStudent.DataSource = studentRepository.ReadStudents(); + columnStudent.DisplayMember = "Name"; + columnStudent.ValueMember = "Id"; + } + + private void buttonApply_Click(object sender, EventArgs e) + { + try + { + if (dataGridView.RowCount < 1 || comboBoxTeacher.SelectedIndex < 0 || comboBoxSubject.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненые поля"); + } + _statementRepository.CreateStatement(Statement.CreateOperation( + 0, + (long)comboBoxSubject.SelectedValue!, + (long)comboBoxTeacher.SelectedValue!, + dateTimePicker.Value, + CreateMarkListFromDataGrid()) + ); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + Close(); + } + + private List CreateMarkListFromDataGrid() + { + var marks = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["columnStudent"].Value == null || row.Cells["columnMark"].Value == null) + { + continue; + } + marks.Add(Marks.CreateElement(0, Convert.ToInt32(row.Cells["columnStudent"].Value), + Convert.ToInt32(row.Cells["columnMark"].Value))); + } + return marks; + } + } +} diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStatement.resx b/StudentProgressRecord/Forms/FormsEntity/FormStatement.resx new file mode 100644 index 0000000..854a6aa --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStatement.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStudent.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormStudent.Designer.cs new file mode 100644 index 0000000..466fd4f --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStudent.Designer.cs @@ -0,0 +1,124 @@ +namespace StudentProgressRecord.Forms +{ + partial class FormStudent + { + /// + /// 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() + { + labelFio = new Label(); + textBoxName = new TextBox(); + checkBoxFamilyPos = new CheckBox(); + checkBoxDomitory = new CheckBox(); + backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + buttonAply = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // labelFio + // + labelFio.AutoSize = true; + labelFio.Location = new Point(12, 9); + labelFio.Name = "labelFio"; + labelFio.Size = new Size(38, 20); + labelFio.TabIndex = 0; + labelFio.Text = "Фио"; + // + // textBoxName + // + textBoxName.Location = new Point(56, 6); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(186, 27); + textBoxName.TabIndex = 1; + // + // checkBoxFamilyPos + // + checkBoxFamilyPos.AutoSize = true; + checkBoxFamilyPos.Location = new Point(12, 39); + checkBoxFamilyPos.Name = "checkBoxFamilyPos"; + checkBoxFamilyPos.Size = new Size(143, 24); + checkBoxFamilyPos.TabIndex = 2; + checkBoxFamilyPos.Text = "Состоит в браке"; + checkBoxFamilyPos.UseVisualStyleBackColor = true; + // + // checkBoxDomitory + // + checkBoxDomitory.AutoSize = true; + checkBoxDomitory.Location = new Point(12, 69); + checkBoxDomitory.Name = "checkBoxDomitory"; + checkBoxDomitory.Size = new Size(114, 24); + checkBoxDomitory.TabIndex = 3; + checkBoxDomitory.Text = "Общажитие"; + checkBoxDomitory.UseVisualStyleBackColor = true; + // + // buttonAply + // + buttonAply.Location = new Point(12, 99); + buttonAply.Name = "buttonAply"; + buttonAply.Size = new Size(94, 29); + buttonAply.TabIndex = 4; + buttonAply.Text = "Сохранить"; + buttonAply.UseVisualStyleBackColor = true; + buttonAply.Click += buttonAply_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(148, 99); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // + // FormStudent + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(246, 136); + Controls.Add(buttonCancel); + Controls.Add(buttonAply); + Controls.Add(checkBoxDomitory); + Controls.Add(checkBoxFamilyPos); + Controls.Add(textBoxName); + Controls.Add(labelFio); + Name = "FormStudent"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Студент"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelFio; + private TextBox textBoxName; + private CheckBox checkBoxFamilyPos; + private CheckBox checkBoxDomitory; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + private Button buttonAply; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStudent.cs b/StudentProgressRecord/Forms/FormsEntity/FormStudent.cs new file mode 100644 index 0000000..95c528e --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStudent.cs @@ -0,0 +1,86 @@ +using StudentProgressRecord.Entity; +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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 StudentProgressRecord.Forms +{ + public partial class FormStudent : Form + { + public FormStudent(IStudentRepository studentRepository) + { + InitializeComponent(); + _studentRepository = studentRepository ?? throw new ArgumentNullException(nameof(studentRepository)); + } + + + private readonly IStudentRepository _studentRepository; + + private long? _studentId; + + public int Id + { + set + { + try + { + var student = _studentRepository.ReadStudentById(value); + if (student == null) + { + throw new InvalidOperationException(nameof(student)); + } + textBoxName.Text = student.Name; + checkBoxFamilyPos.Checked = student.FamilyPos; + checkBoxDomitory.Checked = student.Domitory; + _studentId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + private void buttonAply_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || + string.IsNullOrWhiteSpace(textBoxName.Text)) + { + throw new Exception("Имя не может быть пустым"); + } + + if (_studentId.HasValue) + { + _studentRepository.UpdateStudent(CreateStudent(_studentId.Value)); + } + else + { + _studentRepository.CreateStudent(CreateStudent(0L)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show( + ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + Close(); + } + private Student CreateStudent(long id) => Student.CreateEntity(id, textBoxName.Text, checkBoxFamilyPos.Checked, checkBoxDomitory.Checked); + } +} diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStudent.resx b/StudentProgressRecord/Forms/FormsEntity/FormStudent.resx new file mode 100644 index 0000000..fa7aa79 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStudent.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/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.Designer.cs new file mode 100644 index 0000000..2176a39 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.Designer.cs @@ -0,0 +1,143 @@ +namespace StudentProgressRecord.Forms +{ + partial class FormStudentTransition + { + /// + /// 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() + { + labelStudent = new Label(); + labelOperation = new Label(); + comboBoxStudent = new ComboBox(); + dateTimePicker = new DateTimePicker(); + labelDate = new Label(); + buttonAply = new Button(); + buttonCancel = new Button(); + comboBoxOperations = new ComboBox(); + SuspendLayout(); + // + // labelStudent + // + labelStudent.AutoSize = true; + labelStudent.Location = new Point(12, 9); + labelStudent.Name = "labelStudent"; + labelStudent.Size = new Size(62, 20); + labelStudent.TabIndex = 0; + labelStudent.Text = "Студент"; + // + // labelOperation + // + labelOperation.AutoSize = true; + labelOperation.Location = new Point(12, 64); + labelOperation.Name = "labelOperation"; + labelOperation.Size = new Size(80, 20); + labelOperation.TabIndex = 1; + labelOperation.Text = "Операция"; + // + // comboBoxStudent + // + comboBoxStudent.FormattingEnabled = true; + comboBoxStudent.Location = new Point(109, 6); + comboBoxStudent.Name = "comboBoxStudent"; + comboBoxStudent.Size = new Size(195, 28); + comboBoxStudent.TabIndex = 2; + // + // dateTimePicker + // + dateTimePicker.Enabled = false; + dateTimePicker.Location = new Point(113, 114); + dateTimePicker.Name = "dateTimePicker"; + dateTimePicker.Size = new Size(195, 27); + dateTimePicker.TabIndex = 4; + // + // labelDate + // + labelDate.AutoSize = true; + labelDate.Location = new Point(16, 119); + labelDate.Name = "labelDate"; + labelDate.Size = new Size(41, 20); + labelDate.TabIndex = 5; + labelDate.Text = "Дата"; + // + // buttonAply + // + buttonAply.Location = new Point(12, 269); + buttonAply.Name = "buttonAply"; + buttonAply.Size = new Size(94, 29); + buttonAply.TabIndex = 6; + buttonAply.Text = "Сохранить"; + buttonAply.UseVisualStyleBackColor = true; + buttonAply.Click += buttonAply_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(214, 269); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // + // comboBoxOperations + // + comboBoxOperations.FormattingEnabled = true; + comboBoxOperations.Location = new Point(109, 61); + comboBoxOperations.Name = "comboBoxOperations"; + comboBoxOperations.Size = new Size(195, 28); + comboBoxOperations.TabIndex = 8; + // + // FormStudentTransition + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(320, 310); + Controls.Add(comboBoxOperations); + Controls.Add(buttonCancel); + Controls.Add(buttonAply); + Controls.Add(labelDate); + Controls.Add(dateTimePicker); + Controls.Add(comboBoxStudent); + Controls.Add(labelOperation); + Controls.Add(labelStudent); + Name = "FormStudentTransition"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Перемещенния студентов"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelStudent; + private Label labelOperation; + private ComboBox comboBoxStudent; + private DateTimePicker dateTimePicker; + private Label labelDate; + private Button buttonAply; + private Button buttonCancel; + private ComboBox comboBoxOperations; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.cs b/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.cs new file mode 100644 index 0000000..9862470 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.cs @@ -0,0 +1,74 @@ +using Microsoft.VisualBasic.FileIO; +using StudentProgressRecord.Entity; +using StudentProgressRecord.Entity.Enums; +using StudentProgressRecord.IRepositories; +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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 StudentProgressRecord.Forms +{ + public partial class FormStudentTransition : Form + { + + private readonly IStudentTransitionRepository _studentTransitionRepository; + + public FormStudentTransition(IStudentTransitionRepository studentTransition, IStudentRepository studentRepository) + { + InitializeComponent(); + _studentTransitionRepository = studentTransition ?? throw new ArgumentNullException(nameof(studentTransition)); + + if (studentRepository == null) + { + throw new ArgumentNullException(nameof(studentRepository)); + } + foreach (var elem in Enum.GetValues(typeof(Operations))) + { + comboBoxOperations.Items.Add(elem); + } + comboBoxStudent.DataSource = studentRepository.ReadStudents(); + comboBoxStudent.DisplayMember = "Name"; + comboBoxStudent.ValueMember = "Id"; + } + + private void buttonAply_Click(object sender, EventArgs e) + { + try + { + if (comboBoxStudent.SelectedIndex < 0 || comboBoxOperations.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + Console.Write(comboBoxOperations.SelectedItem); + _studentTransitionRepository.CreateStudentTransition( + StudentTransition.CreateOperation( + 0L, + (long)comboBoxStudent.SelectedValue!, + (Operations)comboBoxOperations.SelectedItem!, + dateTimePicker.Value) + ); + Close(); + } + catch (Exception ex) + { + MessageBox.Show( + ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + + } + } +} diff --git a/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.resx b/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormStudentTransition.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/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs new file mode 100644 index 0000000..945a0c5 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs @@ -0,0 +1,96 @@ +namespace StudentProgressRecord +{ + partial class FormSubject + { + /// + /// 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() + { + labelSubject = new Label(); + textBoxSubject = new TextBox(); + buttonAply = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // labelSubject + // + labelSubject.AutoSize = true; + labelSubject.Location = new Point(12, 9); + labelSubject.Name = "labelSubject"; + labelSubject.Size = new Size(73, 20); + labelSubject.TabIndex = 0; + labelSubject.Text = "Предмет:"; + // + // textBoxSubject + // + textBoxSubject.Location = new Point(91, 6); + textBoxSubject.Name = "textBoxSubject"; + textBoxSubject.Size = new Size(157, 27); + textBoxSubject.TabIndex = 1; + // + // buttonAply + // + buttonAply.Location = new Point(13, 39); + buttonAply.Name = "buttonAply"; + buttonAply.Size = new Size(117, 29); + buttonAply.TabIndex = 2; + buttonAply.Text = "Сохранить"; + buttonAply.UseVisualStyleBackColor = true; + buttonAply.Click += buttonAply_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(136, 39); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(112, 29); + buttonCancel.TabIndex = 3; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // + // FormSubject + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(261, 77); + Controls.Add(buttonCancel); + Controls.Add(buttonAply); + Controls.Add(textBoxSubject); + Controls.Add(labelSubject); + Name = "FormSubject"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Предмет"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelSubject; + private TextBox textBoxSubject; + private Button buttonAply; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs b/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs new file mode 100644 index 0000000..1baad00 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs @@ -0,0 +1,83 @@ +using StudentProgressRecord.Entity; +using StudentProgressRecord.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 StudentProgressRecord +{ + public partial class FormSubject : Form + { + private readonly ISubjectRepository _subjectRepository; + + private long? _subjectId; + + public long Id + { + set + { + try + { + var subject = _subjectRepository.ReadSubjectById(value); + if (subject == null) + { + throw new InvalidOperationException(nameof(subject)); + } + textBoxSubject.Text = subject.Name; + _subjectId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + public FormSubject(ISubjectRepository subjectRepository) + { + InitializeComponent(); + _subjectRepository = subjectRepository ?? throw new ArgumentNullException(nameof(subjectRepository)); + } + + private void buttonAply_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxSubject.Text) || + string.IsNullOrWhiteSpace(textBoxSubject.Text)) + { + throw new Exception("Имя не может быть пустым"); + } + + if (_subjectId.HasValue) + { + _subjectRepository.UpdateSubject(CreateSubject(_subjectId.Value)); + } + else + { + _subjectRepository.CreateSubject(CreateSubject(0L)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show( + ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + Close(); + } + private Subject CreateSubject(long id) => Subject.CreateEntity(id, textBoxSubject.Text); + + } +} diff --git a/StudentProgressRecord/Forms/FormsEntity/FormSubject.resx b/StudentProgressRecord/Forms/FormsEntity/FormSubject.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormSubject.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/StudentProgressRecord/Forms/FormsEntity/FormTeacher.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormTeacher.Designer.cs new file mode 100644 index 0000000..8fa3087 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormTeacher.Designer.cs @@ -0,0 +1,96 @@ +namespace StudentProgressRecord.Forms +{ + partial class FormTeacher + { + /// + /// 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() + { + labelSubject = new Label(); + textBoxTeacher = new TextBox(); + buttonAply = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // labelSubject + // + labelSubject.AutoSize = true; + labelSubject.Location = new Point(12, 9); + labelSubject.Name = "labelSubject"; + labelSubject.Size = new Size(124, 20); + labelSubject.TabIndex = 0; + labelSubject.Text = "Преподаватель: "; + // + // textBoxTeacher + // + textBoxTeacher.Location = new Point(12, 32); + textBoxTeacher.Name = "textBoxTeacher"; + textBoxTeacher.Size = new Size(182, 27); + textBoxTeacher.TabIndex = 1; + // + // buttonAply + // + buttonAply.Location = new Point(12, 76); + buttonAply.Name = "buttonAply"; + buttonAply.Size = new Size(126, 29); + buttonAply.TabIndex = 2; + buttonAply.Text = "Сохранить"; + buttonAply.UseVisualStyleBackColor = true; + buttonAply.Click += buttonAply_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(144, 76); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(130, 29); + buttonCancel.TabIndex = 3; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // + // FormTeacher + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(291, 114); + Controls.Add(buttonCancel); + Controls.Add(buttonAply); + Controls.Add(textBoxTeacher); + Controls.Add(labelSubject); + Name = "FormTeacher"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Преподаватель"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelSubject; + private TextBox textBoxTeacher; + private Button buttonAply; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormTeacher.cs b/StudentProgressRecord/Forms/FormsEntity/FormTeacher.cs new file mode 100644 index 0000000..ad95f2e --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormTeacher.cs @@ -0,0 +1,88 @@ +using StudentProgressRecord.Entity; +using StudentProgressRecord.Repositories; +using StudentProgressRecord.RepositoryImp; +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 StudentProgressRecord.Forms +{ + public partial class FormTeacher : Form + { + + private readonly ITeacherRepository _teacherRepository; + + private long? _teacherId; + + public FormTeacher(ITeacherRepository teacherRepository) + { + InitializeComponent(); + _teacherRepository = teacherRepository ?? throw new ArgumentNullException(nameof(teacherRepository)); + } + + + + public long Id + { + set + { + try + { + var teacher = _teacherRepository.ReadTeacherById(value); + if (teacher == null) + { + throw new InvalidOperationException(nameof(teacher)); + } + textBoxTeacher.Text = teacher.Name; + _teacherId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + + private Teacher CreateTeacher(long id) => Teacher.CreateEntity(id, textBoxTeacher.Text); + + private void buttonAply_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxTeacher.Text) || + string.IsNullOrWhiteSpace(textBoxTeacher.Text)) + { + throw new Exception("Имя не может быть пустым"); + } + + if (_teacherId.HasValue) + { + _teacherRepository.UpdateTeacher(CreateTeacher(_teacherId.Value)); + } + else + { + _teacherRepository.CreateTeacher(CreateTeacher(0L)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show( + ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCancel_Click(object sender, EventArgs e) + { + Close(); + } + } +} diff --git a/StudentProgressRecord/Forms/FormsEntity/FormTeacher.resx b/StudentProgressRecord/Forms/FormsEntity/FormTeacher.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormTeacher.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/StudentProgressRecord/University.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs similarity index 77% rename from StudentProgressRecord/University.Designer.cs rename to StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs index de33cba..3aea736 100644 --- a/StudentProgressRecord/University.Designer.cs +++ b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs @@ -1,6 +1,6 @@ namespace StudentProgressRecord { - partial class University + partial class FormUniversity { /// /// Required designer variable. @@ -28,18 +28,16 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(University)); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormUniversity)); menuStrip1 = new MenuStrip(); HandbookToolStripMenuItem = new ToolStripMenuItem(); - FacultyToolStripMenuItem = new ToolStripMenuItem(); - OperationToolStripMenuItem = new ToolStripMenuItem(); - ReportToolStripMenuItem = new ToolStripMenuItem(); - DepartmentToolStripMenuItem = new ToolStripMenuItem(); - GroupToolStripMenuItem = new ToolStripMenuItem(); StudentToolStripMenuItem = new ToolStripMenuItem(); TeacherToolStripMenuItem = new ToolStripMenuItem(); SubjectToolStripMenuItem = new ToolStripMenuItem(); StatementToolStripMenuItem = new ToolStripMenuItem(); + OperationToolStripMenuItem = new ToolStripMenuItem(); + TransientToolStripMenuItem = new ToolStripMenuItem(); + ReportToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); SuspendLayout(); // @@ -55,66 +53,60 @@ // // HandbookToolStripMenuItem // - HandbookToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { FacultyToolStripMenuItem, DepartmentToolStripMenuItem, GroupToolStripMenuItem, StudentToolStripMenuItem, TeacherToolStripMenuItem, SubjectToolStripMenuItem, StatementToolStripMenuItem }); + HandbookToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { StudentToolStripMenuItem, TeacherToolStripMenuItem, SubjectToolStripMenuItem, StatementToolStripMenuItem }); HandbookToolStripMenuItem.Name = "HandbookToolStripMenuItem"; HandbookToolStripMenuItem.Size = new Size(117, 24); HandbookToolStripMenuItem.Text = "Справочники"; // - // FacultyToolStripMenuItem + // StudentToolStripMenuItem // - FacultyToolStripMenuItem.Name = "FacultyToolStripMenuItem"; - FacultyToolStripMenuItem.Size = new Size(201, 26); - FacultyToolStripMenuItem.Text = "Факультеты"; + StudentToolStripMenuItem.Name = "StudentToolStripMenuItem"; + StudentToolStripMenuItem.Size = new Size(201, 26); + StudentToolStripMenuItem.Text = "Студенты"; + StudentToolStripMenuItem.Click += StudentToolStripMenuItem_Click; + // + // TeacherToolStripMenuItem + // + TeacherToolStripMenuItem.Name = "TeacherToolStripMenuItem"; + TeacherToolStripMenuItem.Size = new Size(201, 26); + TeacherToolStripMenuItem.Text = "Преподаватели"; + TeacherToolStripMenuItem.Click += TeacherToolStripMenuItem_Click; + // + // SubjectToolStripMenuItem + // + SubjectToolStripMenuItem.Name = "SubjectToolStripMenuItem"; + SubjectToolStripMenuItem.Size = new Size(201, 26); + SubjectToolStripMenuItem.Text = "Предметы"; + SubjectToolStripMenuItem.Click += SubjectToolStripMenuItem_Click; + // + // StatementToolStripMenuItem + // + StatementToolStripMenuItem.Name = "StatementToolStripMenuItem"; + StatementToolStripMenuItem.Size = new Size(201, 26); + StatementToolStripMenuItem.Text = "Ведомость"; + StatementToolStripMenuItem.Click += StatementToolStripMenuItem_Click; // // OperationToolStripMenuItem // + OperationToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { TransientToolStripMenuItem }); OperationToolStripMenuItem.Name = "OperationToolStripMenuItem"; OperationToolStripMenuItem.Size = new Size(95, 24); OperationToolStripMenuItem.Text = "Операции"; // + // TransientToolStripMenuItem + // + TransientToolStripMenuItem.Name = "TransientToolStripMenuItem"; + TransientToolStripMenuItem.Size = new Size(224, 26); + TransientToolStripMenuItem.Text = "Перемещения"; + TransientToolStripMenuItem.Click += this.TransientToolStripMenuItem_Click_1; + // // ReportToolStripMenuItem // ReportToolStripMenuItem.Name = "ReportToolStripMenuItem"; ReportToolStripMenuItem.Size = new Size(73, 24); ReportToolStripMenuItem.Text = "Отчеты"; // - // DepartmentToolStripMenuItem - // - DepartmentToolStripMenuItem.Name = "DepartmentToolStripMenuItem"; - DepartmentToolStripMenuItem.Size = new Size(201, 26); - DepartmentToolStripMenuItem.Text = "Кафедры"; - // - // GroupToolStripMenuItem - // - GroupToolStripMenuItem.Name = "GroupToolStripMenuItem"; - GroupToolStripMenuItem.Size = new Size(201, 26); - GroupToolStripMenuItem.Text = "Группы"; - // - // StudentToolStripMenuItem - // - StudentToolStripMenuItem.Name = "StudentToolStripMenuItem"; - StudentToolStripMenuItem.Size = new Size(201, 26); - StudentToolStripMenuItem.Text = "Студенты"; - // - // TeacherToolStripMenuItem - // - TeacherToolStripMenuItem.Name = "TeacherToolStripMenuItem"; - TeacherToolStripMenuItem.Size = new Size(201, 26); - TeacherToolStripMenuItem.Text = "Преподаватели"; - // - // SubjectToolStripMenuItem - // - SubjectToolStripMenuItem.Name = "SubjectToolStripMenuItem"; - SubjectToolStripMenuItem.Size = new Size(201, 26); - SubjectToolStripMenuItem.Text = "Предметы"; - // - // StatementToolStripMenuItem - // - StatementToolStripMenuItem.Name = "StatementToolStripMenuItem"; - StatementToolStripMenuItem.Size = new Size(201, 26); - StatementToolStripMenuItem.Text = "Ведомость"; - // - // University + // FormUniversity // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; @@ -123,7 +115,7 @@ ClientSize = new Size(1200, 599); Controls.Add(menuStrip1); MainMenuStrip = menuStrip1; - Name = "University"; + Name = "FormUniversity"; Text = "University"; menuStrip1.ResumeLayout(false); menuStrip1.PerformLayout(); @@ -134,14 +126,12 @@ #endregion private MenuStrip menuStrip1; private ToolStripMenuItem HandbookToolStripMenuItem; - private ToolStripMenuItem FacultyToolStripMenuItem; private ToolStripMenuItem OperationToolStripMenuItem; private ToolStripMenuItem ReportToolStripMenuItem; - private ToolStripMenuItem DepartmentToolStripMenuItem; - private ToolStripMenuItem GroupToolStripMenuItem; private ToolStripMenuItem StudentToolStripMenuItem; private ToolStripMenuItem TeacherToolStripMenuItem; private ToolStripMenuItem SubjectToolStripMenuItem; private ToolStripMenuItem StatementToolStripMenuItem; + private ToolStripMenuItem TransientToolStripMenuItem; } } \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs new file mode 100644 index 0000000..1329ef0 --- /dev/null +++ b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs @@ -0,0 +1,90 @@ +using StudentProgressRecord.Forms.FormViewEntities; +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 StudentProgressRecord +{ + public partial class FormUniversity : Form + { + + private readonly IUnityContainer _container; + + public FormUniversity(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + + private void StudentToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void TeacherToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void SubjectToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void StatementToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void TransientToolStripMenuItem_Click_1(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } +} diff --git a/StudentProgressRecord/University.resx b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.resx similarity index 100% rename from StudentProgressRecord/University.resx rename to StudentProgressRecord/Forms/FormsEntity/FormUniversity.resx diff --git a/StudentProgressRecord/Program.cs b/StudentProgressRecord/Program.cs index 4483628..e88baeb 100644 --- a/StudentProgressRecord/Program.cs +++ b/StudentProgressRecord/Program.cs @@ -1,4 +1,5 @@ +using StudentProgressRecord.Forms; using StudentProgressRecord.IRepositories; using StudentProgressRecord.Repositories; using StudentProgressRecord.RepositoryImp; @@ -16,7 +17,7 @@ namespace StudentProgressRecord static void Main() { ApplicationConfiguration.Initialize(); - Application.Run(new University()); + Application.Run(CreateContainer().Resolve()); } private static IUnityContainer CreateContainer() diff --git a/StudentProgressRecord/RepositoryImp/StudentTransitionRepository.cs b/StudentProgressRecord/RepositoryImp/StudentTransitionRepository.cs index d646aca..ddec0cb 100644 --- a/StudentProgressRecord/RepositoryImp/StudentTransitionRepository.cs +++ b/StudentProgressRecord/RepositoryImp/StudentTransitionRepository.cs @@ -7,22 +7,22 @@ namespace StudentProgressRecord.RepositoryImp { public void CreateStudentTransition(StudentTransition studentTransition) { - throw new NotImplementedException(); + } public void DeleteStudentTransition(long id) { - throw new NotImplementedException(); + } public StudentTransition ReadStudentTransitionById(long id) { - return StudentTransition.CreateOperation(0, 0, Operations.None, DateTime.Now); + return StudentTransition.CreateOperation(0, 0, Operations.Transfer, DateTime.Now); } public IEnumerable ReadStudentTransitions(long? groupId = null, bool? familyPos = null, bool? domitory = null) { - throw new NotImplementedException(); + return []; } } } diff --git a/StudentProgressRecord/RepositoryImp/TeacherRepository.cs b/StudentProgressRecord/RepositoryImp/TeacherRepository.cs index b815111..9ac1980 100644 --- a/StudentProgressRecord/RepositoryImp/TeacherRepository.cs +++ b/StudentProgressRecord/RepositoryImp/TeacherRepository.cs @@ -22,7 +22,7 @@ namespace StudentProgressRecord.RepositoryImp public Teacher ReadTeacherById(long id) { - return Teacher.CreateEntity(0, string.Empty, 0); + return Teacher.CreateEntity(0, string.Empty); } public IEnumerable ReadTeachers(long? departmentID = null) diff --git a/StudentProgressRecord/University.cs b/StudentProgressRecord/University.cs deleted file mode 100644 index 68b47ac..0000000 --- a/StudentProgressRecord/University.cs +++ /dev/null @@ -1,20 +0,0 @@ -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 StudentProgressRecord -{ - public partial class University : Form - { - public University() - { - InitializeComponent(); - } - } -} -- 2.25.1 From 2cc365a2df06fdb6ab99a6c3f34d8761f263ec4b Mon Sep 17 00:00:00 2001 From: funa4i Date: Mon, 18 Nov 2024 15:41:14 +0400 Subject: [PATCH 2/5] refactor --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index ca1c7a3..269ad74 100644 --- a/.gitignore +++ b/.gitignore @@ -398,3 +398,5 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml +/StudentProgressRecord/docker-compose.yml +/StudentProgressRecord/V1_ddl.sql -- 2.25.1 From 1cd02b7d2f862bbe549fa507ada9656ed635a2e4 Mon Sep 17 00:00:00 2001 From: funa4i Date: Mon, 18 Nov 2024 15:41:33 +0400 Subject: [PATCH 3/5] labrefactor --- .../Entity/Enums/Direction.cs | 18 ++++++++++++ StudentProgressRecord/Entity/Subject.cs | 7 +++-- .../Forms/FormsEntity/FormSubject.Designer.cs | 29 +++++++++++++++++-- .../Forms/FormsEntity/FormSubject.cs | 26 +++++++++++++++-- .../FormsEntity/FormUniversity.Designer.cs | 24 +++++++-------- .../Forms/FormsEntity/FormUniversity.cs | 2 ++ .../RepositoryImp/SubjectRepository.cs | 3 +- 7 files changed, 88 insertions(+), 21 deletions(-) create mode 100644 StudentProgressRecord/Entity/Enums/Direction.cs diff --git a/StudentProgressRecord/Entity/Enums/Direction.cs b/StudentProgressRecord/Entity/Enums/Direction.cs new file mode 100644 index 0000000..6a9e6ef --- /dev/null +++ b/StudentProgressRecord/Entity/Enums/Direction.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StudentProgressRecord.Entity.Enums +{ + [Flags] + public enum Direction + { + None = 0, + PI = 1 << 0, + Ivt = 1 << 1, + Is = 1 << 2, + Ist = 1 << 3 + } +} diff --git a/StudentProgressRecord/Entity/Subject.cs b/StudentProgressRecord/Entity/Subject.cs index 5cede10..7b863ad 100644 --- a/StudentProgressRecord/Entity/Subject.cs +++ b/StudentProgressRecord/Entity/Subject.cs @@ -1,4 +1,5 @@ -using System; +using StudentProgressRecord.Entity.Enums; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -12,7 +13,9 @@ namespace StudentProgressRecord.Entity public string Name { get; set; } - public static Subject CreateEntity(long id, string name) + public Direction direction { get; set; } + + public static Subject CreateEntity(long id, string name, Direction direction) { return new Subject { diff --git a/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs index 945a0c5..74fdd24 100644 --- a/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs +++ b/StudentProgressRecord/Forms/FormsEntity/FormSubject.Designer.cs @@ -32,6 +32,8 @@ textBoxSubject = new TextBox(); buttonAply = new Button(); buttonCancel = new Button(); + checkedListBoxDir = new CheckedListBox(); + label1 = new Label(); SuspendLayout(); // // labelSubject @@ -52,7 +54,7 @@ // // buttonAply // - buttonAply.Location = new Point(13, 39); + buttonAply.Location = new Point(12, 259); buttonAply.Name = "buttonAply"; buttonAply.Size = new Size(117, 29); buttonAply.TabIndex = 2; @@ -62,7 +64,7 @@ // // buttonCancel // - buttonCancel.Location = new Point(136, 39); + buttonCancel.Location = new Point(135, 259); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(112, 29); buttonCancel.TabIndex = 3; @@ -70,11 +72,30 @@ buttonCancel.UseVisualStyleBackColor = true; buttonCancel.Click += buttonCancel_Click; // + // checkedListBoxDir + // + checkedListBoxDir.FormattingEnabled = true; + checkedListBoxDir.Location = new Point(91, 39); + checkedListBoxDir.Name = "checkedListBoxDir"; + checkedListBoxDir.Size = new Size(228, 158); + checkedListBoxDir.TabIndex = 4; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(12, 39); + label1.Name = "label1"; + label1.Size = new Size(73, 20); + label1.TabIndex = 5; + label1.Text = "Предмет:"; + // // FormSubject // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(261, 77); + ClientSize = new Size(412, 316); + Controls.Add(label1); + Controls.Add(checkedListBoxDir); Controls.Add(buttonCancel); Controls.Add(buttonAply); Controls.Add(textBoxSubject); @@ -92,5 +113,7 @@ private TextBox textBoxSubject; private Button buttonAply; private Button buttonCancel; + private CheckedListBox checkedListBoxDir; + private Label label1; } } \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs b/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs index 1baad00..455c77e 100644 --- a/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs +++ b/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs @@ -1,4 +1,6 @@ -using StudentProgressRecord.Entity; +using Microsoft.VisualBasic.FileIO; +using StudentProgressRecord.Entity; +using StudentProgressRecord.Entity.Enums; using StudentProgressRecord.Repositories; using System; using System.Collections.Generic; @@ -31,6 +33,13 @@ namespace StudentProgressRecord } textBoxSubject.Text = subject.Name; _subjectId = value; + foreach (Direction elem in Enum.GetValues(typeof(Direction))) + { + if ((elem & subject.direction) != 0) + { + checkedListBoxDir.SetItemChecked(checkedListBoxDir.Items.IndexOf(elem), true); + } + } } catch (Exception ex) { @@ -43,6 +52,10 @@ namespace StudentProgressRecord { InitializeComponent(); _subjectRepository = subjectRepository ?? throw new ArgumentNullException(nameof(subjectRepository)); + foreach (var elem in Enum.GetValues(typeof(Direction))) + { + checkedListBoxDir.Items.Add(elem); + } } private void buttonAply_Click(object sender, EventArgs e) @@ -77,7 +90,14 @@ namespace StudentProgressRecord { Close(); } - private Subject CreateSubject(long id) => Subject.CreateEntity(id, textBoxSubject.Text); - + private Subject CreateSubject(long id) + { + Direction direction = Direction.None; + foreach (var elem in checkedListBoxDir.CheckedItems) + { + direction |= (Direction)elem; + } + return Subject.CreateEntity(id, textBoxSubject.Text, direction); + } } } diff --git a/StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs index 3aea736..c1115b9 100644 --- a/StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs +++ b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.Designer.cs @@ -34,9 +34,9 @@ StudentToolStripMenuItem = new ToolStripMenuItem(); TeacherToolStripMenuItem = new ToolStripMenuItem(); SubjectToolStripMenuItem = new ToolStripMenuItem(); - StatementToolStripMenuItem = new ToolStripMenuItem(); OperationToolStripMenuItem = new ToolStripMenuItem(); TransientToolStripMenuItem = new ToolStripMenuItem(); + StatementToolStripMenuItem = new ToolStripMenuItem(); ReportToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); SuspendLayout(); @@ -53,7 +53,7 @@ // // HandbookToolStripMenuItem // - HandbookToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { StudentToolStripMenuItem, TeacherToolStripMenuItem, SubjectToolStripMenuItem, StatementToolStripMenuItem }); + HandbookToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { StudentToolStripMenuItem, TeacherToolStripMenuItem, SubjectToolStripMenuItem }); HandbookToolStripMenuItem.Name = "HandbookToolStripMenuItem"; HandbookToolStripMenuItem.Size = new Size(117, 24); HandbookToolStripMenuItem.Text = "Справочники"; @@ -79,16 +79,9 @@ SubjectToolStripMenuItem.Text = "Предметы"; SubjectToolStripMenuItem.Click += SubjectToolStripMenuItem_Click; // - // StatementToolStripMenuItem - // - StatementToolStripMenuItem.Name = "StatementToolStripMenuItem"; - StatementToolStripMenuItem.Size = new Size(201, 26); - StatementToolStripMenuItem.Text = "Ведомость"; - StatementToolStripMenuItem.Click += StatementToolStripMenuItem_Click; - // // OperationToolStripMenuItem // - OperationToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { TransientToolStripMenuItem }); + OperationToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { TransientToolStripMenuItem, StatementToolStripMenuItem }); OperationToolStripMenuItem.Name = "OperationToolStripMenuItem"; OperationToolStripMenuItem.Size = new Size(95, 24); OperationToolStripMenuItem.Text = "Операции"; @@ -98,7 +91,14 @@ TransientToolStripMenuItem.Name = "TransientToolStripMenuItem"; TransientToolStripMenuItem.Size = new Size(224, 26); TransientToolStripMenuItem.Text = "Перемещения"; - TransientToolStripMenuItem.Click += this.TransientToolStripMenuItem_Click_1; + TransientToolStripMenuItem.Click += TransientToolStripMenuItem_Click_1; + // + // StatementToolStripMenuItem + // + StatementToolStripMenuItem.Name = "StatementToolStripMenuItem"; + StatementToolStripMenuItem.Size = new Size(224, 26); + StatementToolStripMenuItem.Text = "Ведомость"; + StatementToolStripMenuItem.Click += StatementToolStripMenuItem_Click; // // ReportToolStripMenuItem // @@ -131,7 +131,7 @@ private ToolStripMenuItem StudentToolStripMenuItem; private ToolStripMenuItem TeacherToolStripMenuItem; private ToolStripMenuItem SubjectToolStripMenuItem; - private ToolStripMenuItem StatementToolStripMenuItem; private ToolStripMenuItem TransientToolStripMenuItem; + private ToolStripMenuItem StatementToolStripMenuItem; } } \ No newline at end of file diff --git a/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs index 1329ef0..5260e83 100644 --- a/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs +++ b/StudentProgressRecord/Forms/FormsEntity/FormUniversity.cs @@ -86,5 +86,7 @@ namespace StudentProgressRecord MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + } } diff --git a/StudentProgressRecord/RepositoryImp/SubjectRepository.cs b/StudentProgressRecord/RepositoryImp/SubjectRepository.cs index 6ecf5f8..33dda91 100644 --- a/StudentProgressRecord/RepositoryImp/SubjectRepository.cs +++ b/StudentProgressRecord/RepositoryImp/SubjectRepository.cs @@ -1,4 +1,5 @@ using StudentProgressRecord.Entity; +using StudentProgressRecord.Entity.Enums; using StudentProgressRecord.Repositories; using System; using System.Collections.Generic; @@ -22,7 +23,7 @@ namespace StudentProgressRecord.RepositoryImp public Subject ReadSubjectById(long id) { - return Subject.CreateEntity(0, string.Empty); + return Subject.CreateEntity(0, string.Empty, Direction.None); } public IEnumerable ReadSubjects() -- 2.25.1 From 04fdf32650e7b5f3d19836f8865b86875f227299 Mon Sep 17 00:00:00 2001 From: funa4i Date: Mon, 18 Nov 2024 16:08:50 +0400 Subject: [PATCH 4/5] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StudentProgressRecord/Forms/FormsEntity/FormSubject.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs b/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs index 455c77e..8d26e36 100644 --- a/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs +++ b/StudentProgressRecord/Forms/FormsEntity/FormSubject.cs @@ -62,8 +62,7 @@ namespace StudentProgressRecord { try { - if (string.IsNullOrWhiteSpace(textBoxSubject.Text) || - string.IsNullOrWhiteSpace(textBoxSubject.Text)) + if (string.IsNullOrWhiteSpace(textBoxSubject.Text) || checkedListBoxDir.Items.Count == 0) { throw new Exception("Имя не может быть пустым"); } -- 2.25.1 From b4dda162141534141a7cc3c2ef03dd792aefe521 Mon Sep 17 00:00:00 2001 From: funa4i Date: Tue, 19 Nov 2024 16:59:22 +0400 Subject: [PATCH 5/5] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StudentProgressRecord/Program.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/StudentProgressRecord/Program.cs b/StudentProgressRecord/Program.cs index e88baeb..2a73a6b 100644 --- a/StudentProgressRecord/Program.cs +++ b/StudentProgressRecord/Program.cs @@ -1,4 +1,3 @@ - using StudentProgressRecord.Forms; using StudentProgressRecord.IRepositories; using StudentProgressRecord.Repositories; -- 2.25.1