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(); - } - } -}