1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const chalk = require('chalk')
- var Subscriber = require('./models/subscriber');
- var register_subscriber = function(data) {
- return new Promise((resolve, reject) => {
- if(data.email == '' || data.email == undefined || !validateEmail(data.email)) {
- console.log(`${chalk.red(`Error: Received data does not contain a valid email address`)}`);
- console.log(data);
- resolve(undefined);
- }
- Subscriber.findOne({email: data.email}).then((subscriber) => {
- if(subscriber != undefined) {
- subscriber.attempted_registration();
- subscriber.save().then((subscriber) => {
- console.log(`Subscriber already in list ${chalk.italic(`\'${subscriber.email}\'`)}`, );
- var payload = response_payload(subscriber, true);
- resolve(payload);
- }).catch((error) => { reject(error); });
-
- } else {
- var new_subscriber = new Subscriber(data);
- new_subscriber.save().then((subscriber) => {
- console.log(`Registered new subscriber ${chalk.italic(`\'${subscriber.email}\'`)}`);
- var payload = response_payload(subscriber, false);
- resolve(payload);
- }).catch((error) => { reject(error); });
- }
- }).catch((error) => { reject(error); });
- });
- }
- var response_payload = function(subscriber, registered) {
- var payload = {};
- if(subscriber != undefined) {
- payload.email = subscriber.email;
- payload.first_name = subscriber.first_name;
- payload.last_name = subscriber.last_name;
- payload.registration_attempts = subscriber.registration_attempts;
- payload.registration_date = subscriber.registration_date;
- payload.last_updated = subscriber.last_updated;
- payload.confirmed_subscription = subscriber.confirmed_subscription;
- } else payload.confirmed_subscription = false;
- payload.already_registered = registered;
- return payload;
- }
- var validateEmail = function(email) {
- const re = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
- return re.test(String(email).toLowerCase());
- }
- module.exports = register_subscriber;
|