using CareFusion.Lib.StorageSystem.Wwks2.Messages.Input;
using System.Collections.Generic;

namespace CareFusion.Lib.StorageSystem.Interfaces.Messages.Input
{
    public interface IInputResponseArticle
    {
        /// <summary>
        /// The article ID to be used on stock input into the automated storage and retrieval system.
        /// In the code examples below the ID is composed from data taken from the transmitted barcode. It is up to the pharmacy IT system how the article ID is composed.
        /// Default value is the barcode transferred in the InputRequest
        /// </summary>
        string Id { get; set; }

        /// <summary>
        /// Name of article.
        /// The automated storage and retrieval system displays the name in its own inventory view (GUI)
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// Gets or sets a flag indicating whether this article requires fridge storage.
        /// </summary>
        bool RequiresFridge { get; set; }

        /// <summary>
        /// Virtual level article id used as alternative identification of the article.
        /// Both article id and virtual id may be used to request dispensing of this pack.
        /// </summary>
        string VirtualId { get; set; }

        /// <summary>
        /// Name of virtual level article.
        /// </summary>
        string VirtualName { get; set; }

        /// <summary>
        /// Dosage form of the article.
        /// The automated storage and retrieval system displays the name in its own inventory view (GUI)
        /// </summary>
        string DosageForm { get; set; }

        /// <summary>
        /// Packaging unit of the article.
        /// The automated storage and retrieval system displays the name in its own inventory view (GUI)
        /// </summary>
        string PackagingUnit { get; set; }

        /// <summary>
        /// Maximum number of units (e.g. pills or ampules) which are contained in a full pack of the article. The value "0" means that the number of units is unknown.
        /// Mandatory, if outputs of full packs shall be requested using SubItemQuantities
        /// </summary>
        int MaxSubItemQuantity { get; set; }

        /// <summary>
        /// Information about input packs.
        /// </summary>
        List<InputResponsePack> Packs { get; set; }
    }
}