using Microsoft.VisualBasic.FileIO; using Publication.Entites; using Publication.Entites.Enums; using Publication.Repositories; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Publication.Forms; public partial class FormMaterial : Form { private readonly IMaterialRepository materialRepository; private int? materialId; public int Id { set { try { var material = materialRepository.ReadMaterialById(value); if (material == null) { throw new InvalidDataException(nameof(material)); } foreach (TypeMaterials elem in Enum.GetValues(typeof(TypeMaterials))) { if ((elem & material.Material) != 0) { checkedListBox1.SetItemChecked(checkedListBox1.Items.IndexOf(elem), true); } } material.DateMaterials = dateTimePickerDateMaterial.Value.Date; material.Count = int.Parse(numericUpDownCount.Value.ToString()); materialId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormMaterial(IMaterialRepository _materialRepository) { materialRepository = _materialRepository ?? throw new ArgumentNullException(nameof(_materialRepository)); InitializeComponent(); foreach (var item in Enum.GetValues(typeof(TypeMaterials))) { checkedListBox1.Items.Add(item); } } private void FormMaterials_Load(object sender, EventArgs e) { } private void ButtonSave_Click(object sender, EventArgs e) { try { if (int.Parse(numericUpDownCount.Value.ToString()) <= 0 || dateTimePickerDateMaterial.Value.Date < DateTime.Now || checkedListBox1.SelectedItems.Count == 0) { throw new Exception("Имеются незаполненные поля"); } if (materialId.HasValue) { materialRepository.UpdateMaterial(CreateMaterials(materialId.Value)); } else { materialRepository.CreateMaterial(CreateMaterials(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonBreak_Click(object sender, EventArgs e) => Close(); private Materials CreateMaterials(int id) { TypeMaterials typeMaterials = TypeMaterials.None; foreach (var elem in checkedListBox1.CheckedItems) { typeMaterials |= (TypeMaterials)elem; } return Materials.CreateEntity(id, dateTimePickerDateMaterial.Value.Date, int.Parse(numericUpDownCount.Value.ToString()), typeMaterials); } }