From 3af9cb1912d7cc898cb7e90b41a6a3f5c534ecb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=8B=D1=82=D0=BA=D0=BE=D0=B2=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD?= Date: Mon, 1 Jun 2026 17:57:09 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Domain/Entities/Dish.cs | 38 ++++++++++++++++++-------------- src/Domain/Entities/Order.cs | 31 +++++++++++++------------- src/Domain/Entities/OrderItem.cs | 13 +---------- 3 files changed, 38 insertions(+), 44 deletions(-) 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);