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);