Если глобально, то решил убрать обновление заказов тк. считаю это излишним и может угрожать целостности данных

This commit is contained in:
MorozovDanil 2024-12-15 20:35:24 +04:00
parent d33fff8c1b
commit 33ec560a98
8 changed files with 30 additions and 114 deletions

View File

@ -91,6 +91,7 @@
// //
// dateTimePickerOrderDate // dateTimePickerOrderDate
// //
dateTimePickerOrderDate.CausesValidation = false;
dateTimePickerOrderDate.Enabled = false; dateTimePickerOrderDate.Enabled = false;
dateTimePickerOrderDate.Location = new Point(190, 12); dateTimePickerOrderDate.Location = new Point(190, 12);
dateTimePickerOrderDate.Name = "dateTimePickerOrderDate"; dateTimePickerOrderDate.Name = "dateTimePickerOrderDate";
@ -110,6 +111,7 @@
dateTimeIssue.Name = "dateTimeIssue"; dateTimeIssue.Name = "dateTimeIssue";
dateTimeIssue.Size = new Size(200, 25); dateTimeIssue.Size = new Size(200, 25);
dateTimeIssue.TabIndex = 6; dateTimeIssue.TabIndex = 6;
dateTimeIssue.Value = new DateTime(2024, 12, 15, 0, 0, 0, 0);
// //
// label3 // label3
// //

View File

@ -33,6 +33,7 @@ namespace ProjectRepairCompany.Forms
dateTimeCompletion.Value = order.DateCompletion; dateTimeCompletion.Value = order.DateCompletion;
dateTimeIssue.Value = order.DateIssue; dateTimeIssue.Value = order.DateIssue;
dataGridView.Rows.Clear();
foreach (var detail in order.OrderDetails) foreach (var detail in order.OrderDetails)
{ {
dataGridView.Rows.Add(detail.DetailId, detail.DetailCount); dataGridView.Rows.Add(detail.DetailId, detail.DetailCount);
@ -59,9 +60,9 @@ namespace ProjectRepairCompany.Forms
comboBoxMaster.DisplayMember = "MasterName"; comboBoxMaster.DisplayMember = "MasterName";
comboBoxMaster.ValueMember = "Id"; comboBoxMaster.ValueMember = "Id";
Detail.DataSource = detailRepository.ReadDetails(); Detail.DataSource = detailRepository.ReadDetails();
Detail.DisplayMember = "NameDetail"; Detail.DisplayMember = "NameDetail";
Detail.ValueMember = "Id"; Detail.ValueMember = "Id";
} }
private void ButtonSave_Click(object sender, EventArgs e) private void ButtonSave_Click(object sender, EventArgs e)
@ -73,15 +74,9 @@ namespace ProjectRepairCompany.Forms
throw new Exception("Имеются незаполненные поля."); throw new Exception("Имеются незаполненные поля.");
} }
var order = CreateOrder(); var order = CreateOrder();
if (_orderId.HasValue) _orderRepository.CreateOrder(order);
{
_orderRepository.UpdateOrder(order);
}
else
{
_orderRepository.CreateOrder(order);
}
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;
Close(); Close();
} }
@ -99,13 +94,15 @@ namespace ProjectRepairCompany.Forms
foreach (DataGridViewRow row in dataGridView.Rows) foreach (DataGridViewRow row in dataGridView.Rows)
{ {
if (row.Cells["Detail"].Value == null || if (row.Cells["Detail"].Value == null ||
row.Cells["DetailCount"].Value == null) row.Cells["DetailCount"].Value == null)
{ {
continue; continue;
} }
list.Add(OrderDetail.CreateOperation(0, list.Add(OrderDetail.CreateOperation(
Convert.ToInt32(row.Cells["Detail"].Value), _orderId ?? 0,
Convert.ToInt32(row.Cells["DetailCount"].Value))); Convert.ToInt32(row.Cells["Detail"].Value),
Convert.ToInt32(row.Cells["DetailCount"].Value)
));
} }
return list; return list;
} }

View File

