private _validate()

in legacy/src/Calendar/Dialogs.ts [411:475]


    private _validate(showError?: boolean) {
        if (!this._contributionsValid) {
            this._clearError();
            this.updateOkButton(false);
            return;
        }

        const validationResult = [];
        const groupIsValid: boolean = Controls_Validation.validateGroup("default", validationResult);
        if (!groupIsValid) {
            if (showError) {
                this._setError(validationResult[0].getMessage());
            }
            this.updateOkButton(false);
            return;
        }

        const errorPromises: PromiseLike<string>[] = [];

        // validate text input fields
        const textFields = this._content.textFields;
        const textInputs = this._$textInputs;
        for (let i = 0; i < textInputs.length; i++) {
            const textField = textFields[i];
            if (textField.checkValid) {
                errorPromises.push(
                    textField.checkValid($.trim(textInputs[i].val())).then((isValid: boolean) => {
                        if (!isValid) {
                            return textField.validationErrorMessage;
                        }
                        return "valid";
                    }),
                );
            }
        }
        // validate combo input fields
        const comboFields = this._content.comboFields;
        const comboInputs = this._$comboInputs;
        for (let i = 0; i < comboInputs.length; i++) {
            const comboField = comboFields[i];
            if (comboField.checkValid && !comboField.disabled) {
                errorPromises.push(
                    comboField.checkValid($.trim(comboInputs[i].val())).then((isValid: boolean) => {
                        if (!isValid) {
                            return comboField.validationErrorMessage;
                        }
                        return "valid";
                    }),
                );
            }
        }

        return Promise.all(errorPromises).then((results: string[]) => {
            const invalidMessages = results.filter(r => r !== "valid");
            if (invalidMessages && invalidMessages.length > 0) {
                if (showError) {
                    this._setError(invalidMessages[0]);
                }
                this.updateOkButton(false);
                return;
            }
            this._clearError();
            this.updateOkButton(true);
        });
    }