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 ControlReportAcademicProgress : UserControl, IControl { /// /// Класс с бизнес-логикой работы с отчетом /// private readonly ReportLogic _reportLogic; /// /// Событие, вызываемое при закрытии контрола /// /// private event Action CloseEvent; /// /// Событие получения значения из контрола /// private event Action GetValues; /// /// Контрол для работы с отчетом об успеваемости /// public ControlReportAcademicProgress() { InitializeComponent(); _reportLogic = DependencyManager.Instance.Resolve(); Title = "Отчет об успеваемости студентов"; ControlId = new Guid("cc2244e6-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 ControlReportAcademicProgress() { 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 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) { } private void buttonSave_Click_1(object sender, EventArgs e) { var model = new StudentAcademicProgressSetBindingModel(); try { GetValues(model); _reportLogic.SaveReportToExcelFile(new ReportBindingModel { FolderName = textBoxSaveFolderName.Text, StudentId = model.StudentId }); DialogHelper.MessageInformation("Сохранение прошло успешно", "Результат"); } catch (Exception ex) { DialogHelper.MessageException(ex.Message, "Ошибка при получении значений"); } } 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); GetValues += controlStudent.GetValue; 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_1(object sender, EventArgs e) { var fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK) { textBoxSaveFolderName.Text = fbd.SelectedPath; } } } }