Загрузка данных
using AutoServiceWinForms.Data;
using AutoServiceWinForms.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Windows.Forms;
namespace AutoServiceWinForms.Forms
{
public partial class ServiceRequestsForm : Form
{
public ServiceRequestsForm()
{
InitializeComponent();
this.Text = "Управление заявками";
this.StartPosition = FormStartPosition.CenterParent;
LoadData();
}
private void LoadData()
{
using var context = new AutoServiceDbContext();
var requests = context.ServiceRequests
.Include(r => r.Vehicle)
.ThenInclude(v => v.Client)
.OrderByDescending(r => r.CreatedAt)
.ToList();
dgvRequests.DataSource = requests;
// Настройка отображения колонок
dgvRequests.Columns["Id"].Visible = false;
dgvRequests.Columns["VehicleId"].Visible = false;
dgvRequests.Columns["Vehicle"].Visible = false;
dgvRequests.Columns["RequestNumber"].HeaderText = "№ Заявки";
dgvRequests.Columns["CreatedAt"].HeaderText = "Дата создания";
dgvRequests.Columns["Description"].HeaderText = "Описание работ";
dgvRequests.Columns["Status"].HeaderText = "Статус";
dgvRequests.Columns["EstimatedCost"].HeaderText = "Стоимость (₽)";
dgvRequests.Columns["MasterNotes"].HeaderText = "Примечания мастера";
// Форматирование стоимости
dgvRequests.Columns["EstimatedCost"].DefaultCellStyle.Format = "C";
// Автоподбор ширины
dgvRequests.AutoResizeColumns();
}
private void btnRefresh_Click(object sender, EventArgs e) => LoadData();
private void btnAdd_Click(object sender, EventArgs e)
{
using var editForm = new RequestEditForm();
if (editForm.ShowDialog() == DialogResult.OK)
LoadData();
}
private void btnEdit_Click(object sender, EventArgs e)
{
if (dgvRequests.CurrentRow == null)
{
MessageBox.Show("Выберите заявку для редактирования.", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var selectedId = (int)dgvRequests.CurrentRow.Cells["Id"].Value;
using var editForm = new RequestEditForm(selectedId);
if (editForm.ShowDialog() == DialogResult.OK)
LoadData();
}
private void btnDelete_Click(object sender, EventArgs e)
{
if (dgvRequests.CurrentRow == null) return;
var selectedId = (int)dgvRequests.CurrentRow.Cells["Id"].Value;
var result = MessageBox.Show("Удалить выбранную заявку?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
try
{
using var context = new AutoServiceDbContext();
var request = context.ServiceRequests.Find(selectedId);
if (request != null)
{
context.ServiceRequests.Remove(request);
context.SaveChanges();
LoadData();
}
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка удаления: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
var keyword = txtSearch.Text.Trim().ToLower();
using var context = new AutoServiceDbContext();
var filtered = context.ServiceRequests
.Include(r => r.Vehicle)
.Where(r => r.RequestNumber.ToLower().Contains(keyword) || r.Description.ToLower().Contains(keyword))
.OrderByDescending(r => r.CreatedAt)
.ToList();
dgvRequests.DataSource = filtered;
}
private void txtSearch_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
btnSearch_Click(sender, EventArgs.Empty);
}
}
}