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

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

View File

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

View File

@ -29,7 +29,6 @@
private void InitializeComponent()
{
panel1 = new Panel();
ButtonUp = new Button();
ButtonDel = new Button();
ButtonAdd = new Button();
dataGridView = new DataGridView();
@ -39,7 +38,6 @@
//
// panel1
//
panel1.Controls.Add(ButtonUp);
panel1.Controls.Add(ButtonDel);
panel1.Controls.Add(ButtonAdd);
panel1.Dock = DockStyle.Right;
@ -48,17 +46,6 @@
panel1.Size = new Size(193, 450);
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.BackgroundImage = Properties.Resources.Ic_remove_circle_48px_svg;
@ -117,7 +104,6 @@
#endregion
private Panel panel1;
private Button ButtonUp;
private Button ButtonDel;
private Button ButtonAdd;
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)
{

View File

@ -10,13 +10,19 @@ namespace ProjectRepairCompany.Forms
public partial class FormStorageDetail : Form
{
private readonly IStorageDetailRepository _storageDetailRepository;
private readonly IDetailRepository _detailRepository;
public FormStorageDetail(IStorageDetailRepository storageDetailRepository, IDetailRepository detailRepository)
public FormStorageDetail(IStorageDetailRepository storageDetailRepository, IDetailRepository detailRepository, IStorageRepository storageRepository)
{
InitializeComponent();
_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)

View File

@ -12,6 +12,5 @@ public interface IOrderRepository
IEnumerable<Order> ReadOrders();
Order ReadOrderById(int id);
void CreateOrder(Order order);
void UpdateOrder(Order order);
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)
{