DepartmentProject/DepartmentPortal/AcademicProgressWindowsDesktop/SpecialControls/ControlStudentGraduate.cs

138 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AcademicProgressBusinessLogic.BindingModels;
using AcademicProgressBusinessLogic.BusinessLogics;
using DepartmentWindowsDesktop.EntityControls;
using DesktopTools.BaseControls;
using DesktopTools.Helpers;
using DesktopTools.Interfaces;
using DesktopTools.Models;
using ModuleTools.BusinessLogics;
using ModuleTools.Enums;
using System;
using System.Windows.Forms;
using System.Xml.Linq;
namespace AcademicProgressWindowsDesktop.SpecialControls
{
/// <summary>
/// Контрол для работы с выпускниками
/// </summary>
public partial class ControlStudentGraduate : UserControl, IControl
{
/// <summary>
/// Класс с бизнес-логикой работы с отчетом
/// </summary>
private readonly ReportLogic _reportLogic;
/// <summary>
/// Событие, вызываемое при закрытии контрола
/// </summary>
private event Action<Guid> CloseEvent;
/// <summary>
/// Событие получения значения из контрола
/// </summary>
private event Action<object> GetValues;
/// <summary>
/// Контрол для работы с отчетом приложения к диплому
/// </summary>
public ControlStudentGraduate()
{
InitializeComponent();
_reportLogic = DependencyManager.Instance.Resolve<ReportLogic>();
Title = "Приложение к диплому";
ControlId = new Guid("cc3944e6-5d92-4c89-b817-4c17ec382bc1");
AccessOperation = AccessOperation.Для_выпускников;
toolStripButtonClose.Click += (object sender, EventArgs e) =>
{
CloseEvent?.Invoke(ControlId);
Dispose();
};
LoadGroupBoxReportInfo();
}
#region IControl
public Guid ControlId { get; private set; }
public string Title { get; private set; }
public AccessOperation AccessOperation { get; private set; }
public IControl GetInstance() => new ControlStudentGraduate() { ControlId = Guid.NewGuid() };
public void Open(ControlOpenModel model)
{
if (model.CloseList != null)
{
CloseEvent += model.CloseList;
}
Dock = DockStyle.Fill;
}
public string SaveToXml() => new XElement("Control",
new XAttribute("Type", GetType().FullName),
new XAttribute("ControlId", ControlId),
new XAttribute("Title", Title),
new XAttribute("AccessOperation", AccessOperation)).ToString();
public void LoadFromXml(string xml)
{
var control = XElement.Parse(xml);
ControlId = new Guid(control.Attribute("ControlId").Value.ToString());
Title = control.Attribute("Title").Value.ToString();
AccessOperation = (AccessOperation)Enum.Parse(typeof(AccessOperation), control.Attribute("AccessOperation").Value.ToString());
}
#endregion
private void LoadGroupBoxReportInfo()
{
int positionY = 40;
var controlStudent = new BaseControlGuid("StudentId", true, false, new ControlStudentList(), null)
{
Location = new System.Drawing.Point(50, positionY),
Size = new System.Drawing.Size(410, 23)
};
controlStudent.SetTitleWidth(controlStudent.SetTitle("Cтудент:"));
groupBoxReportInfo.Controls.Add(controlStudent);
GetValues += controlStudent.GetValue;
}
private void buttonSaveSelectFolder_Click(object sender, EventArgs e)
{
var fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
textBoxSaveFolderName.Text = fbd.SelectedPath;
}
}
private void buttonSave_Click(object sender, EventArgs e)
{
var model = new StudentAcademicProgressSetBindingModel();
try
{
GetValues(model);
_reportLogic.SaveReportToWordFile(new ReportBindingModel
{
FolderName = textBoxSaveFolderName.Text,
StudentId = model.StudentId
});
DialogHelper.MessageInformation("Сохранение прошло успешно", "Результат");
}
catch (Exception ex)
{
DialogHelper.MessageException(ex.Message, "Ошибка при получении значений");
}
}
}
}