namespace CashLineERP.Domain.Procurement;

public sealed class RequestForQuotationLine
{
    public long Id { get; private set; }

    public long RequestForQuotationId { get; private set; }

    public int LineNumber { get; private set; }

    public long? PurchaseRequisitionLineId { get; private set; }

    public long? ItemId { get; private set; }

    public string ItemDescription { get; private set; } = string.Empty;

    public decimal RequestedQuantity { get; private set; }

    public string UnitOfMeasureCode { get; private set; } = string.Empty;

    public DateOnly? NeedByDate { get; private set; }

    public string? TaxCode { get; private set; }

    public decimal? TargetUnitPrice { get; private set; }

    public string? Notes { get; private set; }

    public RequestForQuotationLine(
        long rfqId,
        int lineNumber,
        long? purchaseRequisitionLineId,
        long? itemId,
        string itemDescription,
        decimal requestedQuantity,
        string unitOfMeasureCode,
        DateOnly? needByDate,
        string? taxCode,
        decimal? targetUnitPrice,
        string? notes)
    {
        RequestForQuotationId = rfqId;
        LineNumber = lineNumber;
        PurchaseRequisitionLineId = purchaseRequisitionLineId;
        ItemId = itemId;
        ItemDescription = itemDescription;
        RequestedQuantity = requestedQuantity;
        UnitOfMeasureCode = unitOfMeasureCode;
        NeedByDate = needByDate;
        TaxCode = taxCode;
        TargetUnitPrice = targetUnitPrice;
        Notes = notes;
    }

    private RequestForQuotationLine()
    {
    }
}
