using ProjectGSM.Entities; using ProjectGSM.Entities.Enums; using ProjectGSM.Repositories; using ProjectGSM.Repositories.Implementations; 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; namespace ProjectGSM.Forms { public partial class FormCase : Form { private readonly ICaseRepository _caseRepository; private readonly ICaseAdvocateRepository _caseAdvocateRepository; private int? _caseId; public int Id { set { try { var caseE = _caseRepository.ReadCaseById(value); if (caseE == null) { throw new InvalidDataException(nameof(caseE)); } typeApellBox.SelectedItem = caseE.TypeAppeal; clientBox.SelectedIndex = caseE.ClientId; courtBox.SelectedIndex = caseE.CourtId; paymentCheckBox.Checked = caseE.Payment; priceNumeric.Value = caseE.Price; winPriceNumeric.Value = caseE.VictoryPrice; verdictCheckBox.Checked= caseE.Verdict; textBox1.Text = caseE.Description; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormCase(ICaseRepository caseRepository, ICaseAdvocateRepository caseAdvocateRepository,IClientRepository clientRepository, ICourtRepository courtRepository, IAdvocateRepository advocateRepository) { InitializeComponent(); _caseRepository = caseRepository ?? throw new ArgumentNullException(nameof(caseRepository)); _caseAdvocateRepository = caseAdvocateRepository ?? throw new ArgumentNullException(nameof(caseAdvocateRepository)); typeApellBox.DataSource = Enum.GetValues(typeof(TypeAppeal)); ColumnAdvocate.DataSource = advocateRepository.ReadAdvocates(); ColumnAdvocate.DisplayMember = "Name"; ColumnAdvocate.ValueMember = "Id"; clientBox.DataSource = clientRepository.ReadClients(); clientBox.DisplayMember = "Name"; clientBox.ValueMember = "Id"; courtBox.DataSource = courtRepository.ReadCourts(); courtBox.DisplayMember = "Name"; courtBox.ValueMember = "Id"; } private void saveButton_Click(object sender, EventArgs e) { try {if(dataGridView1.RowCount < 1 || typeApellBox.SelectedIndex < 0 || clientBox.SelectedIndex < 0 || courtBox.SelectedIndex < 0 ) { throw new Exception("Имеются незаполненные поля"); } if (_caseId.HasValue) { _caseRepository.UpdateCase(CreateCase(_caseId.Value)); } else { _caseRepository.UpdateCase(CreateCase(0)); } foreach (CaseAdvocate row in CreateListCaseAdvocateFromDataGrid()) { _caseAdvocateRepository.CreateCaseAdvocate(CaseAdvocate.CreateEntity(row.CaseId, row.AdvocateId, row.Post)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void cancelButton_Click(object sender, EventArgs e) => Close(); private List<CaseAdvocate> CreateListCaseAdvocateFromDataGrid() { var list = new List<CaseAdvocate>(); foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.Cells["ColumnAdvocates"].Value == null || row.Cells["ColumnPost"].Value == null) { continue; } list.Add(CaseAdvocate.CreateEntity(0, Convert.ToInt32(row.Cells["ColumnAdvocates"].Value), row.Cells["ColumnPost"].Value.ToString()??string.Empty)); } return list; } private Case CreateCase(int id) => Case.CreateEntity(id, (TypeAppeal)typeApellBox.SelectedItem!, paymentCheckBox.Checked, priceNumeric.Value, winPriceNumeric.Value, verdictCheckBox.Checked, courtBox.SelectedIndex, clientBox.SelectedIndex, textBox1.Text); } }