enviarDatosSDMT function

Future<int> enviarDatosSDMT({
  1. required String codeid,
  2. required String fNacimiento,
  3. required String sexo,
  4. required String nivelEduc,
  5. required String mano,
  6. required String numSim,
  7. required String tiempo,
  8. required String errores,
  9. required String score,
  10. required String number_Errors,
  11. required String num_Dig_1,
  12. required String num_Dig_2,
  13. required String num_Dig_3,
  14. required String number_Errors_1,
  15. required String number_Errors_2,
  16. required String number_Errors_3,
  17. required String averaged_duration,
  18. required String sdev_duration,
  19. required String symbol_set,
  20. required String device,
  21. required String diagInch,
})

This function is called to send the test and profile data to the server through the reportarSDMT service. Its arguments are all the strings sent through the API: codeid the reference code

fNacimiento birth date

sexo sex

nivelEduc level of finsihed studies

mano hand used to attempt the test

numSim total number of symbols displayed

tiempo duration of the test

score total number of symbols guessed correctly

number_Errors total number of mistakes

num_Dig_1 symbols displayed in the first third (1 to 30 seconds)

num_Dig_2 symbols displayed in the second third (31 to 60 seconds)

num_Dig_3 symbols displayed in the last third (61 to 90 seconds)

number_Errors_1 mistakes in the first third (1 to 30 seconds)

number_Errors_2 mistakes in the second third (31 to 60 seconds)

number_Errors_3 mistakes in the last third (61 to 90 seconds)

averaged_duration average time taken to press a number in the keyboard

sdev_duration standard deviation of the times taken to press a number

symbol_set 1 or 2 depending on the set of symbols displayed

device model of the device used for the test

diagInch diagonal of the device measured in inches

The function returns an integer:

-1 if it was not able to connect the server

1 if the data was sent correctly

2 if it connected the server but there was a mistake in the data sending

Implementation

Future<int> enviarDatosSDMT({
  required String codeid,
  required String fNacimiento,
  required String sexo,
  required String nivelEduc,
  required String mano,
  required String numSim,
  required String tiempo,
  required String errores,
  required String score,
  required String number_Errors,
  required String num_Dig_1,
  required String num_Dig_2,
  required String num_Dig_3,
  required String number_Errors_1,
  required String number_Errors_2,
  required String number_Errors_3,
  required String averaged_duration,
  required String sdev_duration,
  required String symbol_set,
  required String device,
  required String diagInch
}) async {
  final url = Uri.parse('http://apii01.etsii.upm.es/AppCognit/reportarSDMT');

  final response = await http.post(
    url,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: {
      'codeid': codeid,
      'F_nacimiento': fNacimiento,
      'Sexo': sexo,
      'Nivel_Educ': nivelEduc,
      'Mano': mano,
      'NumSim': numSim,
      'Time_complete': tiempo,
      'Number_Errors': number_Errors,
      'Score': score,
      'Num_Dig_1': num_Dig_1,
      'Num_Dig_2': num_Dig_2,
      'Num_Dig_3': num_Dig_3,
      'Number_Errors_1': number_Errors_1,
      'Number_Errors_2': number_Errors_2,
      'Number_Errors_3': number_Errors_3,
      'Averaged_Duration': averaged_duration,
      'Sdev_Duration': sdev_duration,
      'Device': device,
      'DiagInch': diagInch,
      'Symbol_Set': symbol_set,
    },
  );

  if (response.statusCode == 200) {
    print('Datos enviados Correctamente: ${response.body}');
    final data = jsonDecode(response.body);
    if(data['message'] == 'OK'){
      return 1;
    } else{
      return 2;
    }
  } else {
    print('Error al Enviar datos: ${response.statusCode}' + '');
    return -1;
  }
}