using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ProjectGSM.Documents; using ProjectGSM.Repositories; using Unity; namespace ProjectGSM.Forms { public partial class FormCaseReport : Form { private readonly IUnityContainer _container; public FormCaseReport(IUnityContainer container, ICaseRepository feedRepository) { InitializeComponent(); _container = container ?? throw new ArgumentNullException(nameof(container)); comboBoxCase.DataSource = feedRepository.ReadCases(); comboBoxCase.DisplayMember = "Description"; comboBoxCase.ValueMember = "Id"; } private void ButtonSelectFilePath_Click(object sender, EventArgs e) { var sfd = new SaveFileDialog() { Filter = "Excel Files | *.xlsx" }; if (sfd.ShowDialog() != DialogResult.OK) { return; } textBoxFilePath.Text = sfd.FileName; } private void ButtonMakeReport_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(textBoxFilePath.Text)) { throw new Exception("Отсутствует имя файла для отчета"); } if (comboBoxCase.SelectedIndex < 0) { throw new Exception("Не выбран корм"); } if (dateTimePickerEnd.Value <= dateTimePickerBegin.Value) { throw new Exception("Дата начала должна быть раньше даты окончания"); } if (_container.Resolve().CreateTable(textBoxFilePath.Text, (int)comboBoxCase.SelectedValue!, dateTimePickerBegin.Value, dateTimePickerEnd.Value)) { MessageBox.Show("Документ сформирован", "Формирование документа", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Возникли ошибки при формировании документа. Подробности в логах", "Формирование документа", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при создании очета", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }