using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EVCB_OCPP.Packet.Messages
{
   

    public static class OCPPErrorCodes
    {
        /// <summary>未實作</summary>
        public static readonly string NotImplemented = "NotImplemented";
        /// <summary>可辨識的Action，但是目前不支援</summary>
        public static readonly string NotSupported = "NotSupported";
        /// <summary>可辨識的Action，處理過程中發生問題</summary>
        public static readonly string InternalError = "InternalError";
        /// <summary>
        /// 可辨識的Action，但資料(payload)不完整
        /// </summary>
        public static readonly string ProtocolError = "ProtocolError";
        /// <summary>
        /// 可辨識的Action，處理過程遇到安全性問題
        /// </summary>
        public static readonly string SecurityError = "SecurityError";
        /// <summary>
        /// 資料(payload)格式錯誤
        /// </summary>
        public static readonly string FormationViolation = "FormationViolation";
        /// <summary>
        /// /// <summary>
        /// 資料(payload)有無效參數
        /// </summary>
        /// </summary>
        public static readonly string PropertyConstraintViolation = "PropertyConstraintViolation";
        /// <summary>
        /// Payload for Action is syntactically correct but at
        /// least one of the fields violates occurence
        ///constraints
        /// </summary>
        public static readonly string OccurenceConstraintViolation = "OccurenceConstraintViolation";
        /// <summary>
        /// Payload for Action is syntactically correct but at
        ///least one of the fields violates data type
        ///constraints (e.g. “somestring”: 12)
        /// </summary>
        public static readonly string TypeConstraintViolation = "TypeConstraintViolation";
        /// <summary>
        /// 其他錯誤
        /// </summary>
        public static readonly string GenericError = "GenericError";
    }

    public static class OCPPErrorDescription
    {
        public static readonly string OccurenceConstraintViolation = "The request could not be found or has already been processed.";

        public static readonly string InternalError = "An internal error occurred and the receiver was not able to process the requested Action successfully";
        public static readonly string FormationViolation = "Unable to process action";
        public static readonly string NotImplemented = "Requested Action is not known by receiver";
        public static readonly string NotChecked = "This EVSE doesn't allow to send another message.";
    }
}
