namespace CareFusion.Mosaic.Interfaces.Messages.Input
{
    /// <summary>
    /// Defines the different supported reasons for the rejection of an infeed input.
    /// </summary>
    public enum InfeedInputRejectReason
    {
        /// <summary>
        /// No reject reason.
        /// </summary>
        None,

        /// <summary>
        /// The IT system rejected the pack input.
        /// </summary>
        Rejected,

        /// <summary>
        /// The IT system rejected the pack input because the expiry date was missing.
        /// </summary>
        RejectedNoExpiryDate,

        /// <summary>
        /// The machine rejected the pack input because the expiry date of the pack is invalid.
        /// </summary>
        RejectedInvalidExpiryDate,

        /// <summary>
        /// The IT system rejected the pack input because no picking indicator was set.
        /// </summary>
        RejectedNoPickingIndicator,

        /// <summary>
        /// The IT system rejected the pack input because the batch number was missing.
        /// </summary>
        RejectedNoBatchNumber,

        /// <summary>
        /// The IT system rejected the pack input because the serial number was missing.
        /// </summary>
        RejectedNoSerialNumber,

        /// <summary>
        /// Pack input is rejected because no stock location has been set.
        /// </summary>
        RejectedNoStockLocation,

        /// <summary>
        /// Pack input is rejected because an invalid stock location has been set.
        /// </summary>
        RejectedInvalidStockLocation,

        /// <summary>
        /// The storage system rejected the input because it has no fridge for the pack.
        /// </summary>
        FridgeMissing,

        /// <summary>
        /// The storage system rejected the input because the pack dimensions could not be determined.
        /// </summary>
        UnknownPackDimensions,

        /// <summary>
        /// The storage system rejected the input because an error occurred while checking the pack dimensions.
        /// </summary>
        MeasurementError,

        /// <summary>
        /// The storage system rejected the input because a critical error occurred and the pack was acknowledged.
        /// </summary>
        PackAcknowledged,

        /// <summary>
        /// The storage system rejected the input because the input feed is broken.
        /// </summary>
        InputBroken,

        /// <summary>
        /// There is not enough space left in the machine to input the pack.
        /// </summary>
        NoSpaceInMachine,

        /// <summary>
        /// There is not enough space left on the belt of the machine to input the pack.
        /// </summary>
        NoSpaceOnBelt,

        /// <summary>
        /// The Pack was not placed.
        /// </summary>
        NoPackPlaced,

        /// <summary>
        /// A timeout occurred while waiting for a pack to be placed at the input feed.
        /// </summary>
        TimeoutWaitingForPack,

        /// <summary>
        /// The tenant which has been specified for the input process is unknown.
        /// </summary>
        UnknownTenant,

        /// <summary>
        /// The stock location which has been specified for the input process is unknown.
        /// </summary>
        UnknownStockLocation,

        /// <summary>
        /// The infeed input process has been cancelled.
        /// </summary>
        TaskCancelled,

        /// <summary>
        /// System not Active
        /// </summary>
        SystemNotActive,

        /// <summary>
        /// The Input is work in progress
        /// </summary>
        InputProcessInProgress,

        /// <summary>
        /// An internal error was found
        /// </summary>
        InternalError,

        /// <summary>
        /// EmergencyStop was called
        /// </summary>
        EmergencyStop
    }
}
