Domain модели
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
namespace Domain;
|
||||
|
||||
public class Class1
|
||||
{
|
||||
|
||||
}
|
||||
24
src/Domain/Entities/Dish.cs
Normal file
24
src/Domain/Entities/Dish.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
namespace Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Блюдо из меню (GetMenu / MenuItem).
|
||||
/// </summary>
|
||||
public sealed class Dish
|
||||
{
|
||||
public required string Id { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Артикул блюда. Используется при вводе заказа с клавиатуры.
|
||||
/// </summary>
|
||||
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<string> Barcodes { get; init; } = [];
|
||||
}
|
||||
37
src/Domain/Entities/Order.cs
Normal file
37
src/Domain/Entities/Order.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
namespace Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Заказ (SendOrder).
|
||||
/// </summary>
|
||||
public sealed class Order
|
||||
{
|
||||
private readonly List<OrderItem> _items = [];
|
||||
|
||||
public Guid Id { get; }
|
||||
|
||||
public IReadOnlyCollection<OrderItem> Items => _items;
|
||||
|
||||
public Order(Guid? id = null)
|
||||
{
|
||||
Id = id ?? Guid.NewGuid();
|
||||
}
|
||||
|
||||
public void AddItem(string menuItemId, decimal quantity)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(menuItemId);
|
||||
|
||||
if (quantity <= 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(
|
||||
nameof(quantity),
|
||||
quantity,
|
||||
"Количество должно быть больше нуля.");
|
||||
}
|
||||
|
||||
_items.Add(new OrderItem
|
||||
{
|
||||
MenuItemId = menuItemId,
|
||||
Quantity = quantity,
|
||||
});
|
||||
}
|
||||
}
|
||||
17
src/Domain/Entities/OrderItem.cs
Normal file
17
src/Domain/Entities/OrderItem.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Позиция заказа (SendOrder / MenuItems).
|
||||
/// </summary>
|
||||
public sealed class OrderItem
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор блюда на сервере (<see cref="Dish.Id"/>).
|
||||
/// </summary>
|
||||
public required string MenuItemId { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Количество. Для весовых блюд допускаются дробные значения.
|
||||
/// </summary>
|
||||
public decimal Quantity { get; init; }
|
||||
}
|
||||
Reference in New Issue
Block a user