App-Dochazka-WWW

 view release on metacpan or  search on metacpan

share/js/dochazka-www/ldap-lib.js  view on Meta::CPAN

                        console.log("Payload is", st.payload);
                        ldapEmployeeObject.dochazka = true;
                    }
                    if (document.getElementById('ldapLookup') ||
                        document.getElementById('ldapDisplayEmployee')) {
                        displayLdapEmployee(ldapEmployeeObject, 'ldapLookup');
                    }
                },
                fc = function (st) {
                    if (document.getElementById('ldapLookup') ||
                        document.getElementById('ldapDisplayEmployee')) {
                        displayLdapEmployee(ldapEmployeeObject, 'ldapLookup');
                    }
                }
            ajax(rest, sc, fc);
        },

        ldapLookupSubmit = function (obj) {
            var emp = obj;
            console.log("Entering function ldapLookupSubmit, object", emp);
            // "nick" is the only property of emp that is populated
            if (! emp.nick) {
                return;
            }
            var nick = emp.nick,
                rest = {
                    method: 'GET',
                    path: 'employee/nick/' + nick + "/ldap"
                },
                // success callback -- employee already exists
                sc = function (st) {
                    if (st.code === 'DOCHAZKA_LDAP_LOOKUP') {
                        console.log("Employee exists in LDAP");
                        console.log("Server said", st);
                        resetLdapEmployeeObject();
                        $.extend(ldapEmployeeObject, st.payload);
                    } else {
                        console.log("REST server returned unexpected status", st);
                    }
                    ldapEmployeeLink();
                },
                // failure callback -- employee doesn't exist
                fc = function (st) {
                    coreLib.displayError(st.payload.message);
                };
            ajax(rest, sc, fc);
        },

        ldapSync = function (ldapEmp) {
            // if (! ldapEmp) {
            //     stack.getState();
            // }
            console.log("Entered ldapSync with object", ldapEmp);
            if (! ldapEmp.nick) {
                return;
            }
            var bo,
                nick = ldapEmp.nick,
                stackTarget,
                rest = {
                    method: 'PUT',
                    path: 'employee/nick/' + nick + '/ldap'
                },
                // success callback -- employee already exists
                sc = function (st) {
                    console.log("PUT ldap success, st object is", st);
                    if (st.code === 'DOCHAZKA_CUD_OK') {
                        console.log("Payload is", st.payload);
                        ldapEmployeeObject = $.extend(ldapEmployeeObject, st.payload);
                        ldapEmployeeObject.dochazka = true;
                    }
                    stackTarget = stack.getTarget().name;
                    console.log("Detected target ' + stackTarget + ' on top of stack");
                    if (stackTarget === 'ldapDisplayEmployee') {
                        ldapEmployeeLink();
                    } else if (stackTarget === 'simpleEmployeeBrowser') {
                        // FIXME: this code belongs in App::MFILE::WWW
                        bo = coreLib.dbrowserState.set[coreLib.dbrowserState.pos];
                        $.extend(coreLib.dbrowserState.obj, ldapEmployeeObject);
                        $.extend(bo, ldapEmployeeObject);
                        start.dbrowserListen("Employee profile updated from LDAP");
                    } else if (stackTarget === 'empProfile') {
                        stack.restart(
                            $.extend(ldapEmp, ldapEmployeeObject),
                            {"resultLine": "Employee profile updated from LDAP"},
                        );
                    }
                },
                // failure callback -- employee doesn't exist
                fc = function (st) {
                    var err = st.payload.code,
                        msg;
                    if (err === '404') {
                        msg = 'Employee ' + ldapEmp.nick + ' not found in LDAP';
                    } else {
                        msg = st.payload.message;
                    }
                    coreLib.displayError(msg);
                }
            ajax(rest, sc, fc);
        },

        ldapSyncFromBrowser = function (obj) {
            ldapSync(obj);
        },

        resetLdapEmployeeObject = function () {
            ldapEmployeeObject = Object.create(prototypes.ldapEmpObject);
        };

    return {
        ldapLookupSubmit: ldapLookupSubmit,
        ldapSync: ldapSync,
        ldapSyncFromBrowser: ldapSyncFromBrowser,
    };

});



( run in 0.860 second using v1.01-cache-2.11-cpan-5735350b133 )