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 { /// /// Контрол для работы с выпускниками /// public partial class ControlStudentGraduate : UserControl, IControl { /// /// Класс с бизнес-логикой работы с отчетом /// private readonly ReportBusinessLogic _reportLogic; /// /// Событие, вызываемое при закрытии контрола /// private event Action CloseEvent; /// /// Контрол для работы с отчетом приложения к диплому /// public ControlStudentGraduate() { _reportLogic = DependencyManager.Instance.Resolve(); 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, "Ошибки при сохранении"); } } } }