HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo-telemedicina.teky.com.co/public/js/clinic_document/specific_data.js
$(document).ready(function(){
    $('.select2').select2();
});

function getValuesSpecificData(){
    let formControls = JSON.parse( window.atob(window.__DYNAMIC_FORM) );
    let data = [];

    let resultValidation = validateInputRules(formControls);
    if(!resultValidation.isValid){
        return resultValidation;
    }

    for(let i = 0; i < formControls.fields.length; i++){
        let name_control = formControls.fields[i].name_control;
        let field_id = formControls.fields[i].id;
        switch (formControls.fields[i].field_input.id) {
            case 1: // Select
            case 3: // Date
            case 4: // Datetime
            case 5: // Email
            case 6: // Number
            case 7: // Text
            case 8: // Time
            case 9: // URL
            case 11: // Textarea
                data.push({
                    is_multiple: formControls.fields[i].multiple,
                    field_id: field_id,
                    value: $(`#${name_control}`).val()
                });
                break;
            case 2: // Checkbox
            case 10: // Toggle
                data.push({
                    is_multiple: formControls.fields[i].multiple,
                    field_id: field_id,
                    value: ($(`#${name_control}`).is(':checked') ? true : false)
                });
                break;
        
            default:
                break;
        }
    }

    return data;
}

function validateInputRules(formControls){
    let returnMessage = {
        isValid: true,
        messages: []
    };

    for(let i = 0; i < formControls.fields.length; i++){
        let currentField = formControls.fields[i];
        let name_control = currentField.name_control;
        let currentValue = $(`#${name_control}`).val();

        if(currentField.required == 1){
            if(!currentValue){
                returnMessage.isValid = false;
                returnMessage.messages.push(`El valor para el campo '${currentField.name}' es obligatorio`);
                continue;
            }
        }

        if(currentField.minlength){
            if(currentValue.length < currentField.minlength){
                returnMessage.isValid = false;
                returnMessage.messages.push(`El valor de '${currentField.name}', debe ser mínimo de ${currentField.minlength} caracteres.` );
            }
        }
    
        if(currentField.maxlength){
            if(currentValue.length > currentField.maxlength){
                returnMessage.isValid = false;
                returnMessage.messages.push(`El valor de '${currentField.name}', debe ser máximo de ${currentField.maxlength} caracteres.` );
            }
        }

        if(currentField.min){
            if(parseFloat(currentValue) < currentField.min){
                returnMessage.isValid = false;
                returnMessage.messages.push(`El valor de '${currentField.name}', debe ser minimo ${currentField.min}.` );
            }
        }

        if(currentField.max){
            if(parseFloat(currentValue) > currentField.max){
                returnMessage.isValid = false;
                returnMessage.messages.push(`El valor de '${currentField.name}', debe ser maximo ${currentField.max}.` );
            }
        }
    }

    return returnMessage;
}

function setValuesSpecificData(data){
    
    for(let i = 0; i < data.header_value.header_value_details.length; i++){
        let currentField = $(`#${data.header_value.header_value_details[i].field.name_control}`);
        let currentValue = data.header_value.header_value_details[i].value;
        
        switch (data.header_value.header_value_details[i].field.field_input_id) {
            case 1: // Select
                if(!currentValue){
                    currentField.val(null);
                    break;
                }

                if(data.header_value.header_value_details[i].field.multiple){
                    currentField.val(currentValue.split(","));
                } else{
                    currentField.val(currentValue);
                }
                
                break;
            case 3: // Date
            case 4: // Datetime
            case 5: // Email
            case 6: // Number
            case 7: // Text
            case 8: // Time
            case 9: // URL
            case 11: // Textarea
                if(!currentValue){
                    currentField.val(null);
                    break;
                }
                currentField.val(currentValue);
                break;
            case 2: // Checkbox
            case 10: // Toggle
                currentField.prop("checked", (currentValue == 1 ? true : false));
                break;
        
            default:
                break;
        }
    }
}

function setFieldDatasource(data, i, currentField, currentValue){
    let datasourceField = data.header_value.header_value_details[i].field;

    if(datasourceField.field_datasource.type == 'hard'){ // For y agregar valores.
        setHardDatasource(datasourceField.field_datasource, currentField, currentValue);

    }else{
        setAjaxDatasource(datasourceField.field_datasource, currentField, currentValue);
    }
}

function setAjaxDatasource(datasourceField, currentField, currentValue){
    $.ajax({
        method: "GET"  ,
        url: `/datasources/${datasourceField.url}`,
        success: function(res){
            for(let i = 0; i < res.data.length; i++){
                let value = res.data[i].name;
                let id = res.data[i].id;
                currentField.append(new Option(value, id));
            }
            currentField.val(currentValue.split(','));
        }
    })

}

function setHardDatasource(datasourceField, currentField, currentValue){
    for(let i = 0; i < datasourceField.main_datasource.manual_datasources.length; i++){
        let value = datasourceField.main_datasource.manual_datasources[i].value;
        currentField.append(new Option(value, value));
    }

    currentField.val(currentValue);
}