Загрузка данных


function uploadRegister() {
    const validationResult = [];
    let sentCount = 0;

    const modelData = getSelectedFnsRows();
    const rows = modelData && modelData.list ? modelData.list : [];

    if (!rows.length) {
        return;
    }

    rows.forEach(function(appData) {
        const requestLabel = 'Запрос № ' + appData.request_number;
        let uploadSucceeded = false;

        function addMessage(message) {
            validationResult.push({
                messageType: 'info',
                message: requestLabel + ': ' + message
            });
        }

        if (!appData.model_file_id) {
            addMessage('отсутствует файл запроса.');
            return;
        }

        // Сначала выгружаем файл.
        $.ajax({
            url: "queryAction/action",
            type: "POST",
            async: false,
            data: {
                viewCode: '7K6FKG8e',
                queryActionCode: 'DaizGytc',
                record_id: appData.model_file_id,
                unload_mode: 1
            },
            dataType: "json",

            success: function(response) {
                if (!response || response.result !== true) {
                    if (
                        response
                        && response.messages
                        && response.messages.length
                    ) {
                        validationResult.push(...response.messages);
                    } else {
                        addMessage('операция выгрузки не подтверждена.');
                    }
                    return;
                }

                if (response.data === 0 || response.data === '0') {
                    uploadSucceeded = true;
                } else if (
                    response.data === 1
                    || response.data === '1'
                ) {
                    addMessage(
                        'файл с таким именем уже существует во внешнем хранилище. Новая отправка не подтверждена.'
                    );
                } else {
                    addMessage(
                        'выгрузка не подтверждена. Код результата: '
                        + response.data
                    );
                }
            },

            error: function() {
                addMessage(
                    'не удалось получить результат выгрузки. Проверьте состояние запроса перед повторной отправкой.'
                );
            }
        });

        if (!uploadSucceeded) {
            return;
        }

        // После успешной выгрузки сохраняем статус.
        $.ajax({
            url: "queryAction/action",
            type: "POST",
            async: false,
            data: {
                viewCode: '7K6FKG8e',
                queryActionCode: 'sr8LySCh',
                model_file_to_verification_id: appData.model_file_id
            },
            dataType: "json",

            success: function(response) {
                if (response && response.result === true) {
                    sentCount++;
                    return;
                }

                addMessage(
                    'файл выгружен, но сохранение статуса «Отправлено в ФНС» не подтверждено.'
                );

                if (
                    response
                    && response.messages
                    && response.messages.length
                ) {
                    validationResult.push(...response.messages);
                }
            },

            error: function() {
                addMessage(
                    'файл выгружен, но не удалось получить результат сохранения статуса. Обновите журнал перед повторными действиями.'
                );
            }
        });
    });

    if (sentCount > 0) {
        validationResult.unshift({
            messageType: 'info',
            message: 'Отправлено в ФНС. Количество запросов: '
                + sentCount + '.'
        });
    }

    fns_journal.reload();
    showMessages(validationResult);
}