DepartmentProject/DepartmentPortal/AcademicProgressWindowsDesktop/SpecialControls/ControlStudentGraduate.cs

141 lines
4.2 KiB
C#
Raw Normal View History

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 ReportBusinessLogic _reportLogic;
/// <summary>
/// Событие, вызываемое при закрытии контрола
/// </summary>
private event Action<Guid> CloseEvent;
/// <summary>
/// Контрол для работы с отчетом приложения к диплому
/// </summary>
public ControlStudentGraduate()
{
_reportLogic = DependencyManager.Instance.Resolve<ReportBusinessLogic>();
InitializeComponent();
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;
int interval = 15;
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);
positionY += controlStudent.Height + interval;
var controlStudentGroup = new BaseControlGuid(" StudentGroupId", true, false, new ControlStudentGroupList(), null)
{
Location = new System.Drawing.Point(53, positionY),
Size = new System.Drawing.Size(407, 23)
};
controlStudentGroup.SetTitleWidth(controlStudentGroup.SetTitle("Группа:"));
groupBoxReportInfo.Controls.Add(controlStudentGroup);
}
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)
{
try
{
_reportLogic.SaveReportToWordFile(new ReportBindingModel
{
FolderName = textBoxSaveFolderName.Text
});
DialogHelper.MessageInformation("Сохранение прошло успешно", "Результат");
}
catch (Exception ex)
{
DialogHelper.MessageException(_reportLogic.Errors, "Ошибки при сохранении");
}
}
}
}