diff --git a/src/Domain/Entities/Dish.cs b/src/Domain/Entities/Dish.cs
index 5521f5a..9b31168 100644
--- a/src/Domain/Entities/Dish.cs
+++ b/src/Domain/Entities/Dish.cs
@@ -1,24 +1,28 @@
+using System.Text;
+
namespace Domain.Entities;
///
/// Блюдо из меню (GetMenu / MenuItem).
///
-public sealed class Dish
+public sealed record Dish(
+ string Id,
+ string Article,
+ string Name,
+ decimal Price,
+ bool IsWeighted,
+ string FullPath,
+ IReadOnlyList Barcodes)
{
- public required string Id { get; init; }
-
- ///
- /// Артикул блюда. Используется при вводе заказа с клавиатуры.
- ///
- public required string Article { get; init; }
-
- public required string Name { get; init; }
-
- public decimal Price { get; init; }
-
- public bool IsWeighted { get; init; }
-
- public required string FullPath { get; init; }
-
- public IReadOnlyList Barcodes { get; init; } = [];
+ private bool PrintMembers(StringBuilder builder)
+ {
+ builder.Append($"Id = {Id}, ");
+ builder.Append($"Article = {Article}, ");
+ builder.Append($"Name = {Name}, ");
+ builder.Append($"Price = {Price}, ");
+ builder.Append($"IsWeighted = {IsWeighted}, ");
+ builder.Append($"FullPath = {FullPath}, ");
+ builder.Append($"Barcodes = [{string.Join(", ", Barcodes)}]");
+ return true;
+ }
}
diff --git a/src/Domain/Entities/Order.cs b/src/Domain/Entities/Order.cs
index dd58510..5417bba 100644
--- a/src/Domain/Entities/Order.cs
+++ b/src/Domain/Entities/Order.cs
@@ -1,22 +1,18 @@
+using System.Text;
+
namespace Domain.Entities;
///
/// Заказ (SendOrder).
///
-public sealed class Order
+public sealed record Order(Guid Id, IReadOnlyList Items)
{
- private readonly List _items = [];
-
- public Guid Id { get; }
-
- public IReadOnlyCollection Items => _items;
-
- public Order(Guid? id = null)
+ public Order()
+ : this(Guid.NewGuid(), [])
{
- Id = id ?? Guid.NewGuid();
}
- public void AddItem(string id, decimal quantity)
+ public Order AddItem(string id, decimal quantity)
{
ArgumentException.ThrowIfNullOrWhiteSpace(id);
@@ -28,10 +24,15 @@ public sealed class Order
"Количество должно быть больше нуля.");
}
- _items.Add(new OrderItem
- {
- Id = id,
- Quantity = quantity,
- });
+ var items = Items.ToList();
+ items.Add(new OrderItem(id, quantity));
+ return this with { Items = items };
+ }
+
+ private bool PrintMembers(StringBuilder builder)
+ {
+ builder.Append($"Id = {Id}, ");
+ builder.Append($"Items = [{string.Join(", ", Items)}]");
+ return true;
}
}
diff --git a/src/Domain/Entities/OrderItem.cs b/src/Domain/Entities/OrderItem.cs
index 9f14fd1..09e3416 100644
--- a/src/Domain/Entities/OrderItem.cs
+++ b/src/Domain/Entities/OrderItem.cs
@@ -3,15 +3,4 @@ namespace Domain.Entities;
///
/// Позиция заказа (SendOrder / MenuItems).
///
-public sealed class OrderItem
-{
- ///
- /// Идентификатор блюда на сервере ().
- ///
- public required string Id { get; init; }
-
- ///
- /// Количество. Для весовых блюд допускаются дробные значения.
- ///
- public decimal Quantity { get; init; }
-}
+public sealed record OrderItem(string Id, decimal Quantity);