/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

/**
 * The Edifact agreement validation settings.
 *
 */
class EdifactValidationSettings {
  /**
   * Create a EdifactValidationSettings.
   * @property {boolean} validateCharacterSet The value indicating whether to
   * validate character set in the message.
   * @property {boolean} checkDuplicateInterchangeControlNumber The value
   * indicating whether to check for duplicate interchange control number.
   * @property {number} interchangeControlNumberValidityDays The validity
   * period of interchange control number.
   * @property {boolean} checkDuplicateGroupControlNumber The value indicating
   * whether to check for duplicate group control number.
   * @property {boolean} checkDuplicateTransactionSetControlNumber The value
   * indicating whether to check for duplicate transaction set control number.
   * @property {boolean} validateEDITypes The value indicating whether to
   * Whether to validate EDI types.
   * @property {boolean} validateXSDTypes The value indicating whether to
   * Whether to validate XSD types.
   * @property {boolean} allowLeadingAndTrailingSpacesAndZeroes The value
   * indicating whether to allow leading and trailing spaces and zeroes.
   * @property {boolean} trimLeadingAndTrailingSpacesAndZeroes The value
   * indicating whether to trim leading and trailing spaces and zeroes.
   * @property {string} trailingSeparatorPolicy The trailing separator policy.
   * Possible values include: 'NotSpecified', 'NotAllowed', 'Optional',
   * 'Mandatory'
   */
  constructor() {
  }

  /**
   * Defines the metadata of EdifactValidationSettings
   *
   * @returns {object} metadata of EdifactValidationSettings
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'EdifactValidationSettings',
      type: {
        name: 'Composite',
        className: 'EdifactValidationSettings',
        modelProperties: {
          validateCharacterSet: {
            required: true,
            serializedName: 'validateCharacterSet',
            type: {
              name: 'Boolean'
            }
          },
          checkDuplicateInterchangeControlNumber: {
            required: true,
            serializedName: 'checkDuplicateInterchangeControlNumber',
            type: {
              name: 'Boolean'
            }
          },
          interchangeControlNumberValidityDays: {
            required: true,
            serializedName: 'interchangeControlNumberValidityDays',
            type: {
              name: 'Number'
            }
          },
          checkDuplicateGroupControlNumber: {
            required: true,
            serializedName: 'checkDuplicateGroupControlNumber',
            type: {
              name: 'Boolean'
            }
          },
          checkDuplicateTransactionSetControlNumber: {
            required: true,
            serializedName: 'checkDuplicateTransactionSetControlNumber',
            type: {
              name: 'Boolean'
            }
          },
          validateEDITypes: {
            required: true,
            serializedName: 'validateEDITypes',
            type: {
              name: 'Boolean'
            }
          },
          validateXSDTypes: {
            required: true,
            serializedName: 'validateXSDTypes',
            type: {
              name: 'Boolean'
            }
          },
          allowLeadingAndTrailingSpacesAndZeroes: {
            required: true,
            serializedName: 'allowLeadingAndTrailingSpacesAndZeroes',
            type: {
              name: 'Boolean'
            }
          },
          trimLeadingAndTrailingSpacesAndZeroes: {
            required: true,
            serializedName: 'trimLeadingAndTrailingSpacesAndZeroes',
            type: {
              name: 'Boolean'
            }
          },
          trailingSeparatorPolicy: {
            required: true,
            serializedName: 'trailingSeparatorPolicy',
            type: {
              name: 'String'
            }
          }
        }
      }
    };
  }
}

module.exports = EdifactValidationSettings;
