diff --git a/Academic_Performance/Academic_Performance/Entities/Mark.cs b/Academic_Performance/Academic_Performance/Entities/Mark.cs index 4b4a0f1..42618f6 100644 --- a/Academic_Performance/Academic_Performance/Entities/Mark.cs +++ b/Academic_Performance/Academic_Performance/Entities/Mark.cs @@ -16,7 +16,7 @@ namespace Academic_Performance.Entities public Value? Value { get; private set; } public DateTime Date { get; private set; } - public static Mark CreateOperation(int id, int studentId, int statmentSubjectId, int statmentTeacherId, Value value) + public static Mark CreateEntity(int id, int studentId, int statmentSubjectId, int statmentTeacherId, Value value) { return new Mark { diff --git a/Academic_Performance/Academic_Performance/Entities/Order.cs b/Academic_Performance/Academic_Performance/Entities/Order.cs index d5f1db4..1ff709d 100644 --- a/Academic_Performance/Academic_Performance/Entities/Order.cs +++ b/Academic_Performance/Academic_Performance/Entities/Order.cs @@ -11,12 +11,12 @@ namespace Academic_Performance.Entities { public int Id { get; private set; } public int StudentId { get; private set; } - public string Information { get; private set; } + public string Information { get; private set; } = string.Empty; public TypeS? TypeS { get; private set; } public DateTime Date { get; private set; } - public static Order CreateOperation(int id, int studentId, string information,TypeS types) + public static Order CreateEntity(int id, int studentId, string information,TypeS types) { return new Order { diff --git a/Academic_Performance/Academic_Performance/Entities/Statement.cs b/Academic_Performance/Academic_Performance/Entities/Statement.cs index 56831f0..b63ec34 100644 --- a/Academic_Performance/Academic_Performance/Entities/Statement.cs +++ b/Academic_Performance/Academic_Performance/Entities/Statement.cs @@ -1,6 +1,7 @@ using Academic_Performance.Entities.Enums; using System; using System.Collections.Generic; +using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -14,7 +15,8 @@ namespace Academic_Performance.Entities public int TeacherId{ get; private set; } public DateTime Date { get; private set; } - + + public static Statement CreateOperation(int id, int subjecttId, int teacherId) { return new Statement diff --git a/Academic_Performance/Academic_Performance/Entities/Subject.cs b/Academic_Performance/Academic_Performance/Entities/Subject.cs index ff8c74b..4935a50 100644 --- a/Academic_Performance/Academic_Performance/Entities/Subject.cs +++ b/Academic_Performance/Academic_Performance/Entities/Subject.cs @@ -11,7 +11,7 @@ public class Subject { public int Id { get; private set; } public string Name { get; private set; } = string.Empty; - public static Subject Create(int id, string name) + public static Subject CreateEntity(int id, string name) { return new Subject { diff --git a/Academic_Performance/Academic_Performance/Form1.Designer.cs b/Academic_Performance/Academic_Performance/Form1.Designer.cs index e6a3eb3..15da984 100644 --- a/Academic_Performance/Academic_Performance/Form1.Designer.cs +++ b/Academic_Performance/Academic_Performance/Form1.Designer.cs @@ -81,7 +81,7 @@ // оценкиToolStripMenuItem.Name = "оценкиToolStripMenuItem"; оценкиToolStripMenuItem.Size = new Size(270, 34); - оценкиToolStripMenuItem.Text = "Оценки"; + оценкиToolStripMenuItem.Text = "Приказ"; // // операцииToolStripMenuItem // @@ -93,13 +93,13 @@ // добавлениеToolStripMenuItem // добавлениеToolStripMenuItem.Name = "добавлениеToolStripMenuItem"; - добавлениеToolStripMenuItem.Size = new Size(202, 34); - добавлениеToolStripMenuItem.Text = "Приказ"; + добавлениеToolStripMenuItem.Size = new Size(270, 34); + добавлениеToolStripMenuItem.Text = "Оценка"; // // ведомостьToolStripMenuItem // ведомостьToolStripMenuItem.Name = "ведомостьToolStripMenuItem"; - ведомостьToolStripMenuItem.Size = new Size(202, 34); + ведомостьToolStripMenuItem.Size = new Size(270, 34); ведомостьToolStripMenuItem.Text = "Ведомость"; // // отчетыToolStripMenuItem diff --git a/Academic_Performance/Academic_Performance/Forms/FormMark.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormMark.Designer.cs new file mode 100644 index 0000000..4038bab --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormMark.Designer.cs @@ -0,0 +1,39 @@ +namespace Academic_Performance.Forms +{ + partial class FormMark + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "FormMark"; + } + + #endregion + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormMark.cs b/Academic_Performance/Academic_Performance/Forms/FormMark.cs new file mode 100644 index 0000000..5a89553 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormMark.cs @@ -0,0 +1,20 @@ +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 Academic_Performance.Forms +{ + public partial class FormMark : Form + { + public FormMark() + { + InitializeComponent(); + } + } +} diff --git a/Academic_Performance/Academic_Performance/Forms/FormMark.resx b/Academic_Performance/Academic_Performance/Forms/FormMark.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormMark.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/Academic_Performance/Academic_Performance/Forms/FormOrder.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormOrder.Designer.cs new file mode 100644 index 0000000..d478c05 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormOrder.Designer.cs @@ -0,0 +1,151 @@ +namespace Academic_Performance.Forms +{ + partial class FormOrder + { + /// + /// 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() + { + buttonSave = new Button(); + buttonEx = new Button(); + label1 = new Label(); + label2 = new Label(); + label3 = new Label(); + dateTimePicker1 = new DateTimePicker(); + comboBoxType = new ComboBox(); + textBoxInf = new TextBox(); + comboBoxIdStudent = new ComboBox(); + SuspendLayout(); + // + // buttonSave + // + buttonSave.Location = new Point(80, 404); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(112, 34); + buttonSave.TabIndex = 1; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonEx + // + buttonEx.Location = new Point(572, 404); + buttonEx.Name = "buttonEx"; + buttonEx.Size = new Size(112, 34); + buttonEx.TabIndex = 2; + buttonEx.Text = "Отмена"; + buttonEx.UseVisualStyleBackColor = true; + buttonEx.Click += buttonEx_Click; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(62, 31); + label1.Name = "label1"; + label1.Size = new Size(49, 25); + label1.TabIndex = 3; + label1.Text = "Дата"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(70, 104); + label2.Name = "label2"; + label2.Size = new Size(41, 25); + label2.TabIndex = 4; + label2.Text = "Тип"; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(28, 187); + label3.Name = "label3"; + label3.Size = new Size(121, 25); + label3.TabIndex = 5; + label3.Text = "Информация"; + // + // dateTimePicker1 + // + dateTimePicker1.Location = new Point(184, 26); + dateTimePicker1.Name = "dateTimePicker1"; + dateTimePicker1.Size = new Size(300, 31); + dateTimePicker1.TabIndex = 6; + // + // comboBoxType + // + comboBoxType.FormattingEnabled = true; + comboBoxType.Location = new Point(184, 104); + comboBoxType.Name = "comboBoxType"; + comboBoxType.Size = new Size(516, 33); + comboBoxType.TabIndex = 7; + // + // textBoxInf + // + textBoxInf.Location = new Point(175, 192); + textBoxInf.Name = "textBoxInf"; + textBoxInf.Size = new Size(525, 31); + textBoxInf.TabIndex = 8; + // + // comboBoxIdStudent + // + comboBoxIdStudent.FormattingEnabled = true; + comboBoxIdStudent.Location = new Point(175, 268); + comboBoxIdStudent.Name = "comboBoxIdStudent"; + comboBoxIdStudent.Size = new Size(182, 33); + comboBoxIdStudent.TabIndex = 9; + // + // FormOrder + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(comboBoxIdStudent); + Controls.Add(textBoxInf); + Controls.Add(comboBoxType); + Controls.Add(dateTimePicker1); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(buttonEx); + Controls.Add(buttonSave); + Name = "FormOrder"; + Text = "FormOrder"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button buttonSave; + private Button buttonEx; + private Label label1; + private Label label2; + private Label label3; + private DateTimePicker dateTimePicker1; + private ComboBox comboBoxType; + private TextBox textBoxInf; + private ComboBox comboBoxIdStudent; + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormOrder.cs b/Academic_Performance/Academic_Performance/Forms/FormOrder.cs new file mode 100644 index 0000000..d6c4800 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormOrder.cs @@ -0,0 +1,93 @@ +using Academic_Performance.Entities; +using Academic_Performance.Entities.Enums; +using Academic_Performance.Repositories; +using Academic_Performance.Repositories.Implementations; +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 Academic_Performance.Forms +{ + public partial class FormOrder : Form + { + private readonly IOrderRepository _orderRepository; + + private int? _orderId; + + public int Id + { + set + { + try + { + var order = _orderRepository.GetOrderById(value); + if (order == null) + { + throw new InvalidDataException(nameof(order)); + } + textBoxInf.Text = order.Information; + _orderId = value; + comboBoxType.SelectedItem = + order.TypeS; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + + } + } + } + public FormOrder(IOrderRepository orderRepository, IStudentRepository studentRepository) + { + InitializeComponent(); + + _orderRepository = orderRepository ?? + throw new + ArgumentNullException(nameof(orderRepository)); + comboBoxType.DataSource = + Enum.GetValues(typeof(TypeS)); + comboBoxIdStudent.DataSource = studentRepository.ReadStudent(); + comboBoxIdStudent.DisplayMember = "Name"; + comboBoxIdStudent.ValueMember = "Id"; + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxInf.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_orderId.HasValue) + { + _orderRepository.UpdateOrder(CreateOrder(_orderId.Value)); + } + else + { + _orderRepository.AddOrder(CreateOrder(0)); + } + + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonEx_Click(object sender, EventArgs e) => Close(); + private Order CreateOrder(int id) => Order.CreateEntity(id, (int)comboBoxIdStudent.SelectedValue!, textBoxInf.Text, + (TypeS)comboBoxType.SelectedItem!); + } +} diff --git a/Academic_Performance/Academic_Performance/Forms/FormOrder.resx b/Academic_Performance/Academic_Performance/Forms/FormOrder.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormOrder.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/Academic_Performance/Academic_Performance/Forms/FormOrders.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormOrders.Designer.cs new file mode 100644 index 0000000..dbf57fc --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormOrders.Designer.cs @@ -0,0 +1,125 @@ +namespace Academic_Performance.Forms +{ + partial class FormOrders + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonSave = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonUpd); + panel1.Controls.Add(buttonSave); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(591, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(209, 450); + panel1.TabIndex = 1; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(52, 324); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(112, 98); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += buttonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.Upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(52, 173); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(112, 96); + buttonUpd.TabIndex = 1; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += buttonUpd_Click; + // + // buttonSave + // + buttonSave.BackgroundImage = Properties.Resources.Add; + buttonSave.BackgroundImageLayout = ImageLayout.Stretch; + buttonSave.Location = new Point(52, 28); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(112, 93); + buttonSave.TabIndex = 0; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_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 = 62; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(591, 450); + dataGridView.TabIndex = 2; + // + // FormOrders + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormOrders"; + Text = "FormOrders"; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonDel; + private Button buttonUpd; + private Button buttonSave; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormOrders.cs b/Academic_Performance/Academic_Performance/Forms/FormOrders.cs new file mode 100644 index 0000000..53d9761 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormOrders.cs @@ -0,0 +1,112 @@ +using Academic_Performance.Repositories; +using Academic_Performance.Repositories.Implementations; +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 Academic_Performance.Forms +{ + public partial class FormOrders : Form + { + private readonly IUnityContainer _container; + + private readonly IOrderRepository _orderRepository; + public FormOrders(IUnityContainer container, IOrderRepository orderRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _orderRepository = orderRepository ?? + throw new ArgumentNullException(nameof(orderRepository)); + } + private void FormRoutes_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _orderRepository.DeleteOrder(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridView.DataSource = _orderRepository.ReadOrder(); + private bool TryGetIdentifierFromSelectedRow(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/Academic_Performance/Academic_Performance/Forms/FormOrders.resx b/Academic_Performance/Academic_Performance/Forms/FormOrders.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormOrders.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/Academic_Performance/Academic_Performance/Forms/FormStudents.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormStudents.Designer.cs index 7f6e408..6a930d2 100644 --- a/Academic_Performance/Academic_Performance/Forms/FormStudents.Designer.cs +++ b/Academic_Performance/Academic_Performance/Forms/FormStudents.Designer.cs @@ -50,31 +50,34 @@ // // button3 // + button3.BackgroundImage = Properties.Resources.Del; + button3.BackgroundImageLayout = ImageLayout.Stretch; button3.Location = new Point(52, 324); button3.Name = "button3"; - button3.Size = new Size(112, 34); + button3.Size = new Size(112, 98); button3.TabIndex = 2; - button3.Text = "button3"; button3.UseVisualStyleBackColor = true; button3.Click += button3_Click; // // button2 // + button2.BackgroundImage = Properties.Resources.Upd; + button2.BackgroundImageLayout = ImageLayout.Stretch; button2.Location = new Point(52, 173); button2.Name = "button2"; - button2.Size = new Size(112, 34); + button2.Size = new Size(112, 96); button2.TabIndex = 1; - button2.Text = "button2"; button2.UseVisualStyleBackColor = true; button2.Click += button2_Click; // // button1 // + button1.BackgroundImage = Properties.Resources.Add; + button1.BackgroundImageLayout = ImageLayout.Stretch; button1.Location = new Point(52, 28); button1.Name = "button1"; - button1.Size = new Size(112, 34); + button1.Size = new Size(112, 93); button1.TabIndex = 0; - button1.Text = "button1"; button1.UseVisualStyleBackColor = true; button1.Click += button1_Click; // diff --git a/Academic_Performance/Academic_Performance/Forms/FormStudents.cs b/Academic_Performance/Academic_Performance/Forms/FormStudents.cs index b5c6407..ec97936 100644 --- a/Academic_Performance/Academic_Performance/Forms/FormStudents.cs +++ b/Academic_Performance/Academic_Performance/Forms/FormStudents.cs @@ -36,7 +36,7 @@ namespace Academic_Performance.Forms MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void LoadList() => dataGridView1.DataSource = _studentRepository.GetAllStudents(); + private void LoadList() => dataGridView1.DataSource = _studentRepository.ReadStudent(); private void button2_Click(object sender, EventArgs e) { @@ -79,7 +79,15 @@ namespace Academic_Performance.Forms { return; } - + try + { + _studentRepository.DeleteStudent(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } private void StudentsList_Load(object sender, EventArgs e) diff --git a/Academic_Performance/Academic_Performance/Forms/FormSubject.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormSubject.Designer.cs new file mode 100644 index 0000000..03b7b8d --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormSubject.Designer.cs @@ -0,0 +1,96 @@ +namespace Academic_Performance.Forms +{ + 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() + { + buttonSave = new Button(); + buttonEx = new Button(); + label1 = new Label(); + textBoxName = new TextBox(); + SuspendLayout(); + // + // buttonSave + // + buttonSave.Location = new Point(73, 404); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(112, 34); + buttonSave.TabIndex = 1; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonEx + // + buttonEx.Location = new Point(513, 404); + buttonEx.Name = "buttonEx"; + buttonEx.Size = new Size(112, 34); + buttonEx.TabIndex = 2; + buttonEx.Text = "Отмена"; + buttonEx.UseVisualStyleBackColor = true; + buttonEx.Click += buttonEx_Click; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(12, 172); + label1.Name = "label1"; + label1.Size = new Size(173, 25); + label1.TabIndex = 3; + label1.Text = "Название предмета"; + label1.Click += label1_Click; + // + // textBoxName + // + textBoxName.Location = new Point(295, 169); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(241, 31); + textBoxName.TabIndex = 4; + // + // FormSubject + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(textBoxName); + Controls.Add(label1); + Controls.Add(buttonEx); + Controls.Add(buttonSave); + Name = "FormSubject"; + Text = "FormSubject"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button buttonSave; + private Button buttonEx; + private Label label1; + private TextBox textBoxName; + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormSubject.cs b/Academic_Performance/Academic_Performance/Forms/FormSubject.cs new file mode 100644 index 0000000..8a4de6b --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormSubject.cs @@ -0,0 +1,95 @@ +using Academic_Performance.Entities; +using Academic_Performance.Repositories; +using Academic_Performance.Repositories.Implementations; +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 static System.Windows.Forms.VisualStyles.VisualStyleElement; + +namespace Academic_Performance.Forms +{ + public partial class FormSubject : Form + { + private readonly ISubjectRepository _subjectRepository; + private int? _subjectId; + + public int Id + { + set + { + try + { + var student = _subjectRepository.GetSubjectById(value); + if (student == null) + { + throw new InvalidDataException(nameof(student)); + } + textBoxName.Text = student.Name; + _subjectId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + + } + } + } + + public FormSubject(ISubjectRepository subjectRepository) + { + InitializeComponent(); + _subjectRepository = subjectRepository ?? + throw new ArgumentNullException(nameof(subjectRepository)); + + } + + private void label1_Click(object sender, EventArgs e) + { + + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) ) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_subjectId.HasValue) + { + _subjectRepository.UpdateSubject(CreateSubject(_subjectId.Value)); + } + else + { + _subjectRepository.AddSubject(CreateSubject(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private Subject CreateSubject(int id) => Subject.CreateEntity( + id, + textBoxName.Text + ); + + private void buttonEx_Click(object sender, EventArgs e) => Close(); + + + + } +} diff --git a/Academic_Performance/Academic_Performance/Forms/FormSubject.resx b/Academic_Performance/Academic_Performance/Forms/FormSubject.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/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/Academic_Performance/Academic_Performance/Forms/FormSubjects.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormSubjects.Designer.cs new file mode 100644 index 0000000..f62dc8b --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormSubjects.Designer.cs @@ -0,0 +1,125 @@ +namespace Academic_Performance.Forms +{ + partial class FormSubjects + { + /// + /// 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(); + button3 = new Button(); + button2 = new Button(); + button1 = new Button(); + dataGridView1 = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(button3); + panel1.Controls.Add(button2); + panel1.Controls.Add(button1); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(591, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(209, 450); + panel1.TabIndex = 1; + // + // button3 + // + button3.BackgroundImage = Properties.Resources.Del; + button3.BackgroundImageLayout = ImageLayout.Stretch; + button3.Location = new Point(52, 324); + button3.Name = "button3"; + button3.Size = new Size(112, 98); + button3.TabIndex = 2; + button3.UseVisualStyleBackColor = true; + button3.Click += button3_Click; + // + // button2 + // + button2.BackgroundImage = Properties.Resources.Upd; + button2.BackgroundImageLayout = ImageLayout.Stretch; + button2.Location = new Point(52, 173); + button2.Name = "button2"; + button2.Size = new Size(112, 96); + button2.TabIndex = 1; + button2.UseVisualStyleBackColor = true; + button2.Click += button2_Click; + // + // button1 + // + button1.BackgroundImage = Properties.Resources.Add; + button1.BackgroundImageLayout = ImageLayout.Stretch; + button1.Location = new Point(52, 28); + button1.Name = "button1"; + button1.Size = new Size(112, 93); + button1.TabIndex = 0; + button1.UseVisualStyleBackColor = true; + button1.Click += button1_Click; + // + // dataGridView1 + // + dataGridView1.AllowUserToAddRows = false; + dataGridView1.AllowUserToDeleteRows = false; + dataGridView1.AllowUserToResizeColumns = false; + dataGridView1.AllowUserToResizeRows = false; + dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView1.Dock = DockStyle.Fill; + dataGridView1.Location = new Point(0, 0); + dataGridView1.MultiSelect = false; + dataGridView1.Name = "dataGridView1"; + dataGridView1.ReadOnly = true; + dataGridView1.RowHeadersVisible = false; + dataGridView1.RowHeadersWidth = 62; + dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView1.Size = new Size(591, 450); + dataGridView1.TabIndex = 2; + // + // FormSubjects + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView1); + Controls.Add(panel1); + Name = "FormSubjects"; + Text = "FormSubjects"; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button button3; + private Button button2; + private Button button1; + private DataGridView dataGridView1; + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormSubjects.cs b/Academic_Performance/Academic_Performance/Forms/FormSubjects.cs new file mode 100644 index 0000000..7ee30fa --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormSubjects.cs @@ -0,0 +1,126 @@ +using Academic_Performance.Repositories; +using Academic_Performance.Repositories.Implementations; +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 Academic_Performance.Forms +{ + public partial class FormSubjects : Form + { + private readonly IUnityContainer _container; + private readonly ISubjectRepository _subjectRepository; + public FormSubjects(IUnityContainer container, ISubjectRepository subjectRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _subjectRepository = subjectRepository ?? throw new ArgumentNullException(nameof(subjectRepository)); + } + private void FormSubject_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void button1_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void button2_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id= findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void button3_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(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 SubjectList_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void LoadList() => dataGridView1.DataSource = _subjectRepository.ReadSubject(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView1.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Id"].Value); + return true; + } + + + } +} diff --git a/Academic_Performance/Academic_Performance/Forms/FormSubjects.resx b/Academic_Performance/Academic_Performance/Forms/FormSubjects.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormSubjects.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/Academic_Performance/Academic_Performance/Forms/FormTeacher.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormTeacher.Designer.cs new file mode 100644 index 0000000..63cb131 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormTeacher.Designer.cs @@ -0,0 +1,95 @@ +namespace Academic_Performance.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() + { + buttonSave = new Button(); + buttonEx = new Button(); + label1 = new Label(); + textBoxName = new TextBox(); + SuspendLayout(); + // + // buttonSave + // + buttonSave.Location = new Point(75, 253); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(112, 34); + buttonSave.TabIndex = 0; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonEx + // + buttonEx.Location = new Point(241, 253); + buttonEx.Name = "buttonEx"; + buttonEx.Size = new Size(112, 34); + buttonEx.TabIndex = 1; + buttonEx.Text = "Отмена"; + buttonEx.UseVisualStyleBackColor = true; + buttonEx.Click += buttonEx_Click; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(4, 91); + label1.Name = "label1"; + label1.Size = new Size(183, 25); + label1.TabIndex = 2; + label1.Text = "ФИО Преподавателя"; + // + // textBoxName + // + textBoxName.Location = new Point(218, 88); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(241, 31); + textBoxName.TabIndex = 3; + // + // FormTeacher + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(489, 315); + Controls.Add(textBoxName); + Controls.Add(label1); + Controls.Add(buttonEx); + Controls.Add(buttonSave); + Name = "FormTeacher"; + Text = "FormTeacher"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button buttonSave; + private Button buttonEx; + private Label label1; + private TextBox textBoxName; + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormTeacher.cs b/Academic_Performance/Academic_Performance/Forms/FormTeacher.cs new file mode 100644 index 0000000..b341ff5 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormTeacher.cs @@ -0,0 +1,86 @@ +using Academic_Performance.Repositories; +using Academic_Performance.Entities; +using Academic_Performance.Repositories.Implementations; +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 Academic_Performance.Forms +{ + public partial class FormTeacher : Form + { + + private readonly ITeacherRepository _teacherRepository; + + private int? _teacherId; + + public int Id + { + set + { + try + { + var teacher = _teacherRepository.GetTeacherById(value); + if (teacher == null) + { + throw new InvalidOperationException(nameof(teacher)); + } + + textBoxName.Text = teacher.Name; + _teacherId = value; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + public FormTeacher(ITeacherRepository teacherRepository) + { + InitializeComponent(); + _teacherRepository = teacherRepository ?? + throw new ArgumentNullException(nameof(teacherRepository)); + + + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_teacherId.HasValue) + { + _teacherRepository.UpdateTeacher(CreateTeacher(_teacherId.Value)); + } + else + { + _teacherRepository.CreateTeacher(CreateTeacher(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private Teacher CreateTeacher(int id) => + Teacher.CreateEntity(id, textBoxName.Text); + + private void buttonEx_Click(object sender, EventArgs e) => Close(); + + } +} diff --git a/Academic_Performance/Academic_Performance/Forms/FormTeacher.resx b/Academic_Performance/Academic_Performance/Forms/FormTeacher.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/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/Academic_Performance/Academic_Performance/Forms/FormTeachers.Designer.cs b/Academic_Performance/Academic_Performance/Forms/FormTeachers.Designer.cs new file mode 100644 index 0000000..6459d3d --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormTeachers.Designer.cs @@ -0,0 +1,125 @@ +namespace Academic_Performance.Forms +{ + partial class FormTeachers + { + /// + /// 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(); + button3 = new Button(); + button2 = new Button(); + button1 = new Button(); + dataGridView1 = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(button3); + panel1.Controls.Add(button2); + panel1.Controls.Add(button1); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(591, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(209, 450); + panel1.TabIndex = 1; + // + // button3 + // + button3.BackgroundImage = Properties.Resources.Del; + button3.BackgroundImageLayout = ImageLayout.Stretch; + button3.Location = new Point(52, 324); + button3.Name = "button3"; + button3.Size = new Size(112, 98); + button3.TabIndex = 2; + button3.UseVisualStyleBackColor = true; + button3.Click += button3_Click; + // + // button2 + // + button2.BackgroundImage = Properties.Resources.Upd; + button2.BackgroundImageLayout = ImageLayout.Stretch; + button2.Location = new Point(52, 173); + button2.Name = "button2"; + button2.Size = new Size(112, 96); + button2.TabIndex = 1; + button2.UseVisualStyleBackColor = true; + button2.Click += button2_Click; + // + // button1 + // + button1.BackgroundImage = Properties.Resources.Add; + button1.BackgroundImageLayout = ImageLayout.Stretch; + button1.Location = new Point(52, 28); + button1.Name = "button1"; + button1.Size = new Size(112, 93); + button1.TabIndex = 0; + button1.UseVisualStyleBackColor = true; + button1.Click += button1_Click; + // + // dataGridView1 + // + dataGridView1.AllowUserToAddRows = false; + dataGridView1.AllowUserToDeleteRows = false; + dataGridView1.AllowUserToResizeColumns = false; + dataGridView1.AllowUserToResizeRows = false; + dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView1.Dock = DockStyle.Fill; + dataGridView1.Location = new Point(0, 0); + dataGridView1.MultiSelect = false; + dataGridView1.Name = "dataGridView1"; + dataGridView1.ReadOnly = true; + dataGridView1.RowHeadersVisible = false; + dataGridView1.RowHeadersWidth = 62; + dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView1.Size = new Size(591, 450); + dataGridView1.TabIndex = 2; + // + // FormTeachers + // + AutoScaleDimensions = new SizeF(10F, 25F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView1); + Controls.Add(panel1); + Name = "FormTeachers"; + Text = "FormTeachers"; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button button3; + private Button button2; + private Button button1; + private DataGridView dataGridView1; + } +} \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Forms/FormTeachers.cs b/Academic_Performance/Academic_Performance/Forms/FormTeachers.cs new file mode 100644 index 0000000..ec3bc77 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormTeachers.cs @@ -0,0 +1,118 @@ +using Academic_Performance.Repositories; +using Academic_Performance.Repositories.Implementations; +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 Academic_Performance.Forms +{ + public partial class FormTeachers : Form + { + private readonly IUnityContainer _container; + + private readonly ITeacherRepository _teacherRepository; + public FormTeachers(IUnityContainer container, ITeacherRepository teacherRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _teacherRepository = teacherRepository ?? + throw new ArgumentNullException(nameof(teacherRepository)); + } + + private void button1_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void FormTeachers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridView1.DataSource = _teacherRepository.ReadTeachers(); + private void button2_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void button3_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(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 bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView1.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Id"].Value); + return true; + } + + + + + + + } +} diff --git a/Academic_Performance/Academic_Performance/Forms/FormTeachers.resx b/Academic_Performance/Academic_Performance/Forms/FormTeachers.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/Academic_Performance/Academic_Performance/Forms/FormTeachers.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/Academic_Performance/Academic_Performance/Properties/Resources.Designer.cs b/Academic_Performance/Academic_Performance/Properties/Resources.Designer.cs index 34b368d..4786d70 100644 --- a/Academic_Performance/Academic_Performance/Properties/Resources.Designer.cs +++ b/Academic_Performance/Academic_Performance/Properties/Resources.Designer.cs @@ -60,6 +60,26 @@ namespace Academic_Performance.Properties { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Add { + get { + object obj = ResourceManager.GetObject("Add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Del { + get { + object obj = ResourceManager.GetObject("Del", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// @@ -69,5 +89,15 @@ namespace Academic_Performance.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Upd { + get { + object obj = ResourceManager.GetObject("Upd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/Academic_Performance/Academic_Performance/Properties/Resources.resx b/Academic_Performance/Academic_Performance/Properties/Resources.resx index 1ab58a0..d1ec82c 100644 --- a/Academic_Performance/Academic_Performance/Properties/Resources.resx +++ b/Academic_Performance/Academic_Performance/Properties/Resources.resx @@ -118,7 +118,16 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\Del.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\unnamed.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Upd.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Academic_Performance/Academic_Performance/Repositories/IOrderRepository.cs b/Academic_Performance/Academic_Performance/Repositories/IOrderRepository.cs index 3518d82..c576945 100644 --- a/Academic_Performance/Academic_Performance/Repositories/IOrderRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/IOrderRepository.cs @@ -9,7 +9,7 @@ namespace Academic_Performance.Repositories { public interface IOrderRepository { - IEnumerable GetAllOrders(); + IEnumerable ReadOrder(); Order GetOrderById(int id); void AddOrder(Order order); void UpdateOrder(Order order); diff --git a/Academic_Performance/Academic_Performance/Repositories/IStudentRepository.cs b/Academic_Performance/Academic_Performance/Repositories/IStudentRepository.cs index edd939b..6026f5d 100644 --- a/Academic_Performance/Academic_Performance/Repositories/IStudentRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/IStudentRepository.cs @@ -9,7 +9,7 @@ namespace Academic_Performance.Repositories { public interface IStudentRepository { - IEnumerable GetAllStudents(); + IEnumerable ReadStudent(); Student GetStudentById(int id); void AddStudent(Student student); void UpdateStudent(Student student); diff --git a/Academic_Performance/Academic_Performance/Repositories/ISubjectRepository.cs b/Academic_Performance/Academic_Performance/Repositories/ISubjectRepository.cs index 7c01890..c1fa5a7 100644 --- a/Academic_Performance/Academic_Performance/Repositories/ISubjectRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/ISubjectRepository.cs @@ -9,7 +9,7 @@ namespace Academic_Performance.Repositories { public interface ISubjectRepository { - IEnumerable GetAllSubjects(); + IEnumerable ReadSubject(); Subject GetSubjectById(int id); void AddSubject(Subject subject); void UpdateSubject(Subject subject); diff --git a/Academic_Performance/Academic_Performance/Repositories/ITeacherRepository.cs b/Academic_Performance/Academic_Performance/Repositories/ITeacherRepository.cs index c609dbc..9ab7d1e 100644 --- a/Academic_Performance/Academic_Performance/Repositories/ITeacherRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/ITeacherRepository.cs @@ -9,9 +9,9 @@ namespace Academic_Performance.Repositories { public interface ITeacherRepository { - IEnumerable GetAllTeachers(); + IEnumerable ReadTeachers(); Teacher GetTeacherById(int id); - void AddTeacher(Teacher teacher); + void CreateTeacher(Teacher teacher); void UpdateTeacher(Teacher teacher); void DeleteTeacher(int id); } diff --git a/Academic_Performance/Academic_Performance/Repositories/Implementations/MarkRepository.cs b/Academic_Performance/Academic_Performance/Repositories/Implementations/MarkRepository.cs index 6cf2602..8f964bd 100644 --- a/Academic_Performance/Academic_Performance/Repositories/Implementations/MarkRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/Implementations/MarkRepository.cs @@ -13,33 +13,29 @@ namespace Academic_Performance.Repositories.Implementations { public void CreateMark(Mark Mark) { - // Заглушка } public void UpdateMark(Mark Mark) { - // Заглушка } public void DeleteMark(int id) { - // Заглушка } public Mark GetMarkById(int id) { - // Возвращаем объект с фиктивными данными, убедившись, что Mark.One существует - return Mark.CreateOperation(0, 0, 0, 0, Value.One); // Убедитесь, что Mark.One определен + return Mark.CreateEntity(0, 0, 0, 0, Value.One); } public IEnumerable GetAllMarks() { - // Заглушка + return new List(); } public void AddMark(Mark mark) { - // Заглушка + } } } diff --git a/Academic_Performance/Academic_Performance/Repositories/Implementations/OrderRepository.cs b/Academic_Performance/Academic_Performance/Repositories/Implementations/OrderRepository.cs index 4be2da7..630e143 100644 --- a/Academic_Performance/Academic_Performance/Repositories/Implementations/OrderRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/Implementations/OrderRepository.cs @@ -12,12 +12,10 @@ namespace Academic_Performance.Repositories.Implementations { public void AddOrder(Order order) { - // Заглушка } public void DeleteOrder(int id) { - // Заглушка } public IEnumerable GetAllOrders() @@ -27,12 +25,16 @@ namespace Academic_Performance.Repositories.Implementations public Order GetOrderById(int id) { - return Order.CreateOperation(0,0, string.Empty,TypeS.None); + return Order.CreateEntity(0,0, string.Empty,TypeS.None); } public void UpdateOrder(Order order) { - // Заглушка + } + + IEnumerable IOrderRepository.ReadOrder() + { + return []; } } } diff --git a/Academic_Performance/Academic_Performance/Repositories/Implementations/StudentRepository.cs b/Academic_Performance/Academic_Performance/Repositories/Implementations/StudentRepository.cs index 0916be7..f95c1e2 100644 --- a/Academic_Performance/Academic_Performance/Repositories/Implementations/StudentRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/Implementations/StudentRepository.cs @@ -12,12 +12,10 @@ namespace Academic_Performance.Repositories.Implementations { public void AddStudent(Student subject) { - // Заглушка } public void DeleteStudent(int id) { - // Заглушка } public IEnumerable GetAllStudents() @@ -32,7 +30,11 @@ namespace Academic_Performance.Repositories.Implementations public void UpdateStudent(Student student) { - // Заглушка + } + + IEnumerable IStudentRepository.ReadStudent() + { + return []; } } } diff --git a/Academic_Performance/Academic_Performance/Repositories/Implementations/SubjectRepository.cs b/Academic_Performance/Academic_Performance/Repositories/Implementations/SubjectRepository.cs index 9459100..08145de 100644 --- a/Academic_Performance/Academic_Performance/Repositories/Implementations/SubjectRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/Implementations/SubjectRepository.cs @@ -12,27 +12,26 @@ namespace Academic_Performance.Repositories.Implementations { public void AddSubject(Subject subject) { - // Заглушка } public void DeleteSubject(int id) { - // Заглушка } - public IEnumerable GetAllSubjects() - { - return new List(); - } + public Subject GetSubjectById(int id) { - return Subject.Create(0, string.Empty); + return Subject.CreateEntity(0, string.Empty); } public void UpdateSubject(Subject subject) { - // Заглушка + } + + IEnumerable ISubjectRepository.ReadSubject() + { + return []; } } } diff --git a/Academic_Performance/Academic_Performance/Repositories/Implementations/TeacherRepository.cs b/Academic_Performance/Academic_Performance/Repositories/Implementations/TeacherRepository.cs index 4e72f49..c862858 100644 --- a/Academic_Performance/Academic_Performance/Repositories/Implementations/TeacherRepository.cs +++ b/Academic_Performance/Academic_Performance/Repositories/Implementations/TeacherRepository.cs @@ -9,14 +9,12 @@ namespace Academic_Performance.Repositories.Implementations { public class TeacherRepository : ITeacherRepository { - public void AddTeacher(Teacher teacher) + public void CreateTeacher(Teacher teacher) { - // Заглушка } public void DeleteTeacher(int id) { - // Заглушка } public IEnumerable GetAllTeachers() @@ -29,9 +27,13 @@ namespace Academic_Performance.Repositories.Implementations return Teacher.CreateEntity(0, string.Empty); } + public IEnumerable ReadTeachers() + { + return []; + } + public void UpdateTeacher(Teacher teacher) { - // Заглушка } } } diff --git a/Academic_Performance/Academic_Performance/Resources/Add.png b/Academic_Performance/Academic_Performance/Resources/Add.png new file mode 100644 index 0000000..95bb2f3 Binary files /dev/null and b/Academic_Performance/Academic_Performance/Resources/Add.png differ diff --git a/Academic_Performance/Academic_Performance/Resources/Del.png b/Academic_Performance/Academic_Performance/Resources/Del.png new file mode 100644 index 0000000..9e7ad92 Binary files /dev/null and b/Academic_Performance/Academic_Performance/Resources/Del.png differ diff --git a/Academic_Performance/Academic_Performance/Resources/Upd.png b/Academic_Performance/Academic_Performance/Resources/Upd.png new file mode 100644 index 0000000..a2e363e Binary files /dev/null and b/Academic_Performance/Academic_Performance/Resources/Upd.png differ