@ -123,4 +123,10 @@
<metadata name="DetailCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="DetailCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="Detail.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="DetailCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@ -29,7 +29,6 @@
private void InitializeComponent() private void InitializeComponent()
{ {
panel1 = new Panel(); panel1 = new Panel();
ButtonUp = new Button();
ButtonDel = new Button(); ButtonDel = new Button();
ButtonAdd = new Button(); ButtonAdd = new Button();
dataGridView = new DataGridView(); dataGridView = new DataGridView();
@ -39,7 +38,6 @@
// //
// panel1 // panel1
// //
panel1.Controls.Add(ButtonUp);
panel1.Controls.Add(ButtonDel); panel1.Controls.Add(ButtonDel);
panel1.Controls.Add(ButtonAdd); panel1.Controls.Add(ButtonAdd);
panel1.Dock = DockStyle.Right; panel1.Dock = DockStyle.Right;
@ -48,17 +46,6 @@
panel1.Size = new Size(193, 450); panel1.Size = new Size(193, 450);
panel1.TabIndex = 2; panel1.TabIndex = 2;
// //
// ButtonUp
//
ButtonUp.BackgroundImage = Properties.Resources.Feedbin_Icon_home_edit_svg;
ButtonUp.BackgroundImageLayout = ImageLayout.Stretch;
ButtonUp.Location = new Point(42, 113);
ButtonUp.Name = "ButtonUp";
ButtonUp.Size = new Size(117, 77);
ButtonUp.TabIndex = 2;
ButtonUp.UseVisualStyleBackColor = true;
ButtonUp.Click += ButtonUp_Click;
//
// ButtonDel // ButtonDel
// //
ButtonDel.BackgroundImage = Properties.Resources.Ic_remove_circle_48px_svg; ButtonDel.BackgroundImage = Properties.Resources.Ic_remove_circle_48px_svg;
@ -117,7 +104,6 @@
#endregion #endregion
private Panel panel1; private Panel panel1;
private Button ButtonUp;
private Button ButtonDel; private Button ButtonDel;
private Button ButtonAdd; private Button ButtonAdd;
private DataGridView dataGridView; private DataGridView dataGridView;

View File

@ -53,28 +53,6 @@ namespace ProjectRepairCompany.Forms
} }
} }
private void ButtonUp_Click(object sender, EventArgs e)
{
if (!TryGetIdentifierFromSelectRow(out var findId))
{
return;
}
try
{
var form = _container.Resolve<FormOrder>();
form.Id = findId;
if (form.ShowDialog() == DialogResult.OK)
{
LoadList();
dataGridView.Refresh();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка изменения", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void ButtonDel_Click(object sender, EventArgs e) private void ButtonDel_Click(object sender, EventArgs e)
{ {

View File

@ -10,13 +10,19 @@ namespace ProjectRepairCompany.Forms
public partial class FormStorageDetail : Form public partial class FormStorageDetail : Form
{ {
private readonly IStorageDetailRepository _storageDetailRepository; private readonly IStorageDetailRepository _storageDetailRepository;
private readonly IDetailRepository _detailRepository;
public FormStorageDetail(IStorageDetailRepository storageDetailRepository, IDetailRepository detailRepository) public FormStorageDetail(IStorageDetailRepository storageDetailRepository, IDetailRepository detailRepository, IStorageRepository storageRepository)
{ {
InitializeComponent(); InitializeComponent();
_storageDetailRepository = storageDetailRepository ?? throw new ArgumentNullException(nameof(storageDetailRepository)); _storageDetailRepository = storageDetailRepository ?? throw new ArgumentNullException(nameof(storageDetailRepository));
_detailRepository = detailRepository ?? throw new ArgumentNullException(nameof(detailRepository));
comboBoxAddress.DataSource = storageRepository.ReadStorages();
comboBoxAddress.DisplayMember = "StorageAddress";
comboBoxAddress.ValueMember = "Id";
comboBoxDetail.DataSource = detailRepository.ReadDetails();
comboBoxDetail.DisplayMember = "NameDetail";
comboBoxDetail.ValueMember = "Id";
} }
private void ButtonSave_Click(object sender, EventArgs e) private void ButtonSave_Click(object sender, EventArgs e)

View File

@ -12,6 +12,5 @@ public interface IOrderRepository
IEnumerable<Order> ReadOrders(); IEnumerable<Order> ReadOrders();
Order ReadOrderById(int id); Order ReadOrderById(int id);
void CreateOrder(Order order); void CreateOrder(Order order);
void UpdateOrder(Order order);
void DeleteOrder(int id); void DeleteOrder(int id);
} }

View File

@ -64,64 +64,6 @@ public class OrderRepository : IOrderRepository
} }
} }
public void UpdateOrder(Order order)
{
_logger.LogInformation("Обновление заказа с Id {OrderId}", order.Id);
_logger.LogDebug("Обновляемый объект заказа: {json}", JsonConvert.SerializeObject(order));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryUpdate = @"
UPDATE ""Order""
SET DateCompletion = @DateCompletion,
DateIssue = @DateIssue,
FullPrice = @FullPrice,
MasterId = @MasterId
WHERE Id = @Id";
connection.Execute(queryUpdate, new
{
order.Id,
order.DateCompletion,
order.DateIssue,
order.FullPrice,
order.MasterId
}, transaction);
_logger.LogInformation("Заказ с Id {OrderId} обновлен.", order.Id);
var queryDeleteDetails = "DELETE FROM OrderDetail WHERE OrderId = @OrderId";
connection.Execute(queryDeleteDetails, new { order.Id }, transaction);
var queryInsertDetails = @"
INSERT INTO OrderDetail (OrderId, DetailId, DetailCount)
VALUES (@OrderId, @DetailId, @DetailCount)";
foreach (var detail in order.OrderDetails)
{
connection.Execute(queryInsertDetails, new
{
order.Id,
detail.DetailId,
detail.DetailCount
}, transaction);
}
transaction.Commit();
_logger.LogInformation("Детали для заказа с Id {OrderId} обновлены.", order.Id);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при обновлении заказа с Id {OrderId}.", order.Id);
throw;
}
}
public void DeleteOrder(int id) public void DeleteOrder(int id)
{ {