exports.fetchDepartmentListIfUserWithCompany = function(user, successCallback, errorCallback){ var company = user.get("company"); if(company){ userUtils.getDepartmentList(company, function(departmentList){ successCallback(departmentList); }, errorCallback) } else{ successCallback(); } };
exports.updateUserInfo = function(form_data, currentUser, departmentList, successCallback, errorCallback) { var dataForPardot = {}, email, firstName, lastName, timeStamp, hash, objectsToSave = [], previousDepartment, phoneNumber = form_data['phoneNumber']; phoneNumber = phoneNumber.replace(/[-()\s\.]/g,''); // remove all '- ( ) and whitespaces' from the phone number; userUtils.fetchUserPrimaryPersonality(currentUser, function(primaryPersonality){ currentUser.set('first_name', form_data.firstName); currentUser.set('first_name_lower_case', (form_data.firstName || '').toLowerCase()); currentUser.set('last_name', form_data.lastName); currentUser.set('last_name_lower_case', (form_data.lastName || '').toLowerCase()); currentUser.set('occupation', form_data.positionTitle); currentUser.set('title_lower_case', (form_data.positionTitle || '').toLowerCase()); currentUser.set('phone_number', phoneNumber); if (form_data.selected_department) { // find current department in department list previousDepartment = _.find(departmentList, function(department){ return (department.id == currentUser.get("department").id); }); if(!(previousDepartment) || (previousDepartment && previousDepartment.id != form_data.selected_department.id)){ if(previousDepartment) { previousDepartment.increment("user_count", -1); // decrement the user count of current department // decrement the user count of current department's parent department if any if(previousDepartment.get("parent_department")){ previousDepartment.get("parent_department").increment("user_count", -1); } } form_data.selected_department.increment("user_count"); // increment the user count of new department // increment the user count of new department's parent if any if(form_data.selected_department.get("parent_department")){ form_data.selected_department.get("parent_department").increment("user_count"); } if(primaryPersonality){ // if user has primary personality // reduce workstyle count from the pervious department if(previousDepartment) { previousDepartment.increment(primaryPersonality.get("name").toLowerCase() + "_count", -1); if(previousDepartment.get("parent_department")){ previousDepartment.get("parent_department").increment(primaryPersonality.get("name").toLowerCase() + "_count", -1); } } // increment workstyle count in new department form_data.selected_department.increment(primaryPersonality.get("name").toLowerCase() + "_count"); if(form_data.selected_department.get("parent_department")){ form_data.selected_department.get("parent_department").increment(primaryPersonality.get("name").toLowerCase() + "_count"); } } currentUser.set("department", form_data.selected_department); if(previousDepartment) { objectsToSave.push(previousDepartment); } } } objectsToSave.push(currentUser); Parse.Object.saveAll(objectsToSave).then(function(){ email = currentUser.get('email'); firstName = form_data.firstName; lastName = form_data.lastName; timeStamp = (new Date()).getTime(); // don't change the sequence of hashing to check sequence check app/user/utils/ function: "validateDataForPardotCall" hash = require('cloud/packages/md5.js').hex_md5(secret.securityKey1 + email + firstName + lastName + timeStamp + secret.securityKey2); successCallback({ email: email, firstName: firstName, lastName: lastName, timeStamp: timeStamp, hash: hash }) }, errorCallback); }, errorCallback) };