Commit 0d17d03c authored by Gabriel's avatar Gabriel

Agrega opcion para mostrar mas turnos para la misma fecha

parent a95c431b
...@@ -5,10 +5,11 @@ const is = require('./endpoints/is.js') ...@@ -5,10 +5,11 @@ const is = require('./endpoints/is.js')
let LINK_SOLICITAR_ACCESO_POR_EMAIL = 'https://www.integrandosalud.com/es-ar/integrando-pacientes-solicitar-acceso-por-email/'; let LINK_SOLICITAR_ACCESO_POR_EMAIL = 'https://www.integrandosalud.com/es-ar/integrando-pacientes-solicitar-acceso-por-email/';
let OPTIONS = 4; let OPTIONS_LIMIT = 4;
let VER_MAS_OPTION_ID = '99'; let VER_MAS_OPTION_ID = '99';
let MOSTRANDO_PROVINCIAS_HASTA_KEY = 'mostrando_provincias_hasta' let MOSTRANDO_PROVINCIAS_HASTA_KEY = 'mostrando_provincias_hasta'
let MOSTRANDO_MEDICOS_ESPECIALIDAD_HASTA_KEY = 'mostrando_medicos_hasta' let MOSTRANDO_MEDICOS_ESPECIALIDAD_HASTA_KEY = 'mostrando_medicos_hasta'
let MOSTRANDO_TURNOS_HASTA_KEY = 'mostrando_turnos_hasta'
let ID_PROVINCIA = 'id_provincia' let ID_PROVINCIA = 'id_provincia'
let ID_AGENDA = 'id_agenda' let ID_AGENDA = 'id_agenda'
let ID_PERSONA_INSTITUCIONAL = 'id_persona_institucional' let ID_PERSONA_INSTITUCIONAL = 'id_persona_institucional'
...@@ -40,7 +41,7 @@ async function getSiguientesProvinciasMostrar(userData) { ...@@ -40,7 +41,7 @@ async function getSiguientesProvinciasMostrar(userData) {
let choices = []; let choices = [];
let desde = getMostrandoDesde(userData, MOSTRANDO_PROVINCIAS_HASTA_KEY); let desde = getMostrandoDesde(userData, MOSTRANDO_PROVINCIAS_HASTA_KEY);
let iter = desde; let iter = desde;
for (iter; iter < desde + OPTIONS && iter < provincias.length; iter++) { for (iter; iter < desde + OPTIONS_LIMIT && iter < provincias.length; iter++) {
choices.push(utils.armarChoice(provincias[iter].id_provincia, provincias[iter].descripcion)); choices.push(utils.armarChoice(provincias[iter].id_provincia, provincias[iter].descripcion));
} }
if(iter !== provincias.length){ if(iter !== provincias.length){
...@@ -75,7 +76,7 @@ async function getSiguientesMedicosMostrar(userData){ ...@@ -75,7 +76,7 @@ async function getSiguientesMedicosMostrar(userData){
//Armamos picker //Armamos picker
let choices = []; let choices = [];
let iter = desde; let iter = desde;
for(iter; iter < desde + OPTIONS && iter < medicos_especialidad.length; iter++){ for(iter; iter < desde + OPTIONS_LIMIT && iter < medicos_especialidad.length; iter++){
let medico_especialidad = `${medicos_especialidad[iter].nombre} - Especialidad: ${medicos_especialidad[iter].especialidad}`; let medico_especialidad = `${medicos_especialidad[iter].nombre} - Especialidad: ${medicos_especialidad[iter].especialidad}`;
choices.push(utils.armarChoice(medicos_especialidad[iter].agendaId.toString(), medico_especialidad)); choices.push(utils.armarChoice(medicos_especialidad[iter].agendaId.toString(), medico_especialidad));
} }
...@@ -87,9 +88,36 @@ async function getSiguientesMedicosMostrar(userData){ ...@@ -87,9 +88,36 @@ async function getSiguientesMedicosMostrar(userData){
return choices; return choices;
} }
async function getSiguientesTurnosMostrar(website_id, session_id, userData){
let turnos;
if(userData[TURNOS_DISPONIBLES] != null){
turnos = userData[TURNOS_DISPONIBLES];
} else{
turnos = await is.getTurnosDisponibles(userData[ID_AGENDA], userData[ID_PERSONA_INSTITUCIONAL], fechaArgToFechaUsa(userData[FECHA_TURNO]));
}
let desde = getMostrandoDesde(userData, MOSTRANDO_TURNOS_HASTA_KEY);
let iter = desde;
let choices = [];
for(iter; iter < desde + OPTIONS_LIMIT && iter < turnos.length; iter++){
let fechaHoraUsa = turnos[iter].fechaHora;
let fechaHoraArg = fechaHoraUsaToFechaHoraArg(fechaHoraUsa);
let horaArg = fechaHoraArg.split(" ")[1];
choices.push(utils.armarChoice(iter.toString(), horaArg));
}
if(iter !== turnos.length){
choices.push(utils.armarChoice(VER_MAS_OPTION_ID, 'Ver más'));
}
userData[TURNOS_DISPONIBLES] = turnos;
await crisp.updateUserData(website_id, session_id, userData);
return choices;
}
function updateChoicesMostradas(userData, hastaKey) { function updateChoicesMostradas(userData, hastaKey) {
let desde = getMostrandoDesde(userData, hastaKey); let desde = getMostrandoDesde(userData, hastaKey);
userData[hastaKey] = desde + OPTIONS; userData[hastaKey] = desde + OPTIONS_LIMIT;
return userData; return userData;
} }
...@@ -225,26 +253,28 @@ module.exports = ...@@ -225,26 +253,28 @@ module.exports =
await this.ask_hora_turno(message, userData, website_id, session_id); await this.ask_hora_turno(message, userData, website_id, session_id);
}, },
ask_hora_turno: async function(message, userData, website_id, session_id){ ask_hora_turno: async function(message, userData, website_id, session_id){
let turnos = await is.getTurnosDisponibles(userData[ID_AGENDA], userData[ID_PERSONA_INSTITUCIONAL], fechaArgToFechaUsa(userData[FECHA_TURNO])); let choices = await getSiguientesTurnosMostrar(website_id, session_id, userData);
let choices = []; userData = updateChoicesMostradas(userData, MOSTRANDO_TURNOS_HASTA_KEY);
for(let i=0; i<turnos.length && i < 5; i++){
let fechaHoraUsa = turnos[i].fechaHora;
let fechaHoraArg = fechaHoraUsaToFechaHoraArg(fechaHoraUsa);
let horaArg = fechaHoraArg.split(" ")[1];
choices.push(utils.armarChoice(i.toString(), horaArg));
}
//TODO: agregar 'Mostrar mas'
userData[TURNOS_DISPONIBLES] = turnos;
let fechaArg = userData[FECHA_TURNO]; let fechaArg = userData[FECHA_TURNO];
await crisp.sendPickerMessage(website_id, session_id, pasos.RESP_HORA_TURNO, `Seleccione un turno para el ${fechaArg}`, choices); await crisp.sendPickerMessage(website_id, session_id, pasos.RESP_HORA_TURNO, `Seleccione un turno para el ${fechaArg}`, choices);
await crisp.setSiguientePaso(website_id, session_id, pasos.RESP_HORA_TURNO, userData); await crisp.setSiguientePaso(website_id, session_id, pasos.RESP_HORA_TURNO, userData);
}, },
resp_hora_turno: async function(message, userData, website_id, session_id){ resp_hora_turno: async function(message, userData, website_id, session_id){
let turnoElegidoChoice = getChoiceElegida(message); let choiceElegida = getChoiceElegida(message);
if(choiceElegida.value === VER_MAS_OPTION_ID){
//Mostrar mas turnos
let choices = await getSiguientesTurnosMostrar(website_id, session_id, userData);
userData = updateChoicesMostradas(userData, MOSTRANDO_TURNOS_HASTA_KEY);
let fechaArg = userData[FECHA_TURNO];
await crisp.updateUserData(website_id, session_id, userData)
await crisp.sendPickerMessage(website_id, session_id, pasos.RESP_HORA_TURNO, `Seleccione un turno para el ${fechaArg}`, choices);
}
else{
//Set turno elegido y avanzar
let turnosDisponibles = userData[TURNOS_DISPONIBLES]; let turnosDisponibles = userData[TURNOS_DISPONIBLES];
let turno; let turno;
for(let i=0; i < turnosDisponibles.length; i++){ for(let i=0; i < turnosDisponibles.length; i++){
let horaArg = turnoElegidoChoice.label; let horaArg = choiceElegida.label;
let fechaHoraArg = `${userData[FECHA_TURNO]} ${horaArg}`; let fechaHoraArg = `${userData[FECHA_TURNO]} ${horaArg}`;
let fechaHoraUsa = fechaHoraArgToFechaHoraUsa(fechaHoraArg); let fechaHoraUsa = fechaHoraArgToFechaHoraUsa(fechaHoraArg);
if(fechaHoraUsa === turnosDisponibles[i].fechaHora){ if(fechaHoraUsa === turnosDisponibles[i].fechaHora){
...@@ -253,6 +283,7 @@ module.exports = ...@@ -253,6 +283,7 @@ module.exports =
} }
userData[TURNO_ELEGIDO] = turno; userData[TURNO_ELEGIDO] = turno;
await this.ask_tipo_documento(message, userData, website_id, session_id); await this.ask_tipo_documento(message, userData, website_id, session_id);
}
}, },
ask_tipo_documento: async function(message, userData, website_id, session_id){ ask_tipo_documento: async function(message, userData, website_id, session_id){
await crisp.sendTextMessage(website_id, session_id, 'Perfecto, ahora vamos a asociar tu datos. Selecciona tu tipo de documento'); await crisp.sendTextMessage(website_id, session_id, 'Perfecto, ahora vamos a asociar tu datos. Selecciona tu tipo de documento');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment