Newer
Older
Warehouse / src / Domain / Transactions / TransactionLine.cs
@Derek Comartin Derek Comartin on 22 Aug 2023 815 bytes Init
using MyWarehouse.Domain.Common;
using MyWarehouse.Domain.Common.ValueObjects.Money;
using MyWarehouse.Domain.Products;

namespace MyWarehouse.Domain.Transactions;

/// <summary>
/// Simplified entity. In production context it would probably record more momentary data,
/// including partner name, address, etc., for reporting and historical purposes.
/// </summary>
public class TransactionLine : IEntity
{
    public int Id { get; private set; }

    [Required]
    public int ProductId { get; init; }
    public virtual Product Product { get; init; } = null!;

    [Required]
    public Transaction Transaction { get; init; } = null!;

    [Range(1, int.MaxValue)]
    public int Quantity { get; init; }

    [Required]
    public Money UnitPrice { get; init; } = null!;

    internal TransactionLine() { }
}