var searchQuery = null;
var searchUserGroup = '';
var searchADUser = '';
var sortBy = 'recent';
var lastApi = null;
var OBJUser = {};
var validate = function(){
clearErrors();
var data = new Object();
data.page = getPageNo();
data.search = $('#searchBar').val();
if(data.search.length < 3){
data.search = undefined;
}
data.limit = getLimit();
data.sort = sortBy;
hasError() && showErrors();
return data;
}
var searchGroupWithAD = function(){
if(sanitize($('#serchUserGroup').val()).length >= 3){
searchUserGroup = sanitize($('#serchUserGroup').val())
loadUserGroupAndUsers(searchUserGroup, false);
}else if(sanitize($('#serchUserGroup').val()).length == 2) {
searchUserGroup = ''
loadUserGroupAndUsers(searchUserGroup, false);
}
}
var searchUserWithAD = function(){
if(sanitize($('#serchADUsers').val()).length >= 3){
searchADUser = sanitize($('#serchADUsers').val())
loadADUsers(searchADUser, false);
}else if(sanitize($('#serchADUsers').val()).length == 2) {
searchADUser = ''
loadADUsers(searchADUser, false);
}
}
var dataAD = {};
var getUsers = function(groupName, i){
$('.test_all_ad_'+i+' select').html('').append('');
api.group.singleGroupUsers({groupName: groupName, key:(password ? password : undefined)}, function(success) {
$('.filter-option .filter-option-inner .filter-option-inner-inner').css({"text-align":"center"});
if(success && success.success){
dataAD[groupName] = success.users.length;
if(success.users && success.users.length > 0){
$('.test_all_ad_'+i+' select').html('').append('');
success.users.forEach(function(u){
$('.test_all_ad_'+i+' select').append('');
});
}else
$('.test_all_ad_'+i+' select').html('').append('');
$('.filter-option .filter-option-inner .filter-option-inner-inner').css({"text-align":""});
}
$('.test_all_ad_'+i+' select').selectpicker('refresh');
}, function(error) {}, false)
}
var clearUserGroups = function(){
$('#user_group_total').html('');
$('#set_user_groups').html('');
}
var checkOrNot = function(d){
if($(d).prop("checked") == true)
getUsers($(d).attr('data-id'), $(d).attr('data-main'))
}
var setUserGroups = function(data, i){
$('#set_user_groups').append('
| '+data.cn+' | |
');
$('.selectpicker').selectpicker();
$('.bs-searchbox input').attr('placeholder','Search User');
$('.test_all_ad_'+i).find('button').attr('onclick', 'getUsers(\''+data.cn+'\', '+i+')');
}
var loadUserGroupAndUsers = function(search, noloader){
api.group.fetch({search: (search ? search : undefined), key:(password ? password : undefined)}, function(success) {
if(success && success.success){
clearUserGroups();
if(success.groups.length > 0){
var userGroupTotal = success.groups.length;
$('#user_group_total').html(userGroupTotal);
var i = 1;
success.groups.forEach(function(grp){
setUserGroups(grp, i);
++i;
})
}else {
$('#user_group_total').html(0);
$('#set_user_groups').html('No User Groups Found. |
');
}
}
}, function(error) {}, noloader)
}
var createADUserGroups = function(){
clearErrors();
var data = new Object();
var valUserGroups = {};
var arrGroups = [];
var count = 0;
$('.userGroupsAll:checked').each(function(i){
var selectedVal = $('#select-data-'+$(this).attr('data-main')).val();
if((selectedVal == undefined || selectedVal == null || selectedVal == "") && dataAD[$(this).attr('data-id')] > 0) ++count;
else valUserGroups[$(this).attr('data-id')] = selectedVal;
arrGroups.push($(this).attr('data-id'));
});
if(arrGroups.length == 0)
addError('group', 'Please choose atleast one group.');
if(count > 0)
addError('group', 'Manager should be assigned for the selected user group.');
data.managers = JSON.stringify(valUserGroups);
data.userGroups = arrGroups;
data.key = (password ? password : undefined);
hasError() && showErrors();
!hasError() && api.group.createUserGroups(data, function(success) {
if(success && success.success){
if(success.existingGroups && success.existingGroups.length > 0){
clearErrors();
var str = '';
success.existingGroups.forEach(existing =>{
str += existing.name+', ';
})
str = str.replace(/,\s*$/, "");
addError('existing', str+' department name already exists.');
hasError() && showErrors();
}else {
$('#myModal2').modal('hide');
load(true);
dataAD = {};
}
}
}, function(error) {})
}
var validateDataForAdUsers = function(){
clearErrors();
var arrUsers = [];
var data = new Object();
data.name = $('#ad-department').val();
if(data.name.length == 0)
addError('ad-department', 'Enter Department name');
$('.checkBoxUser:checked').each(function(i){
arrUsers.push(obbj[$(this).attr('data-main')]);
});
if(arrUsers.length == 0)
addError('group', 'Please choose atleast one user.');
else{
data.groupManager = $('#ad-assign-mgr').val();
if(data.groupManager.length == 0)
addError('ad-assign-mgr', 'Please assign a manager.');
}
data.users = JSON.stringify(arrUsers);
data.key = (password ? password : undefined);
hasError() && showErrors();
return data;
}
var createADUsers = function(){
var data = validateDataForAdUsers();
!hasError() && api.group.addADusers(data, function(success) {
if(success && success.success){
$('#myModal2').modal('hide');
load(true);
}
}, function(error) {})
}
var getOnlyUsers = function(){
$('#ad-assign-mgr').html('');
var count = 0;
$('.checkBoxUser:checkbox:checked').each(function () {
if(this.checked){
$('#ad-assign-mgr').append('');
count++;
}
});
if(count == 0) $('#ad-assign-mgr').html('').append('');
$('.selectpicker1').selectpicker('refresh');
}
var clearADUsers = function(){
$('#users_total').html('');
$('#set_users').html('');
$('#ad-department').val('');
}
var obbj = {};
var setUsers = function(data, i){
obbj[data.mail] = {givenName:(data.givenName ? data.givenName : ""), displayName:(data.displayName ? data.displayName : ""), sn:(data.sn ? data.sn : ""), mail:data.mail};
$('#set_users').append(' | '+data.cn+' | '+data.mail+' |
');
}
var loadADUsers = function(search, noloader){
api.group.users({search: (search ? search : undefined), key:(password ? password : undefined)}, function(success) {
if(success && success.success){
clearADUsers();
if(success.users.length > 0){
var usersTotal = success.users.length;
// $('#users_total').html(usersTotal);
var i = 0;
success.users.forEach(function(user){
if(user.mail != undefined){
setUsers(user, i);
i++;
}
})
$('#users_total').html(i);
}else {
$('#users_total').html(0);
$('#set_users').html('No User Found. |
');
}
}
}, function(error) {}, noloader)
}
var importWithAD = function(){
$('#password-ad').val('');
var data = new Object();
data.password = password;
api.group.checkAD(data, function(success) {
if(success && success.success){
if(success.check){
$('#myModal2').modal('show');
loadUserGroupAndUsers(searchUserGroup, true);
}else $('#passwordLogin').modal('show');
}
}, function(error) {})
$('.new_ad_class').removeClass('active');
$('.tab_pane_depart').removeClass('active');
$('#pills-profile').addClass('show active');
$('#pills-profile-tab').addClass('active');
}
var validatePasswordAD = function(){
clearErrors();
var data = new Object();
data.password = sanitize($('#password-ad').val());
if(data.password.length == 0)
addError('password-ad', "Please Enter a Password.");
data.savePassword = $('#savePassword').prop('checked');
hasError() && showErrors();
return data;
}
var password = '';
var loginADWithPassword = function(){
var data = validatePasswordAD();
!hasError() && api.group.password(data, function(success) {
if(success && success.success){
if(success.success){
password = success.key;
$('#passwordLogin').modal('hide');
$('#myModal2').modal('show');
loadUserGroupAndUsers(searchUserGroup, true);
}
}
}, function(error) {})
$('.new_ad_class').removeClass('active');
$('.tab_pane_depart').removeClass('active');
$('#pills-profile').addClass('show active');
$('#pills-profile-tab').addClass('active');
}
var sort = function(type){
sortBy = type;
load();
}
var clearGroups = function(){
$('#groups tbody').html('');
$('#paginate').hide();
}
var redirectDepartment = function(id){
window.open('/department/'+id, '_blank');
}
var setTreeJson = function(obj, t, group, dataObj){
if(group && group.length > 0){
group.forEach(function(g) {
var temp = {
"text" : ""+g.name+"",
"state" : { "opened" : true },
"icon" : (t == 'p' ? "feather icon-folder" : "feather icon-feather")
}
if(dataObj && dataObj[g.id]){
temp["children"] = setTreeJson([], 'c', dataObj[g.id], dataObj);
}
obj.push(temp);
})
}
return obj;
}
var loadJsTree = function(data) {
$('#types-tree').jstree("destroy");
$('#types-tree').jstree({
'core' : {
'themes' : { 'responsive': false },
'data' : data,
},
'plugins' : ['types']
});
}
var addGroup = function(detail){
var formatedDate = new Date(detail.createdAt).toString('DD MM yyyy h:mm tt').substr(0,25);
var status = detail.status, statusColor = '';
var skills = ''
if(detail.GroupSkills && detail.GroupSkills.length > 0){
var data = [];
for(var i = 0; i < detail.GroupSkills.length; i++){
if(detail.GroupSkills[i] && detail.GroupSkills[i].Skill && detail.GroupSkills[i].Skill.name )
data.push(detail.GroupSkills[i].Skill.name);
}
var skills = data.join(', ');
}
if(status == 'completed')
statusColor = 'style="color: green;font-size: inherit;"'
else if(status == 'pending')
statusColor = 'style="color: orange;font-size: inherit;"';
else
statusColor = 'style="color: red;font-size: inherit;"';
$('#groups tbody').append(' ' + detail.name + ' Created on ' + formatedDate + ' | '+(skills != ''? skills: 'NA')+' | ' + detail.userCount + ' Users | '+capitalizeFirstLetter((status == 'failed' ? 'error': status))+' | |
');
$('[data-toggle="tooltip"]').tooltip({
trigger : 'hover'
})
}
var pendingStatus = function(){
swal({
title: "Department is in pending Status can\'t be edit."
})
}
var deleteGrp = function(groupId){
swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonClass: 'btn btn-success', cancelButtonClass: 'btn btn-danger m-l-10', confirmButtonText: 'Yes, delete it!'})
.then(function () {
api.groupId.delete(groupId, undefined, function(success) {
if(success && success.success){
load();
swal('Deleted!', success.skill, 'success' );
}
}, function(error) {})
})
}
var load = function(noloader = true) {
var data = validate();
!hasError();
if(lastApi){
lastApi.abort();
lastApi = null;
}
lastApi = api.group.get(data, function(success) {
clearGroups();
if(success.count){
success.groups.forEach(function(group) {
addGroup(group);
});
getAllDeptHierarchyData();
lastApi = null;
}else {
$('#groups tbody').html('No Department Found. |
');
}
if(success.groups.length > 0){
addPagination(success.pages, success.count);
$('#paginate').show();
}
}, function(error) {}, noloader)
}
$(".checkAllDepartment").click(function () {
$(".checkBoxClass").prop('checked', $(this).prop('checked'));
});
$(".checkBoxClass").change(function(){
if (!$(this).prop("checked")){
$(".checkAllDepartment").prop("checked",false);
}
});
$(".checkAllUser").click(function () {
$(".checkBoxUser").prop('checked', $(this).prop('checked'));
getOnlyUsers();
});
$(".checkBoxUser").change(function(){
if (!$(this).prop("checked")){
$(".checkAllUser").prop("checked",false);
}
});
var searchQuery = function() {
setPage(1);
load(false);
}
var paginationData = function(count) {
setLimit(count);
setPage(1);
load();
}
var reloadList = function() {
load();
}
var syncDepartments = function(){
api.group.sync({}, function(success){
if(success){
showSuccess('Threatcop Departments are successfully synched.');
// setTimeout(function() {
load();
// }, 500);
}
}, function(error){
console.log(error);
})
}
function getAllDeptHierarchyData(){
api.group.hierarchyData(undefined,function(success) {
if(success.success == true){
var finalArray = []; var dataObj = {};
success.groups.forEach(function(group) {
if(!dataObj[group.parentId]) dataObj[group.parentId] = [];
dataObj[group.parentId].push(group);
});
finalArray = setTreeJson([], 'p', dataObj[0], dataObj);
loadJsTree(finalArray);
}
});
}
$(document).ready(function(){
load();
});