Пример #1
0
exports.fetchDepartmentListIfUserWithCompany = function(user, successCallback, errorCallback){
    var company = user.get("company");
    if(company){
        userUtils.getDepartmentList(company, function(departmentList){
            successCallback(departmentList);
        }, errorCallback)
    }
    else{
        successCallback();
    }
};
Пример #2
0
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)
};