| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- using System;
- using System.Data;
- using System.Windows.Forms;
- namespace WindowsFormsApp4
- {
- public partial class AddressesForm : Form
- {
- private DataTable addressesTable;
- public AddressesForm()
- {
- InitializeComponent();
- AttachEventHandlers();
- LoadAddresses();
- ConfigureGrid();
- }
- private void AttachEventHandlers()
- {
- btnRefresh.Click += BtnRefresh_Click;
- btnAdd.Click += BtnAdd_Click;
- btnEdit.Click += BtnEdit_Click;
- btnDelete.Click += BtnDelete_Click;
- btnSetMain.Click += BtnSetMain_Click;
- btnBack.Click += BtnBack_Click;
- }
- private void LoadAddresses()
- {
- try
- {
- if (!Session.CurrentUser.ClientId.HasValue)
- {
- MessageBox.Show("Ошибка: не удалось определить ID клиента",
- "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
- return;
- }
- addressesTable = DatabaseHelper.GetClientAddressesWithDetails(Session.CurrentUser.ClientId.Value);
- dgvAddresses.DataSource = addressesTable;
- ConfigureGrid();
- }
- catch (Exception ex)
- {
- MessageBox.Show($"Ошибка загрузки адресов: {ex.Message}", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- private void ConfigureGrid()
- {
- if (dgvAddresses.Columns.Count == 0) return;
- // Настройка заголовков
- if (dgvAddresses.Columns.Contains("address_id"))
- dgvAddresses.Columns["address_id"].HeaderText = "ID";
- if (dgvAddresses.Columns.Contains("city"))
- dgvAddresses.Columns["city"].HeaderText = "Город";
- if (dgvAddresses.Columns.Contains("street"))
- dgvAddresses.Columns["street"].HeaderText = "Улица";
- if (dgvAddresses.Columns.Contains("house"))
- dgvAddresses.Columns["house"].HeaderText = "Дом";
- if (dgvAddresses.Columns.Contains("building"))
- dgvAddresses.Columns["building"].HeaderText = "Корпус";
- if (dgvAddresses.Columns.Contains("apartment"))
- dgvAddresses.Columns["apartment"].HeaderText = "Квартира";
- if (dgvAddresses.Columns.Contains("address_type"))
- {
- dgvAddresses.Columns["address_type"].HeaderText = "Тип";
- // Преобразуем значения типов в читаемый вид
- dgvAddresses.Columns["address_type"].DefaultCellStyle.Format = "";
- }
- if (dgvAddresses.Columns.Contains("priority"))
- dgvAddresses.Columns["priority"].HeaderText = "Приоритет";
- // Настройка цвета строк
- dgvAddresses.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(50, 56, 67);
- dgvAddresses.DefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(203, 232, 87);
- dgvAddresses.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.FromArgb(198, 141, 255);
- dgvAddresses.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.FromArgb(50, 56, 67);
- dgvAddresses.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(198, 141, 255);
- dgvAddresses.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(50, 56, 67);
- dgvAddresses.EnableHeadersVisualStyles = false;
- dgvAddresses.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
- }
- private void BtnRefresh_Click(object sender, EventArgs e)
- {
- LoadAddresses();
- }
- private void BtnAdd_Click(object sender, EventArgs e)
- {
- AddressEditForm form = new AddressEditForm();
- if (form.ShowDialog() == DialogResult.OK)
- {
- LoadAddresses();
- MessageBox.Show("Адрес успешно добавлен", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- private void BtnEdit_Click(object sender, EventArgs e)
- {
- if (dgvAddresses.CurrentRow == null)
- {
- MessageBox.Show("Выберите адрес для редактирования", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int addressId = Convert.ToInt32(dgvAddresses.CurrentRow.Cells["address_id"].Value);
- string city = dgvAddresses.CurrentRow.Cells["city"].Value.ToString();
- string street = dgvAddresses.CurrentRow.Cells["street"].Value.ToString();
- string house = dgvAddresses.CurrentRow.Cells["house"].Value.ToString();
- string building = dgvAddresses.CurrentRow.Cells["building"].Value?.ToString();
- string apartment = dgvAddresses.CurrentRow.Cells["apartment"].Value?.ToString();
- AddressEditForm form = new AddressEditForm(addressId, city, street, house, building, apartment);
- if (form.ShowDialog() == DialogResult.OK)
- {
- LoadAddresses();
- MessageBox.Show("Адрес успешно обновлён", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- private void BtnDelete_Click(object sender, EventArgs e)
- {
- if (dgvAddresses.CurrentRow == null)
- {
- MessageBox.Show("Выберите адрес для удаления", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int addressId = Convert.ToInt32(dgvAddresses.CurrentRow.Cells["address_id"].Value);
- string addressText = $"{dgvAddresses.CurrentRow.Cells["city"].Value}, {dgvAddresses.CurrentRow.Cells["street"].Value}, {dgvAddresses.CurrentRow.Cells["house"].Value}";
- DialogResult result = MessageBox.Show($"Удалить адрес: {addressText}?\nВНИМАНИЕ: Удалить можно только адрес, который не используется в заявках!",
- "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
- if (result == DialogResult.Yes)
- {
- if (DatabaseHelper.DeleteClientAddress(Session.CurrentUser.ClientId.Value, addressId))
- {
- LoadAddresses();
- MessageBox.Show("Адрес успешно удалён", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- else
- {
- MessageBox.Show("Ошибка при удалении адреса.\nВозможно, адрес используется в заявках.", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- }
- private void BtnSetMain_Click(object sender, EventArgs e)
- {
- if (dgvAddresses.CurrentRow == null)
- {
- MessageBox.Show("Выберите адрес", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int addressId = Convert.ToInt32(dgvAddresses.CurrentRow.Cells["address_id"].Value);
- string addressText = $"{dgvAddresses.CurrentRow.Cells["city"].Value}, {dgvAddresses.CurrentRow.Cells["street"].Value}, {dgvAddresses.CurrentRow.Cells["house"].Value}";
- DialogResult result = MessageBox.Show($"Сделать адрес {addressText} основным?",
- "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
- if (result == DialogResult.Yes)
- {
- if (DatabaseHelper.SetMainAddress(Session.CurrentUser.ClientId.Value, addressId))
- {
- LoadAddresses();
- MessageBox.Show("Основной адрес обновлён", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- else
- {
- MessageBox.Show("Ошибка при установке основного адреса", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- }
- private void BtnBack_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- }
- }
|