using Quadarax.Foundation.Core.Attributes;
using Quadarax.Foundation.Core.Exceptions;

namespace qdr.fnd.core.pqueue.Exceptions
{
    public class PsProcessProviderException: CodeException<PsProcessProviderException.ErrorCodes>
    {

        #region *** Error Codes ***

        public enum ErrorCodes : int
        {
            [ErrorMessage("Cannot start, process provider '{0}' (ItemId='{1}') is already running.")]
            ProcessProviderIsRunning = 8000,
            [ErrorMessage("Cannot stop, process provider '{0}' (ItemId='{1}') is not running.")]
            ProcessProviderNotRunning = 8001,
            [ErrorMessage("Process provider '{0}' (ItemId='{1}') has not defined argument '{2}'.")]
            ProcessProviderNotDefinedArgument = 8002,
        }
        #endregion

        #region *** Constructors ***

        /// <inheritdoc />
        public PsProcessProviderException(ErrorCodes code, Exception innerException) : base(code, innerException)
        {
        }

        /// <inheritdoc />
        public PsProcessProviderException(ErrorCodes code) : base(code)
        {
        }

        /// <inheritdoc />
        public PsProcessProviderException(ErrorCodes code, params object[] messageArguments) : base(code, messageArguments)
        {
        }

        /// <inheritdoc />
        public PsProcessProviderException(ErrorCodes code, Exception innerException, params object[] messageArguments) : base(code, innerException, messageArguments)
        {
        }
        #endregion
    }
}
