From a902a2d7bb81b1a42a862ef43a7e143134d12e72 Mon Sep 17 00:00:00 2001 From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com> Date: Sun, 3 Nov 2024 23:15:05 +0400 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectSchedule/Entities/Audience.cs | 21 ++ .../Entities/CompilingSchedule.cs | 32 +++ .../Entities/CurriculumSupplement.cs | 26 ++ .../ProjectSchedule/Entities/Discipline.cs | 15 + .../ProjectSchedule/Entities/Educator.cs | 19 ++ .../Entities/Enums/TypeActivity.cs | 10 + .../Entities/Enums/TypeAudience.cs | 10 + .../Entities/Enums/TypeWeek.cs | 10 + .../ProjectSchedule/Entities/GroupStudents.cs | 19 ++ .../ProjectSchedule/Form1.Designer.cs | 39 --- ProjectSchedule/ProjectSchedule/Form1.cs | 10 - .../ProjectSchedule/FormSchedule.Designer.cs | 147 ++++++++++ .../ProjectSchedule/FormSchedule.cs | 95 +++++++ .../ProjectSchedule/FormSchedule.resx | 123 ++++++++ .../Forms/FormAudience.Designer.cs | 145 ++++++++++ .../ProjectSchedule/Forms/FormAudience.cs | 76 +++++ .../{Form1.resx => Forms/FormAudience.resx} | 50 ++-- .../Forms/FormAudiences.Designer.cs | 127 +++++++++ .../ProjectSchedule/Forms/FormAudiences.cs | 98 +++++++ .../ProjectSchedule/Forms/FormAudiences.resx | 120 ++++++++ .../Forms/FormCompilingSchedule.Designer.cs | 268 ++++++++++++++++++ .../Forms/FormCompilingSchedule.cs | 66 +++++ .../Forms/FormCompilingSchedule.resx | 120 ++++++++ .../Forms/FormCompilingSchedules.Designer.cs | 113 ++++++++ .../Forms/FormCompilingSchedules.cs | 89 ++++++ .../Forms/FormCompilingSchedules.resx | 120 ++++++++ .../FormCurriculumSupplement.Designer.cs | 217 ++++++++++++++ .../Forms/FormCurriculumSupplement.cs | 51 ++++ .../Forms/FormCurriculumSupplement.resx | 120 ++++++++ .../FormCurriculumSupplements.Designer.cs | 113 ++++++++ .../Forms/FormCurriculumSupplements.cs | 89 ++++++ .../Forms/FormCurriculumSupplements.resx | 120 ++++++++ .../Forms/FormDiscipline.Designer.cs | 96 +++++++ .../ProjectSchedule/Forms/FormDiscipline.cs | 70 +++++ .../ProjectSchedule/Forms/FormDiscipline.resx | 120 ++++++++ .../Forms/FormDisciplines.Designer.cs | 127 +++++++++ .../ProjectSchedule/Forms/FormDisciplines.cs | 98 +++++++ .../Forms/FormDisciplines.resx | 120 ++++++++ .../Forms/FormEducator.Designer.cs | 140 +++++++++ .../ProjectSchedule/Forms/FormEducator.cs | 72 +++++ .../ProjectSchedule/Forms/FormEducator.resx | 120 ++++++++ .../Forms/FormEducators.Designer.cs | 127 +++++++++ .../ProjectSchedule/Forms/FormEducators.cs | 98 +++++++ .../ProjectSchedule/Forms/FormEducators.resx | 120 ++++++++ .../Forms/FormGroupStudents.Designer.cs | 143 ++++++++++ .../Forms/FormGroupStudents.cs | 75 +++++ .../Forms/FormGroupStudents.resx | 120 ++++++++ .../Forms/FormGroupsStudents.Designer.cs | 127 +++++++++ .../Forms/FormGroupsStudents.cs | 98 +++++++ .../Forms/FormGroupsStudents.resx | 120 ++++++++ ProjectSchedule/ProjectSchedule/Program.cs | 21 +- .../ProjectSchedule/ProjectSchedule.csproj | 19 ++ .../Properties/Resources.Designer.cs | 103 +++++++ .../ProjectSchedule/Properties/Resources.resx | 133 +++++++++ .../Repositories/IAudienceRepository.cs | 16 ++ .../ICompilingScheduleRepository.cs | 11 + .../ICurriculumSupplementRepository.cs | 10 + .../Repositories/IDisciplineRepository.cs | 16 ++ .../Repositories/IEducatorRepository.cs | 16 ++ .../Repositories/IGroupStudentsRepository.cs | 16 ++ .../Implementations/AudienceRepository.cs | 29 ++ .../CompilingScheduleRepository.cs | 20 ++ .../CurriculumSupplementRepository.cs | 19 ++ .../Implementations/DisciplineRepository.cs | 26 ++ .../Implementations/EducatorRepository.cs | 28 ++ .../GroupStudentsRepository.cs | 28 ++ .../ProjectSchedule/Resources/Add.jpg | Bin 0 -> 14419 bytes .../ProjectSchedule/Resources/Del.png | Bin 0 -> 100964 bytes .../ProjectSchedule/Resources/Upd.png | Bin 0 -> 196164 bytes .../Расписание на фон.png | Bin 0 -> 18403 bytes 70 files changed, 5105 insertions(+), 75 deletions(-) create mode 100644 ProjectSchedule/ProjectSchedule/Entities/Audience.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/Discipline.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/Educator.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/Enums/TypeActivity.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/Enums/TypeWeek.cs create mode 100644 ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs delete mode 100644 ProjectSchedule/ProjectSchedule/Form1.Designer.cs delete mode 100644 ProjectSchedule/ProjectSchedule/Form1.cs create mode 100644 ProjectSchedule/ProjectSchedule/FormSchedule.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/FormSchedule.cs create mode 100644 ProjectSchedule/ProjectSchedule/FormSchedule.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs rename ProjectSchedule/ProjectSchedule/{Form1.resx => Forms/FormAudience.resx} (93%) create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormAudiences.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormEducator.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormEducator.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormEducators.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.resx create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs create mode 100644 ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.resx create mode 100644 ProjectSchedule/ProjectSchedule/Properties/Resources.Designer.cs create mode 100644 ProjectSchedule/ProjectSchedule/Properties/Resources.resx create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/IAudienceRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/IDisciplineRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/IEducatorRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/IGroupStudentsRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/Implementations/AudienceRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/Implementations/EducatorRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Repositories/Implementations/GroupStudentsRepository.cs create mode 100644 ProjectSchedule/ProjectSchedule/Resources/Add.jpg create mode 100644 ProjectSchedule/ProjectSchedule/Resources/Del.png create mode 100644 ProjectSchedule/ProjectSchedule/Resources/Upd.png create mode 100644 ProjectSchedule/ProjectSchedule/Resources/Расписание на фон.png diff --git a/ProjectSchedule/ProjectSchedule/Entities/Audience.cs b/ProjectSchedule/ProjectSchedule/Entities/Audience.cs new file mode 100644 index 0000000..cd6518a --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/Audience.cs @@ -0,0 +1,21 @@ +using ProjectSchedule.Entities.Enums; + +namespace ProjectSchedule.Entities; + +public class Audience +{ + public int Id { get; private set; } + public string NumberAudience { get; private set; } = string.Empty; + public TypeAudience TypeAudience { get; private set; } + public int QuantitySeats { get; private set; } + public static Audience CreateEntity(int id, string numberAudience, TypeAudience typeAudience, int quantitySeats) + { + return new Audience + { + Id = id, + NumberAudience = numberAudience ?? string.Empty, + TypeAudience = typeAudience, + QuantitySeats = quantitySeats + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs b/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs new file mode 100644 index 0000000..2e6382c --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs @@ -0,0 +1,32 @@ +using ProjectSchedule.Entities.Enums; + +namespace ProjectSchedule.Entities; + +public class CompilingSchedule +{ + public int Id { get; private set; } + public int EducatorId { get; private set; } + public int DisciplineId { get; private set; } + public int GroupStudentsId { get; private set; } + public int AudienceId { get; private set; } + public TypeWeek TypeWeek { get; private set; } + public int NumberDay { get; private set; } + public int NumberPair { get; private set; } + public TypeActivity TypeActivity { get; private set; } + public static CompilingSchedule CreateOperation(int id, int educatorId, int disciplineId, int groupStudentsId, int audienceId, TypeWeek typeWeek, + int numberDay, int numberPair, TypeActivity typeActivity) + { + return new CompilingSchedule + { + Id = id, + EducatorId = educatorId, + DisciplineId = disciplineId, + GroupStudentsId = groupStudentsId, + AudienceId = audienceId, + TypeWeek = typeWeek, + NumberDay = numberDay, + NumberPair = numberPair, + TypeActivity = typeActivity + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs new file mode 100644 index 0000000..3e028f1 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs @@ -0,0 +1,26 @@ +namespace ProjectSchedule.Entities; + +public class CurriculumSupplement +{ + public int Id { get; private set; } + public int DisciplineId { get; private set; } + public int GroupStudentsId { get; private set; } + public string NameCurriculum { get; private set; } = string.Empty; + public int QuantityLectures { get; private set; } + public int QuantityPractices { get; private set; } + public string Semester { get; private set; } = string.Empty; + public static CurriculumSupplement CreateOperation(int id, int disciplineId, int groupStudentsId, string nameCurriculum, + int quantityLectures, int quantityPractices, string semester) + { + return new CurriculumSupplement + { + Id = id, + DisciplineId = disciplineId, + GroupStudentsId = groupStudentsId, + NameCurriculum = nameCurriculum ?? string.Empty, + QuantityLectures = quantityLectures, + QuantityPractices = quantityPractices, + Semester = semester ?? string.Empty + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs b/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs new file mode 100644 index 0000000..706fb39 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs @@ -0,0 +1,15 @@ +namespace ProjectSchedule.Entities; + +public class Discipline +{ + public int Id { get; private set; } + public string NameDiscipline { get; private set; } = string.Empty; + public static Discipline CreateEntity(int id, string nameDiscipline) + { + return new Discipline + { + Id = id, + NameDiscipline = nameDiscipline ?? string.Empty, + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Educator.cs b/ProjectSchedule/ProjectSchedule/Entities/Educator.cs new file mode 100644 index 0000000..a22e0b4 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/Educator.cs @@ -0,0 +1,19 @@ +namespace ProjectSchedule.Entities; + +public class Educator +{ + public int Id { get; private set; } + public string Surname { get; private set; } = string.Empty; + public string Name { get; private set; } = string.Empty; + public string Patronymic { get; private set; } = string.Empty; + public static Educator CreateEntity(int id, string surname, string name, string patronymic) + { + return new Educator + { + Id = id, + Surname = surname ?? string.Empty, + Name = name ?? string.Empty, + Patronymic = patronymic ?? string.Empty + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeActivity.cs b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeActivity.cs new file mode 100644 index 0000000..8d7d3dc --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeActivity.cs @@ -0,0 +1,10 @@ +namespace ProjectSchedule.Entities.Enums; + +public enum TypeActivity +{ + None = 0, + + Practice = 1, + + Lecture = 2 +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs new file mode 100644 index 0000000..64bd562 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs @@ -0,0 +1,10 @@ +namespace ProjectSchedule.Entities.Enums; + +public enum TypeAudience +{ + None = 0, + + СomputerСlass = 1, + + LectureAudience = 2 +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeWeek.cs b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeWeek.cs new file mode 100644 index 0000000..d6267ed --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeWeek.cs @@ -0,0 +1,10 @@ +namespace ProjectSchedule.Entities.Enums; + +public enum TypeWeek +{ + None = 0, + + OddWeek = 1, + + EvenWeek = 2 +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs b/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs new file mode 100644 index 0000000..88122f6 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs @@ -0,0 +1,19 @@ +namespace ProjectSchedule.Entities; + +public class GroupStudents +{ + public int Id { get; private set; } + public string AbbreviationGroup { get; private set; } = string.Empty; + public string GroupNumber { get; private set; } = string.Empty; + public int QuantityStudents { get; private set; } + public static GroupStudents CreateEntity(int id, string abbreviationGroup, string groupNumber, int quantityStudents) + { + return new GroupStudents + { + Id = id, + AbbreviationGroup = abbreviationGroup ?? string.Empty, + GroupNumber = groupNumber ?? string.Empty, + QuantityStudents = quantityStudents + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Form1.Designer.cs b/ProjectSchedule/ProjectSchedule/Form1.Designer.cs deleted file mode 100644 index 3180711..0000000 --- a/ProjectSchedule/ProjectSchedule/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectSchedule -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} diff --git a/ProjectSchedule/ProjectSchedule/Form1.cs b/ProjectSchedule/ProjectSchedule/Form1.cs deleted file mode 100644 index 488af1c..0000000 --- a/ProjectSchedule/ProjectSchedule/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectSchedule -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/ProjectSchedule/ProjectSchedule/FormSchedule.Designer.cs b/ProjectSchedule/ProjectSchedule/FormSchedule.Designer.cs new file mode 100644 index 0000000..3105e05 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/FormSchedule.Designer.cs @@ -0,0 +1,147 @@ +namespace ProjectSchedule +{ + partial class FormSchedule + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + menuStrip = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + AudiencesToolStripMenuItem = new ToolStripMenuItem(); + DisciplinesToolStripMenuItem = new ToolStripMenuItem(); + EducatorsToolStripMenuItem = new ToolStripMenuItem(); + GroupsStudentsToolStripMenuItem = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + CompilingScheduleToolStripMenuItem = new ToolStripMenuItem(); + CurriculumSupplementToolStripMenuItem = new ToolStripMenuItem(); + отчётыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip.SuspendLayout(); + SuspendLayout(); + // + // menuStrip + // + menuStrip.ImageScalingSize = new Size(20, 20); + menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчётыToolStripMenuItem }); + menuStrip.Location = new Point(0, 0); + menuStrip.Name = "menuStrip"; + menuStrip.Size = new Size(782, 28); + menuStrip.TabIndex = 0; + menuStrip.Text = "menuStrip"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { AudiencesToolStripMenuItem, DisciplinesToolStripMenuItem, EducatorsToolStripMenuItem, GroupsStudentsToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(117, 24); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // AudiencesToolStripMenuItem + // + AudiencesToolStripMenuItem.Name = "AudiencesToolStripMenuItem"; + AudiencesToolStripMenuItem.Size = new Size(224, 26); + AudiencesToolStripMenuItem.Text = "Аудитории"; + AudiencesToolStripMenuItem.Click += AudiencesToolStripMenuItem_Click; + // + // DisciplinesToolStripMenuItem + // + DisciplinesToolStripMenuItem.Name = "DisciplinesToolStripMenuItem"; + DisciplinesToolStripMenuItem.Size = new Size(224, 26); + DisciplinesToolStripMenuItem.Text = "Дисциплины"; + DisciplinesToolStripMenuItem.Click += DisciplinesToolStripMenuItem_Click; + // + // EducatorsToolStripMenuItem + // + EducatorsToolStripMenuItem.Name = "EducatorsToolStripMenuItem"; + EducatorsToolStripMenuItem.Size = new Size(224, 26); + EducatorsToolStripMenuItem.Text = "Преподаватели"; + EducatorsToolStripMenuItem.Click += EducatorsToolStripMenuItem_Click; + // + // GroupsStudentsToolStripMenuItem + // + GroupsStudentsToolStripMenuItem.Name = "GroupsStudentsToolStripMenuItem"; + GroupsStudentsToolStripMenuItem.Size = new Size(224, 26); + GroupsStudentsToolStripMenuItem.Text = "Группы студентов"; + GroupsStudentsToolStripMenuItem.Click += GroupsStudentsToolStripMenuItem_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { CompilingScheduleToolStripMenuItem, CurriculumSupplementToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(95, 24); + операцииToolStripMenuItem.Text = "Операции"; + // + // CompilingScheduleToolStripMenuItem + // + CompilingScheduleToolStripMenuItem.Name = "CompilingScheduleToolStripMenuItem"; + CompilingScheduleToolStripMenuItem.Size = new Size(295, 26); + CompilingScheduleToolStripMenuItem.Text = "Составление расписания"; + CompilingScheduleToolStripMenuItem.Click += CompilingScheduleToolStripMenuItem_Click; + // + // CurriculumSupplementToolStripMenuItem + // + CurriculumSupplementToolStripMenuItem.Name = "CurriculumSupplementToolStripMenuItem"; + CurriculumSupplementToolStripMenuItem.Size = new Size(295, 26); + CurriculumSupplementToolStripMenuItem.Text = "Дополнение учебного плана"; + CurriculumSupplementToolStripMenuItem.Click += CurriculumSupplementToolStripMenuItem_Click; + // + // отчётыToolStripMenuItem + // + отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; + отчётыToolStripMenuItem.Size = new Size(73, 24); + отчётыToolStripMenuItem.Text = "Отчёты"; + // + // FormSchedule + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources.Расписание_на_фон; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(782, 403); + Controls.Add(menuStrip); + MainMenuStrip = menuStrip; + Name = "FormSchedule"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Расписание"; + menuStrip.ResumeLayout(false); + menuStrip.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem AudiencesToolStripMenuItem; + private ToolStripMenuItem DisciplinesToolStripMenuItem; + private ToolStripMenuItem EducatorsToolStripMenuItem; + private ToolStripMenuItem GroupsStudentsToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem CompilingScheduleToolStripMenuItem; + private ToolStripMenuItem отчётыToolStripMenuItem; + private ToolStripMenuItem CurriculumSupplementToolStripMenuItem; + } +} diff --git a/ProjectSchedule/ProjectSchedule/FormSchedule.cs b/ProjectSchedule/ProjectSchedule/FormSchedule.cs new file mode 100644 index 0000000..78c7207 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/FormSchedule.cs @@ -0,0 +1,95 @@ +using ProjectSchedule.Forms; +using Unity; + +namespace ProjectSchedule +{ + public partial class FormSchedule : Form + { + private readonly IUnityContainer _container; + + public FormSchedule(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + } + + private void AudiencesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void DisciplinesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void EducatorsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void GroupsStudentsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void CompilingScheduleToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void CurriculumSupplementToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + } +} diff --git a/ProjectSchedule/ProjectSchedule/FormSchedule.resx b/ProjectSchedule/ProjectSchedule/FormSchedule.resx new file mode 100644 index 0000000..6c82d08 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/FormSchedule.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/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs new file mode 100644 index 0000000..737297f --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs @@ -0,0 +1,145 @@ +namespace ProjectSchedule.Forms +{ + partial class FormAudience + { + /// + /// 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() + { + labelNumberAudience = new Label(); + labelQuantitySeats = new Label(); + labelTypeAudience = new Label(); + buttonSave = new Button(); + buttonCancel = new Button(); + textBoxNumberAudience = new TextBox(); + numericUpDownQuantitySeats = new NumericUpDown(); + comboBoxTypeAudience = new ComboBox(); + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantitySeats).BeginInit(); + SuspendLayout(); + // + // labelNumberAudience + // + labelNumberAudience.AutoSize = true; + labelNumberAudience.Location = new Point(21, 32); + labelNumberAudience.Name = "labelNumberAudience"; + labelNumberAudience.Size = new Size(138, 20); + labelNumberAudience.TabIndex = 0; + labelNumberAudience.Text = "Номер аудитории:"; + // + // labelQuantitySeats + // + labelQuantitySeats.AutoSize = true; + labelQuantitySeats.Location = new Point(21, 77); + labelQuantitySeats.Name = "labelQuantitySeats"; + labelQuantitySeats.Size = new Size(129, 20); + labelQuantitySeats.TabIndex = 1; + labelQuantitySeats.Text = "Количество мест:"; + // + // labelTypeAudience + // + labelTypeAudience.AutoSize = true; + labelTypeAudience.Location = new Point(21, 127); + labelTypeAudience.Name = "labelTypeAudience"; + labelTypeAudience.Size = new Size(116, 20); + labelTypeAudience.TabIndex = 2; + labelTypeAudience.Text = "Тип аудитории:"; + // + // buttonSave + // + buttonSave.Location = new Point(21, 208); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(116, 29); + buttonSave.TabIndex = 3; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(234, 208); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 29); + buttonCancel.TabIndex = 4; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // textBoxNumberAudience + // + textBoxNumberAudience.Location = new Point(176, 29); + textBoxNumberAudience.Name = "textBoxNumberAudience"; + textBoxNumberAudience.Size = new Size(174, 27); + textBoxNumberAudience.TabIndex = 5; + // + // numericUpDownQuantitySeats + // + numericUpDownQuantitySeats.Location = new Point(176, 77); + numericUpDownQuantitySeats.Maximum = new decimal(new int[] { 500, 0, 0, 0 }); + numericUpDownQuantitySeats.Name = "numericUpDownQuantitySeats"; + numericUpDownQuantitySeats.Size = new Size(174, 27); + numericUpDownQuantitySeats.TabIndex = 6; + // + // comboBoxTypeAudience + // + comboBoxTypeAudience.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxTypeAudience.FormattingEnabled = true; + comboBoxTypeAudience.Location = new Point(176, 124); + comboBoxTypeAudience.Name = "comboBoxTypeAudience"; + comboBoxTypeAudience.Size = new Size(174, 28); + comboBoxTypeAudience.TabIndex = 7; + // + // FormAudience + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(382, 253); + Controls.Add(comboBoxTypeAudience); + Controls.Add(numericUpDownQuantitySeats); + Controls.Add(textBoxNumberAudience); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelTypeAudience); + Controls.Add(labelQuantitySeats); + Controls.Add(labelNumberAudience); + Name = "FormAudience"; + StartPosition = FormStartPosition.CenterParent; + Text = "Аудитория"; + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantitySeats).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelNumberAudience; + private Label labelQuantitySeats; + private Label labelTypeAudience; + private Button buttonSave; + private Button buttonCancel; + private TextBox textBoxNumberAudience; + private NumericUpDown numericUpDownQuantitySeats; + private ComboBox comboBoxTypeAudience; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs new file mode 100644 index 0000000..6400242 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs @@ -0,0 +1,76 @@ +using ProjectSchedule.Entities.Enums; +using ProjectSchedule.Entities; +using ProjectSchedule.Repositories; + +namespace ProjectSchedule.Forms; + +public partial class FormAudience : Form +{ + private readonly IAudienceRepository _audienceRepository; + + private int? _audienceId; + + public int Id + { + set + { + try + { + var audience = _audienceRepository.ReadAudienceById(value); + if (audience == null) + { + throw new InvalidDataException(nameof(audience)); + } + + textBoxNumberAudience.Text = audience.NumberAudience; + comboBoxTypeAudience.SelectedItem = audience.TypeAudience; + numericUpDownQuantitySeats.Value = audience.QuantitySeats; + _audienceId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormAudience(IAudienceRepository audienceRepository) + { + InitializeComponent(); + _audienceRepository = audienceRepository ?? + throw new ArgumentNullException(nameof(audienceRepository)); + comboBoxTypeAudience.DataSource = Enum.GetValues(typeof(TypeAudience)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxNumberAudience.Text) || comboBoxTypeAudience.SelectedIndex < 1) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_audienceId.HasValue) + { + _audienceRepository.UpdateAudience(CreateAudience(_audienceId.Value)); + } + else + { + _audienceRepository.CreateAudience(CreateAudience(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Audience CreateAudience(int id) => + Audience.CreateEntity(id, textBoxNumberAudience.Text, (TypeAudience)comboBoxTypeAudience.SelectedItem!, Convert.ToInt32(numericUpDownQuantitySeats.Value)); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Form1.resx b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.resx similarity index 93% rename from ProjectSchedule/ProjectSchedule/Form1.resx rename to ProjectSchedule/ProjectSchedule/Forms/FormAudience.resx index 1af7de1..af32865 100644 --- a/ProjectSchedule/ProjectSchedule/Form1.resx +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.resx @@ -1,17 +1,17 @@  - diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs new file mode 100644 index 0000000..02853b8 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectSchedule.Forms +{ + partial class FormAudiences + { + /// + /// 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(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(672, 0); + panel.Name = "panel"; + panel.Size = new Size(140, 483); + panel.TabIndex = 0; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(24, 194); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 66); + buttonDel.TabIndex = 4; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.Upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(24, 106); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(94, 66); + buttonUpd.TabIndex = 3; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 66); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(672, 483); + dataGridViewData.TabIndex = 1; + // + // FormAudiences + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(812, 483); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormAudiences"; + StartPosition = FormStartPosition.CenterParent; + Text = "Аудитории"; + Load += FormAudiences_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs new file mode 100644 index 0000000..d982761 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs @@ -0,0 +1,98 @@ +using ProjectSchedule.Repositories; +using Unity; + +namespace ProjectSchedule.Forms +{ + public partial class FormAudiences : Form + { + private readonly IUnityContainer _container; + + private readonly IAudienceRepository _audienceRepository; + public FormAudiences(IUnityContainer container, IAudienceRepository audienceRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _audienceRepository = audienceRepository ?? + throw new ArgumentNullException(nameof(audienceRepository)); + } + private void FormAudiences_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _audienceRepository.DeleteAudience(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _audienceRepository.ReadAudiences(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.resx b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.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/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs new file mode 100644 index 0000000..8ae86f8 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs @@ -0,0 +1,268 @@ +namespace ProjectSchedule.Forms +{ + partial class FormCompilingSchedule + { + /// + /// 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() + { + labelEducator = new Label(); + labelDiscipline = new Label(); + labelAudience = new Label(); + labelGroupStudents = new Label(); + labelNumberDay = new Label(); + labelTypeWeek = new Label(); + labelNumberPair = new Label(); + labelTypeActivity = new Label(); + comboBoxDiscipline = new ComboBox(); + comboBoxGroupStudents = new ComboBox(); + comboBoxEducator = new ComboBox(); + comboBoxAudience = new ComboBox(); + comboBoxTypeWeek = new ComboBox(); + comboBoxTypeActivity = new ComboBox(); + numericUpDownNumberPair = new NumericUpDown(); + numericUpDownNumberDay = new NumericUpDown(); + buttonSave = new Button(); + buttonCancel = new Button(); + ((System.ComponentModel.ISupportInitialize)numericUpDownNumberPair).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownNumberDay).BeginInit(); + SuspendLayout(); + // + // labelEducator + // + labelEducator.AutoSize = true; + labelEducator.Location = new Point(34, 27); + labelEducator.Name = "labelEducator"; + labelEducator.Size = new Size(120, 20); + labelEducator.TabIndex = 0; + labelEducator.Text = "Преподаватель:"; + // + // labelDiscipline + // + labelDiscipline.AutoSize = true; + labelDiscipline.Location = new Point(34, 66); + labelDiscipline.Name = "labelDiscipline"; + labelDiscipline.Size = new Size(99, 20); + labelDiscipline.TabIndex = 1; + labelDiscipline.Text = "Дисциплина:"; + // + // labelAudience + // + labelAudience.AutoSize = true; + labelAudience.Location = new Point(34, 159); + labelAudience.Name = "labelAudience"; + labelAudience.Size = new Size(87, 20); + labelAudience.TabIndex = 2; + labelAudience.Text = "Аудитория:"; + // + // labelGroupStudents + // + labelGroupStudents.AutoSize = true; + labelGroupStudents.Location = new Point(34, 111); + labelGroupStudents.Name = "labelGroupStudents"; + labelGroupStudents.Size = new Size(133, 20); + labelGroupStudents.TabIndex = 3; + labelGroupStudents.Text = "Группа студентов:"; + // + // labelNumberDay + // + labelNumberDay.AutoSize = true; + labelNumberDay.Location = new Point(34, 264); + labelNumberDay.Name = "labelNumberDay"; + labelNumberDay.Size = new Size(89, 20); + labelNumberDay.TabIndex = 4; + labelNumberDay.Text = "Номер дня:"; + // + // labelTypeWeek + // + labelTypeWeek.AutoSize = true; + labelTypeWeek.Location = new Point(34, 212); + labelTypeWeek.Name = "labelTypeWeek"; + labelTypeWeek.Size = new Size(63, 20); + labelTypeWeek.TabIndex = 5; + labelTypeWeek.Text = "Неделя:"; + // + // labelNumberPair + // + labelNumberPair.AutoSize = true; + labelNumberPair.Location = new Point(34, 302); + labelNumberPair.Name = "labelNumberPair"; + labelNumberPair.Size = new Size(101, 20); + labelNumberPair.TabIndex = 6; + labelNumberPair.Text = "Номер пары:"; + // + // labelTypeActivity + // + labelTypeActivity.AutoSize = true; + labelTypeActivity.Location = new Point(34, 355); + labelTypeActivity.Name = "labelTypeActivity"; + labelTypeActivity.Size = new Size(97, 20); + labelTypeActivity.TabIndex = 7; + labelTypeActivity.Text = "Тип занятия:"; + // + // comboBoxDiscipline + // + comboBoxDiscipline.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxDiscipline.FormattingEnabled = true; + comboBoxDiscipline.Location = new Point(245, 66); + comboBoxDiscipline.Name = "comboBoxDiscipline"; + comboBoxDiscipline.Size = new Size(210, 28); + comboBoxDiscipline.TabIndex = 8; + // + // comboBoxGroupStudents + // + comboBoxGroupStudents.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxGroupStudents.FormattingEnabled = true; + comboBoxGroupStudents.Location = new Point(245, 108); + comboBoxGroupStudents.Name = "comboBoxGroupStudents"; + comboBoxGroupStudents.Size = new Size(210, 28); + comboBoxGroupStudents.TabIndex = 9; + // + // comboBoxEducator + // + comboBoxEducator.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxEducator.FormattingEnabled = true; + comboBoxEducator.Location = new Point(245, 24); + comboBoxEducator.Name = "comboBoxEducator"; + comboBoxEducator.Size = new Size(210, 28); + comboBoxEducator.TabIndex = 10; + // + // comboBoxAudience + // + comboBoxAudience.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxAudience.FormattingEnabled = true; + comboBoxAudience.Location = new Point(245, 159); + comboBoxAudience.Name = "comboBoxAudience"; + comboBoxAudience.Size = new Size(210, 28); + comboBoxAudience.TabIndex = 11; + // + // comboBoxTypeWeek + // + comboBoxTypeWeek.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxTypeWeek.FormattingEnabled = true; + comboBoxTypeWeek.Location = new Point(245, 209); + comboBoxTypeWeek.Name = "comboBoxTypeWeek"; + comboBoxTypeWeek.Size = new Size(210, 28); + comboBoxTypeWeek.TabIndex = 12; + // + // comboBoxTypeActivity + // + comboBoxTypeActivity.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxTypeActivity.FormattingEnabled = true; + comboBoxTypeActivity.Location = new Point(245, 347); + comboBoxTypeActivity.Name = "comboBoxTypeActivity"; + comboBoxTypeActivity.Size = new Size(210, 28); + comboBoxTypeActivity.TabIndex = 14; + // + // numericUpDownNumberPair + // + numericUpDownNumberPair.Location = new Point(245, 302); + numericUpDownNumberPair.Maximum = new decimal(new int[] { 8, 0, 0, 0 }); + numericUpDownNumberPair.Name = "numericUpDownNumberPair"; + numericUpDownNumberPair.Size = new Size(210, 27); + numericUpDownNumberPair.TabIndex = 15; + // + // numericUpDownNumberDay + // + numericUpDownNumberDay.Location = new Point(245, 257); + numericUpDownNumberDay.Maximum = new decimal(new int[] { 7, 0, 0, 0 }); + numericUpDownNumberDay.Name = "numericUpDownNumberDay"; + numericUpDownNumberDay.Size = new Size(210, 27); + numericUpDownNumberDay.TabIndex = 16; + // + // buttonSave + // + buttonSave.Location = new Point(34, 409); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(116, 29); + buttonSave.TabIndex = 17; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(339, 409); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 29); + buttonCancel.TabIndex = 18; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormCompilingSchedule + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(482, 453); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(numericUpDownNumberDay); + Controls.Add(numericUpDownNumberPair); + Controls.Add(comboBoxTypeActivity); + Controls.Add(comboBoxTypeWeek); + Controls.Add(comboBoxAudience); + Controls.Add(comboBoxEducator); + Controls.Add(comboBoxGroupStudents); + Controls.Add(comboBoxDiscipline); + Controls.Add(labelTypeActivity); + Controls.Add(labelNumberPair); + Controls.Add(labelTypeWeek); + Controls.Add(labelNumberDay); + Controls.Add(labelGroupStudents); + Controls.Add(labelAudience); + Controls.Add(labelDiscipline); + Controls.Add(labelEducator); + Name = "FormCompilingSchedule"; + StartPosition = FormStartPosition.CenterParent; + Text = "Составление расписания"; + ((System.ComponentModel.ISupportInitialize)numericUpDownNumberPair).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownNumberDay).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelEducator; + private Label labelDiscipline; + private Label labelAudience; + private Label labelGroupStudents; + private Label labelNumberDay; + private Label labelTypeWeek; + private Label labelNumberPair; + private Label labelTypeActivity; + private ComboBox comboBoxDiscipline; + private ComboBox comboBoxGroupStudents; + private ComboBox comboBoxEducator; + private ComboBox comboBoxAudience; + private ComboBox comboBoxTypeWeek; + private ComboBox comboBoxTypeActivity; + private NumericUpDown numericUpDownNumberPair; + private NumericUpDown numericUpDownNumberDay; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.cs new file mode 100644 index 0000000..6d8be3d --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.cs @@ -0,0 +1,66 @@ +using ProjectSchedule.Entities; +using ProjectSchedule.Entities.Enums; +using ProjectSchedule.Repositories; + +namespace ProjectSchedule.Forms +{ + public partial class FormCompilingSchedule : Form + { + private readonly ICompilingScheduleRepository _сompilingScheduleRepository; + + public FormCompilingSchedule(ICompilingScheduleRepository сompilingScheduleRepository, IDisciplineRepository disciplineRepository, + IEducatorRepository educatorRepository, IGroupStudentsRepository groupStudentsRepository, IAudienceRepository audienceRepository) + { + InitializeComponent(); + + _сompilingScheduleRepository = сompilingScheduleRepository ?? + throw new ArgumentNullException(nameof(сompilingScheduleRepository)); + + comboBoxEducator.DataSource = educatorRepository.ReadEducators(); + comboBoxEducator.DisplayMember = "Surname"; + comboBoxEducator.ValueMember = "Id"; + + comboBoxDiscipline.DataSource = disciplineRepository.ReadDisciplines(); + comboBoxDiscipline.DisplayMember = "NameDiscipline"; + comboBoxDiscipline.ValueMember = "Id"; + + comboBoxGroupStudents.DataSource = groupStudentsRepository.ReadGroupsStudents(); + comboBoxGroupStudents.DisplayMember = "AbbreviationGroup"; + comboBoxGroupStudents.ValueMember = "Id"; + + comboBoxAudience.DataSource = audienceRepository.ReadAudiences(); + comboBoxAudience.DisplayMember = "NumberAudience"; + comboBoxAudience.ValueMember = "Id"; + + comboBoxTypeWeek.DataSource = Enum.GetValues(typeof(TypeWeek)); + + comboBoxTypeActivity.DataSource = Enum.GetValues(typeof(TypeActivity)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxEducator.SelectedIndex < 0 || comboBoxDiscipline.SelectedIndex < 0 || comboBoxGroupStudents.SelectedIndex < 0 || + comboBoxAudience.SelectedIndex < 0 || comboBoxTypeWeek.SelectedIndex < 1 || comboBoxTypeActivity.SelectedIndex < 1) + { + throw new Exception("Имеются незаполненные поля"); + } + + _сompilingScheduleRepository.CreateCompilingSchedule(CompilingSchedule.CreateOperation(0, + (int)comboBoxEducator.SelectedValue!, (int)comboBoxDiscipline.SelectedValue!, + (int)comboBoxGroupStudents.SelectedValue!, (int)comboBoxAudience.SelectedValue!, + (TypeWeek)comboBoxTypeWeek.SelectedItem!, Convert.ToInt32(numericUpDownNumberDay.Value), + Convert.ToInt32(numericUpDownNumberPair.Value), (TypeActivity)comboBoxTypeActivity.SelectedItem!)); + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка сохранения", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.resx b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.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/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs new file mode 100644 index 0000000..e176a51 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs @@ -0,0 +1,113 @@ +namespace ProjectSchedule.Forms +{ + partial class FormCompilingSchedules + { + /// + /// 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(); + buttonDel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(1113, 0); + panel.Name = "panel"; + panel.Size = new Size(140, 484); + panel.TabIndex = 3; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(24, 372); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 66); + buttonDel.TabIndex = 4; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 66); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(1113, 484); + dataGridViewData.TabIndex = 4; + // + // FormCompilingSchedules + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1253, 484); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormCompilingSchedules"; + StartPosition = FormStartPosition.CenterParent; + Text = "Cоставление расписаний"; + Load += FormCompilingSchedules_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs new file mode 100644 index 0000000..2dadab9 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs @@ -0,0 +1,89 @@ +using ProjectSchedule.Repositories; +using Unity; + +namespace ProjectSchedule.Forms +{ + public partial class FormCompilingSchedules : Form + { + private readonly IUnityContainer _container; + + private readonly ICompilingScheduleRepository _сompilingScheduleRepository; + + public FormCompilingSchedules(IUnityContainer container, ICompilingScheduleRepository сompilingScheduleRepository) + { + InitializeComponent(); + + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _сompilingScheduleRepository = сompilingScheduleRepository ?? + throw new ArgumentNullException(nameof(сompilingScheduleRepository)); + } + + private void FormCompilingSchedules_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _сompilingScheduleRepository.DeleteCompilingSchedule(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() + { + dataGridViewData.DataSource = _сompilingScheduleRepository.ReadCompilingSchedules(); + } + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.resx b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.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/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs new file mode 100644 index 0000000..bdbf405 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs @@ -0,0 +1,217 @@ +namespace ProjectSchedule.Forms +{ + partial class FormCurriculumSupplement + { + /// + /// 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() + { + comboBoxDiscipline = new ComboBox(); + comboBoxGroupStudents = new ComboBox(); + labelDiscipline = new Label(); + labelGroupStudents = new Label(); + labelNameCurriculum = new Label(); + labelQuantityLectures = new Label(); + labelQuantityPractices = new Label(); + labelSemester = new Label(); + textBoxNameCurriculum = new TextBox(); + numericUpDownQuantityLectures = new NumericUpDown(); + numericUpDownQuantityPractices = new NumericUpDown(); + buttonSave = new Button(); + buttonCancel = new Button(); + textBoxSemester = new TextBox(); + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityLectures).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityPractices).BeginInit(); + SuspendLayout(); + // + // comboBoxDiscipline + // + comboBoxDiscipline.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxDiscipline.FormattingEnabled = true; + comboBoxDiscipline.Location = new Point(252, 12); + comboBoxDiscipline.Name = "comboBoxDiscipline"; + comboBoxDiscipline.Size = new Size(218, 28); + comboBoxDiscipline.TabIndex = 0; + // + // comboBoxGroupStudents + // + comboBoxGroupStudents.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxGroupStudents.FormattingEnabled = true; + comboBoxGroupStudents.Location = new Point(252, 68); + comboBoxGroupStudents.Name = "comboBoxGroupStudents"; + comboBoxGroupStudents.Size = new Size(218, 28); + comboBoxGroupStudents.TabIndex = 1; + // + // labelDiscipline + // + labelDiscipline.AutoSize = true; + labelDiscipline.Location = new Point(12, 15); + labelDiscipline.Name = "labelDiscipline"; + labelDiscipline.Size = new Size(99, 20); + labelDiscipline.TabIndex = 2; + labelDiscipline.Text = "Дисциплина:"; + // + // labelGroupStudents + // + labelGroupStudents.AutoSize = true; + labelGroupStudents.Location = new Point(12, 71); + labelGroupStudents.Name = "labelGroupStudents"; + labelGroupStudents.Size = new Size(133, 20); + labelGroupStudents.TabIndex = 3; + labelGroupStudents.Text = "Группа студентов:"; + // + // labelNameCurriculum + // + labelNameCurriculum.AutoSize = true; + labelNameCurriculum.Location = new Point(12, 130); + labelNameCurriculum.Name = "labelNameCurriculum"; + labelNameCurriculum.Size = new Size(230, 20); + labelNameCurriculum.TabIndex = 4; + labelNameCurriculum.Text = "Название учебной программы:"; + // + // labelQuantityLectures + // + labelQuantityLectures.AutoSize = true; + labelQuantityLectures.Location = new Point(12, 189); + labelQuantityLectures.Name = "labelQuantityLectures"; + labelQuantityLectures.Size = new Size(147, 20); + labelQuantityLectures.TabIndex = 5; + labelQuantityLectures.Text = "Количество лекций:"; + // + // labelQuantityPractices + // + labelQuantityPractices.AutoSize = true; + labelQuantityPractices.Location = new Point(12, 236); + labelQuantityPractices.Name = "labelQuantityPractices"; + labelQuantityPractices.Size = new Size(152, 20); + labelQuantityPractices.TabIndex = 6; + labelQuantityPractices.Text = "Количество практик:"; + // + // labelSemester + // + labelSemester.AutoSize = true; + labelSemester.Location = new Point(12, 278); + labelSemester.Name = "labelSemester"; + labelSemester.Size = new Size(70, 20); + labelSemester.TabIndex = 7; + labelSemester.Text = "Семестр:"; + // + // textBoxNameCurriculum + // + textBoxNameCurriculum.Location = new Point(252, 127); + textBoxNameCurriculum.Name = "textBoxNameCurriculum"; + textBoxNameCurriculum.Size = new Size(218, 27); + textBoxNameCurriculum.TabIndex = 8; + // + // numericUpDownQuantityLectures + // + numericUpDownQuantityLectures.Location = new Point(252, 187); + numericUpDownQuantityLectures.Maximum = new decimal(new int[] { 40, 0, 0, 0 }); + numericUpDownQuantityLectures.Name = "numericUpDownQuantityLectures"; + numericUpDownQuantityLectures.Size = new Size(218, 27); + numericUpDownQuantityLectures.TabIndex = 10; + // + // numericUpDownQuantityPractices + // + numericUpDownQuantityPractices.Location = new Point(252, 234); + numericUpDownQuantityPractices.Maximum = new decimal(new int[] { 40, 0, 0, 0 }); + numericUpDownQuantityPractices.Name = "numericUpDownQuantityPractices"; + numericUpDownQuantityPractices.Size = new Size(218, 27); + numericUpDownQuantityPractices.TabIndex = 11; + // + // buttonSave + // + buttonSave.Location = new Point(12, 312); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(116, 29); + buttonSave.TabIndex = 12; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(354, 312); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 29); + buttonCancel.TabIndex = 13; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // textBoxSemester + // + textBoxSemester.Location = new Point(252, 275); + textBoxSemester.Name = "textBoxSemester"; + textBoxSemester.Size = new Size(218, 27); + textBoxSemester.TabIndex = 15; + // + // FormCurriculumSupplement + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(482, 353); + Controls.Add(textBoxSemester); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(numericUpDownQuantityPractices); + Controls.Add(numericUpDownQuantityLectures); + Controls.Add(textBoxNameCurriculum); + Controls.Add(labelSemester); + Controls.Add(labelQuantityPractices); + Controls.Add(labelQuantityLectures); + Controls.Add(labelNameCurriculum); + Controls.Add(labelGroupStudents); + Controls.Add(labelDiscipline); + Controls.Add(comboBoxGroupStudents); + Controls.Add(comboBoxDiscipline); + Name = "FormCurriculumSupplement"; + StartPosition = FormStartPosition.CenterParent; + Text = "Дополнение учебного плана"; + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityLectures).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityPractices).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxDiscipline; + private ComboBox comboBoxGroupStudents; + private Label labelDiscipline; + private Label labelGroupStudents; + private Label labelNameCurriculum; + private Label labelQuantityLectures; + private Label labelQuantityPractices; + private Label labelSemester; + private TextBox textBoxNameCurriculum; + private NumericUpDown numericUpDownQuantityLectures; + private NumericUpDown numericUpDownQuantityPractices; + private Button buttonSave; + private Button buttonCancel; + private NumericUpDown numericUpDown; + private TextBox textBoxSemester; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs new file mode 100644 index 0000000..e671ef4 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs @@ -0,0 +1,51 @@ +using ProjectSchedule.Entities; +using ProjectSchedule.Repositories; + +namespace ProjectSchedule.Forms +{ + public partial class FormCurriculumSupplement : Form + { + private readonly ICurriculumSupplementRepository _curriculumSupplementRepository; + + public FormCurriculumSupplement(ICurriculumSupplementRepository curriculumSupplementRepository, + IDisciplineRepository disciplineRepository, IGroupStudentsRepository groupStudentsRepository) + { + InitializeComponent(); + + _curriculumSupplementRepository = curriculumSupplementRepository ?? + throw new ArgumentNullException(nameof(curriculumSupplementRepository)); + + comboBoxDiscipline.DataSource = disciplineRepository.ReadDisciplines(); + comboBoxDiscipline.DisplayMember = "NameDiscipline"; + comboBoxDiscipline.ValueMember = "Id"; + + comboBoxGroupStudents.DataSource = groupStudentsRepository.ReadGroupsStudents(); + comboBoxGroupStudents.DisplayMember = "AbbreviationGroup"; + comboBoxGroupStudents.ValueMember = "Id"; + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxDiscipline.SelectedIndex < 0 || comboBoxGroupStudents.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + _curriculumSupplementRepository.CreateCurriculumSupplement(CurriculumSupplement.CreateOperation(0, + (int)comboBoxDiscipline.SelectedValue!, (int)comboBoxGroupStudents.SelectedValue!, + textBoxNameCurriculum.Text, Convert.ToInt32(numericUpDownQuantityLectures.Value), + Convert.ToInt32(numericUpDownQuantityPractices.Value), textBoxSemester.Text)); + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.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/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs new file mode 100644 index 0000000..79b0a4c --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs @@ -0,0 +1,113 @@ +namespace ProjectSchedule.Forms +{ + partial class FormCurriculumSupplements + { + /// + /// 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(); + buttonDel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(764, 0); + panel.Name = "panel"; + panel.Size = new Size(140, 453); + panel.TabIndex = 2; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(24, 372); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 66); + buttonDel.TabIndex = 4; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 66); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(764, 453); + dataGridViewData.TabIndex = 3; + // + // FormCurriculumSupplements + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(904, 453); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormCurriculumSupplements"; + StartPosition = FormStartPosition.CenterParent; + Text = "Дополнения учебного плана"; + Load += FormCurriculumSupplements_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs new file mode 100644 index 0000000..07aa7de --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs @@ -0,0 +1,89 @@ +using ProjectSchedule.Repositories; +using Unity; + +namespace ProjectSchedule.Forms +{ + public partial class FormCurriculumSupplements : Form + { + private readonly IUnityContainer _container; + + private readonly ICurriculumSupplementRepository _curriculumSupplementRepository; + + public FormCurriculumSupplements(IUnityContainer container, ICurriculumSupplementRepository curriculumSupplementRepository) + { + InitializeComponent(); + + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _curriculumSupplementRepository = curriculumSupplementRepository ?? + throw new ArgumentNullException(nameof(curriculumSupplementRepository)); + } + + private void FormCurriculumSupplements_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _curriculumSupplementRepository.DeleteCurriculumSupplement(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() + { + dataGridViewData.DataSource = _curriculumSupplementRepository.ReadCurriculumSupplements(); + } + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.resx b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.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/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.Designer.cs new file mode 100644 index 0000000..b7b81a8 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.Designer.cs @@ -0,0 +1,96 @@ +namespace ProjectSchedule.Forms +{ + partial class FormDiscipline + { + /// + /// 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() + { + textBoxNameDiscipline = new TextBox(); + labelNameDiscipline = new Label(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // textBoxNameDiscipline + // + textBoxNameDiscipline.Location = new Point(228, 42); + textBoxNameDiscipline.Name = "textBoxNameDiscipline"; + textBoxNameDiscipline.Size = new Size(214, 27); + textBoxNameDiscipline.TabIndex = 0; + // + // labelNameDiscipline + // + labelNameDiscipline.AutoSize = true; + labelNameDiscipline.Location = new Point(25, 45); + labelNameDiscipline.Name = "labelNameDiscipline"; + labelNameDiscipline.Size = new Size(172, 20); + labelNameDiscipline.TabIndex = 1; + labelNameDiscipline.Text = "Название дисциплины:"; + // + // buttonSave + // + buttonSave.Location = new Point(25, 131); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(116, 29); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(326, 131); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 29); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormDiscipline + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(468, 184); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelNameDiscipline); + Controls.Add(textBoxNameDiscipline); + Name = "FormDiscipline"; + StartPosition = FormStartPosition.CenterParent; + Text = "Дисциплина"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private TextBox textBoxNameDiscipline; + private Label labelNameDiscipline; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs new file mode 100644 index 0000000..a523847 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs @@ -0,0 +1,70 @@ +using ProjectSchedule.Entities; +using ProjectSchedule.Repositories; + +namespace ProjectSchedule.Forms; + +public partial class FormDiscipline : Form +{ + private readonly IDisciplineRepository _disciplineRepository; + + private int? _disciplineId; + + public int Id + { + set + { + try + { + var discipline = _disciplineRepository.ReadDisciplineById(value); + if (discipline == null) + { + throw new InvalidDataException(nameof(discipline)); + } + textBoxNameDiscipline.Text = discipline.NameDiscipline; + _disciplineId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormDiscipline(IDisciplineRepository disciplineRepository) + { + InitializeComponent(); + _disciplineRepository = disciplineRepository ?? + throw new ArgumentNullException(nameof(disciplineRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxNameDiscipline.Text)) + { + throw new Exception("Поле 'Название дисциплины' должно быть заполнено."); + } + if (_disciplineId.HasValue) + { + _disciplineRepository.UpdateDiscipline(CreateDiscipline(_disciplineId.Value)); + } + else + { + _disciplineRepository.CreateDiscipline(CreateDiscipline(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Discipline CreateDiscipline(int id) => + Discipline.CreateEntity(id, textBoxNameDiscipline.Text); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.resx b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.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/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs new file mode 100644 index 0000000..c5a909f --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectSchedule.Forms +{ + partial class FormDisciplines + { + /// + /// 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(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(660, 0); + panel.Name = "panel"; + panel.Size = new Size(140, 450); + panel.TabIndex = 1; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(24, 194); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 66); + buttonDel.TabIndex = 4; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.Upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(24, 106); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(94, 66); + buttonUpd.TabIndex = 3; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 66); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(660, 450); + dataGridViewData.TabIndex = 2; + // + // FormDisciplines + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormDisciplines"; + StartPosition = FormStartPosition.CenterParent; + Text = "Дисциплины"; + Load += FormDisciplines_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs new file mode 100644 index 0000000..3211251 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs @@ -0,0 +1,98 @@ +using ProjectSchedule.Repositories; +using Unity; + +namespace ProjectSchedule.Forms +{ + public partial class FormDisciplines : Form + { + private readonly IUnityContainer _container; + + private readonly IDisciplineRepository _disciplineRepository; + public FormDisciplines(IUnityContainer container, IDisciplineRepository disciplineRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _disciplineRepository = disciplineRepository ?? + throw new ArgumentNullException(nameof(disciplineRepository)); + } + private void FormDisciplines_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _disciplineRepository.DeleteDiscipline(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _disciplineRepository.ReadDisciplines(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.resx b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.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/ProjectSchedule/ProjectSchedule/Forms/FormEducator.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.Designer.cs new file mode 100644 index 0000000..ee6c5b4 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.Designer.cs @@ -0,0 +1,140 @@ +namespace ProjectSchedule.Forms +{ + partial class FormEducator + { + /// + /// 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() + { + labelSurname = new Label(); + labelName = new Label(); + labelPatronymic = new Label(); + textBoxName = new TextBox(); + textBoxSurname = new TextBox(); + textBoxPatronymic = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // labelSurname + // + labelSurname.AutoSize = true; + labelSurname.Location = new Point(21, 30); + labelSurname.Name = "labelSurname"; + labelSurname.Size = new Size(76, 20); + labelSurname.TabIndex = 0; + labelSurname.Text = "Фамилия:"; + // + // labelName + // + labelName.AutoSize = true; + labelName.Location = new Point(21, 78); + labelName.Name = "labelName"; + labelName.Size = new Size(42, 20); + labelName.TabIndex = 1; + labelName.Text = "Имя:"; + // + // labelPatronymic + // + labelPatronymic.AutoSize = true; + labelPatronymic.Location = new Point(21, 133); + labelPatronymic.Name = "labelPatronymic"; + labelPatronymic.Size = new Size(75, 20); + labelPatronymic.TabIndex = 2; + labelPatronymic.Text = "Отчество:"; + // + // textBoxName + // + textBoxName.Location = new Point(161, 75); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(232, 27); + textBoxName.TabIndex = 3; + // + // textBoxSurname + // + textBoxSurname.Location = new Point(161, 27); + textBoxSurname.Name = "textBoxSurname"; + textBoxSurname.Size = new Size(232, 27); + textBoxSurname.TabIndex = 4; + // + // textBoxPatronymic + // + textBoxPatronymic.Location = new Point(161, 130); + textBoxPatronymic.Name = "textBoxPatronymic"; + textBoxPatronymic.Size = new Size(232, 27); + textBoxPatronymic.TabIndex = 5; + // + // buttonSave + // + buttonSave.Location = new Point(21, 200); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(116, 29); + buttonSave.TabIndex = 6; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(277, 200); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 29); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormEducator + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(405, 246); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxPatronymic); + Controls.Add(textBoxSurname); + Controls.Add(textBoxName); + Controls.Add(labelPatronymic); + Controls.Add(labelName); + Controls.Add(labelSurname); + Name = "FormEducator"; + StartPosition = FormStartPosition.CenterParent; + Text = "Преподаватель"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelSurname; + private Label labelName; + private Label labelPatronymic; + private TextBox textBoxName; + private TextBox textBoxSurname; + private TextBox textBoxPatronymic; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs new file mode 100644 index 0000000..8ba5ec6 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs @@ -0,0 +1,72 @@ +using ProjectSchedule.Entities; +using ProjectSchedule.Repositories; + +namespace ProjectSchedule.Forms; + +public partial class FormEducator : Form +{ + private readonly IEducatorRepository _educatorRepository; + + private int? _educatorId; + + public int Id + { + set + { + try + { + var educator = _educatorRepository.ReadEducatorById(value); + if (educator == null) + { + throw new InvalidDataException(nameof(educator)); + } + textBoxSurname.Text = educator.Surname; + textBoxName.Text = educator.Name; + textBoxPatronymic.Text = educator.Patronymic; + _educatorId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormEducator(IEducatorRepository educatorRepository) + { + InitializeComponent(); + _educatorRepository = educatorRepository ?? + throw new ArgumentNullException(nameof(educatorRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxSurname.Text) || string.IsNullOrWhiteSpace(textBoxName.Text) || + string.IsNullOrWhiteSpace(textBoxPatronymic.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_educatorId.HasValue) + { + _educatorRepository.UpdateEducator(CreateEducator(_educatorId.Value)); + } + else + { + _educatorRepository.CreateEducator(CreateEducator(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Educator CreateEducator(int id) => + Educator.CreateEntity(id, textBoxSurname.Text, textBoxName.Text, textBoxPatronymic.Text); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducator.resx b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.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/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs new file mode 100644 index 0000000..0e44356 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectSchedule.Forms +{ + partial class FormEducators + { + /// + /// 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(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(642, 0); + panel.Name = "panel"; + panel.Size = new Size(140, 453); + panel.TabIndex = 1; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(24, 194); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 66); + buttonDel.TabIndex = 4; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.Upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(24, 106); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(94, 66); + buttonUpd.TabIndex = 3; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 66); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(642, 453); + dataGridViewData.TabIndex = 2; + // + // FormEducators + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(782, 453); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormEducators"; + StartPosition = FormStartPosition.CenterParent; + Text = "Преподаватели"; + Load += FormEducators_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs new file mode 100644 index 0000000..d233401 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs @@ -0,0 +1,98 @@ +using ProjectSchedule.Repositories; +using Unity; + +namespace ProjectSchedule.Forms +{ + public partial class FormEducators : Form + { + private readonly IUnityContainer _container; + + private readonly IEducatorRepository _educatorRepository; + public FormEducators(IUnityContainer container, IEducatorRepository educatorRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _educatorRepository = educatorRepository ?? + throw new ArgumentNullException(nameof(educatorRepository)); + } + private void FormEducators_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _educatorRepository.DeleteEducator(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _educatorRepository.ReadEducators(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducators.resx b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.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/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs new file mode 100644 index 0000000..d4979e5 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs @@ -0,0 +1,143 @@ +namespace ProjectSchedule.Forms +{ + partial class FormGroupStudents + { + /// + /// 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() + { + labelAbbreviationGroup = new Label(); + labelGroupNumber = new Label(); + labelQuantityStudents = new Label(); + numericUpDownQuantityStudents = new NumericUpDown(); + textBoxAbbreviationGroup = new TextBox(); + textBoxGroupNumber = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityStudents).BeginInit(); + SuspendLayout(); + // + // labelAbbreviationGroup + // + labelAbbreviationGroup.AutoSize = true; + labelAbbreviationGroup.Location = new Point(12, 28); + labelAbbreviationGroup.Name = "labelAbbreviationGroup"; + labelAbbreviationGroup.Size = new Size(167, 20); + labelAbbreviationGroup.TabIndex = 0; + labelAbbreviationGroup.Text = "Аббревиатура группы:"; + // + // labelGroupNumber + // + labelGroupNumber.AutoSize = true; + labelGroupNumber.Location = new Point(12, 74); + labelGroupNumber.Name = "labelGroupNumber"; + labelGroupNumber.Size = new Size(115, 20); + labelGroupNumber.TabIndex = 1; + labelGroupNumber.Text = "Номер группы:"; + // + // labelQuantityStudents + // + labelQuantityStudents.AutoSize = true; + labelQuantityStudents.Location = new Point(12, 123); + labelQuantityStudents.Name = "labelQuantityStudents"; + labelQuantityStudents.Size = new Size(165, 20); + labelQuantityStudents.TabIndex = 2; + labelQuantityStudents.Text = "Количество студентов:"; + // + // numericUpDownQuantityStudents + // + numericUpDownQuantityStudents.Location = new Point(213, 121); + numericUpDownQuantityStudents.Maximum = new decimal(new int[] { 66, 0, 0, 0 }); + numericUpDownQuantityStudents.Name = "numericUpDownQuantityStudents"; + numericUpDownQuantityStudents.Size = new Size(176, 27); + numericUpDownQuantityStudents.TabIndex = 3; + // + // textBoxAbbreviationGroup + // + textBoxAbbreviationGroup.Location = new Point(213, 25); + textBoxAbbreviationGroup.Name = "textBoxAbbreviationGroup"; + textBoxAbbreviationGroup.Size = new Size(176, 27); + textBoxAbbreviationGroup.TabIndex = 4; + // + // textBoxGroupNumber + // + textBoxGroupNumber.Location = new Point(213, 71); + textBoxGroupNumber.Name = "textBoxGroupNumber"; + textBoxGroupNumber.Size = new Size(176, 27); + textBoxGroupNumber.TabIndex = 5; + // + // buttonSave + // + buttonSave.Location = new Point(12, 189); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(116, 29); + buttonSave.TabIndex = 7; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(273, 189); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 29); + buttonCancel.TabIndex = 8; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormGroupStudents + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(401, 230); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxGroupNumber); + Controls.Add(textBoxAbbreviationGroup); + Controls.Add(numericUpDownQuantityStudents); + Controls.Add(labelQuantityStudents); + Controls.Add(labelGroupNumber); + Controls.Add(labelAbbreviationGroup); + Name = "FormGroupStudents"; + StartPosition = FormStartPosition.CenterParent; + Text = "Группа студентов"; + ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityStudents).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelAbbreviationGroup; + private Label labelGroupNumber; + private Label labelQuantityStudents; + private NumericUpDown numericUpDownQuantityStudents; + private TextBox textBoxAbbreviationGroup; + private TextBox textBoxGroupNumber; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs new file mode 100644 index 0000000..7d8aa92 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs @@ -0,0 +1,75 @@ +using ProjectSchedule.Entities; +using ProjectSchedule.Repositories; + +namespace ProjectSchedule.Forms; + +public partial class FormGroupStudents : Form +{ + private readonly IGroupStudentsRepository _groupStudentsRepository; + + private int? _groupStudentsId; + + public int Id + { + set + { + try + { + var groupStudents = _groupStudentsRepository.ReadGroupStudentsById(value); + if (groupStudents == null) + { + throw new InvalidDataException(nameof(groupStudents)); + } + textBoxAbbreviationGroup.Text = groupStudents.AbbreviationGroup; + textBoxGroupNumber.Text = groupStudents.GroupNumber; + numericUpDownQuantityStudents.Value = groupStudents.QuantityStudents; + _groupStudentsId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormGroupStudents(IGroupStudentsRepository groupStudentsRepository) + { + InitializeComponent(); + _groupStudentsRepository = groupStudentsRepository ?? + throw new ArgumentNullException(nameof(groupStudentsRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxAbbreviationGroup.Text) || string.IsNullOrWhiteSpace(textBoxGroupNumber.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + + if (_groupStudentsId.HasValue) + { + _groupStudentsRepository.UpdateGroupStudents(CreateGroupOfStudents(_groupStudentsId.Value)); + } + else + { + _groupStudentsRepository.CreateGroupStudents(CreateGroupOfStudents(0)); + } + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private GroupStudents CreateGroupOfStudents(int id) + { + return GroupStudents.CreateEntity(id, textBoxAbbreviationGroup.Text, textBoxGroupNumber.Text, Convert.ToInt32(numericUpDownQuantityStudents.Value)); + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.resx b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.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/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs new file mode 100644 index 0000000..a2a9805 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectSchedule.Forms +{ + partial class FormGroupsStudents + { + /// + /// 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(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(660, 0); + panel.Name = "panel"; + panel.Size = new Size(140, 450); + panel.TabIndex = 2; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(24, 194); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 66); + buttonDel.TabIndex = 4; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.Upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(24, 106); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(94, 66); + buttonUpd.TabIndex = 3; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Add; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 66); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(660, 450); + dataGridViewData.TabIndex = 3; + // + // FormGroupsStudents + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormGroupsStudents"; + StartPosition = FormStartPosition.CenterParent; + Text = "Группы студентов"; + Load += FormGroupsStudents_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs new file mode 100644 index 0000000..f9eaa89 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs @@ -0,0 +1,98 @@ +using ProjectSchedule.Repositories; +using Unity; + +namespace ProjectSchedule.Forms +{ + public partial class FormGroupsStudents : Form + { + private readonly IUnityContainer _container; + + private readonly IGroupStudentsRepository _groupStudentsRepository; + public FormGroupsStudents(IUnityContainer container, IGroupStudentsRepository groupStudentsRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _groupStudentsRepository = groupStudentsRepository ?? + throw new ArgumentNullException(nameof(groupStudentsRepository)); + } + private void FormGroupsStudents_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _groupStudentsRepository.DeleteGroupStudents(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _groupStudentsRepository.ReadGroupsStudents(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.resx b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.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/ProjectSchedule/ProjectSchedule/Program.cs b/ProjectSchedule/ProjectSchedule/Program.cs index 4b18fc6..8bcc656 100644 --- a/ProjectSchedule/ProjectSchedule/Program.cs +++ b/ProjectSchedule/ProjectSchedule/Program.cs @@ -1,3 +1,8 @@ +using Unity.Lifetime; +using Unity; +using ProjectSchedule.Repositories; +using ProjectSchedule.Repositories.Implementations; + namespace ProjectSchedule { internal static class Program @@ -11,7 +16,21 @@ namespace ProjectSchedule // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(CreateContainer().Resolve()); + } + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + + return container; } } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/ProjectSchedule.csproj b/ProjectSchedule/ProjectSchedule/ProjectSchedule.csproj index 663fdb8..accbdf0 100644 --- a/ProjectSchedule/ProjectSchedule/ProjectSchedule.csproj +++ b/ProjectSchedule/ProjectSchedule/ProjectSchedule.csproj @@ -8,4 +8,23 @@ enable + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Properties/Resources.Designer.cs b/ProjectSchedule/ProjectSchedule/Properties/Resources.Designer.cs new file mode 100644 index 0000000..75c5c3e --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectSchedule.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectSchedule.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Add { + get { + object obj = ResourceManager.GetObject("Add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Del { + get { + object obj = ResourceManager.GetObject("Del", resourceCulture); + 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)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Расписание_на_фон { + get { + object obj = ResourceManager.GetObject("Расписание на фон", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectSchedule/ProjectSchedule/Properties/Resources.resx b/ProjectSchedule/ProjectSchedule/Properties/Resources.resx new file mode 100644 index 0000000..5a91ce7 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Расписание на фон.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 + + + ..\Resources\Del.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Add.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/IAudienceRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/IAudienceRepository.cs new file mode 100644 index 0000000..882acd3 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/IAudienceRepository.cs @@ -0,0 +1,16 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories; + +public interface IAudienceRepository +{ + IEnumerable ReadAudiences(); + + Audience ReadAudienceById(int id); + + void CreateAudience(Audience audience); + + void UpdateAudience(Audience audience); + + void DeleteAudience(int id); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs new file mode 100644 index 0000000..02dca44 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs @@ -0,0 +1,11 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories; + +public interface ICompilingScheduleRepository +{ + IEnumerable ReadCompilingSchedules(int? educatorId = null, int? disciplineId = null, + int? groupStudentsId = null, int? audienceId = null); + void CreateCompilingSchedule(CompilingSchedule compilingSchedule); + void DeleteCompilingSchedule(int id); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs new file mode 100644 index 0000000..ce92524 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs @@ -0,0 +1,10 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories; + +public interface ICurriculumSupplementRepository +{ + IEnumerable ReadCurriculumSupplements(int? disciplineId = null, int? groupStudentsId = null); + void CreateCurriculumSupplement(CurriculumSupplement curriculumSupplement); + void DeleteCurriculumSupplement(int id); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/IDisciplineRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/IDisciplineRepository.cs new file mode 100644 index 0000000..92f691f --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/IDisciplineRepository.cs @@ -0,0 +1,16 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories; + +public interface IDisciplineRepository +{ + IEnumerable ReadDisciplines(); + + Discipline ReadDisciplineById(int id); + + void CreateDiscipline(Discipline discipline); + + void UpdateDiscipline(Discipline discipline); + + void DeleteDiscipline(int id); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/IEducatorRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/IEducatorRepository.cs new file mode 100644 index 0000000..19ccac6 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/IEducatorRepository.cs @@ -0,0 +1,16 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories; + +public interface IEducatorRepository +{ + IEnumerable ReadEducators(); + + Educator ReadEducatorById(int id); + + void CreateEducator(Educator educator); + + void UpdateEducator(Educator educator); + + void DeleteEducator(int id); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/IGroupStudentsRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/IGroupStudentsRepository.cs new file mode 100644 index 0000000..4165aff --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/IGroupStudentsRepository.cs @@ -0,0 +1,16 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories; + +public interface IGroupStudentsRepository +{ + IEnumerable ReadGroupsStudents(); + + GroupStudents ReadGroupStudentsById(int id); + + void CreateGroupStudents(GroupStudents groupStudents); + + void UpdateGroupStudents(GroupStudents groupStudents); + + void DeleteGroupStudents(int id); +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/AudienceRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/AudienceRepository.cs new file mode 100644 index 0000000..0a341ac --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/AudienceRepository.cs @@ -0,0 +1,29 @@ +using ProjectSchedule.Entities; +using ProjectSchedule.Entities.Enums; + +namespace ProjectSchedule.Repositories.Implementations; + +public class AudienceRepository : IAudienceRepository +{ + public void CreateAudience(Audience audience) + { + } + + public void DeleteAudience(int id) + { + } + + public Audience ReadAudienceById(int id) + { + return Audience.CreateEntity(0, string.Empty, TypeAudience.None, 0); + } + + public IEnumerable ReadAudiences() + { + return []; + } + + public void UpdateAudience(Audience audience) + { + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs new file mode 100644 index 0000000..a2e07df --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs @@ -0,0 +1,20 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories.Implementations; + +public class CompilingScheduleRepository : ICompilingScheduleRepository +{ + public void CreateCompilingSchedule(CompilingSchedule compilingSchedule) + { + } + + public void DeleteCompilingSchedule(int id) + { + } + + public IEnumerable ReadCompilingSchedules(int? educatorId = null, int? disciplineId = null, + int? groupStudentsId = null, int? audienceId = null) + { + return []; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs new file mode 100644 index 0000000..4934b46 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs @@ -0,0 +1,19 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories.Implementations; + +public class CurriculumSupplementRepository : ICurriculumSupplementRepository +{ + public void CreateCurriculumSupplement(CurriculumSupplement curriculumSupplement) + { + } + + public void DeleteCurriculumSupplement(int id) + { + } + + public IEnumerable ReadCurriculumSupplements(int? disciplineId = null, int? groupStudentsId = null) + { + return []; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs new file mode 100644 index 0000000..232a8ea --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs @@ -0,0 +1,26 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories.Implementations; + +public class DisciplineRepository : IDisciplineRepository +{ + public void CreateDiscipline(Discipline discipline) + { + } + public void DeleteDiscipline(int id) + { + } + public Discipline ReadDisciplineById(int id) + { + return Discipline.CreateEntity(0, string.Empty); + } + + public IEnumerable ReadDisciplines() + { + return []; + } + + public void UpdateDiscipline(Discipline discipline) + { + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/EducatorRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/EducatorRepository.cs new file mode 100644 index 0000000..f189849 --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/EducatorRepository.cs @@ -0,0 +1,28 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories.Implementations; + +public class EducatorRepository : IEducatorRepository +{ + public void CreateEducator(Educator educator) + { + } + + public void DeleteEducator(int id) + { + } + + public Educator ReadEducatorById(int id) + { + return Educator.CreateEntity(0, string.Empty, string.Empty, string.Empty); + } + + public IEnumerable ReadEducators() + { + return []; + } + + public void UpdateEducator(Educator educator) + { + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/GroupStudentsRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/GroupStudentsRepository.cs new file mode 100644 index 0000000..0a076ee --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/GroupStudentsRepository.cs @@ -0,0 +1,28 @@ +using ProjectSchedule.Entities; + +namespace ProjectSchedule.Repositories.Implementations; + +public class GroupStudentsRepository : IGroupStudentsRepository +{ + public void CreateGroupStudents(GroupStudents groupStudents) + { + } + + public void DeleteGroupStudents(int id) + { + } + + public GroupStudents ReadGroupStudentsById(int id) + { + return GroupStudents.CreateEntity(0, string.Empty, string.Empty, 0); + } + + public IEnumerable ReadGroupsStudents() + { + return []; + } + + public void UpdateGroupStudents(GroupStudents groupStudents) + { + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Resources/Add.jpg b/ProjectSchedule/ProjectSchedule/Resources/Add.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5186ab42959bab685f993776c95205591a052053 GIT binary patch literal 14419 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 EZ?F{0`~Uy| literal 0 HcmV?d00001 diff --git a/ProjectSchedule/ProjectSchedule/Resources/Del.png b/ProjectSchedule/ProjectSchedule/Resources/Del.png new file mode 100644 index 0000000000000000000000000000000000000000..63b952246a5678707a53f8e555a94960de332e20 GIT binary patch literal 100964 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]z(&n*Do{qz$4(92!?=u3%w}*O#JKB7V;K=jV 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 literal 0 HcmV?d00001 diff --git a/ProjectSchedule/ProjectSchedule/Resources/Upd.png b/ProjectSchedule/ProjectSchedule/Resources/Upd.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5f542dfabc93a78fa2cf30f06dcb4e3100a847 GIT binary patch literal 196164 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 literal 0 HcmV?d00001 diff --git a/ProjectSchedule/ProjectSchedule/Resources/Расписание на фон.png b/ProjectSchedule/ProjectSchedule/Resources/Расписание на фон.png new file mode 100644 index 0000000000000000000000000000000000000000..f5bd8fde2c3444294f77d1a5f41f1e8cbd48966c GIT binary patch literal 18403 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 literal 0 HcmV?d00001 -- 2.25.1 From 91af80d9ea9eaa4d012b6f09b5e0b92097c47222 Mon Sep 17 00:00:00 2001 From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com> Date: Mon, 4 Nov 2024 22:01:55 +0400 Subject: [PATCH 2/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B2=D1=8F=D0=B7=D0=B8=20"=D0=BC?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=B8=D0=B5=20=D0=BA=D0=BE=20=D0=BC=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=B8=D0=BC"=20=D0=B8=20=D1=80=D0=B0=D0=B7=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectSchedule/Entities/Audience.cs | 4 + .../Entities/CompilingSchedule.cs | 9 + .../Entities/CurriculumSupplement.cs | 21 +-- .../ProjectSchedule/Entities/Discipline.cs | 2 + .../DisciplineCurriculumSupplement.cs | 23 +++ .../ProjectSchedule/Entities/Educator.cs | 4 + .../ProjectSchedule/Entities/GroupStudents.cs | 4 + .../ProjectSchedule/FormSchedule.cs | 2 +- .../FormCurriculumSupplement.Designer.cs | 155 ++++++++---------- .../Forms/FormCurriculumSupplement.cs | 36 +++- .../Forms/FormCurriculumSupplement.resx | 9 + .../ICompilingScheduleRepository.cs | 2 + .../ICurriculumSupplementRepository.cs | 2 + 13 files changed, 169 insertions(+), 104 deletions(-) create mode 100644 ProjectSchedule/ProjectSchedule/Entities/DisciplineCurriculumSupplement.cs diff --git a/ProjectSchedule/ProjectSchedule/Entities/Audience.cs b/ProjectSchedule/ProjectSchedule/Entities/Audience.cs index cd6518a..c981830 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/Audience.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/Audience.cs @@ -5,9 +5,13 @@ namespace ProjectSchedule.Entities; public class Audience { public int Id { get; private set; } + public string NumberAudience { get; private set; } = string.Empty; + public TypeAudience TypeAudience { get; private set; } + public int QuantitySeats { get; private set; } + public static Audience CreateEntity(int id, string numberAudience, TypeAudience typeAudience, int quantitySeats) { return new Audience diff --git a/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs b/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs index 2e6382c..3e7ee5d 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/CompilingSchedule.cs @@ -5,14 +5,23 @@ namespace ProjectSchedule.Entities; public class CompilingSchedule { public int Id { get; private set; } + public int EducatorId { get; private set; } + public int DisciplineId { get; private set; } + public int GroupStudentsId { get; private set; } + public int AudienceId { get; private set; } + public TypeWeek TypeWeek { get; private set; } + public int NumberDay { get; private set; } + public int NumberPair { get; private set; } + public TypeActivity TypeActivity { get; private set; } + public static CompilingSchedule CreateOperation(int id, int educatorId, int disciplineId, int groupStudentsId, int audienceId, TypeWeek typeWeek, int numberDay, int numberPair, TypeActivity typeActivity) { diff --git a/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs index 3e028f1..604ad13 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs @@ -3,24 +3,25 @@ public class CurriculumSupplement { public int Id { get; private set; } - public int DisciplineId { get; private set; } + public int GroupStudentsId { get; private set; } - public string NameCurriculum { get; private set; } = string.Empty; - public int QuantityLectures { get; private set; } - public int QuantityPractices { get; private set; } + + public string NameCurriculum { get; private set; } = string.Empty; + public string Semester { get; private set; } = string.Empty; - public static CurriculumSupplement CreateOperation(int id, int disciplineId, int groupStudentsId, string nameCurriculum, - int quantityLectures, int quantityPractices, string semester) + + public IEnumerable DisciplineCurriculumSupplements { get; private set; } = []; + + public static CurriculumSupplement CreateOperation(int id, int groupStudentsId, string nameCurriculum, + string semester, IEnumerable disciplineCurriculumSupplements) { return new CurriculumSupplement { Id = id, - DisciplineId = disciplineId, GroupStudentsId = groupStudentsId, NameCurriculum = nameCurriculum ?? string.Empty, - QuantityLectures = quantityLectures, - QuantityPractices = quantityPractices, - Semester = semester ?? string.Empty + Semester = semester ?? string.Empty, + DisciplineCurriculumSupplements = disciplineCurriculumSupplements }; } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs b/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs index 706fb39..5b1df40 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/Discipline.cs @@ -3,7 +3,9 @@ public class Discipline { public int Id { get; private set; } + public string NameDiscipline { get; private set; } = string.Empty; + public static Discipline CreateEntity(int id, string nameDiscipline) { return new Discipline diff --git a/ProjectSchedule/ProjectSchedule/Entities/DisciplineCurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Entities/DisciplineCurriculumSupplement.cs new file mode 100644 index 0000000..2ff4e0b --- /dev/null +++ b/ProjectSchedule/ProjectSchedule/Entities/DisciplineCurriculumSupplement.cs @@ -0,0 +1,23 @@ +namespace ProjectSchedule.Entities; + +public class DisciplineCurriculumSupplement +{ + public int Id { get; private set; } + + public int DisciplineId { get; private set; } + + public int QuantityLectures { get; private set; } + + public int QuantityPractices { get; private set; } + + public static DisciplineCurriculumSupplement CreateElement(int id, int disciplineId, int quantityLectures, int quantityPractices) + { + return new DisciplineCurriculumSupplement + { + Id = id, + DisciplineId = disciplineId, + QuantityLectures = quantityLectures, + QuantityPractices = quantityPractices + }; + } +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Entities/Educator.cs b/ProjectSchedule/ProjectSchedule/Entities/Educator.cs index a22e0b4..9d1501b 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/Educator.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/Educator.cs @@ -3,9 +3,13 @@ public class Educator { public int Id { get; private set; } + public string Surname { get; private set; } = string.Empty; + public string Name { get; private set; } = string.Empty; + public string Patronymic { get; private set; } = string.Empty; + public static Educator CreateEntity(int id, string surname, string name, string patronymic) { return new Educator diff --git a/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs b/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs index 88122f6..ffce5c2 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/GroupStudents.cs @@ -3,9 +3,13 @@ public class GroupStudents { public int Id { get; private set; } + public string AbbreviationGroup { get; private set; } = string.Empty; + public string GroupNumber { get; private set; } = string.Empty; + public int QuantityStudents { get; private set; } + public static GroupStudents CreateEntity(int id, string abbreviationGroup, string groupNumber, int quantityStudents) { return new GroupStudents diff --git a/ProjectSchedule/ProjectSchedule/FormSchedule.cs b/ProjectSchedule/ProjectSchedule/FormSchedule.cs index 78c7207..eaf8a85 100644 --- a/ProjectSchedule/ProjectSchedule/FormSchedule.cs +++ b/ProjectSchedule/ProjectSchedule/FormSchedule.cs @@ -92,4 +92,4 @@ namespace ProjectSchedule } } } -} +} \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs index bdbf405..9aa10f6 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs @@ -28,55 +28,36 @@ /// private void InitializeComponent() { - comboBoxDiscipline = new ComboBox(); comboBoxGroupStudents = new ComboBox(); - labelDiscipline = new Label(); labelGroupStudents = new Label(); labelNameCurriculum = new Label(); - labelQuantityLectures = new Label(); - labelQuantityPractices = new Label(); labelSemester = new Label(); textBoxNameCurriculum = new TextBox(); - numericUpDownQuantityLectures = new NumericUpDown(); - numericUpDownQuantityPractices = new NumericUpDown(); buttonSave = new Button(); buttonCancel = new Button(); textBoxSemester = new TextBox(); - ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityLectures).BeginInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityPractices).BeginInit(); + groupBoxDisciplines = new GroupBox(); + dataGridViewDisciplines = new DataGridView(); + ColumnDiscipline = new DataGridViewComboBoxColumn(); + ColumnQuantityLectures = new DataGridViewTextBoxColumn(); + ColumnQuantityPractices = new DataGridViewTextBoxColumn(); + groupBoxDisciplines.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewDisciplines).BeginInit(); SuspendLayout(); // - // comboBoxDiscipline - // - comboBoxDiscipline.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxDiscipline.FormattingEnabled = true; - comboBoxDiscipline.Location = new Point(252, 12); - comboBoxDiscipline.Name = "comboBoxDiscipline"; - comboBoxDiscipline.Size = new Size(218, 28); - comboBoxDiscipline.TabIndex = 0; - // // comboBoxGroupStudents // comboBoxGroupStudents.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxGroupStudents.FormattingEnabled = true; - comboBoxGroupStudents.Location = new Point(252, 68); + comboBoxGroupStudents.Location = new Point(252, 6); comboBoxGroupStudents.Name = "comboBoxGroupStudents"; comboBoxGroupStudents.Size = new Size(218, 28); comboBoxGroupStudents.TabIndex = 1; // - // labelDiscipline - // - labelDiscipline.AutoSize = true; - labelDiscipline.Location = new Point(12, 15); - labelDiscipline.Name = "labelDiscipline"; - labelDiscipline.Size = new Size(99, 20); - labelDiscipline.TabIndex = 2; - labelDiscipline.Text = "Дисциплина:"; - // // labelGroupStudents // labelGroupStudents.AutoSize = true; - labelGroupStudents.Location = new Point(12, 71); + labelGroupStudents.Location = new Point(12, 9); labelGroupStudents.Name = "labelGroupStudents"; labelGroupStudents.Size = new Size(133, 20); labelGroupStudents.TabIndex = 3; @@ -85,34 +66,16 @@ // labelNameCurriculum // labelNameCurriculum.AutoSize = true; - labelNameCurriculum.Location = new Point(12, 130); + labelNameCurriculum.Location = new Point(12, 46); labelNameCurriculum.Name = "labelNameCurriculum"; labelNameCurriculum.Size = new Size(230, 20); labelNameCurriculum.TabIndex = 4; labelNameCurriculum.Text = "Название учебной программы:"; // - // labelQuantityLectures - // - labelQuantityLectures.AutoSize = true; - labelQuantityLectures.Location = new Point(12, 189); - labelQuantityLectures.Name = "labelQuantityLectures"; - labelQuantityLectures.Size = new Size(147, 20); - labelQuantityLectures.TabIndex = 5; - labelQuantityLectures.Text = "Количество лекций:"; - // - // labelQuantityPractices - // - labelQuantityPractices.AutoSize = true; - labelQuantityPractices.Location = new Point(12, 236); - labelQuantityPractices.Name = "labelQuantityPractices"; - labelQuantityPractices.Size = new Size(152, 20); - labelQuantityPractices.TabIndex = 6; - labelQuantityPractices.Text = "Количество практик:"; - // // labelSemester // labelSemester.AutoSize = true; - labelSemester.Location = new Point(12, 278); + labelSemester.Location = new Point(12, 83); labelSemester.Name = "labelSemester"; labelSemester.Size = new Size(70, 20); labelSemester.TabIndex = 7; @@ -120,30 +83,15 @@ // // textBoxNameCurriculum // - textBoxNameCurriculum.Location = new Point(252, 127); + textBoxNameCurriculum.Location = new Point(252, 43); textBoxNameCurriculum.Name = "textBoxNameCurriculum"; textBoxNameCurriculum.Size = new Size(218, 27); textBoxNameCurriculum.TabIndex = 8; // - // numericUpDownQuantityLectures - // - numericUpDownQuantityLectures.Location = new Point(252, 187); - numericUpDownQuantityLectures.Maximum = new decimal(new int[] { 40, 0, 0, 0 }); - numericUpDownQuantityLectures.Name = "numericUpDownQuantityLectures"; - numericUpDownQuantityLectures.Size = new Size(218, 27); - numericUpDownQuantityLectures.TabIndex = 10; - // - // numericUpDownQuantityPractices - // - numericUpDownQuantityPractices.Location = new Point(252, 234); - numericUpDownQuantityPractices.Maximum = new decimal(new int[] { 40, 0, 0, 0 }); - numericUpDownQuantityPractices.Name = "numericUpDownQuantityPractices"; - numericUpDownQuantityPractices.Size = new Size(218, 27); - numericUpDownQuantityPractices.TabIndex = 11; - // // buttonSave // - buttonSave.Location = new Point(12, 312); + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(12, 462); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(116, 29); buttonSave.TabIndex = 12; @@ -153,7 +101,8 @@ // // buttonCancel // - buttonCancel.Location = new Point(354, 312); + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(354, 462); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(116, 29); buttonCancel.TabIndex = 13; @@ -163,55 +112,93 @@ // // textBoxSemester // - textBoxSemester.Location = new Point(252, 275); + textBoxSemester.Location = new Point(252, 80); textBoxSemester.Name = "textBoxSemester"; textBoxSemester.Size = new Size(218, 27); textBoxSemester.TabIndex = 15; // + // groupBoxDisciplines + // + groupBoxDisciplines.Controls.Add(dataGridViewDisciplines); + groupBoxDisciplines.Location = new Point(12, 113); + groupBoxDisciplines.Name = "groupBoxDisciplines"; + groupBoxDisciplines.Size = new Size(458, 343); + groupBoxDisciplines.TabIndex = 16; + groupBoxDisciplines.TabStop = false; + groupBoxDisciplines.Text = "Дисциплины"; + // + // dataGridViewDisciplines + // + dataGridViewDisciplines.AllowUserToResizeColumns = false; + dataGridViewDisciplines.AllowUserToResizeRows = false; + dataGridViewDisciplines.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewDisciplines.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewDisciplines.Columns.AddRange(new DataGridViewColumn[] { ColumnDiscipline, ColumnQuantityLectures, ColumnQuantityPractices }); + dataGridViewDisciplines.Dock = DockStyle.Fill; + dataGridViewDisciplines.Location = new Point(3, 23); + dataGridViewDisciplines.MultiSelect = false; + dataGridViewDisciplines.Name = "dataGridViewDisciplines"; + dataGridViewDisciplines.RowHeadersVisible = false; + dataGridViewDisciplines.RowHeadersWidth = 51; + dataGridViewDisciplines.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewDisciplines.Size = new Size(452, 317); + dataGridViewDisciplines.TabIndex = 0; + // + // ColumnDiscipline + // + ColumnDiscipline.HeaderText = "Дисциплина"; + ColumnDiscipline.MinimumWidth = 6; + ColumnDiscipline.Name = "ColumnDiscipline"; + // + // ColumnQuantityLectures + // + ColumnQuantityLectures.HeaderText = "Количество лекций"; + ColumnQuantityLectures.MinimumWidth = 6; + ColumnQuantityLectures.Name = "ColumnQuantityLectures"; + // + // ColumnQuantityPractices + // + ColumnQuantityPractices.HeaderText = "Количество практик"; + ColumnQuantityPractices.MinimumWidth = 6; + ColumnQuantityPractices.Name = "ColumnQuantityPractices"; + // // FormCurriculumSupplement // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(482, 353); + ClientSize = new Size(482, 503); + Controls.Add(groupBoxDisciplines); Controls.Add(textBoxSemester); Controls.Add(buttonCancel); Controls.Add(buttonSave); - Controls.Add(numericUpDownQuantityPractices); - Controls.Add(numericUpDownQuantityLectures); Controls.Add(textBoxNameCurriculum); Controls.Add(labelSemester); - Controls.Add(labelQuantityPractices); - Controls.Add(labelQuantityLectures); Controls.Add(labelNameCurriculum); Controls.Add(labelGroupStudents); - Controls.Add(labelDiscipline); Controls.Add(comboBoxGroupStudents); - Controls.Add(comboBoxDiscipline); Name = "FormCurriculumSupplement"; StartPosition = FormStartPosition.CenterParent; Text = "Дополнение учебного плана"; - ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityLectures).EndInit(); - ((System.ComponentModel.ISupportInitialize)numericUpDownQuantityPractices).EndInit(); + groupBoxDisciplines.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewDisciplines).EndInit(); ResumeLayout(false); PerformLayout(); } #endregion - - private ComboBox comboBoxDiscipline; private ComboBox comboBoxGroupStudents; - private Label labelDiscipline; private Label labelGroupStudents; private Label labelNameCurriculum; - private Label labelQuantityLectures; - private Label labelQuantityPractices; private Label labelSemester; private TextBox textBoxNameCurriculum; - private NumericUpDown numericUpDownQuantityLectures; - private NumericUpDown numericUpDownQuantityPractices; private Button buttonSave; private Button buttonCancel; private NumericUpDown numericUpDown; private TextBox textBoxSemester; + private GroupBox groupBoxDisciplines; + private DataGridView dataGridViewDisciplines; + private DataGridViewComboBoxColumn ColumnDiscipline; + private DataGridViewTextBoxColumn ColumnQuantityLectures; + private DataGridViewTextBoxColumn ColumnQuantityPractices; } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs index e671ef4..354de0e 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs @@ -15,28 +15,27 @@ namespace ProjectSchedule.Forms _curriculumSupplementRepository = curriculumSupplementRepository ?? throw new ArgumentNullException(nameof(curriculumSupplementRepository)); - comboBoxDiscipline.DataSource = disciplineRepository.ReadDisciplines(); - comboBoxDiscipline.DisplayMember = "NameDiscipline"; - comboBoxDiscipline.ValueMember = "Id"; - comboBoxGroupStudents.DataSource = groupStudentsRepository.ReadGroupsStudents(); comboBoxGroupStudents.DisplayMember = "AbbreviationGroup"; comboBoxGroupStudents.ValueMember = "Id"; + + ColumnDiscipline.DataSource = disciplineRepository.ReadDisciplines(); + ColumnDiscipline.DisplayMember = "NameDiscipline"; + ColumnDiscipline.ValueMember = "Id"; } private void ButtonSave_Click(object sender, EventArgs e) { try { - if (comboBoxDiscipline.SelectedIndex < 0 || comboBoxGroupStudents.SelectedIndex < 0) + if (dataGridViewDisciplines.RowCount < 1 || comboBoxGroupStudents.SelectedIndex < 0) { throw new Exception("Имеются незаполненные поля"); } _curriculumSupplementRepository.CreateCurriculumSupplement(CurriculumSupplement.CreateOperation(0, - (int)comboBoxDiscipline.SelectedValue!, (int)comboBoxGroupStudents.SelectedValue!, - textBoxNameCurriculum.Text, Convert.ToInt32(numericUpDownQuantityLectures.Value), - Convert.ToInt32(numericUpDownQuantityPractices.Value), textBoxSemester.Text)); + (int)comboBoxGroupStudents.SelectedValue!, textBoxNameCurriculum.Text, textBoxSemester.Text, + CreateListDisciplineCurriculumSupplementsFromDataGrid())); Close(); } @@ -47,5 +46,24 @@ namespace ProjectSchedule.Forms } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - } + + private List CreateListDisciplineCurriculumSupplementsFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridViewDisciplines.Rows) + { + if (row.Cells["ColumnDiscipline"].Value == null || row.Cells["ColumnQuantityLectures"].Value == null || + row.Cells["ColumnQuantityPractices"].Value == null) + { + continue; + } + + list.Add(DisciplineCurriculumSupplement.CreateElement(0, Convert.ToInt32(row.Cells["ColumnDiscipline"].Value), + Convert.ToInt32(row.Cells["ColumnQuantityLectures"].Value), + Convert.ToInt32(row.Cells["ColumnQuantityPractices"].Value))); + } + + return list; + } + } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx index af32865..a2a23f6 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.resx @@ -117,4 +117,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs index 02dca44..7a2b55e 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs @@ -6,6 +6,8 @@ public interface ICompilingScheduleRepository { IEnumerable ReadCompilingSchedules(int? educatorId = null, int? disciplineId = null, int? groupStudentsId = null, int? audienceId = null); + void CreateCompilingSchedule(CompilingSchedule compilingSchedule); + void DeleteCompilingSchedule(int id); } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs index ce92524..75f37e6 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs @@ -5,6 +5,8 @@ namespace ProjectSchedule.Repositories; public interface ICurriculumSupplementRepository { IEnumerable ReadCurriculumSupplements(int? disciplineId = null, int? groupStudentsId = null); + void CreateCurriculumSupplement(CurriculumSupplement curriculumSupplement); + void DeleteCurriculumSupplement(int id); } \ No newline at end of file -- 2.25.1 From a87a6002fd00a0b950bbe88efc6b6e1a837ab11e Mon Sep 17 00:00:00 2001 From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com> Date: Mon, 4 Nov 2024 22:51:35 +0400 Subject: [PATCH 3/6] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B3=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs index 9aa10f6..93e4db1 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs @@ -193,7 +193,6 @@ private TextBox textBoxNameCurriculum; private Button buttonSave; private Button buttonCancel; - private NumericUpDown numericUpDown; private TextBox textBoxSemester; private GroupBox groupBoxDisciplines; private DataGridView dataGridViewDisciplines; -- 2.25.1 From 122330c98d8e52846ddd28d719f96596f8040d11 Mon Sep 17 00:00:00 2001 From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com> Date: Thu, 7 Nov 2024 14:45:49 +0400 Subject: [PATCH 4/6] =?UTF-8?q?=D0=A4=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BF=D0=B0=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/CurriculumSupplement.cs | 5 ++- .../Entities/Enums/TypeAudience.cs | 1 + .../ProjectSchedule/FormSchedule.cs | 6 --- .../Forms/FormAudience.Designer.cs | 29 ++++++------- .../ProjectSchedule/Forms/FormAudience.cs | 29 ++++++++++--- .../Forms/FormAudiences.Designer.cs | 28 ++++++------ .../Forms/FormCompilingSchedules.Designer.cs | 38 ++++++---------- .../Forms/FormCompilingSchedules.cs | 43 +------------------ .../FormCurriculumSupplement.Designer.cs | 30 +++++++++++-- .../Forms/FormCurriculumSupplement.cs | 2 +- .../FormCurriculumSupplements.Designer.cs | 26 +++++------ .../Forms/FormDisciplines.Designer.cs | 28 ++++++------ .../Forms/FormEducators.Designer.cs | 28 ++++++------ .../Forms/FormGroupsStudents.Designer.cs | 28 ++++++------ .../ICompilingScheduleRepository.cs | 2 - .../ICurriculumSupplementRepository.cs | 3 +- .../CompilingScheduleRepository.cs | 4 -- .../CurriculumSupplementRepository.cs | 3 +- 18 files changed, 156 insertions(+), 177 deletions(-) diff --git a/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs index 604ad13..0aff420 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/CurriculumSupplement.cs @@ -10,10 +10,12 @@ public class CurriculumSupplement public string Semester { get; private set; } = string.Empty; + public DateTime DateAdoptionPlan { get; private set; } + public IEnumerable DisciplineCurriculumSupplements { get; private set; } = []; public static CurriculumSupplement CreateOperation(int id, int groupStudentsId, string nameCurriculum, - string semester, IEnumerable disciplineCurriculumSupplements) + string semester, DateTime dateAdoptionPlan, IEnumerable disciplineCurriculumSupplements) { return new CurriculumSupplement { @@ -21,6 +23,7 @@ public class CurriculumSupplement GroupStudentsId = groupStudentsId, NameCurriculum = nameCurriculum ?? string.Empty, Semester = semester ?? string.Empty, + DateAdoptionPlan = dateAdoptionPlan, DisciplineCurriculumSupplements = disciplineCurriculumSupplements }; } diff --git a/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs index 64bd562..1fd4e71 100644 --- a/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs +++ b/ProjectSchedule/ProjectSchedule/Entities/Enums/TypeAudience.cs @@ -1,5 +1,6 @@ namespace ProjectSchedule.Entities.Enums; +[Flags] public enum TypeAudience { None = 0, diff --git a/ProjectSchedule/ProjectSchedule/FormSchedule.cs b/ProjectSchedule/ProjectSchedule/FormSchedule.cs index eaf8a85..861144e 100644 --- a/ProjectSchedule/ProjectSchedule/FormSchedule.cs +++ b/ProjectSchedule/ProjectSchedule/FormSchedule.cs @@ -23,7 +23,6 @@ namespace ProjectSchedule catch (Exception ex) { MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } } @@ -36,7 +35,6 @@ namespace ProjectSchedule catch (Exception ex) { MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } } @@ -49,7 +47,6 @@ namespace ProjectSchedule catch (Exception ex) { MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } } @@ -62,7 +59,6 @@ namespace ProjectSchedule catch (Exception ex) { MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } } @@ -75,7 +71,6 @@ namespace ProjectSchedule catch (Exception ex) { MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } } @@ -88,7 +83,6 @@ namespace ProjectSchedule catch (Exception ex) { MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); - } } } diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs index 737297f..f69f541 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.Designer.cs @@ -35,7 +35,7 @@ buttonCancel = new Button(); textBoxNumberAudience = new TextBox(); numericUpDownQuantitySeats = new NumericUpDown(); - comboBoxTypeAudience = new ComboBox(); + checkedListBoxTypeAudience = new CheckedListBox(); ((System.ComponentModel.ISupportInitialize)numericUpDownQuantitySeats).BeginInit(); SuspendLayout(); // @@ -68,7 +68,7 @@ // // buttonSave // - buttonSave.Location = new Point(21, 208); + buttonSave.Location = new Point(21, 300); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(116, 29); buttonSave.TabIndex = 3; @@ -78,7 +78,7 @@ // // buttonCancel // - buttonCancel.Location = new Point(234, 208); + buttonCancel.Location = new Point(282, 300); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(116, 29); buttonCancel.TabIndex = 4; @@ -90,7 +90,7 @@ // textBoxNumberAudience.Location = new Point(176, 29); textBoxNumberAudience.Name = "textBoxNumberAudience"; - textBoxNumberAudience.Size = new Size(174, 27); + textBoxNumberAudience.Size = new Size(222, 27); textBoxNumberAudience.TabIndex = 5; // // numericUpDownQuantitySeats @@ -98,24 +98,23 @@ numericUpDownQuantitySeats.Location = new Point(176, 77); numericUpDownQuantitySeats.Maximum = new decimal(new int[] { 500, 0, 0, 0 }); numericUpDownQuantitySeats.Name = "numericUpDownQuantitySeats"; - numericUpDownQuantitySeats.Size = new Size(174, 27); + numericUpDownQuantitySeats.Size = new Size(222, 27); numericUpDownQuantitySeats.TabIndex = 6; // - // comboBoxTypeAudience + // checkedListBoxTypeAudience // - comboBoxTypeAudience.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxTypeAudience.FormattingEnabled = true; - comboBoxTypeAudience.Location = new Point(176, 124); - comboBoxTypeAudience.Name = "comboBoxTypeAudience"; - comboBoxTypeAudience.Size = new Size(174, 28); - comboBoxTypeAudience.TabIndex = 7; + checkedListBoxTypeAudience.FormattingEnabled = true; + checkedListBoxTypeAudience.Location = new Point(176, 127); + checkedListBoxTypeAudience.Name = "checkedListBoxTypeAudience"; + checkedListBoxTypeAudience.Size = new Size(222, 136); + checkedListBoxTypeAudience.TabIndex = 7; // // FormAudience // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(382, 253); - Controls.Add(comboBoxTypeAudience); + ClientSize = new Size(412, 353); + Controls.Add(checkedListBoxTypeAudience); Controls.Add(numericUpDownQuantitySeats); Controls.Add(textBoxNumberAudience); Controls.Add(buttonCancel); @@ -140,6 +139,6 @@ private Button buttonCancel; private TextBox textBoxNumberAudience; private NumericUpDown numericUpDownQuantitySeats; - private ComboBox comboBoxTypeAudience; + private CheckedListBox checkedListBoxTypeAudience; } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs index 6400242..9ca9064 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudience.cs @@ -22,8 +22,15 @@ public partial class FormAudience : Form throw new InvalidDataException(nameof(audience)); } + foreach (TypeAudience elem in Enum.GetValues(typeof(TypeAudience))) + { + if ((elem & audience.TypeAudience) != 0) + { + checkedListBoxTypeAudience.SetItemChecked(checkedListBoxTypeAudience.Items.IndexOf(elem), true); + } + } + textBoxNumberAudience.Text = audience.NumberAudience; - comboBoxTypeAudience.SelectedItem = audience.TypeAudience; numericUpDownQuantitySeats.Value = audience.QuantitySeats; _audienceId = value; } @@ -40,14 +47,18 @@ public partial class FormAudience : Form InitializeComponent(); _audienceRepository = audienceRepository ?? throw new ArgumentNullException(nameof(audienceRepository)); - comboBoxTypeAudience.DataSource = Enum.GetValues(typeof(TypeAudience)); + + foreach (var elem in Enum.GetValues(typeof(TypeAudience))) + { + checkedListBoxTypeAudience.Items.Add(elem); + } } private void ButtonSave_Click(object sender, EventArgs e) { try { - if (string.IsNullOrWhiteSpace(textBoxNumberAudience.Text) || comboBoxTypeAudience.SelectedIndex < 1) + if (string.IsNullOrWhiteSpace(textBoxNumberAudience.Text) || checkedListBoxTypeAudience.CheckedItems.Count == 0) { throw new Exception("Имеются незаполненные поля"); } @@ -71,6 +82,14 @@ public partial class FormAudience : Form private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - private Audience CreateAudience(int id) => - Audience.CreateEntity(id, textBoxNumberAudience.Text, (TypeAudience)comboBoxTypeAudience.SelectedItem!, Convert.ToInt32(numericUpDownQuantitySeats.Value)); + private Audience CreateAudience(int id) + { + TypeAudience typeAudience = TypeAudience.None; + foreach (var elem in checkedListBoxTypeAudience.CheckedItems) + { + typeAudience |= (TypeAudience)elem; + } + + return Audience.CreateEntity(id, textBoxNumberAudience.Text, typeAudience, Convert.ToInt32(numericUpDownQuantitySeats.Value)); + } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs index 02853b8..a7e4802 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.Designer.cs @@ -28,25 +28,25 @@ /// private void InitializeComponent() { - panel = new Panel(); + panelButtons = new Panel(); buttonDel = new Button(); buttonUpd = new Button(); buttonAdd = new Button(); dataGridViewData = new DataGridView(); - panel.SuspendLayout(); + panelButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); SuspendLayout(); // - // panel + // panelButtons // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonUpd); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(672, 0); - panel.Name = "panel"; - panel.Size = new Size(140, 483); - panel.TabIndex = 0; + panelButtons.Controls.Add(buttonDel); + panelButtons.Controls.Add(buttonUpd); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(672, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(140, 483); + panelButtons.TabIndex = 0; // // buttonDel // @@ -106,19 +106,19 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(812, 483); Controls.Add(dataGridViewData); - Controls.Add(panel); + Controls.Add(panelButtons); Name = "FormAudiences"; StartPosition = FormStartPosition.CenterParent; Text = "Аудитории"; Load += FormAudiences_Load; - panel.ResumeLayout(false); + panelButtons.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); } #endregion - private Panel panel; + private Panel panelButtons; private Button buttonDel; private Button buttonUpd; private Button buttonAdd; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs index e176a51..c8bf920 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.Designer.cs @@ -28,34 +28,21 @@ /// private void InitializeComponent() { - panel = new Panel(); - buttonDel = new Button(); + panelButtons = new Panel(); buttonAdd = new Button(); dataGridViewData = new DataGridView(); - panel.SuspendLayout(); + panelButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); SuspendLayout(); // - // panel + // panelButtons // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(1113, 0); - panel.Name = "panel"; - panel.Size = new Size(140, 484); - panel.TabIndex = 3; - // - // buttonDel - // - buttonDel.BackgroundImage = Properties.Resources.Del; - buttonDel.BackgroundImageLayout = ImageLayout.Stretch; - buttonDel.Location = new Point(24, 372); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(94, 66); - buttonDel.TabIndex = 4; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += ButtonDel_Click; + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(1113, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(140, 484); + panelButtons.TabIndex = 3; // // buttonAdd // @@ -93,20 +80,19 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(1253, 484); Controls.Add(dataGridViewData); - Controls.Add(panel); + Controls.Add(panelButtons); Name = "FormCompilingSchedules"; StartPosition = FormStartPosition.CenterParent; Text = "Cоставление расписаний"; Load += FormCompilingSchedules_Load; - panel.ResumeLayout(false); + panelButtons.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); } #endregion - private Panel panel; - private Button buttonDel; + private Panel panelButtons; private Button buttonAdd; private DataGridView dataGridViewData; } diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs index 2dadab9..a5cdd44 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedules.cs @@ -12,7 +12,6 @@ namespace ProjectSchedule.Forms public FormCompilingSchedules(IUnityContainer container, ICompilingScheduleRepository сompilingScheduleRepository) { InitializeComponent(); - _container = container ?? throw new ArgumentNullException(nameof(container)); _сompilingScheduleRepository = сompilingScheduleRepository ?? @@ -44,46 +43,6 @@ namespace ProjectSchedule.Forms } } - private void ButtonDel_Click(object sender, EventArgs e) - { - if (!TryGetIdentifierFromSelectedRow(out var findId)) - { - return; - } - - if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) - { - return; - } - - try - { - _сompilingScheduleRepository.DeleteCompilingSchedule(findId); - LoadList(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void LoadList() - { - dataGridViewData.DataSource = _сompilingScheduleRepository.ReadCompilingSchedules(); - } - - private bool TryGetIdentifierFromSelectedRow(out int id) - { - id = 0; - - if (dataGridViewData.SelectedRows.Count < 1) - { - MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return false; - } - - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); - return true; - } + private void LoadList() => dataGridViewData.DataSource = _сompilingScheduleRepository.ReadCompilingSchedules(); } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs index 93e4db1..67aed33 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.Designer.cs @@ -41,6 +41,8 @@ ColumnDiscipline = new DataGridViewComboBoxColumn(); ColumnQuantityLectures = new DataGridViewTextBoxColumn(); ColumnQuantityPractices = new DataGridViewTextBoxColumn(); + labelDateAdoptionPlan = new Label(); + dateTimePickerDateAdoptionPlan = new DateTimePicker(); groupBoxDisciplines.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewDisciplines).BeginInit(); SuspendLayout(); @@ -91,7 +93,7 @@ // buttonSave // buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonSave.Location = new Point(12, 462); + buttonSave.Location = new Point(12, 522); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(116, 29); buttonSave.TabIndex = 12; @@ -102,7 +104,7 @@ // buttonCancel // buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCancel.Location = new Point(354, 462); + buttonCancel.Location = new Point(354, 522); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(116, 29); buttonCancel.TabIndex = 13; @@ -120,7 +122,7 @@ // groupBoxDisciplines // groupBoxDisciplines.Controls.Add(dataGridViewDisciplines); - groupBoxDisciplines.Location = new Point(12, 113); + groupBoxDisciplines.Location = new Point(12, 155); groupBoxDisciplines.Name = "groupBoxDisciplines"; groupBoxDisciplines.Size = new Size(458, 343); groupBoxDisciplines.TabIndex = 16; @@ -162,11 +164,29 @@ ColumnQuantityPractices.MinimumWidth = 6; ColumnQuantityPractices.Name = "ColumnQuantityPractices"; // + // labelDateAdoptionPlan + // + labelDateAdoptionPlan.AutoSize = true; + labelDateAdoptionPlan.Location = new Point(15, 122); + labelDateAdoptionPlan.Name = "labelDateAdoptionPlan"; + labelDateAdoptionPlan.Size = new Size(161, 20); + labelDateAdoptionPlan.TabIndex = 17; + labelDateAdoptionPlan.Text = "Дата принятия плана:"; + // + // dateTimePickerDateAdoptionPlan + // + dateTimePickerDateAdoptionPlan.Location = new Point(252, 117); + dateTimePickerDateAdoptionPlan.Name = "dateTimePickerDateAdoptionPlan"; + dateTimePickerDateAdoptionPlan.Size = new Size(218, 27); + dateTimePickerDateAdoptionPlan.TabIndex = 18; + // // FormCurriculumSupplement // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(482, 503); + ClientSize = new Size(482, 563); + Controls.Add(dateTimePickerDateAdoptionPlan); + Controls.Add(labelDateAdoptionPlan); Controls.Add(groupBoxDisciplines); Controls.Add(textBoxSemester); Controls.Add(buttonCancel); @@ -199,5 +219,7 @@ private DataGridViewComboBoxColumn ColumnDiscipline; private DataGridViewTextBoxColumn ColumnQuantityLectures; private DataGridViewTextBoxColumn ColumnQuantityPractices; + private Label labelDateAdoptionPlan; + private DateTimePicker dateTimePickerDateAdoptionPlan; } } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs index 354de0e..bf7c860 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs @@ -35,7 +35,7 @@ namespace ProjectSchedule.Forms _curriculumSupplementRepository.CreateCurriculumSupplement(CurriculumSupplement.CreateOperation(0, (int)comboBoxGroupStudents.SelectedValue!, textBoxNameCurriculum.Text, textBoxSemester.Text, - CreateListDisciplineCurriculumSupplementsFromDataGrid())); + dateTimePickerDateAdoptionPlan.Value, CreateListDisciplineCurriculumSupplementsFromDataGrid())); Close(); } diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs index 79b0a4c..c507218 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.Designer.cs @@ -28,23 +28,23 @@ /// private void InitializeComponent() { - panel = new Panel(); + panelButtons = new Panel(); buttonDel = new Button(); buttonAdd = new Button(); dataGridViewData = new DataGridView(); - panel.SuspendLayout(); + panelButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); SuspendLayout(); // - // panel + // panelButtons // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(764, 0); - panel.Name = "panel"; - panel.Size = new Size(140, 453); - panel.TabIndex = 2; + panelButtons.Controls.Add(buttonDel); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(764, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(140, 453); + panelButtons.TabIndex = 2; // // buttonDel // @@ -93,19 +93,19 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(904, 453); Controls.Add(dataGridViewData); - Controls.Add(panel); + Controls.Add(panelButtons); Name = "FormCurriculumSupplements"; StartPosition = FormStartPosition.CenterParent; Text = "Дополнения учебного плана"; Load += FormCurriculumSupplements_Load; - panel.ResumeLayout(false); + panelButtons.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); } #endregion - private Panel panel; + private Panel panelButtons; private Button buttonDel; private Button buttonAdd; private DataGridView dataGridViewData; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs index c5a909f..69defd0 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.Designer.cs @@ -28,25 +28,25 @@ /// private void InitializeComponent() { - panel = new Panel(); + panelButtons = new Panel(); buttonDel = new Button(); buttonUpd = new Button(); buttonAdd = new Button(); dataGridViewData = new DataGridView(); - panel.SuspendLayout(); + panelButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); SuspendLayout(); // - // panel + // panelButtons // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonUpd); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(660, 0); - panel.Name = "panel"; - panel.Size = new Size(140, 450); - panel.TabIndex = 1; + panelButtons.Controls.Add(buttonDel); + panelButtons.Controls.Add(buttonUpd); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(660, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(140, 450); + panelButtons.TabIndex = 1; // // buttonDel // @@ -106,19 +106,19 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); Controls.Add(dataGridViewData); - Controls.Add(panel); + Controls.Add(panelButtons); Name = "FormDisciplines"; StartPosition = FormStartPosition.CenterParent; Text = "Дисциплины"; Load += FormDisciplines_Load; - panel.ResumeLayout(false); + panelButtons.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); } #endregion - private Panel panel; + private Panel panelButtons; private Button buttonDel; private Button buttonUpd; private Button buttonAdd; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs index 0e44356..70a4a38 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.Designer.cs @@ -28,25 +28,25 @@ /// private void InitializeComponent() { - panel = new Panel(); + panelButtons = new Panel(); buttonDel = new Button(); buttonUpd = new Button(); buttonAdd = new Button(); dataGridViewData = new DataGridView(); - panel.SuspendLayout(); + panelButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); SuspendLayout(); // - // panel + // panelButtons // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonUpd); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(642, 0); - panel.Name = "panel"; - panel.Size = new Size(140, 453); - panel.TabIndex = 1; + panelButtons.Controls.Add(buttonDel); + panelButtons.Controls.Add(buttonUpd); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(642, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(140, 453); + panelButtons.TabIndex = 1; // // buttonDel // @@ -106,19 +106,19 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(782, 453); Controls.Add(dataGridViewData); - Controls.Add(panel); + Controls.Add(panelButtons); Name = "FormEducators"; StartPosition = FormStartPosition.CenterParent; Text = "Преподаватели"; Load += FormEducators_Load; - panel.ResumeLayout(false); + panelButtons.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); } #endregion - private Panel panel; + private Panel panelButtons; private Button buttonDel; private Button buttonUpd; private Button buttonAdd; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs index a2a9805..1b28538 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.Designer.cs @@ -28,25 +28,25 @@ /// private void InitializeComponent() { - panel = new Panel(); + panelButtons = new Panel(); buttonDel = new Button(); buttonUpd = new Button(); buttonAdd = new Button(); dataGridViewData = new DataGridView(); - panel.SuspendLayout(); + panelButtons.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); SuspendLayout(); // - // panel + // panelButtons // - panel.Controls.Add(buttonDel); - panel.Controls.Add(buttonUpd); - panel.Controls.Add(buttonAdd); - panel.Dock = DockStyle.Right; - panel.Location = new Point(660, 0); - panel.Name = "panel"; - panel.Size = new Size(140, 450); - panel.TabIndex = 2; + panelButtons.Controls.Add(buttonDel); + panelButtons.Controls.Add(buttonUpd); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(660, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(140, 450); + panelButtons.TabIndex = 2; // // buttonDel // @@ -106,19 +106,19 @@ AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); Controls.Add(dataGridViewData); - Controls.Add(panel); + Controls.Add(panelButtons); Name = "FormGroupsStudents"; StartPosition = FormStartPosition.CenterParent; Text = "Группы студентов"; Load += FormGroupsStudents_Load; - panel.ResumeLayout(false); + panelButtons.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); ResumeLayout(false); } #endregion - private Panel panel; + private Panel panelButtons; private Button buttonDel; private Button buttonUpd; private Button buttonAdd; diff --git a/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs index 7a2b55e..9bec5a6 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/ICompilingScheduleRepository.cs @@ -8,6 +8,4 @@ public interface ICompilingScheduleRepository int? groupStudentsId = null, int? audienceId = null); void CreateCompilingSchedule(CompilingSchedule compilingSchedule); - - void DeleteCompilingSchedule(int id); } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs index 75f37e6..d2f2f1a 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/ICurriculumSupplementRepository.cs @@ -4,7 +4,8 @@ namespace ProjectSchedule.Repositories; public interface ICurriculumSupplementRepository { - IEnumerable ReadCurriculumSupplements(int? disciplineId = null, int? groupStudentsId = null); + IEnumerable ReadCurriculumSupplements(DateTime? dateForm = null, DateTime? dateTo = null, + int? disciplineId = null, int? groupStudentsId = null); void CreateCurriculumSupplement(CurriculumSupplement curriculumSupplement); diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs index a2e07df..ecbb3ab 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CompilingScheduleRepository.cs @@ -8,10 +8,6 @@ public class CompilingScheduleRepository : ICompilingScheduleRepository { } - public void DeleteCompilingSchedule(int id) - { - } - public IEnumerable ReadCompilingSchedules(int? educatorId = null, int? disciplineId = null, int? groupStudentsId = null, int? audienceId = null) { diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs index 4934b46..48f21c9 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/CurriculumSupplementRepository.cs @@ -12,7 +12,8 @@ public class CurriculumSupplementRepository : ICurriculumSupplementRepository { } - public IEnumerable ReadCurriculumSupplements(int? disciplineId = null, int? groupStudentsId = null) + public IEnumerable ReadCurriculumSupplements(DateTime? dateForm = null, DateTime? dateTo = null, + int? disciplineId = null, int? groupStudentsId = null) { return []; } -- 2.25.1 From 464378bb9a589721e929fbf108b3492052b181c3 Mon Sep 17 00:00:00 2001 From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com> Date: Tue, 12 Nov 2024 18:55:33 +0400 Subject: [PATCH 5/6] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repositories/Implementations/DisciplineRepository.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs index 232a8ea..c94d026 100644 --- a/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs +++ b/ProjectSchedule/ProjectSchedule/Repositories/Implementations/DisciplineRepository.cs @@ -7,9 +7,11 @@ public class DisciplineRepository : IDisciplineRepository public void CreateDiscipline(Discipline discipline) { } + public void DeleteDiscipline(int id) { } + public Discipline ReadDisciplineById(int id) { return Discipline.CreateEntity(0, string.Empty); -- 2.25.1 From 3f98e2cf2a6e6dee2227b49f030cfa80a401de84 Mon Sep 17 00:00:00 2001 From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com> Date: Fri, 15 Nov 2024 12:52:00 +0400 Subject: [PATCH 6/6] =?UTF-8?q?=D0=95=D1=89=D1=91=20=D0=BE=D0=B4=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs | 6 ++++++ .../Forms/FormCompilingSchedule.Designer.cs | 4 ++++ .../ProjectSchedule/Forms/FormCurriculumSupplement.cs | 1 - .../ProjectSchedule/Forms/FormCurriculumSupplements.cs | 5 +---- ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs | 2 ++ ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs | 6 ++++++ ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs | 2 ++ ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs | 6 ++++++ .../ProjectSchedule/Forms/FormGroupStudents.Designer.cs | 2 ++ ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs | 7 +++---- .../ProjectSchedule/Forms/FormGroupsStudents.cs | 6 ++++++ 11 files changed, 38 insertions(+), 9 deletions(-) diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs index d982761..4c24825 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormAudiences.cs @@ -8,6 +8,7 @@ namespace ProjectSchedule.Forms private readonly IUnityContainer _container; private readonly IAudienceRepository _audienceRepository; + public FormAudiences(IUnityContainer container, IAudienceRepository audienceRepository) { InitializeComponent(); @@ -16,6 +17,7 @@ namespace ProjectSchedule.Forms _audienceRepository = audienceRepository ?? throw new ArgumentNullException(nameof(audienceRepository)); } + private void FormAudiences_Load(object sender, EventArgs e) { try @@ -27,6 +29,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonAdd_Click(object sender, EventArgs e) { try @@ -39,6 +42,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonUpd_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -58,6 +62,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonDel_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -82,6 +87,7 @@ namespace ProjectSchedule.Forms } private void LoadList() => dataGridViewData.DataSource = _audienceRepository.ReadAudiences(); + private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs index 8ae86f8..24f562c 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCompilingSchedule.Designer.cs @@ -180,17 +180,21 @@ // numericUpDownNumberPair.Location = new Point(245, 302); numericUpDownNumberPair.Maximum = new decimal(new int[] { 8, 0, 0, 0 }); + numericUpDownNumberPair.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); numericUpDownNumberPair.Name = "numericUpDownNumberPair"; numericUpDownNumberPair.Size = new Size(210, 27); numericUpDownNumberPair.TabIndex = 15; + numericUpDownNumberPair.Value = new decimal(new int[] { 1, 0, 0, 0 }); // // numericUpDownNumberDay // numericUpDownNumberDay.Location = new Point(245, 257); numericUpDownNumberDay.Maximum = new decimal(new int[] { 7, 0, 0, 0 }); + numericUpDownNumberDay.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); numericUpDownNumberDay.Name = "numericUpDownNumberDay"; numericUpDownNumberDay.Size = new Size(210, 27); numericUpDownNumberDay.TabIndex = 16; + numericUpDownNumberDay.Value = new decimal(new int[] { 1, 0, 0, 0 }); // // buttonSave // diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs index bf7c860..12a5358 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplement.cs @@ -11,7 +11,6 @@ namespace ProjectSchedule.Forms IDisciplineRepository disciplineRepository, IGroupStudentsRepository groupStudentsRepository) { InitializeComponent(); - _curriculumSupplementRepository = curriculumSupplementRepository ?? throw new ArgumentNullException(nameof(curriculumSupplementRepository)); diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs index 07aa7de..ebefab8 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormCurriculumSupplements.cs @@ -67,15 +67,12 @@ namespace ProjectSchedule.Forms } } - private void LoadList() - { + private void LoadList() => dataGridViewData.DataSource = _curriculumSupplementRepository.ReadCurriculumSupplements(); - } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; - if (dataGridViewData.SelectedRows.Count < 1) { MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs index a523847..5acb941 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDiscipline.cs @@ -20,6 +20,7 @@ public partial class FormDiscipline : Form { throw new InvalidDataException(nameof(discipline)); } + textBoxNameDiscipline.Text = discipline.NameDiscipline; _disciplineId = value; } @@ -46,6 +47,7 @@ public partial class FormDiscipline : Form { throw new Exception("Поле 'Название дисциплины' должно быть заполнено."); } + if (_disciplineId.HasValue) { _disciplineRepository.UpdateDiscipline(CreateDiscipline(_disciplineId.Value)); diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs index 3211251..a8bdced 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormDisciplines.cs @@ -8,6 +8,7 @@ namespace ProjectSchedule.Forms private readonly IUnityContainer _container; private readonly IDisciplineRepository _disciplineRepository; + public FormDisciplines(IUnityContainer container, IDisciplineRepository disciplineRepository) { InitializeComponent(); @@ -16,6 +17,7 @@ namespace ProjectSchedule.Forms _disciplineRepository = disciplineRepository ?? throw new ArgumentNullException(nameof(disciplineRepository)); } + private void FormDisciplines_Load(object sender, EventArgs e) { try @@ -27,6 +29,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonAdd_Click(object sender, EventArgs e) { try @@ -39,6 +42,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonUpd_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -58,6 +62,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonDel_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -82,6 +87,7 @@ namespace ProjectSchedule.Forms } private void LoadList() => dataGridViewData.DataSource = _disciplineRepository.ReadDisciplines(); + private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs index 8ba5ec6..28c6163 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducator.cs @@ -20,6 +20,7 @@ public partial class FormEducator : Form { throw new InvalidDataException(nameof(educator)); } + textBoxSurname.Text = educator.Surname; textBoxName.Text = educator.Name; textBoxPatronymic.Text = educator.Patronymic; @@ -49,6 +50,7 @@ public partial class FormEducator : Form { throw new Exception("Имеются незаполненные поля"); } + if (_educatorId.HasValue) { _educatorRepository.UpdateEducator(CreateEducator(_educatorId.Value)); diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs index d233401..f565951 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormEducators.cs @@ -8,6 +8,7 @@ namespace ProjectSchedule.Forms private readonly IUnityContainer _container; private readonly IEducatorRepository _educatorRepository; + public FormEducators(IUnityContainer container, IEducatorRepository educatorRepository) { InitializeComponent(); @@ -16,6 +17,7 @@ namespace ProjectSchedule.Forms _educatorRepository = educatorRepository ?? throw new ArgumentNullException(nameof(educatorRepository)); } + private void FormEducators_Load(object sender, EventArgs e) { try @@ -27,6 +29,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonAdd_Click(object sender, EventArgs e) { try @@ -39,6 +42,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonUpd_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -58,6 +62,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonDel_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -82,6 +87,7 @@ namespace ProjectSchedule.Forms } private void LoadList() => dataGridViewData.DataSource = _educatorRepository.ReadEducators(); + private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs index d4979e5..4cc0f81 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.Designer.cs @@ -70,9 +70,11 @@ // numericUpDownQuantityStudents.Location = new Point(213, 121); numericUpDownQuantityStudents.Maximum = new decimal(new int[] { 66, 0, 0, 0 }); + numericUpDownQuantityStudents.Minimum = new decimal(new int[] { 2, 0, 0, 0 }); numericUpDownQuantityStudents.Name = "numericUpDownQuantityStudents"; numericUpDownQuantityStudents.Size = new Size(176, 27); numericUpDownQuantityStudents.TabIndex = 3; + numericUpDownQuantityStudents.Value = new decimal(new int[] { 2, 0, 0, 0 }); // // textBoxAbbreviationGroup // diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs index 7d8aa92..3ba0444 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupStudents.cs @@ -20,6 +20,7 @@ public partial class FormGroupStudents : Form { throw new InvalidDataException(nameof(groupStudents)); } + textBoxAbbreviationGroup.Text = groupStudents.AbbreviationGroup; textBoxGroupNumber.Text = groupStudents.GroupNumber; numericUpDownQuantityStudents.Value = groupStudents.QuantityStudents; @@ -68,8 +69,6 @@ public partial class FormGroupStudents : Form private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - private GroupStudents CreateGroupOfStudents(int id) - { - return GroupStudents.CreateEntity(id, textBoxAbbreviationGroup.Text, textBoxGroupNumber.Text, Convert.ToInt32(numericUpDownQuantityStudents.Value)); - } + private GroupStudents CreateGroupOfStudents(int id) => + GroupStudents.CreateEntity(id, textBoxAbbreviationGroup.Text, textBoxGroupNumber.Text, Convert.ToInt32(numericUpDownQuantityStudents.Value)); } \ No newline at end of file diff --git a/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs index f9eaa89..0e4a0b8 100644 --- a/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs +++ b/ProjectSchedule/ProjectSchedule/Forms/FormGroupsStudents.cs @@ -8,6 +8,7 @@ namespace ProjectSchedule.Forms private readonly IUnityContainer _container; private readonly IGroupStudentsRepository _groupStudentsRepository; + public FormGroupsStudents(IUnityContainer container, IGroupStudentsRepository groupStudentsRepository) { InitializeComponent(); @@ -16,6 +17,7 @@ namespace ProjectSchedule.Forms _groupStudentsRepository = groupStudentsRepository ?? throw new ArgumentNullException(nameof(groupStudentsRepository)); } + private void FormGroupsStudents_Load(object sender, EventArgs e) { try @@ -27,6 +29,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonAdd_Click(object sender, EventArgs e) { try @@ -39,6 +42,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonUpd_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -58,6 +62,7 @@ namespace ProjectSchedule.Forms MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + private void ButtonDel_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) @@ -82,6 +87,7 @@ namespace ProjectSchedule.Forms } private void LoadList() => dataGridViewData.DataSource = _groupStudentsRepository.ReadGroupsStudents(); + private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; -- 2.25.1