public static PushAuthenticationDataResult NoOperation(IId AuthId,
                                                               IReceiveAuthenticationData IReceiveAuthenticationData,
                                                               String Description            = null,
                                                               IEnumerable <String> Warnings = null,
                                                               TimeSpan?Runtime = null)

        => new PushAuthenticationDataResult(AuthId,
                                            IReceiveAuthenticationData,
                                            PushAuthenticationDataResultTypes.NoOperation,
                                            new EVSE[0],
                                            Description,
                                            Warnings,
                                            Runtime);
        public static PushAuthenticationDataResult Error(IId AuthId,
                                                         IReceiveAuthenticationData IReceiveAuthenticationData,
                                                         IEnumerable <EVSE> RejectedEVSEs = null,
                                                         String Description            = null,
                                                         IEnumerable <String> Warnings = null,
                                                         TimeSpan?Runtime = null)

        => new PushAuthenticationDataResult(AuthId,
                                            IReceiveAuthenticationData,
                                            PushAuthenticationDataResultTypes.Error,
                                            RejectedEVSEs,
                                            Description,
                                            Warnings,
                                            Runtime);
        /// <summary>
        /// Create a new acknowledgement.
        /// </summary>
        /// <param name="Result">The result of the operation.</param>
        /// <param name="Description">An optional description of the result code.</param>
        /// <param name="Warnings">Warnings or additional information.</param>
        /// <param name="Runtime">The runtime of the request.</param>
        private PushAuthenticationDataResult(IId AuthId,
                                             IReceiveAuthenticationData IReceiveAuthenticationData,
                                             PushAuthenticationDataResultTypes Result,
                                             IEnumerable <EVSE> RejectedEVSEs = null,
                                             String Description            = null,
                                             IEnumerable <String> Warnings = null,
                                             TimeSpan?Runtime = null)
        {
            this.Result = Result;

            this.Description = Description.IsNotNullOrEmpty()
                                    ? Description.Trim()
                                    : null;

            this.Warnings = Warnings != null
                                    ? Warnings.Where(warning => warning != null).
                            SafeSelect(warning => warning.Trim()).
                            Where(warning => warning.IsNotNullOrEmpty())
                                    : new String[0];

            this.Runtime = Runtime;
        }