143 lines
4.7 KiB
JavaScript
143 lines
4.7 KiB
JavaScript
const SibApiV3Sdk = require('sib-api-v3-sdk');
|
|
const config = require('../config');
|
|
|
|
const defaultClient = SibApiV3Sdk.ApiClient.instance;
|
|
|
|
// Configure API key authorization: api-key
|
|
const apiKey = defaultClient.authentications['api-key'];
|
|
apiKey.apiKey = config.sendinblue.API_KEY;
|
|
|
|
function _createMember(member) {
|
|
const api = new SibApiV3Sdk.ContactsApi();
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
const createContact = new SibApiV3Sdk.CreateContact(); // CreateContact | Values to create a contact
|
|
|
|
createContact.email = member.email;
|
|
createContact.updateEnabled = true; // <- Actualiza el contacto si existe ese email
|
|
createContact.attributes = {
|
|
NOMBRE: member.name,
|
|
APELLIDOS: member.surname,
|
|
SMS: member.phone,
|
|
SOURCE: member.source,
|
|
USERID: member.userId,
|
|
//ENTITYNAME: (member.entity) ? member.entity : '',
|
|
//RESERVATIONCODE: (member.reservation_code) ? member.reservation_code : '',
|
|
TICKETCODE: member.code_ticket,
|
|
//VALIDATED: (member.validated) ? 1 : 0,
|
|
//COLOR: (member.color) ? member.color : '',
|
|
//DESCOLOR: member.description,
|
|
}
|
|
|
|
console.debug('_createMember:');
|
|
console.debug(createContact);
|
|
|
|
api.createContact(createContact)
|
|
.then(function (data) {
|
|
console.debug('API called successfully. Returned data: ' + data);
|
|
if (data && data.id) {
|
|
// Se ha dado de alta el contacto porque no existía
|
|
createContact.ID = data.id;
|
|
}
|
|
resolve(createContact);
|
|
})
|
|
.catch(function (error) {
|
|
console.error(error);
|
|
reject(error);
|
|
});
|
|
});
|
|
};
|
|
|
|
function _addMemberToList(member, listId) {
|
|
const api = new SibApiV3Sdk.ContactsApi();
|
|
|
|
const contactEmails = new SibApiV3Sdk.AddContactToList(); // AddContactToList | Emails addresses of the contacts
|
|
contactEmails.emails = [member.email];
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
api.addContactToList(listId, contactEmails)
|
|
.then(function(data) {
|
|
console.debug('API called successfully. Returned data: ' + data);
|
|
if ((data.contacts.success) && (data.contacts.success[0] === member.email)) {
|
|
resolve(data.contacts.success[0])
|
|
} else reject()
|
|
})
|
|
.catch(function(error) {
|
|
reject(error)
|
|
})
|
|
});
|
|
}
|
|
|
|
function _removeMemberFromList(member, listId) {
|
|
const api = new SibApiV3Sdk.ContactsApi();
|
|
|
|
const contactEmails = new SibApiV3Sdk.RemoveContactFromList(); // RemoveContactFromList | Emails adresses of the contact
|
|
contactEmails.emails = [member];
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
api.removeContactFromList(listId, contactEmails)
|
|
.then(function (data) {
|
|
console.debug('API called successfully. Returned data: ' + data);
|
|
if ((data.contacts.success) && (data.contacts.success[0] === member)) {
|
|
resolve(data.contacts.success[0])
|
|
} else reject()
|
|
})
|
|
.catch(function (error) {
|
|
reject(error)
|
|
})
|
|
});
|
|
}
|
|
|
|
function getLists() {
|
|
const api = new SibApiV3Sdk.ContactsApi();
|
|
return new Promise(function (resolve, reject) {
|
|
api.getAccount().then(function (data) {
|
|
console.debug('API called successfully. Returned data: ' + data);
|
|
var opts = {
|
|
'limit': 10, // Number | Number of documents per page
|
|
'offset': 0 // Number | Index of the first document of the page
|
|
};
|
|
api.getLists(opts)
|
|
.then(function (data) {
|
|
resolve(data.lists);
|
|
})
|
|
.catch(function (error) {
|
|
reject(error)
|
|
})
|
|
|
|
}, function (error) {
|
|
reject(error)
|
|
});
|
|
});
|
|
};
|
|
|
|
|
|
function addMember(listId, member) {
|
|
return new Promise(function (resolve, reject) {
|
|
_createMember(member)
|
|
.then(function(contact) {
|
|
console.debug('añadir a lista: ' + listId + ' * ' + contact);
|
|
return _addMemberToList(contact, listId);
|
|
})
|
|
.then(function() {
|
|
resolve(true);
|
|
})
|
|
.catch(function (error) {
|
|
console.error(error);
|
|
reject(error);
|
|
});
|
|
})
|
|
};
|
|
|
|
function deleteMember(listId, member) {
|
|
return _removeMemberFromList(member, listId);
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
getLists,
|
|
addMember,
|
|
deleteMember,
|
|
}
|
|
|