diff --git a/SchoolSchedule/SchoolSchedule/EditStudentForm.Designer.cs b/SchoolSchedule/SchoolSchedule/EditStudentForm.Designer.cs
new file mode 100644
index 0000000..8b03005
--- /dev/null
+++ b/SchoolSchedule/SchoolSchedule/EditStudentForm.Designer.cs
@@ -0,0 +1,119 @@
+namespace SchoolSchedule
+{
+ partial class EditStudentForm
+ {
+ ///
+ /// 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()
+ {
+ comboBox1 = new ComboBox();
+ textBox1 = new TextBox();
+ label1 = new Label();
+ label2 = new Label();
+ AddButton = new Button();
+ CancelButton = new Button();
+ SuspendLayout();
+ //
+ // comboBox1
+ //
+ comboBox1.FormattingEnabled = true;
+ comboBox1.Location = new Point(89, 12);
+ comboBox1.Name = "comboBox1";
+ comboBox1.Size = new Size(79, 23);
+ comboBox1.TabIndex = 0;
+ //
+ // textBox1
+ //
+ textBox1.Location = new Point(89, 41);
+ textBox1.Name = "textBox1";
+ textBox1.Size = new Size(79, 23);
+ textBox1.TabIndex = 1;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(42, 15);
+ label1.Name = "label1";
+ label1.Size = new Size(41, 15);
+ label1.TabIndex = 2;
+ label1.Text = "статус";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(37, 44);
+ label2.Name = "label2";
+ label2.Size = new Size(46, 15);
+ label2.TabIndex = 3;
+ label2.Text = "оценка";
+ //
+ // AddButton
+ //
+ AddButton.Location = new Point(12, 70);
+ AddButton.Name = "AddButton";
+ AddButton.Size = new Size(75, 23);
+ AddButton.TabIndex = 4;
+ AddButton.Text = "Добавить";
+ AddButton.UseVisualStyleBackColor = true;
+ AddButton.Click += AddButton_Click;
+ //
+ // CancelButton
+ //
+ CancelButton.Location = new Point(93, 70);
+ CancelButton.Name = "CancelButton";
+ CancelButton.Size = new Size(75, 23);
+ CancelButton.TabIndex = 5;
+ CancelButton.Text = "Отмена";
+ CancelButton.UseVisualStyleBackColor = true;
+ CancelButton.Click += CancelButton_Click;
+ //
+ // EditStudentForm
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(174, 98);
+ Controls.Add(CancelButton);
+ Controls.Add(AddButton);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(textBox1);
+ Controls.Add(comboBox1);
+ Name = "EditStudentForm";
+ Text = "EditStudentForm";
+ Load += EditStudentForm_Load;
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private ComboBox comboBox1;
+ private TextBox textBox1;
+ private Label label1;
+ private Label label2;
+ private Button AddButton;
+ private Button CancelButton;
+ }
+}
\ No newline at end of file
diff --git a/SchoolSchedule/SchoolSchedule/EditStudentForm.cs b/SchoolSchedule/SchoolSchedule/EditStudentForm.cs
new file mode 100644
index 0000000..4a6016a
--- /dev/null
+++ b/SchoolSchedule/SchoolSchedule/EditStudentForm.cs
@@ -0,0 +1,92 @@
+using SchoolScheduleContracts.BindingModels;
+using SchoolScheduleContracts.BusinessLogicsContracts;
+using SchoolScheduleDataModels.Enums;
+using SchoolScheduleDataModels.Models;
+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 SchoolSchedule
+{
+ public partial class EditStudentForm : Form
+ {
+ public IStudentModel student { get; set; } = null;
+ public ILessonModel lesson { get; set; } = null;
+ IStudentLogic _logic;
+ public EditStudentForm(IStudentLogic logic)
+ {
+ InitializeComponent();
+ _logic = logic;
+ }
+
+ private void EditStudentForm_Load(object sender, EventArgs e)
+ {
+ comboBox1.DataSource = Enum.GetValues(typeof(StudentStatus));
+ }
+ public void LoadData()
+ {
+ if (student.Attendance[lesson.Id].Item3 != null)
+ textBox1.Text = student.Attendance[lesson.Id].Item3.ToString();
+ }
+
+ private void AddButton_Click(object sender, EventArgs e)
+ {
+ if (comboBox1.SelectedValue == null)
+ {
+ MessageBox.Show("Выберите классного руководителя", "Ошибка",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ if (string.IsNullOrEmpty(textBox1.Text))
+ {
+ MessageBox.Show("Заполните поле оценка", "Ошибка",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ try
+ {
+ int year = int.Parse(textBox1.Text);
+ if (!(year >= 2 && year <= 5) && year != 0)
+ {
+ throw new Exception("Ошибка при создании.");
+ }
+ student.Attendance[lesson.Id] = (student.Attendance[lesson.Id].Item1, (StudentStatus)comboBox1.SelectedValue, (year == 0 ? null : year));
+ StudentBindingModel model = new StudentBindingModel
+ {
+ Id = student.Id,
+ GradeId = student.GradeId,
+ FullName = student.FullName,
+ Attendance = student.Attendance
+ };
+ var operationResult = _logic.Update(model);
+ if (!operationResult)
+ {
+ throw new Exception("Ошибка при создании заказа.");
+ }
+ MessageBox.Show("Сохранение прошло успешно", "Сообщение",
+ MessageBoxButtons.OK, MessageBoxIcon.Information);
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
+ MessageBoxIcon.Error);
+ }
+
+ }
+
+ private void CancelButton_Click(object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.Cancel;
+ Close();
+ }
+ }
+}
diff --git a/SchoolSchedule/SchoolSchedule/EditStudentForm.resx b/SchoolSchedule/SchoolSchedule/EditStudentForm.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/SchoolSchedule/SchoolSchedule/EditStudentForm.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/SchoolSchedule/SchoolSchedule/LessonForm.Designer.cs b/SchoolSchedule/SchoolSchedule/LessonForm.Designer.cs
index bfdb394..216994e 100644
--- a/SchoolSchedule/SchoolSchedule/LessonForm.Designer.cs
+++ b/SchoolSchedule/SchoolSchedule/LessonForm.Designer.cs
@@ -32,6 +32,7 @@
Name = new DataGridViewTextBoxColumn();
Status = new DataGridViewTextBoxColumn();
Mark = new DataGridViewTextBoxColumn();
+ Id = new DataGridViewTextBoxColumn();
ChangeButton = new Button();
CancelButton = new Button();
((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
@@ -40,7 +41,7 @@
// dataGridView1
//
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
- dataGridView1.Columns.AddRange(new DataGridViewColumn[] { Name, Status, Mark });
+ dataGridView1.Columns.AddRange(new DataGridViewColumn[] { Name, Status, Mark, Id });
dataGridView1.Location = new Point(12, 12);
dataGridView1.Name = "dataGridView1";
dataGridView1.Size = new Size(462, 401);
@@ -62,6 +63,12 @@
Mark.HeaderText = "Оценка";
Mark.Name = "Mark";
//
+ // Id
+ //
+ Id.HeaderText = "";
+ Id.Name = "Id";
+ Id.Visible = false;
+ //
// ChangeButton
//
ChangeButton.Location = new Point(318, 419);
@@ -70,6 +77,7 @@
ChangeButton.TabIndex = 1;
ChangeButton.Text = "Изменить";
ChangeButton.UseVisualStyleBackColor = true;
+ ChangeButton.Click += ChangeButton_Click;
//
// CancelButton
//
@@ -101,5 +109,6 @@
private DataGridViewTextBoxColumn Mark;
private Button ChangeButton;
private Button CancelButton;
+ private DataGridViewTextBoxColumn Id;
}
}
\ No newline at end of file
diff --git a/SchoolSchedule/SchoolSchedule/LessonForm.cs b/SchoolSchedule/SchoolSchedule/LessonForm.cs
index e5ee99c..f473bf3 100644
--- a/SchoolSchedule/SchoolSchedule/LessonForm.cs
+++ b/SchoolSchedule/SchoolSchedule/LessonForm.cs
@@ -29,10 +29,31 @@ namespace SchoolSchedule
if (Lesson != null)
{
var students = _logic.ReadList(new StudentSearchModel { GradeId = Lesson.GradeId });
+ dataGridView1.Rows.Clear();
foreach (var student in students)
{
- dataGridView1.Rows.Clear();
- dataGridView1.Rows.Add(new object[] { student.FullName, student.Attendance[Lesson.Id].Item2, student.Attendance[Lesson.Id].Item3 });
+ dataGridView1.Rows.Add(new object[] { student.FullName, student.Attendance[Lesson.Id].Item2, student.Attendance[Lesson.Id].Item3, student.Id });
+ }
+ }
+ }
+
+ private void ChangeButton_Click(object sender, EventArgs e)
+ {
+
+ if (dataGridView1.SelectedRows.Count == 1)
+ {
+ var tmp = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Id"].Value);
+ var service =
+Program.ServiceProvider?.GetService(typeof(EditStudentForm));
+ if (service is EditStudentForm form)
+ {
+ form.student = _logic.ReadElement(new StudentSearchModel { Id = tmp });
+ form.lesson = Lesson;
+ form.LoadData();
+ if (form.ShowDialog() == DialogResult.OK)
+ {
+ LoadData();
+ }
}
}
}
diff --git a/SchoolSchedule/SchoolSchedule/LessonForm.resx b/SchoolSchedule/SchoolSchedule/LessonForm.resx
index f210634..c580d8b 100644
--- a/SchoolSchedule/SchoolSchedule/LessonForm.resx
+++ b/SchoolSchedule/SchoolSchedule/LessonForm.resx
@@ -126,4 +126,7 @@
True
+
+ True
+
\ No newline at end of file
diff --git a/SchoolSchedule/SchoolSchedule/Program.cs b/SchoolSchedule/SchoolSchedule/Program.cs
index 4945513..ed2c6b9 100644
--- a/SchoolSchedule/SchoolSchedule/Program.cs
+++ b/SchoolSchedule/SchoolSchedule/Program.cs
@@ -48,6 +48,7 @@ namespace SchoolSchedule
services.AddTransient();
services.AddTransient();
services.AddTransient();
+ services.AddTransient();
}
}
}
\ No newline at end of file
diff --git a/SchoolSchedule/SchoolScheduleDataBaseImplement/Implements/StudentStorage.cs b/SchoolSchedule/SchoolScheduleDataBaseImplement/Implements/StudentStorage.cs
index 4a65d5a..24c05f0 100644
--- a/SchoolSchedule/SchoolScheduleDataBaseImplement/Implements/StudentStorage.cs
+++ b/SchoolSchedule/SchoolScheduleDataBaseImplement/Implements/StudentStorage.cs
@@ -19,14 +19,14 @@ namespace SchoolScheduleDataBaseImplement.Implements
public List GetFullList()
{
using var context = new SchoolScheduleDataBase();
- return context.Students.Include(x => x.Grade)
+ return context.Students.Include(x => x.Lessons).Include(x => x.Grade)
.Select(x => x.GetViewModel)
.ToList();
}
public List GetFilteredList(StudentSearchModel model)
{
using var context = new SchoolScheduleDataBase();
- return context.Students.Include(x => x.Grade)
+ return context.Students.Include(x => x.Lessons).Include(x => x.Grade)
.Where(x => (!model.Id.HasValue || x.Id == model.Id) && (string.IsNullOrEmpty(model.FullName) || x.FullName == model.FullName)
&& (!model.GradeId.HasValue || x.GradeId == model.GradeId))
.Select(x => x.GetViewModel)
@@ -39,7 +39,7 @@ namespace SchoolScheduleDataBaseImplement.Implements
return null;
}
using var context = new SchoolScheduleDataBase();
- return context.Students.Include(x => x.Grade)
+ return context.Students.Include(x => x.Lessons).Include(x => x.Grade)
.FirstOrDefault(x =>
(model.Id.HasValue && x.Id == model.Id))
?.GetViewModel;