//WebContent/app/shared/directives/ivModal/ivModalFactory.js angular.module("mt") .factory('ivModalFactory',[function(){ var factory = {}; var modalListeners = {}; var modalContent = { title:"IV", message:"", messageList: [], buttons:[{"title":"OK","callback":null}], counter:0 }; var defaultModal = { "cancel":{ title:"Request Cancelled", message:"Request has been cancelled by requestor.", buttons:[{title:"OK"}] }, "reject":{ title:"Request Rejected", message:"Request has been rejected for CRID/MID Owner denied request.", buttons:[{title:"OK"}] }, "noData":{ title:"No Data", message:"Data is still being processed. Please try again later.", buttons:[{title:"CLOSE"}] }, "success":{ title:"Success", message:"Your request has been submitted successfully.", buttons:[{title:"OK"}] } }; factory.display = function(content){ reset(); if(content){ if(!content.defaultType){ (content.title !== undefined) && (modalContent.title = content.title); (content.message !== undefined) && (modalContent.message = content.message); (content.html !== undefined) && (modalContent.html = content.html); (content.messageList !== undefined) && (modalContent.messageList = content.messageList); (content.buttons !== undefined) && (modalContent.buttons = content.buttons); } else if(defaultModal[content.defaultType]!==undefined){ modalContent.title = content.title||defaultModal[content.defaultType].title; modalContent.message = content.message||defaultModal[content.defaultType].message; modalContent.html = content.html||defaultModal[content.defaultType].html; modalContent.messageList = content.messageList||defaultModal[content.defaultType].messageList; modalContent.buttons = content.buttons||defaultModal[content.defaultType].buttons; } modalContent.counter++; } // update content in the controller for(var _id in modalListeners){ modalListeners[_id].callback(modalContent); } }; function reset(){ modalContent.title = "IV"; modalContent.message = ""; modalContent.html = ""; modalContent.messageList = []; modalContent.buttons = [{"title":"OK","callback":null}]; // but dont't reset counter } factory.registerListener = function(id,callback){ modalListeners[id] = {callback:callback}; }; return factory; }]) .controller('ivModalController',['$scope','ivModalFactory',function($scope,ivModalFactory){ $scope.modalContent = {counter:0}; function newModalContentReceived(content){ $scope.modalContent = angular.copy(content); } ivModalFactory.registerListener('sharedModal',newModalContentReceived); }]) .directive('ivModal', [function(){ return { scope:false, templateUrl:'app/shared/directives/ivModal/ivModal.html', link:function(scope,ele){ scope.$watch('modalContent',function(newValue,oldValue){ if(newValue&&oldValue&&newValue.counter>oldValue.counter){ ele.find('.modal').modal('show'); if(scope.modalContent.buttons){ scope.modalContent.buttons = scope.modalContent.buttons.map(function(b){ b.buttonClass=b.buttonClass||"iv-btn-blue"; return b; }); } if(scope.modalContent.html){ //var cleanHtml = $sce.trustAsHtml(scope.modalContent.html); ele.find('.insert-html-here').html(scope.modalContent.html); } else{ ele.find('.insert-html-here').html(""); } } },true); scope.callBackFn = function(callback){ if(callback){ callback(); } ele.find('.modal').modal('hide'); }; scope.isUrl = function(){ return scope.modalContent &&scope.modalContent.message&&scope.modalContent.message.indexOf("http")>=0; }; } }; }]); ;//WebContent/app/shared/factories/pendingRequestsFactory.js (function(){ /** * @ngdoc service * @name mt.pendingRequestsFactory * @description * This is the factory that httpInterceptor uses to store pending http requests * (those that will display a loading animation) * */ angular.module('mt').factory('pendingRequestsFactory', [function(){ var factory = {}; factory.pendingRequests = []; factory.add = function(request){ factory.pendingRequests.push(request); }; factory.remove = function(request){ factory.pendingRequests.map(function(pendingRequest, idx){ if(pendingRequest.time===request.time){ factory.pendingRequests.splice(idx,1); return false; } }) }; factory.count = function(){ return factory.pendingRequests.length; }; return factory; }]); }()); ;//WebContent/app/components/admin/helpDesk/migrationForm/migrationFormHttpService.js (function(){ angular.module('mt.admin').factory('migrationFormHttpService',['$http','$rootScope','userProfileService',migrationFormHttpService]); function migrationFormHttpService($http,$rootScope,userProfileService){ var factory = {}; factory.formConfig = {}; var root = $rootScope.IVWS_MT; var URL = { "getCompanyDetailByCRID": root + "/externalapi/fetchCompanyUserDetailsByCompanyIds", "getDesiredIVBSAFormURL": root + "/user/getDesiredIvBsaUrl?crid=", "getDesiredMigrationDateFormURL": root + "/user/getMigrationDateUrl?crid=", "getFormConfig":"app/components/admin/helpDesk/migrationForm/formConfig.json", "desiredBSA": root+"/migration/desiredBSA",//"desiredBSA.json", "migrationDate": root+"/migration/migrationDate",//"migrationDate.json", "migrationDateRanges": root +"/dropdown/configMigrationDates" }; //URL.desiredBSA = "app/components/admin/helpDesk/migrationForm/desiredBSA.json"; //URL.migrationDate = "app/components/admin/helpDesk/migrationForm/migrationDate.json"; factory.goToHelp = function(){ location.href = root.replace('/ivws_mt','')+"/#/admin/help"; }; factory.getUrlInfo = function(queryString){ queryString = queryString.substring(1); // get rid of ? var info = {}; var pairs = queryString.split('&'); pairs.forEach(function(pair){ var pairArr = pair.split('='); var key = decodeURIComponent(pairArr[0]); var value = decodeURIComponent(pairArr[1]); info[key] = value; }); // save a copy in the factory var urlInfo = {}; urlInfo.form = info.form; urlInfo.crid = info.crid; urlInfo.validationCode = info.validationCode; if(info.form==='migrationDate'){ urlInfo.imbTracingInd = info.imbTracingInd; urlInfo.containerTrayVisibilityInd = info.containerTrayVisibilityInd; } return urlInfo; }; factory.getExistingForm = function(urlInfo){ var result = {}; // first verify the user input CRID does existing in IV system. var cridUrl = URL.getCompanyDetailByCRID; var body = {}; body = [urlInfo.crid]; return $http.post(cridUrl,body).then(function(responseCRID){ var crid = responseCRID.data; if(crid.length){ // this is a legitimate CIRD input, continue to process as normal var queryString = "?crid="+urlInfo.crid; //if(factory.userProfile.isHelpDeskUser!=='true'){ queryString+="&validationCode="+urlInfo.validationCode; //} var url = URL[urlInfo.form]; return $http.get(url+queryString).then(function(response){ //var result = {}; if(response.data && response.data.success && angular.isArray(response.data.formData)){ result.success = true; result.formData = response.data.formData[0]; urlInfo.validationCode = result.formData.vldtn_code; if(urlInfo.form==='migrationDate'){ urlInfo.imbTracingInd = result.formData.imb_tracing_ind||(result.formData.desired_migration_date_imb_tracing && new Date(result.formData.desired_migration_date_imb_tracing)>0)?true:false; urlInfo.containerTrayVisibilityInd = result.formData.contr_tray_visibility_ind||(result.formData.desired_migration_date_container_tray_visibility&& new Date(result.formData.desired_migration_date_container_tray_visibility)>0)?true:false; result.migUrlLink = result.formData.vldtn_url; } else { result.bsaUrlLink = result.formData.vldtn_url; } if(!result.formData.submitter_first_name){ // this is a required field for all forms, if it's not entered, this form is not filled in, create user is me result.formData.last_updt_user = userProfileService.getUserProfile('helpDeskUserId'); } result.generateURL = null; } else{ result.success = false; result.errorMsg = "Form does not exist for the specified CRID."; result.migUrlLink = null; result.bsaUrlLink = null; result.generateURL = urlInfo.form; result.crid = urlInfo.crid; } return result; }, function failed(){ var result2 = {}; result2.success = false; result2.errorMsg = "Form does not exist for the specified CRID."; return result2; }); } else{ result.success = false; result.errorMsg = "CRID does not exist in IV system."; return result; } }); }; factory.postForm = function(urlInfo,form){ var body = {}; var url = URL[urlInfo.form]; var queryString = "?crid="+urlInfo.crid; //if(factory.userProfile.isHelpDeskUser!=='true'){ queryString+="&validationCode="+urlInfo.validationCode; //} form.forEach(function(_row){ if(_row.validType==="date"){ body[_row.field] = formatDateMMDDYYYY(_row.input); } else{ body[_row.field] = _row.input; } }); console.log('should post ',JSON.stringify(body)); return $http.post(url+queryString,body); }; function formatDateMMDDYYYY(dt){ if(dt){ var year = dt.getFullYear(); var month = dt.getMonth()+1; if(month<10){ month = "0"+month; } var day = dt.getDate(); if(day<10){ day = "0"+day; } return month+""+day+""+year; } else{ return "12311969"; } } factory.getFormConfig = function(){ var url = URL.getFormConfig; // var config = []; // return $http.get(url).then(function(response){ // if(response.data&&response.data[formName]){ // config = response.data[formName]; // } // return config; // }); return $http.get(url,{cache:true}).then(function(response){ factory.formConfig = response.data; }); }; factory.getDesiredMigrationDateFormURL = function(crid){ var url = URL.getDesiredMigrationDateFormURL + crid; return $http.get(url); }; factory.getDesiredIVBSAFormURL = function(crid){ var url = URL.getDesiredIVBSAFormURL + crid; return $http.get(url); }; factory.migrationDateRange = {}; function getMigartionDateRanges(){ var url = URL.migrationDateRanges; //url = "app/components/admin/helpDesk/migrationForm/migrationDateRanges.json"; return $http.get(url).then(function(response){ var m0,d0,y0,m1,d1,y1,m2,d2,y2; m0 = new Date().getMonth(); d0 = new Date().getDate(); y0 = new Date().getFullYear(); if(response.data && response.data.start){ m1 = parseInt(response.data.start.substring(0,2),10)-1; d1 = parseInt(response.data.start.substring(2,4),10); y1 = parseInt(response.data.start.substring(4,8),10); } else{ m1 = 0; d1 = 1; y1 = 2017; } if(response.data && response.data.end){ m2 = parseInt(response.data.end.substring(0,2),10)-1; d2 = parseInt(response.data.end.substring(2,4),10); y2 = parseInt(response.data.end.substring(4,8),10); } else{ m2 = 11; d2 = 31; y2 = 2017; } factory.migrationDateRange = { start:new Date(y0,m0,d0)>new Date(y1,m1,d1)?new Date(y0,m0,d0):new Date(y1,m1,d1), end:new Date(y2,m2,d2,23,59,59) }; console.log('migration date range',factory.migrationDateRange); }); }; getMigartionDateRanges(); return factory; } }()); ;//WebContent/app/components/admin/shared/factories/adminHttpService.js (function(){ /** * @ngdoc service * @name mt.admin.adminHttpService * @requires $http * @description * This service makes AJAX calls to ivws_mt. * */ angular.module('mt.admin').factory('adminHttpService',['$http','$rootScope','$q','utilService',adminHttpService]); function adminHttpService($http,$rootScope,$q,utilService){ var factory = {}; var epcCrids = []; var ppcCrids = []; factory.callImpersonate = {}; factory.getEpsPpccrids = function(){ $rootScope.$broadcast('epsPPCcrids', { eps : epcCrids, ppc : ppcCrids }); } var root = $rootScope.IVWS_MT; $rootScope.env = 'prod'; var URL = { "getEnv": root+"/app/getEnvironment", "getAppConfig": root+"/dropdown/appConfig", "getUserProfile": root + "/user/getUserProfile", "getUserProfileToImpersonate": root + "/user/getUserProfileFromImpersonation?loginName=", "getUpdatedUserProfile": root + "/user/getUpdatedUserProfile", "getHighLevelPermissions": root +"/permissions/getHighLevelPermissions?userId=", "getPermissionsForUser" : root+"/permissions/getPermissionsForUser?userId=", "getVisibilityForUser": root + "/visibility/getVisibilityForUser", "getAllMidsByCrid":root+"/Subscriptions/getAllCridMidPairByCrid?crid=", // still in use // manage R & P by CRID "getRolePermissionByCridDashboard": root +"/permissions/getDashboardForCridPermissions", // manage roles by CRID "getAssignedRolesForCrid": root + "/permissions/getAssignedRolesForCrid?", "assignRolesToUsers": root + "/permissions/assignRolesToUsers", "deleteRoleFromUser": root + "/permissions/deleteRoleFromUser", "getAdminRoles": root + "/permissions/getAdminRoles?crid=", // manage visibility by CRID "getMailObjectType": root +"/visibility/getMailObjectType", "getUsersToAssignVisibility" : root + "/visibility/usersWithVisiblityForCridMidRouting", "assignVisibilityToUsers": root+"/visibility/assignVisibilityToUsers", "deleteVisibilityFromUser": root + "/visibility/deleteVisibilityFromUser", "getAssignedVisibilityForCrid": root + "/visibility/getAssignedVisibilityForCrid?", // manage R & P by User "getDashboardForUserPermissions" : root + "/permissions/getDashboardForUserPermissions", // manage visibility by user "getRoutingCodesToAssignVisibilityByUser": root + "/visibility/getRoutingCodesToAssignVisibilityByUser", "getCridMidToAssignVisibilityByUser": root + "/visibility/getCridMidToAssignVisibilityByUser", "assignVisibilityToUserByUser": root + "/visibility/assignVisibilityToUsers", "getAssignedVisibilityForUser": root + "/visibility/getAssignedVisibilityForUser?userId=", // admin by user "getAutoIncludedDelegatedDataByUser": root + "/visibility/autoDelegationForUser?userId=", "resetToUSPSDefaultPermissions": root+"/permissions/resetPermissions?", "resetToCridDefaultPermissions": root+"/permissions/resetPermissions?", "autoIncludeDelegatedData": root+"/visibility/autoDelegationForUser",//POST "getBsaCridsByUser": root+"/permissions/bsaCrids?userId=", //manager roles by user "getAssignedRolesForUser": root + "/permissions/getAssignedRolesForUser?userId=", "getCridMidToAssignRoleByUser": root + "/permissions/getCridMidToAssignRoleByUser?", "validateCrid" : root + "/user/checkAuthCode", "fetchAccount": root + "/externalapi/custreg?reportId=FETCH_ACCOUNT", "fetchUsers": root + "/externalapi/custreg?reportId=FETCH_USERS", "fetchCompanyUserDetailsByCompanyIds": root + "/externalapi/fetchCompanyUserDetailsByCompanyIds", "fetchCompanyUserDetailsByCompanyName": root + "/externalapi/fetchCompanyUserDetailsByCompanyName", "fetchCompanyUserDetailsByCompanyMid": root + "/externalapi/fetchCompanyUserDetailsByCompanyMid", "fetchAffiliations": root + "/externalapi/custreg?reportId=FETCH_USER_AFFILIATIONS_V2", "grantCridAccess":root + "/externalapi/custreg?reportId=MANAGE_USER_SERVICES", "getBSAInfoByCrid": root + "/user/getBSAInfoByCrid?crid=", "emailAuthCode": root + "/user/sendEmail?type=AuthCode&crid=", // old, may not be used anymore "getDesiredIVBSAFormURL": root + "/user/getDesiredIvBsaUrl?crid=", "emailAuthCodes": root + "/user/sendBsaEmail", // POST "logout": root+"/app/logout", "redirect":root+"/app/redirect", "searchCridByMid":root + "/Subscriptions/SearchByMid?mid=", "getCridWithFullServiceIndicatorForCrids": root+"/Subscriptions/getMyAccessCridWithFullServiceIndicatorForCrids", "getCridsByCompanyName": root + "/externalapi/getCridsByCompanyName", "getCridNames":root+"/Subscriptions/getCridNames", "getMidListByCrids": root + "/user/getMidListByCrids?crids=", //"getMidListByCrid": root + "/user/getMidListByCrid?crid=",// not in use? "fetchUsersByCompanyIds" : root + "/externalapi/fetchUsersByCompanyIds?companyIds=", "fetchUsersByCompanyIdsWithDefaults" : root + "/externalapi/fetchUsersByCompanyIdsWithDefaults?companyIds=", "searchRoutingCodeByRoutingCode": root + "/routing/searchByRoutingCode?routingCode=", "searchRoutingCodeByCridMid": root + "/routing/searchByCridMid?", "updateRoutingCode": root + "/routing/updateImbRouting", "createNewRoutingCode": root+"/routing/createImbRouting", //preferences for "I Need To" panel "retrieveUserPreference": root + "/user/retrieve/", "insertOrUpdateUserPreference": root + "/user/userPreference", "generateAuthCode": root + "/user/generateAuthCode", //my profile tab - my settings "getPreferredEmail": root + "/user/preferredEmail", "sendPreferredEmail": root + "/user/preferredEmail", //help page "getBlueTubeContent": root + "/bluetube/videos", //list of videos "getBlueTubeVideo": root + "/bluetube/videos", //url of one video "getHelpDocuments": root + "/bluetube/pdf", //list of documents //barcode mapping page "getMappingResults": root + "/returnBallot/getMappingResults", "submitBarcodes": root + "/returnBallot/submitBarcodes", "uploadBarcodeFile": root + "/returnBallot/uploadBarcodeFile" }; factory.getEnv = function(){ var url = URL.getEnv; var _env = "prod"; return $http.get(url,null,{cache:true}).then(function(response){ if(response.data.Env){ _env = response.data.Env.toLowerCase(); $rootScope.env = _env; } return _env; }); }; factory.getAppConfig = function(){ var url = URL.getAppConfig; return $http.get(url).then(function(response){ utilService.setAppConfig(response.data); }); }; factory.getUserProfile = function(){ console.log("on page load: "+document.cookie); var url = URL.getUserProfile; var offset = new Date().getTimezoneOffset(); url +="?offset="+offset; // utc offset //url +="&harcodeUserForPerfTesting=1000763374";//1000349011 1000346311 phuyen 1000763412 phuyen //document.cookie = testCookie+"= chocolate chip"+new Date(); var response = $http.get(url); response.then(function(response){ epcCrids = response.data.ListOfEpsCrids; ppcCrids = response.data.ListOfPpcCrids }); return response; }; factory.getHighLevelPermissions = function(userId){ var url = URL.getHighLevelPermissions+userId; //url = "assets/json/roles/highLevelPermissions.json"; return $http.get(url).then(function(res){return res.data;}); }; factory.getAssignedRolesForCrid = function(crid, receivingCrid){ var url = URL.getAssignedRolesForCrid+"crid="+crid; if(receivingCrid!==crid){ url+="&receivingCrid="+receivingCrid; } return $http.get(url).then(function(res){return res.data;}); }; factory.getCridWithFullServiceIndicatorForCrids = function(crids){ return $http.post(URL.getCridWithFullServiceIndicatorForCrids, crids).then(function(res){return res.data;}); }; factory.getPermissionsForUser = function(userId){ if(userId){ var url = URL.getPermissionsForUser+userId; //url = "assets/json/roles/permissionsForUser.json"; return $http.get(url).then(function(res){return res.data;}); } else{ var url = URL.getPermissionsForUser; return $http.get(url).then(function(res){return res.data;}); } }; //TODO: remove later factory.getRolePermissionConfig = function(){ var url = URL.getRolePermissionConfig; //url = "assets/json/roles/getAllAdminRoles.json"; return $http.get(url,{cache:true}).then(function(response){ return response.data&&response.data.adminRoles?response.data.adminRoles:[]; }); }; //TODO: remove later factory.getUserAdminRoles = function(userId){ var url = URL.getUserAdminRoles+"?userId="+userId; console.log("getting admin roles of user "+userId); //url = "assets/json/roles/viewMyAdminPermissions.json"; return $http.get(url).then(function(response){ return response.data&&response.data.adminPermissions?response.data.adminPermissions:[]; }); }; factory.getUserVisibilityPermissions = function(userId){ var url = URL.getUserVisibilityPermissions+"?userId="+userId; console.log("getting visibility permissions of user "+userId); //url = "assets/json/roles/viewMyVisibilityPermissions.json"; return $http.get(url).then(function(response){ return response.data&&response.data.visibilityPermissions?response.data.visibilityPermissions:[]; }); }; factory.getAllMidsByCrid = function(crid){ var url = URL.getAllMidsByCrid+crid; //url = root+"/Subscriptions/getMyAccessCridMidPairByCrid?crid="+crid; return $http.get(url); }; factory.getCridMidToAssignRoleByUser = function(userId, roleId){ var userString = "userId=" + userId; var roleString = "&roleId=" + roleId; var url = URL.getCridMidToAssignRoleByUser+userString+roleString; return $http.get(url).then(function(res){return res.data;}); }; factory.getUsersByRoleCridMid = function(finalSelection){ var cridQuery="crid="+finalSelection.crid; var midQuery = finalSelection.mid.length?"&mid="+finalSelection.mid.join(','):""; var roleQuery = "&role="+finalSelection.role; var url = URL.getUsersByRoleCridMid+cridQuery+midQuery+roleQuery; //url = "assets/json/roles/users.json"; //url = "assets/json/roles/viewRolesForUsers.json"; console.log('should call WS to get assgined/unassigned users with ',finalSelection); return $http.get(url).then(function(response){ return response.data?response.data:{}; }); }; factory.updateAdminPermissions = function(finalSelection,userList){ var url = URL.updateAdminPermissions; var body = { assignedUsers:userList.assignedUserList, unassignedUsers:userList.unassignedUserList, crid:finalSelection.crid, mids:finalSelection.mid, role:finalSelection.role }; console.log('update user admin permissions with',finalSelection,userList); return $http.post(url,body); }; factory.getUsersToUpdateiVisibilityPermissions = function(finalList,scanTypes){ var url = URL.getUsersToUpdateiVisibilityPermissions; url = "assets/json/roles/users.json"; console.log('should call WS to get assgined/unassigned users with ',finalList,scanTypes); return $http.get(url).then(function(response){ return response.data?response.data:{}; }); }; factory.updateVisibilityPermissions = function(finalList,scanTypes,userList){ console.log('update user visibility permissions with',finalList,scanTypes,userList); }; factory.fetchAccount = function(selectedUser){ var url = URL.fetchAccount; var body = {loginName:selectedUser}; return $http.post(url,body).then(function(response){ var account = {}; // null means user not found if(response.data.result&&response.data.result.outputData&&response.data.result.outputData.account){ account.accountId = response.data.result.outputData.account.accountInfo.accountId; account.loginName = response.data.result.outputData.account.accountInfo.loginName; account.title = response.data.result.outputData.account.accountInfo.accountName.title; account.firstName = response.data.result.outputData.account.accountInfo.accountName.firstName; account.lastName = response.data.result.outputData.account.accountInfo.accountName.lastName; account.email = response.data.result.outputData.account.contactInfo.email; account.phones = response.data.result.outputData.account.contactInfo.phones; } else{ account = null; } return account; }); }; factory.fetchUsers = function(body){ if(body.companyName){ return factory.fetchUsersByCompanyName(body); } else{ var url = URL.fetchUsers; return $http.post(url,body).then(function(response){ var users = []; if(response.data.result&&response.data.result.outputData&&response.data.result.outputData.users&&response.data.result.outputData.users.user){ users = response.data.result.outputData.users.user; } return users; }); } }; factory.fetchCompanyUserDetails = function(searchBy,body){ var url = URL.fetchCompanyUserDetailsByCompanyName; if(searchBy==="companyMid"){ url = URL.fetchCompanyUserDetailsByCompanyMid; } else if(searchBy==="companyId"){ url = URL.fetchCompanyUserDetailsByCompanyIds; body = [body.companyId]; } return $http.post(url,body); }; factory.fetchUsersByCompanyName = function(body){ var url = URL.getCridsByCompanyName; return $http.post(url,body).then(function(response){ var crids = response.data&&response.data.result?response.data.result:[]; var requests = crids.map(function(_crid){ return factory.fetchUsers({companyId:_crid}); }); return $q.all(requests).then(function(user2DArr){ var allUsers = []; user2DArr.forEach(function(userArr){ allUsers = allUsers.concat(userArr); }); return allUsers; }); }); }; factory.grantCridAccess = function(crid){ var url = URL.grantCridAccess; var body = {companyId:crid}; return $http.post(url,body); }; factory.fetchAffiliations = function(selectedUser){ var url = URL.fetchAffiliations; var body = {loginName:selectedUser}; return $http.post(url,body).then(function(response){ var affiliations = []; // null means user not found if(response.data.result&&response.data.result.outputData&&response.data.result.outputData.affiliationsV2&&response.data.result.outputData.affiliationsV2.affiliationV2){ response.data.result.outputData.affiliationsV2.affiliationV2.forEach(function(a){ var affiliation = {}; affiliation.companyName = a.company.companyInfo.companyName; affiliation.companyCrid = a.company.companyInfo.companyCrid; affiliations.push(affiliation); }); } else{ affiliations = null; } return affiliations; });; }; factory.getCridNames = function(crids){ //console.log("getting names for crids", crids); if(crids&&crids.length){ return $http.post(URL.getCridNames,crids); } else{ var deferred = $q.defer(); deferred.resolve([]); return deferred.promise; } }; factory.getMidListByCrid = function(crid){ var url = URL.getMidListByCrid+crid; return $http.get(url).then(function(res){return res.data;}); }; factory.getMidListByCrids = function(crids){ var url = URL.getMidListByCrids+crids; return $http.get(url); }; factory.fetchUsersByCompanyIds = function(cridList){ if(cridList instanceof Array){ var url = URL.fetchUsersByCompanyIds + cridList.join(","); } else{ var url = URL.fetchUsersByCompanyIds + cridList.toString(); } return $http.get(url); }; factory.fetchUsersByCompanyIdsWithDefaults = function(crid, delegatedCrid){ var url = URL.fetchUsersByCompanyIdsWithDefaults + crid.toString() +"&delegatedCrid=" +delegatedCrid.toString(); return $http.get(url); }; /******************** * Params (object role, array midList, array userList) * */ factory.assignRolesToUsers = function(role, midList, userList, crid, receivingCrid){ var url = URL.assignRolesToUsers; if(receivingCrid!==crid || receivingCrid !== '-1'){ var body = { role:{id:role}, crid:crid, mids:midList, users:userList, receivingCrid:receivingCrid }; } else{ var body = { role:{id:role}, crid:crid, mids:midList, users:userList }; } return $http.post(url, body); }; factory.assignRolesByUser = function(role, assignedCridMid, users){ var url = URL.assignRolesToUsers; var body = { role:{id:role.id}, assignedCridMid: assignedCridMid, users:users }; return $http.post(url, body); }; factory.deleteRoleFromUser = function(role, mid, user, crid, receivingCrid){ var url = URL.deleteRoleFromUser; if(receivingCrid!==crid && receivingCrid !== '-1'){ var body = { role:role, crid:crid, mid:mid.mid, user:user.userId, receivingCrid:receivingCrid }; } else{ var body = { role:role, crid:crid, mid:mid.mid, user:user.userId }; } return $http.post(url, body); }; factory.getAdminRoles = function(){ var url = URL.getAdminRoles; return $http.get(url); }; factory.searchCridByMid = function(mid){ var url = URL.searchCridByMid + ""+mid+""; // no fuzzy search? return $http.get(url).then(function(response){ if(response.data&&response.data.length){ return response.data[0].crid; } else{ return null; } }); }; factory.getUserProfileToImpersonate = function(selectedUser, crid){ var url = URL.getUserProfileToImpersonate; url +=selectedUser; url +="&companyId="+crid var response = $http.get(url); response.then(function(response){ epcCrids = response.data.ListOfEpsCrids; ppcCrids = response.data.ListOfPpcCrids }); return response; }; factory.getUpdatedUserProfile = function(){ // WS wants to trigger a "profile update", but UI actually doesn't need it because UI made the change var url = URL.getUpdatedUserProfile; return $http.get(url,null,{silentCall:true}); } factory.validateCrid = function(cridInput){ var url = URL.validateCrid; var body = {crid:cridInput.crid,authCode:cridInput.code}; // url = "assets/json/BSAcredential.json"; // return $http.get(url).then(function(response){ // return (response.data.credential===cridInput.code); // }); return $http.post(url,body,{silentCall:true}); }; factory.getBSAInfoByCrid = function(crid){ var url = URL.getBSAInfoByCrid + crid; return $http.get(url); }; factory.emailAuthCodes = function(crids){ // POST var url = URL.emailAuthCodes; var body = {crids : crids}; return $http.post(url, body); // var url = "assets/json/emailDesiredBSA.json"; // test only // return $http.get(url); // test only }; factory.getDesiredIVBSAFormURL = function(crid){ var url = URL.getDesiredIVBSAFormURL + crid; return $http.get(url); } factory.emailAuthCode = function(crid){ var url = URL.emailAuthCode + crid; return $http.get(url); }; factory.logout = function(){ var ivws_mt = URL.redirect; var logoutCustReg = "https://reg.usps.com/logout?app=INFORMED_VISIBILITY&appURL=" + ivws_mt; factory.getEnv().then(function(env){ if(env==='aws'||env==='dev'){ logoutCustReg = "https://devpx-custreg.usps.com/logout?app=INFORMED_VISIBILITY&appURL=" + ivws_mt; } else if(env==='sit'){ logoutCustReg = "https://sitpx-custreg.usps.com/logout?app=INFORMED_VISIBILITY&appURL=" + ivws_mt; } else if(env==='cat'){ logoutCustReg = "https://catpx-custreg.usps.com/logout?app=INFORMED_VISIBILITY&appURL=" + ivws_mt; } else{ logoutCustReg = "https://reg.usps.com/logout?app=INFORMED_VISIBILITY&appURL=" + ivws_mt; } // console.log("before delete: "+document.cookie); deleteCookie('JSESSIONID'); deleteCookie('LtpaToken2'); deleteCookie('EntRegName'); deleteCookie('EntReg'); deleteCookie('EntRegEX'); deleteCookie('EntRegPrefs'); var url = URL.logout; $http.get(url,{silentCall:true}).then(function(){ location.href = logoutCustReg; }); }); }; function removeDupe(arr){ var result = []; arr.forEach(function(a){ if(result.indexOf(a)<0){ result.push(a); } }); return result; } factory.searchRoutingCodeByRoutingCode = function(routingCode){ var url = URL.searchRoutingCodeByRoutingCode + routingCode; console.log('should search with',url); //url = "assets/json/routingCode/user.searchByRouting.json"; return $http.get(url).then(function(response){ var result = response.data; if(result.routingMatch){ result.routingMatch = result.routingMatch.map(function(r){ r.rteg_code_list = removeDupe(r.rteg_code_list); return r; }); } return result; }); }; factory.searchRoutingCodeByCridMid = function(cridMid,includeMidFlag){ var queryString = includeMidFlag? "crid=":"cridMid="; var url = URL.searchRoutingCodeByCridMid + queryString + cridMid; //url = "assets/json/routingCode/user.MappedRoutingCodes.json"; return $http.get(url).then(function(response){ var result = response.data; if(result.cridMatch){ result.cridMatch.rteg_code_list = removeDupe(result.cridMatch.rteg_code_list); } if(result.midMatchIndividual){ result.midMatchIndividual.rteg_code_list = removeDupe(result.midMatchIndividual.rteg_code_list); } if(result.midMatchAll){ result.midMatchAll.rteg_code_list = removeDupe(result.midMatchAll.rteg_code_list); } return result; }); }; factory.updateRoutingCode = function(body){ var url = URL.updateRoutingCode; console.log('should update with',JSON.stringify(body)); return $http.post(url,body); }; factory.createNewRoutingCode = function(cridMidRouting){ var url = URL.createNewRoutingCode; var body = {}; body.crid = cridMidRouting.crid?cridMidRouting.crid:"-1"; body.mid = cridMidRouting.mid?cridMidRouting.mid:"-1"; body.rteg_code_list = [cridMidRouting.routing]; console.log('should update with',JSON.stringify(body)); return $http.post(url,body); }; function deleteCookie( name ) { document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } factory.getRolePermissionByCridDashboard = function(){ var url = URL.getRolePermissionByCridDashboard; //url ="assets/json/visibility/dashboard.json"; return $http.get(url).then(function(response){ return response.data.map(function(c1){ c1.companyName = c1.companyName || "Unknown"; c1.delegators = c1.delegators.map(function(c2){ c2.companyName = c2.companyName || "Unknown"; return c2; }); return c1; }); }); }; factory.getMailObjectType = function(receivingCrid,crid){ var url = URL.getMailObjectType+"?crid="+crid; if(receivingCrid!==crid){ url+="&receivingCrid="+receivingCrid; } //url = "assets/json/visibility/getMailObjectType.json"; function scanTypeOrder(s){ var order = ["CS",'TS','BS','PS']; return order.indexOf(s); } function eventTypeOrder(s){ var order = ["A",'L','AA','AL']; return order.indexOf(s); } return $http.get(url).then(function(response){ var data = response.data; data = data.map(function(d1){ d1.mail_event_type = d1.mail_event_type.map(function(d2){ var d3 = { value:d2.id, text:d2.name }; return d3; }); d1.mail_event_type.sort(utilService.sortJson('value',null,eventTypeOrder)); var d4 = { value:d1.id, text:d1.name, mail_event_type:d1.mail_event_type }; return d4; }); data.sort(utilService.sortJson('value',null,scanTypeOrder)); return data; }); }; factory.getUsersToAssignVisibility=function(receivingCrid,crid,mailObject,midSelection,routingSelection){ var url = URL.getUsersToAssignVisibility; var body = {}; body.receiving_crid = receivingCrid===crid?"-1":receivingCrid; body.crid = crid; body.mailObjectTypes = mailObject; body.midList = midSelection.allFlag?["-1"]:midSelection.mids; body.routingList = routingSelection.allFlag?["-1"]:routingSelection.routing; //url = "assets/json/visibility/usersWithVisiblityForCridMidRouting.json"; console.log("should get users to assign visibility with",body); return $http.post(url,body).then(function(response){ var result = {}; result.leftList = response.data.unassignedUserList.map(function(d){ d.value = d.userId; d.text = d.firstName + " "+d.lastName; d.partialFlag = d.partialAssignedUserFlag; d.className = d.defaultUserFlag?"top-bold":""; return d; }); result.rightList = response.data.assignedUserList.map(function(d){ d.value = d.userId; d.text = d.firstName + " "+d.lastName; d.fixed = true; d.className = d.defaultUserFlag?"top-bold":""; return d; }); return result; }); }; factory.visibilityByCridTableListener = {}; factory.visibilityByUserTableListener = {}; factory.assignVisibilityToUsers = function(receivingCrid,crid,mailObject,midSelection,routingSelection,userSelection){ var url = URL.assignVisibilityToUsers; var body = {}; body.receiving_crid = receivingCrid===crid?"-1":receivingCrid; body.crid = crid; body.mailObjectTypes = mailObject; body.midList = midSelection.allFlag?["-1"]:midSelection.mids; body.routingList = routingSelection.allFlag?["-1"]:routingSelection.routing; body.assignedUsers = userSelection.map(function(u){return u.value;}); console.log("should assign visiblity with",body); return $http.post(url,body).then(function(){ factory.visibilityByCridTableListener.callback&&factory.visibilityByCridTableListener.callback('add'); }); }; factory.deleteVisibilityFromUser = function(receivingCrid,crid, userRow){ var url = URL.deleteVisibilityFromUser; var body = {}; body.receivingCrid = receivingCrid; body.crid = crid; body.mailObjectType = {id:userRow.scanType}; body.mailEventType = {id:userRow.eventType}; body.mid = userRow.mid; body.rteg_code = userRow.routing; body.user = {userId:userRow.user}; console.log("should delete visiblity with",body); return $http.post(url,body); }; factory.getAssignedVisibilityForCrid = function(receivingCrid,crid){ var url = URL.getAssignedVisibilityForCrid+"crid="+crid; if(receivingCrid!==crid){ url+="&receivingCrid="+receivingCrid; } //url = "assets/json/visibility/getAssignedVisiblityForCrid.json"; return $http.get(url).then(function(response){ return _flattenVisibility(response.data); // flatten the array for easy re-arrange and sorting }); }; factory.getVisibilityForUser = function(userId){ var url = URL.getVisibilityForUser; var body = {}; body.userId = userId; //url = "assets/json/visibility/getVisibilityForUser2.json"; return $http.post(url, body).then(function(response){return response.data;}); }; factory.getVisibilityMidList = function(userId, listAllMidsFlag){ var url = URL.getVisibilityForUser + userId; var body = {}; body.userId = userId; body.listAllMidsFlag = listAllMidsFlag; return $http.body(url, body).then(function(response){return response.data;}); } factory.getDashboardForUserPermissions = function(){ var url = URL.getDashboardForUserPermissions; //url = "assets/json/byUser/getDashboardForUserPermissions.json"; return $http.get(url).then(function(res){return res.data;}); }; factory.getAssignedRolesForUser = function(userId){ var url = URL.getAssignedRolesForUser+userId; return $http.get(url).then(function(res){return res.data;}); }; factory.getRoutingCodesToAssignVisibilityByUser = function(userInfo,mailObject){ var url = URL.getRoutingCodesToAssignVisibilityByUser; //url = "assets/json/byUser/getRoutingCodesToAssignVisibilityByUser.json"; var body = {}; body.userId = userInfo.userId; body.mailObjectTypes = mailObject; console.log("should get routing codes to assign visibility by user with body",body); return $http.post(url,body).then(function(res){return res.data;}); }; factory.getCridMidToAssignVisibilityByUser = function(userInfo,mailObject, filterFlag, filterDelegationsOnObjectType){ var url = URL.getCridMidToAssignVisibilityByUser; //url = "assets/json/byUser/getCridMidToAssignVisibilityByUser.json"; var body = {}; body.userId = userInfo.userId; body.mailObjectTypes = mailObject; if(filterFlag){ body.skipFilterInd = filterFlag; } if(filterDelegationsOnObjectType){ body.filterDelegationsOnObjectType = filterDelegationsOnObjectType; } console.log("should get crid mid to assign visibility by user with body",body); return $http.post(url,body).then(function(res){return res.data;}); }; factory.assignVisibilityToUserByUser = function(userInfo,mailObject,cridMidRoutingSelection){ var url = URL.assignVisibilityToUserByUser; var body = {assignedCridMidRouting:cridMidRoutingSelection,mailObjectTypes:mailObject,assignedUsers:[userInfo.userId]}; console.log("should assign visibility to user with body",body); // tell visibility by user table to refresh return $http.post(url,body).then(function(){ factory.visibilityByUserTableListener.callback&&factory.visibilityByUserTableListener.callback('add'); }); }; factory.getAssignedVisibilityForUser = function(userInfo){ var url = URL.getAssignedVisibilityForUser + userInfo.userId; //url = "assets/json/byUser/getAssignedVisibilityForUser.json"; return $http.get(url).then(function(response){ return _flattenVisibility(response.data); }); }; factory.getAutoIncludedDelegatedDataByUser = function(userId){ var url = URL.getAutoIncludedDelegatedDataByUser+userId; //url = "assets/json/byUser/getAutoIncludedDelegatedDataByUser.json"; return $http.get(url).then(function(res){ return res.data.filter(function(_c){return _c.autoDelegate}) .map(function(_c){return _c.crid}); }); }; factory.getBsaCridsByUser = function(userId){ var url = URL.getBsaCridsByUser+userId; // var deferred = $q.defer(); // deferred.resolve(["20480607"]); // return deferred.promise; return $http.get(url).then(function(res){return res.data;}); }; factory.resetToDefaultPermissions = function(resetType,userId,crids){ var url = resetType==="USPS"?URL.resetToUSPSDefaultPermissions: URL.resetToCridDefaultPermissions; url += "userId="+userId; var requests = crids.map(function(_crid){ return $http.post(url+"&crid="+_crid.crid+"&receivingCrid="+_crid.receivingCrid); }); return $q.all(requests); }; factory.autoIncludeDelegatedData = function(userId,body){ var url = URL.autoIncludeDelegatedData; return $http.post(url,body); }; factory.retrieveUserPreference = function(preferenceName){ var url = URL.retrieveUserPreference+preferenceName; return $http.get(url); } factory.generateAuthCode = function(crid){ var url = URL.generateAuthCode; var body = {crid: crid}; return $http.post(url,body); } factory.insertOrUpdateUserPreference = function(preferenceValue){ var url = URL.insertOrUpdateUserPreference; var body = { expanded_sections: preferenceValue }; return $http.post(url, body); } factory.getPreferredEmail = function(userId){ var url = URL.getPreferredEmail+"/"+userId; return $http.get(url); } factory.sendPreferredEmail = function(userId, email){ var url = URL.sendPreferredEmail; var body = {}; body.userId = userId; body.email = email; console.log("body", body); return $http.post(url, body); } factory.getBlueTubeContent = function(){ var url = URL.getBlueTubeContent; return $http.get(url).then(function(res){return res.data;}); } factory.getBlueTubeVideo = function(id){ var url = URL.getBlueTubeVideo+"/"+id; return url; } factory.getHelpDocumentList = function(){ var url = URL.getHelpDocuments; return $http.get(url).then(function(res){return res.data;}); } factory.getMappingResults = function(){ var url = URL.getMappingResults; return $http.get(url, {silentCall:true}).then(function(res){return res.data;}); } factory.sendBarcodes = function(data, type){ var timeOffset = ((new Date()).getTimezoneOffset()/60)*-1; //sending in timezone info so filename result will contain user's correct time if(type === "list"){ var url = URL.submitBarcodes; var body = data; return $http.post(url, body, { headers: {'time-zone': timeOffset} }); } else if(type === "file"){ var url = URL.uploadBarcodeFile; var body = data; return $http.post(url,body, { transformRequest: angular.identity, headers: {'Content-Type': undefined, 'time-zone': timeOffset} //content-type changes to send entire file }); } } function _flattenVisibility(arr){ var flatArray = []; arr.forEach(function(d){ if(d.enabldFlg!==undefined && d.enabldFlg!==null){ d.user.enabldFlg = d.enabldFlg; // put this on user field } if(d.autoDelegatedFlg!==undefined && d.autoDelegatedFlg!==null){ d.user.autoDelegatedFlg = d.autoDelegatedFlg; // put this on user field } if(d.uspsDefault!==undefined && d.uspsDefault!==null){ d.user.uspsDefault = d.uspsDefault; // put this on user field } if(d.cridDefault!==undefined && d.cridDefault!==null){ d.user.cridDefault = d.cridDefault; // put this on user field } if(d.mid){ flatArray.push({ mid:d.mid, rteg_code:"", mail_object_type_id:d.mailObjectType.id, mail_object_name:d.mailObjectType.name, mail_event_type_id:d.mailEventType.id, mail_event_name:d.mailEventType.name, user:d.user, crid:d.crid, receivingCrid:d.receivingCrid, crid_crid: d.crid+"_"+d.receivingCrid }); } if(d.rteg_code){ flatArray.push({ mid:"", rteg_code:d.rteg_code.split('"').join(""), mail_object_type_id:d.mailObjectType.id, mail_object_name:d.mailObjectType.name, mail_event_type_id:d.mailEventType.id, mail_event_name:d.mailEventType.name, user:d.user, crid:d.crid, receivingCrid:d.receivingCrid, crid_crid: d.crid+"_"+d.receivingCrid }); } }); return flatArray; } return factory; } }()); ;//WebContent/app/components/admin/shared/factories/userProfileService.js (function(){ /* * @ngdoc * @name mt.admin.service:userProfileService * @description * this factory decides what tabs user have access to based on user role * */ angular.module('mt.admin').factory('userProfileService',['adminHttpService','$q','utilService',userProfileService]); function userProfileService(adminHttpService,$q,utilService){ var factory = {}; // UI code calls permission with different names, easy to remember/shorter var permissionMap = { "viewInWeb":"SUBSCRIPTION_VIEW", "download":"SUBSCRIPTION_VIEW", "sendToAddress":"SUBSCRIPTION_CREATE", "createFeed":"SUBSCRIPTION_CREATE", "viewFeed":"SUBSCRIPTION_VIEW", "updateFeed":"SUBSCRIPTION_EDIT", "deleteFeed":"SUBSCRIPTION_EDIT", // no delete? "requestDelegation":"DATA_DELEGATION_REQUEST", "viewDelegation":"DATA_DELEGATION_VIEW", "cancelDelegation":"DATA_DELEGATION_EDIT", "approveDelegation":"DATA_DELEGATION_APPROVE", "rejectDelegation":"DATA_DELEGATION_APPROVE", // no reject? "updateDelegation":"DATA_DELEGATION_EDIT", "authorize":"DATA_DELEGATION_ASSIGN", "createServer":"ADDR_BOOK_CREATE", "updateServer":"ADDR_BOOK_EDIT", "deleteServer":"ADDR_BOOK_EDIT", // no delete? "viewServer":"ADDR_BOOK_VIEW", "createContact":"ADDR_BOOK_CREATE", "updateContact":"ADDR_BOOK_EDIT", "deleteContact":"ADDR_BOOK_EDIT", "viewContact":"ADDR_BOOK_VIEW", "createAdminPermissions":"ADMIN_PERMISSIONS_CREATE", "deleteAdminPermissions":"ADMIN_PERMISSIONS_DELETE", "viewAdminPermissions":"ADMIN_PERMISSIONS_VIEW", "createCompanyReport":"COMPANY_RPT_CREATE", "updateCompanyReport":"COMPANY_RPT_EDIT", "deleteCompanyReport":"COMPANY_RPT_DELETE", "viewCompanyReport":"COMPANY_RPT_VIEW", "createUserReport":"USER_RPT_CREATE", "updateUserReport":"USER_RPT_EDIT", "deleteUserReport":"USER_RPT_DELETE", "viewUserReport":"USER_RPT_VIEW" }; var userProfile; var highLevelAdminPermissions = []; // based on my high level role, what permissions I have var adminPermissionsByCridMid = {}; // permissions grouped by crid/mid (for normal cases) var rpPermissionByCridReceivingCrid; // permissions grouped by crid/mid (for r&p permission case) var fullServiceInds={}; var visibilityPermissions = {}; factory.getHightLevelAdminPermissions = function(){ return highLevelAdminPermissions; }; factory.getAdminPermissionsByCridMid = function(){ return adminPermissionsByCridMid; }; factory.visibilityPermissions = function(){ return visibilityPermissions; }; factory.setUserProfile = function(data){ userProfile = data; // userProfile.ListOfUserValidatedCrids = userProfile.ListOfUserValidatedCrids.concat(userProfile.ListOfBSAValidatedCrids); // userProfile.ListOfBSAValidatedCrids = []; // userProfile.bsaAccess = false; console.log("set user profile to be ",userProfile); // clear permissions highLevelAdminPermissions = []; adminPermissionsByCridMid = {}; visibilityPermissions = {}; fullServiceInds={}; rpPermissionByCridReceivingCrid = {}; }; factory.setPermissions = function(userProfile){ var requests = []; if(!userProfile.noAccess){ requests.push(adminHttpService.getHighLevelPermissions(userProfile.userId).then(function(response){ highLevelAdminPermissions = response; })); requests.push(adminHttpService.getPermissionsForUser(userProfile.userId).then(function(response){ adminPermissionsByCridMid = response; })); return $q.all(requests); } else{ highLevelAdminPermissions = []; adminPermissionsByCridMid = {}; var deferred = $q.defer(); deferred.resolve(highLevelAdminPermissions); return deferred.promise; } }; factory.getUserProfile = function(field){ return field!==undefined? userProfile[field]:userProfile; }; factory.isBSA = function(crid){ if(crid){ // is user a bsa of this crid? return userProfile.ListOfBSAValidatedCrids.indexOf(crid)>=0; } else{ // is user a bsa of any crid? return userProfile.bsaAccess; } }; factory.getAccessOverlap = function(task,cridList,looseFlag){ // given a list of crids, do I have access to one of them? var myCrids = factory.getCridsBasedOnPermission(task,looseFlag); return utilService.intersection(myCrids,cridList).length>0; }; factory.getAccess = function(task,crid,mid,looseFlag){ // normal access throughout the app, excluding r&p manager (use function below) var access = false; var permission = permissionMap[task]; if(!crid && !mid){ // didn't specify which crid/mid, treat as high level if(permission){ access = factory.isBSA()||highLevelAdminPermissions.indexOf(permission)>=0; } else{ access = factory.isBSA(); // don't recognize this task, need to be BSA to do it } } else{ // assume crid is always present if(!looseFlag){ if(!mid||mid.length===0||mid==="ALL"){ mid = "-1"; } if(permission){ var cridAccess = adminPermissionsByCridMid[crid]&&adminPermissionsByCridMid[crid]["-1"]?adminPermissionsByCridMid[crid]["-1"].indexOf(permission)>=0:false; var midAccess = adminPermissionsByCridMid[crid]&&adminPermissionsByCridMid[crid][mid]?adminPermissionsByCridMid[crid][mid].indexOf(permission)>=0:false; access = factory.isBSA(crid)||cridAccess||midAccess; } else{ access = factory.isBSA(crid); // don't recognize this task, need to be BSA to do it } } else{ // loose access, means that if I have access for one mid of this crid, I have access if(permission){ for(_mid in adminPermissionsByCridMid[crid]){ if(_mid!=="receiving_crid"){ access = access || adminPermissionsByCridMid[crid][_mid].indexOf(permission)>=0; } } access = access || factory.isBSA(crid); } else{ access = factory.isBSA(crid); // don't recognize this task, need to be BSA to do it } } } return access; }; // factory.getRolePermissionByCridDashboard = function(){ // // called from byCridDahsboardController, to avoid duplicate WS call to this "heavy" endpoint // var deferred = $q.defer(); // if(rpPermissionCridDashboardData){ // deferred.resolve(rpPermissionCridDashboardData); // return deferred.promise; // } // else{ // return adminHttpService.getRolePermissionByCridDashboard(); // } // }; // factory.getRpPermission = function(){ // use r p managment by crid dashboard data to construct rpPermissionByCridReceivingCrid // keyed by crid_receivingCrid // called from rolePermissionManagementController, before the byCridController return adminHttpService.getRolePermissionByCridDashboard().then(function(result){ var rpPermissionCridDashboardData = angular.copy(result); // save crid dashboard data, avoid multiple WS calls rpPermissionByCridReceivingCrid = {}; var _crid; var _receivingCrid; result.forEach(function(r){ _crid = r.crid; _receivingCrid = "-1"; rpPermissionByCridReceivingCrid[_crid+"_"+_receivingCrid] = { mids:r.mids, allMidsFlag:r.allMidsFlag }; r.delegators.forEach(function(d){ _crid = d.crid; _receivingCrid = d.receivingCrid; rpPermissionByCridReceivingCrid[_crid+"_"+_receivingCrid] = { mids:d.mids, allMidsFlag:d.allMIdsFlag // typo from WS? }; }); }); console.log("user r&p manager by crid_receivingCrid",rpPermissionByCridReceivingCrid); return rpPermissionCridDashboardData; }); } factory.hasRPAccess = function(entity){ // if current user has role permission access to this entity //rpPermissionByCridReceivingCrid should already be set var access = false; var crid = entity.crid; //required var receivingCrid = entity.receivingCrid || "-1"; // required var mid = entity.mid; var routing = entity.routing; var crid_crid = crid+"_"+receivingCrid; // combo key for rpPermissionByCridReceivingCrid if(receivingCrid==="-1" && factory.isBSA(crid)){ return true; } else{ var cridAccess; var midAccess; // case 1, checking if session user is r&p manager for crid/receiving crid at specific mid level if(mid&&mid!=="-1"){ cridAccess= rpPermissionByCridReceivingCrid[crid_crid]&&rpPermissionByCridReceivingCrid[crid_crid].allMidsFlag; midAccess = rpPermissionByCridReceivingCrid[crid_crid]&&rpPermissionByCridReceivingCrid[crid_crid].mids&&rpPermissionByCridReceivingCrid[crid_crid].mids.indexOf(mid)>=0; return cridAccess||midAccess; } // case 2, checking if session user is r&p manager for crid/receiving crid at any crid/mid (routing is loose) else if(routing){ //cridAccess = rpPermissionByCridReceivingCrid[crid_crid];// a "loose" crid level access //return cridAccess; // do not trust cridDashboardData for user's own crid, it can be present because user has rp access to a delegated crid return factory.getAccess("createAdminPermissions",crid,"",true); } // case 3, checking if session user is r&p manager for crid/receiving crid at crid level else{ cridAccess= rpPermissionByCridReceivingCrid[crid_crid]&&rpPermissionByCridReceivingCrid[crid_crid].allMidsFlag; return cridAccess; } return access; } }; factory.getMidsBasedOnPermission = function(task,crid){ // returns a promise, because the "-1" case require an http call to get actual mids var permission = permissionMap[task]; if(userProfile.ListOfBSAValidatedCrids.indexOf(crid)>=0){ return adminHttpService.getAllMidsByCrid(crid).then(function(response){return utilService.removeDupe(response.data,'mid');}); } else if(permission){ var deferred = $q.defer(); var tempMids = []; if(adminPermissionsByCridMid[crid]){ // I have admin permission on this crid for(mid in adminPermissionsByCridMid[crid]){ if(mid!=="receiving_crid"&&adminPermissionsByCridMid[crid][mid].indexOf(permission)>=0&&tempMids.indexOf(mid)<0){ // this mid has this permission tempMids.push(mid); } } } if(tempMids.indexOf("-1")>=0){ // the "-1" mid has permission, return all mids return adminHttpService.getAllMidsByCrid(crid).then(function(response){return utilService.removeDupe(response.data,'mid');}); } else{ deferred.resolve(tempMids.map(function(m){ return {crid:crid,mid:m}; // to be consistent with the data structure })); return deferred.promise; } } }; factory.getMidsBasedOnPermissionSync = function(task,crid){ // returns a promise, because the "-1" case require an http call to get actual mids var permission = permissionMap[task]; if(userProfile.ListOfBSAValidatedCrids.indexOf(crid)>=0){ return "-1"; } else if(permission){ var tempMids = []; if(adminPermissionsByCridMid[crid]){ // I have admin permission on this crid for(mid in adminPermissionsByCridMid[crid]){ if(mid!=="receiving_crid"&&adminPermissionsByCridMid[crid][mid].indexOf(permission)>=0&&tempMids.indexOf(mid)<0){ // this mid has this permission tempMids.push(mid); } } } if(tempMids.indexOf("-1")>=0){ // the "-1" mid has permission, return all mids return "-1"; } else{ return tempMids; } } }; factory.getEpsCrids = function(){ var epsCrids = factory.getUserProfile('ListOfEpsCrids'); return epsCrids; } factory.getPpcCrids = function(){ var ppcCrids = factory.getUserProfile('ListOfPpcCrids'); return ppcCrids; } factory.getCridsBasedOnPermission = function(task,looseFlag){ // "permission" in function name actually means "task" var permission = permissionMap[task]; var crids = angular.copy(userProfile.ListOfBSAValidatedCrids); // start with my BSA crids if(permission){ if(!looseFlag){ // include this crid if have the permission for whole crid for(_crid in adminPermissionsByCridMid){ if(crids.indexOf(_crid)<0&&adminPermissionsByCridMid[_crid]&&adminPermissionsByCridMid[_crid]["-1"]&&adminPermissionsByCridMid[_crid]["-1"].indexOf(permission)>=0){ crids.push(_crid); } } } else{ // include the crid if have the permission for one mid for(_crid in adminPermissionsByCridMid){ if(crids.indexOf(_crid)<0){ var found = false; for(_mid in adminPermissionsByCridMid[_crid]){ if(_mid!=="receiving_crid"&&adminPermissionsByCridMid[_crid][_mid]&&adminPermissionsByCridMid[_crid][_mid].indexOf(permission)>=0){ found = true; } } if(found){ crids.push(_crid); } } } } } //console.log("user can "+task+" for crids", crids); return crids; }; factory.getCridNamesBasedOnPermission = function(permission,looseFlag){ // "permission" in function name actually means "task" var crids = factory.getCridsBasedOnPermission(permission,looseFlag); if(typeof crids != 'undefined'){ adminHttpService.getCridWithFullServiceIndicatorForCrids(crids).then(function(response1){ fullServiceInds=response1; }); } return adminHttpService.getCridNames(crids).then(function(response){ if(response.data&&response.data.length){ response.data.sort(function(a, b){return a.crid - b.crid}); return response.data.map(function(data){ data.companyName = catchCompanyNameError(data); data.value = data.crid; data.text = data.crid+" ("+data.companyName+")"; data.fullServiceIndicator = (typeof fullServiceInds != 'undefined') ? fullServiceInds[data.crid] : 'N' ; return data; }); } else{ return []; } }); }; // for role permission manager, the "dashboard" page, not in use anymore factory.getCompanyMidsUsers = function(){ var cridList = factory.getCridsBasedOnPermission("createAdminPermissions",true); var requests = []; requests.push(adminHttpService.getCridNames(cridList)); requests.push(adminHttpService.getMidListByCrids(cridList)); requests.push(adminHttpService.fetchUsersByCompanyIds(cridList)); return $q.all(requests).then(function(responseArr){ var tempMids = utilService.arrToObj(responseArr[1].data,"crid"); var tempUsers = utilService.arrToObj(responseArr[2].data,"crid"); var result = responseArr[0].data; result = result.map(function(r){ r.companyName = catchCompanyNameError(r); r.userList = tempUsers[r.crid].users; var permissionMidList = factory.getMidsBasedOnPermissionSync("createAdminPermissions",r.crid); if(permissionMidList==="-1"){ r.midList = tempMids[r.crid].midList; } else{ r.midList = tempMids[r.crid].midList.filter(function(m){ return permissionMidList.indexOf(m)>=0; }); } // filter midList based on role permission manager's permission return r; }); return result; }); }; factory.hasVisibility = function(entity){ var visible = false; if(entity.crid&&factory.isBSA(entity.crid)){ visible = true; } else{ if(entity.type==='crid'){ visible = entity.crid&&visibilityPermissions.allVisibleCrids.indexOf(entity.crid)>=0; } else if(entity.type==="mid"){ if(entity.crid&&entity.mid&&visibilityPermissions.allVisibleMidsByCrid[entity.crid]){ visible = visibilityPermissions.allVisibleMidsByCrid[entity.crid].indexOf(entity.mid)>=0||visibilityPermissions.allVisibleMidsByCrid[entity.crid].length===0 ||visibilityPermissions.allVisibleMidsByCrid[entity.crid].indexOf("-1")>=0; } } else{ // routing code visible = entity.routingCode&&visibilityPermissions.allVisibileRoutingCodes.indexOf(entity.routingCode)>=0; } } //console.log(entity," is visible? ",visible); //visible = true; return visible; }; factory.hasCridLevelVisibility = function(crid){ return factory.isBSA(crid) || visibilityPermissions.allVisibileCridsStrict.indexOf(crid)>=0; }; factory.getVisibility = function(){ return adminHttpService.getVisibilityForUser(userProfile.userId).then(function(result){ // get rid of the empty lists for(var crid in result.midVisibility){ if(result.midVisibility[crid].length===0){ delete result.midVisibility[crid]; } } for(var crid in result.routingVisibility){ if(result.routingVisibility[crid].length===0){ delete result.routingVisibility[crid]; } } visibilityPermissions = { allVisibileRoutingCodes:[], allVisibleCrids:[], allVisibleMidsByCrid:result.midVisibility, allVisibileCridsStrict:[], visibleRoutingCodesByCrid:result.routingVisibility }; for(var crid in result.midVisibility){ (visibilityPermissions.allVisibleCrids.indexOf(crid)<0)&&(visibilityPermissions.allVisibleCrids.push(crid)); (result.midVisibility[crid].indexOf("-1")>=0)&&(visibilityPermissions.allVisibileCridsStrict.push(crid)); } for(var crid in result.routingVisibility){ (visibilityPermissions.allVisibleCrids.indexOf(crid)<0)&&(visibilityPermissions.allVisibleCrids.push(crid)); result.routingVisibility[crid].forEach(function(routing){ if(routing){ routing = routing.split('"').join(""); visibilityPermissions.allVisibileRoutingCodes.push(routing); } }); } console.log('user has visibility',visibilityPermissions); }); }; factory.getCridForVisibileRoutingCode = function(routingCode){ var crid = ""; if(visibilityPermissions.allVisibileRoutingCodes.indexOf(routingCode)>=0){ Object.keys(visibilityPermissions.visibleRoutingCodesByCrid).forEach(function(_c){ if(visibilityPermissions.visibleRoutingCodesByCrid[_c].indexOf(routingCode)>=0){ crid = _c; } }); } return crid; }; // array of all the first level tabs in the app, restricted field is the permission needed to see this page (either one of the permission) // null means no access can see, [] means user can see var allTabs = [ //reports:{ // report manager can see? or everyone? //"heading": 'MY DASHBOARD', //"id": 'myDashboard' //}, { "restricted":["DATA_DELEGATION_VIEW"], "heading": 'QUERIES & FEEDS', "id": 'viewMyDataManageFeeds', 'state':"main.viewMyDataManageFeeds", "menu":'main' }, { "restricted":["DATA_DELEGATION_VIEW"], "heading": 'DATA DELEGATION', "id": 'manageMyDataAuthorizations', 'state':"main.manageMyDataAuthorizations", "menu":'main' }, { "restricted":["ADDR_BOOK_VIEW"], "heading": 'ADDRESS BOOK', "id": 'addressBook', 'state':"main.addressBook", "menu":'main' }, { "restricted":["ADMIN_PERMISSIONS_DELETE","ADMIN_PERMISSIONS_CREATE","ADMIN_PERMISSIONS_VIEW"], "heading": 'ROLES & PERMISSIONS', "id": 'rolesPermissionsManagement', 'state':"admin.rolesPermissionsManagement", "menu":'main' }, { "restricted":['IMPERSONATE'], "heading": 'IV SOLUTIONS CENTER', "id": 'helpDesk', 'state':"admin.helpDesk" }, { "restricted":null, "heading": 'NOTIFICATIONS', "id": 'myNotifications', 'state':"main.myNotifications", "menu":'side', "icon": 'fa fa-bell-o' }, { "restricted":null, "heading": 'SETTINGS', "id": 'myProfile', 'state':"main.myProfile", "menu":'side', "icon": 'fa fa-cog' }, { // everyone even without access "restricted":null, "heading": 'MAIL TRACKING HELP', "id": 'help', 'state':"admin.help", "menu":'side', "icon": 'fa fa-question-circle' }, { "restricted":null, "heading": 'OTHER FEATURES', "id": 'otherFeatures', 'state':"main.otherFeatures", "menu":'side', "icon": 'fa fa-tasks' }, { "restricted":null, "heading": 'CONTACT US', "id": 'contact', 'state':"", "menu":'side', "icon": 'fa fa-phone' } ]; factory.buildFirstLevelTabs = function(pageLocation){ console.log("user permissions:",highLevelAdminPermissions); console.log("user permissions by crid/mid:",adminPermissionsByCridMid); var tabData = []; if(pageLocation==="admin" || pageLocation==='main'){ if(!userProfile.isHelpDeskUser){ // not help desk user if(userProfile.noAccess){ allTabs.forEach(function(_tab){ if(!_tab.restricted){ tabData.push(_tab); } }); } else{ allTabs.forEach(function(_tab){ if(!_tab.restricted|| _tab.restricted.length===0){ // no restriction tabData.push(_tab); } else{ var hasPermission = factory.isBSA(); _tab.restricted.forEach(function(_permission){ // I need either one of the permissions on the tab hasPermission = hasPermission || highLevelAdminPermissions.indexOf(_permission)>=0; }); if(hasPermission && _tab.id!=='helpDesk'){ tabData.push(_tab); } } }); } } else{ // help desk user if(userProfile.impersonating){ if(userProfile.noAccess){ // impersonated user has no access allTabs.forEach(function(_tab){ if(!_tab.restricted){ tabData.push(_tab); } }); tabData.push( /*keep the help tab here, otherwise it creates issue when switch back*/ { "heading": 'IV SOLUTIONS CENTER', "id": 'helpDesk', 'state':"admin.helpDesk" }); } else{ allTabs.forEach(function(_tab){ if(!_tab.restricted|| _tab.restricted.length===0){ // no restriction tabData.push(_tab); } else{ var hasPermission = factory.isBSA(); _tab.restricted.forEach(function(_permission){ // I need either one of the permissions on the tab hasPermission = hasPermission || highLevelAdminPermissions.indexOf(_permission)>=0; }); if(hasPermission&&_tab.id!=="helpDesk"){ tabData.push(_tab); } } }); } } else{ // help desk user not impersonating tabData = [ { "heading": 'IV SOLUTIONS CENTER', "id": 'helpDesk', 'state':"admin.helpDesk" }, // { // "heading": 'MY PROFILE', // "id": 'myProfile', // 'state':"admin.myProfile" // }, { "heading": 'MAIL TRACKING HELP', "id": 'help', 'state':"admin.help" } ]; } } } return tabData; }; function catchCompanyNameError(data){ if(data.co_name){ return data.co_name; } else if(data.companyName){ return data.companyName; } else if(data.company_name){ return data.company_name; } else{ return "Unknown"; } } /*secondary tabs keyed by page state*/ var allSubTabs = { "main.viewMyDataManageFeeds":[ { "restricted":["DATA_DELEGATION_VIEW"], "heading": 'View Data', "id": 'viewData' }, { "restricted":['SUBSCRIPTION_CREATE','SUBSCRIPTION_VIEW'], "heading": 'Create & Manage Data Feeds', "id": 'manageFeeds' } ], "main.manageMyDataAuthorizations":[ { "restricted":["DATA_DELEGATION_VIEW"], "heading": 'Request Data Delegation', "id": 'requestAccessToData' }, { "restricted":['DATA_DELEGATION_APPROVE','DATA_DELEGATION_EDIT'], "heading": 'Manage Data Delegation', "id": 'approveDataRequest' }, { "restricted":['DATA_DELEGATION_ASSIGN'], "heading": 'Delegate Data to Others', "id": 'authorizeDataToOthers' }, { "restricted":["DATA_DELEGATION_VIEW"], "heading": 'Data Delegated to My CRID', "id": 'dataAuthorizedToMe' } ], "main.addressBook":[ { "restricted":["ADDR_BOOK_VIEW"], "heading": 'Servers', "id": 'serverAddresses' }, { "restricted":["ADDR_BOOK_VIEW"], "heading": 'Contacts', "id": 'peopleAddresses' } ], "admin.rolesPermissionsManagement":[ { "restricted":["ADMIN_PERMISSIONS_VIEW","ADMIN_PERMISSIONS_CREATE","ADMIN_PERMISSIONS_DELETE"], "heading": 'Manage CRIDs', "id": 'updateRolePermissionsByCrid' } , { "restricted":["ADMIN_PERMISSIONS_VIEW","ADMIN_PERMISSIONS_CREATE","ADMIN_PERMISSIONS_DELETE"], "heading": 'Manage Users', "id": 'updateRolePermissionsByUser' } ], "main.myProfile":[ { "restricted":null, "heading": 'Settings', "id": 'mySettings' } ], "main.otherFeatures":[ { "restricted":null, "heading": 'USPS Return Ballot Tracking IMb-Key Code Lookup', "id": 'otherFeatures' } ] }; factory.buildSecondLevelTabs = function(tabLocation){ var tabData = []; allSubTabs[tabLocation].forEach(function(_tab){ if(!_tab.restricted|| _tab.restricted.length===0){ // no restriction tabData.push(_tab); } else{ var hasPermission = factory.isBSA(); _tab.restricted.forEach(function(_permission){ // I need either one of the permissions on the tab hasPermission = hasPermission || highLevelAdminPermissions.indexOf(_permission)>=0; }); if(hasPermission){ tabData.push(_tab); } } }); console.log("secondary tabs on ",tabLocation,tabData); return tabData; }; return factory; } }()); ;//WebContent/app/components/landing/landingService.js (function(){ angular.module('mt').factory("landingService",['$http','$rootScope','$q','$location',landingService]); function landingService($http,$rootScope,$q,$location){ var factory = {}; var root = $rootScope.IVWS_MT; var URL = { "getLandingInfo": root+"/public/session", "redirectWS": root + "/app/getEnvironment", // any non-public WS endpoint should do "getLandingVideo": root + "/bluetube/landing", "getSignUpPDF": root + "/bluetube", "getBlueTubeContent": root + "/bluetube/videos", //list of videos "getBlueTubeVideo": root + "/bluetube/videos", //url of one video "getHelpDocuments": root + "/bluetube/pdf" //list of documents }; $rootScope.env = ""; factory.getLandingInfo = function(){ // var deferred = $q.defer(); // deferred.resolve({ // env:"prod", // loggedIn: true // }); // return deferred.promise; var localhost = $location.host() ==="localhost"; var internal = $location.host().indexOf("usps.gov")>=0; return $http.get(URL.getLandingInfo).then(function(res){ var data = { env:"prod", loggedIn:localhost || internal || res.data.isUserLoggedIn }; if(res.data.Env){ data.env = res.data.Env.toLowerCase(); $rootScope.env = data.env; } return data; }); }; function _assignURL(){ var extURL = {}; var signUpPDF = "landingPdf"; if($rootScope.env==="dev"){ extURL.signIn = "https://devpx-custreg.usps.com/login"; //extURL.signUp = factory.getSignUpPDF(signUpPDF); extURL.signUp = "https://postalpro.usps.com/InformedVisibility/ApplyForAccess"; extURL.gateway = "//gateway-dev.usps.com"; } else if($rootScope.env==="sit"){ extURL.signIn = "https://sitpx-custreg.usps.com/login"; //extURL.signUp = factory.getSignUpPDF(signUpPDF); extURL.signUp = "https://postalpro.usps.com/InformedVisibility/ApplyForAccess"; extURL.gateway = "//gateway-sit.usps.com"; } else if($rootScope.env==="cat"){ extURL.signIn = "https://catpx-custreg.usps.com/login"; //extURL.signUp = factory.getSignUpPDF(signUpPDF); extURL.signUp = "https://postalpro.usps.com/InformedVisibility/ApplyForAccess"; extURL.gateway = "//gateway-cat.usps.com"; } else{ extURL.signIn = "https://reg.usps.com/login"; //extURL.signUp = factory.getSignUpPDF(signUpPDF); extURL.signUp = "https://postalpro.usps.com/InformedVisibility/ApplyForAccess"; extURL.gateway = "//gateway.usps.com"; } return extURL; console.log("extURL.signUp ", extURL.signUp); } function _appendHere(urlObj,mainEntranceFlag){ var here = $rootScope.IVUI_MT; here = here.replace("http:","https:"); here = here.replace("localhost:8080","div.usps.com"); if(mainEntranceFlag){ here = encodeURI(here).split(":").join("%3A").split("!").join("%21").split("/").join("%2F").split("#").join("%23"); } else{ here = $location.absUrl().replace("http:","https:").replace("localhost:8080","div.usps.com").split(":").join("%3A").split("!").join("%21").split("/").join("%2F").split("#").join("%23"); } urlObj.signIn +="?app=INFORMED_VISIBILITY&appURL="+here; return urlObj; } factory.getExternalUrls = function(){ if(!$rootScope.env){ return factory.getLandingInfo().then(function(){ return _appendHere(_assignURL(),true); }); } else{ var deferred = $q.defer(); deferred.resolve(_appendHere(_assignURL(),true)); return deferred.promise; } }; factory.triggerRedirect = function(){ var custreg = _appendHere(_assignURL(),false); console.log("require auth, go to login",custreg.signIn); location.href = custreg.signIn; }; factory.getLandingVideo = function(){ var url = URL.getLandingVideo; return url; } factory.getSignUpPDF = function(fileId){ var url = URL.getSignUpPDF+"/"+fileId; return url; } factory.getBlueTubeContent = function(){ var url = URL.getBlueTubeContent; return $http.get(url).then(function(res){return res.data;}); } factory.getBlueTubeVideo = function(id){ var url = URL.getBlueTubeVideo+"/"+id; return url; } factory.getHelpDocumentList = function(){ var url = URL.getHelpDocuments; return $http.get(url).then(function(res){return res.data;}); } return factory; } }()); ;//WebContent/app/components/main/shared/factories/addressBookService.js (function(){ /* * @ngdoc * @name mt.main.service:addressBookService * @requires $http * @description * this factory makes ajax calls related to address book. It has nothing to do with delegation and subscription, so finally I don't need to look at the gigantic deleSubService! * */ angular.module('mt.main').factory('addressBookService',['$http','$rootScope','utilService','$q',addressBookService]); function addressBookService($http,$rootScope,utilService,$q){ var factory = {}; var root = $rootScope.IVWS_MT; var URL = { getAddressBookConfigContact: "assets/json/addressBook/cont_addr_book_config.json", getAddressBookConfigServer: "assets/json/addressBook/addr_book_connection_config.json", getServers: root + "/Addressbooks/connAddressBook?option=view", addServer: root + "/Addressbooks/connAddressBook?option=add", updateServer: root + "/Addressbooks/connAddressBook?option=edit", deleteServer: root + "/Addressbooks/connAddressBook?option=delete", enableDisableServer: root + "/Addressbooks/connAddressBook?option=validate", approvePort: root + "/Addressbooks/connAddressBookPortApproval", rejectPort: root + "/Addressbooks/connAddressBookPortApproval", getContacts: root + "/Addressbooks/contactAddressBook?option=view", getContactById: root + "/Addressbooks/viewContactAddressBookByUuid?addrBookPersonId=", addContact: root + "/Addressbooks/contactAddressBook?option=add", updateContact: root + "/Addressbooks/contactAddressBook?option=edit", deleteContact: root + "/Addressbooks/contactAddressBook?option=delete", isServerPrimaryContact: root+"/Addressbooks/getServerDescriptionByCrid?uuid=", isServerWithFeed: root + "/Subscriptions/getFeedsByServer?uuid=", updatePhoneNumber: root + "/Addressbooks/contactAddressBook?option=updatePhoneNumber", testServerConnectionHTTP: root +"/ivhttppush/testPush", testAndSaveServerConnectionFTP: root +"/ivhttppush/testPushWithAdd", getCreateFeedConfig: root+"/Addressbooks/getTargetList?process=CreateFeed", getDeliveryMethodConfig: root+"/Addressbooks/getTargetList?process=DeliveryMethod", /*delivery method config*/ getAddressBookChangeHistory :root +"/history/" }; var serverListeners = {}; /*listeners on various pages that want to keep up with the latest server, keyed by location*/ var serverDropdown = []; /*latest server dropdown, refreshed everytime we "get servers" from back end, either delivery method config, or server addrress book*/ var serverDataMap = {}; /*keyed by addr_book_uuid, saves server info, needed because WS needs uuid and crid and destn_protocol, updated everytime create server dropdown option*/ var contactListeners = {}; /*listeners on various pages that want to keep up with the latest contacts, keyed by location*/ var contactDropdown = []; /*latest contact dropdown, refreshed everytime we "get contacts" from back end, either delivery method notification on success/error, or contact address boook*/ var emailDropdown = []; var contactDataMap = {}; factory.getServerData = function(uuid){ return uuid?serverDataMap[uuid]:null; }; factory.getContactData = function(uuid){ return uuid?contactDataMap[uuid]:null; }; factory.getAddressBookChangeHistory = function(objectId,objType){ var url = URL.getAddressBookChangeHistory; // url += objectId +"?objectType="+objType; if(objType==="PERSON" || objType==="SERVER"){ url += objectId+"?objectType="+objType; }else{ url += objectId.id +"?objectType="+objType; } return $http.get(url).then(function(response){ var history ={}; if(objType==="PERSON"){ history.data = response.data.PERSON.changeHistory; history.columns = response.data.PERSON.columnNames; return history; } else if(objType==="SERVER"){ history.data = response.data.SERVER.changeHistory; history.columns = response.data.SERVER.columnNames; return history; } else{ history.data = response.data.result.changeHistory; history.columns = response.data.result.columnNames; return history; } }); } factory.saveServerDropdown = function(options){ serverDropdown = angular.copy(options); }; factory.registerServerListener = function(location,callback){ serverListeners[location] = callback; /* callback has parameter serverDropdown, operation * */ }; factory.registerContactListener = function(location,callback){ contactListeners[location] = callback; /* callback has parameter serverDropdown, operation * */ }; factory.approvePort = function(body){ var url = URL.approvePort; return $http.post(url,body); } factory.rejectPort = function(body){ var url = URL.rejectPort; return $http.post(url,body); } factory.getServerWarning = function(serverObj,serverId){ var warning; if(!serverObj && serverId){ serverObj = serverDataMap[serverId]; } if(serverObj){ if(serverObj.connection_protocol==="FTP" || serverObj.connection_protocol==="SFTP" || serverObj.connection_protocol==="sftpserver"){ var nonStandardPort; if(serverObj.min_data_port == 20 || serverObj.min_data_port == 21 || serverObj.min_data_port == 22 || (serverObj.min_data_port == 0 && serverObj.pstl_host_ind == true)){ nonStandardPort = false; } else{ nonStandardPort = true; } if(serverObj.vldtd_ind==true){ warning = null; //case 7 } if(!nonStandardPort){ if(serverObj.dts_status == 200 || serverObj.vldtd_ind===true){ warning = {text:"Server Validation Successful",icon:""}; } else if((serverObj.dts_status === null || serverObj.dts_status === "" || !serverObj.dts_status)){ warning = {text:"Server Validation in Progress",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.dts_status == "NO_ACCOUNT"){ warning = {text:"Host User Name/Host Password Required",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.dts_status == 400 || serverObj.dts_status == 401){ warning = {text:"Invalid username/password combination. Please verify username and password. Contact IV Solutions Center if issue persists.",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.dts_status == 404){ var errorCode = serverObj.dts_status; warning = {text:"The server could not be validated. Please contact the IV Solutions Center. Error code: " + errorCode + " ",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.dts_status == 500){ warning = {text:"The system is currently unable to validate the server. Please check back at a later time.",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.dts_status === "HELP_DESK_DISABLE"){ warning = {text:"Server disabled by IV Solutions Center due to unapproved IP/host address",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.dts_status === "DTS_DISABLE"){ warning = {text:"Server disabled by DTS due to unapproved IP/host address",icon:"glyphicon glyphicon-alert warning"}; } else{ warning = null; } } else{ if(serverObj.port_approval_status==="PENDING"){ warning = {text:"Non-standard port request pending for this server",icon:"glyphicon glyphicon-alert warning"}; } else if(serverObj.port_approval_status==="REJECTED"){ warning = {text:"Non-standard port request has been rejected for this server",icon:"glyphicon glyphicon-remove-sign error"}; } } } if(serverObj.vldtd_ind===false && !warning && serverObj.connection_protocol !== "HTTP" && serverObj.connection_protocol !== "HTTP_JSON"){ warning = {text:"Server disabled due to unsuccessful communication. Contact the IV Solutions Center for additional information.",icon:"glyphicon glyphicon-alert warning"}; } if(warning){ warning = {text: warning.text, icon: warning.icon, lastUpdated: serverObj.last_updt_dtm}; } } else if(!serverObj){ //preventing error if server no longer exists. warning = {text: '', icon: '', lastUpdated: ''}; } return warning; } factory.getAddressBookConfigContact = function(){ var url = URL.getAddressBookConfigContact; return $http.get(url,{cache:true}).then(function(response){ var contactConfig = []; response.data.forEach(function(attr){ if(attr.value&&attr.value!==""){ attr.options = attr.value.split(","); if(attr.filter_category==='Required'){ attr.input = attr.options[0]; } } contactConfig.push(attr); }); return contactConfig; }); }; factory.getAddressBookConfigServer = function(){ var url = URL.getAddressBookConfigServer; return $http.get(url,{cache:true}).then(function(response){ var serverConfig = {}; var serverTypes = []; response.data.forEach(function(attr){ if(serverTypes.indexOf(attr.filter_type)<0){ // filter_type is HTTP/FTP... serverTypes.push(attr.filter_type); if(attr.default_ind&&attr.value){ attr.defaultValue = attr.value; attr.input = attr.defaultValue; } else if(attr.value&&attr.value!==""){ attr.options = attr.value.split(","); if(attr.filter_category==='Required'){ attr.input = attr.options[0]; } } serverConfig[attr.filter_type] = [attr]; } else{ if(attr.default_ind&&attr.value){ attr.defaultValue = attr.value; attr.input = attr.defaultValue; } else if(attr.value&&attr.value!==""){ attr.options = attr.value.split(","); if(attr.filter_category==='Required'){ attr.input = attr.options[0]; } } serverConfig[attr.filter_type].push(attr); } }); return $http.get(URL.getCreateFeedConfig).then(function(response){ // check if json format is enabled to create feed, if not, remove it from serverConfig var jsonEnabled = false; if(response.data&&response.data.FileType){ response.data.FileType.forEach(function(f){ if(f.value&&f.value.indexOf("JSON")>=0){ jsonEnabled = true; } }); } if(!jsonEnabled){ delete serverConfig.HTTP_JSON; } return serverConfig; }); }); }; factory.getServers = function(silent){ var url = URL.getServers; // url = "assets/json/addressBook/ftp.json"; // return $http.get(url).then(function(response){ return $http.post(url,{},{silentCall:silent}).then(function(response){ var latestServers = utilService.removeDupe(response.data.ConnectionAddressBooks,'addr_book_server_id') .map(function(s){ s.warning = factory.getServerWarning(s); return s; }); // build the dropdown to be used as delivery method destinations serverDropdown = latestServers.map(function(d){ return buildServerOption(d); }); return latestServers; }); }; factory.addServer = function(server){ var url = URL.addServer; var body = server; console.log('add server with body',body); return $http.post(url,body).then(function(response){ console.log(response); if(response.data.Success===false || response.data.errorCount){ console.log('error'); angular.element("#addServerErrorModal").modal('show'); return false; } else{ if(server.connection_protocol==='HTTP'||server.connection_protocol==='HTTP_JSON' || server.connection_protocol==='FTP' || server.connection_protocol==='SFTP' || server.connection_protocol==='sftpserver'){ angular.element("#addServerSuccessModal").modal('show'); } server.crid = response.data.crid; server.addr_book_server_id = response.data.addr_book_server_id; if(server.pstl_host_ind&&(!server.user_name||!server.pswd)){ server.dts_status = "NO_ACCOUNT"; } server.warning = factory.getServerWarning(server); var serverOption = buildServerOption(server); serverDropdown.push(serverOption); /*newly added server will immediately append to listener drop downs, need addr_book_uuid*/ Object.keys(serverListeners).forEach(function(listener){ if(listener!=="serverAddressBook"){ serverListeners[listener](serverDropdown,'create'); } else{ serverListeners[listener](server,'create'); /*address book doesn't want the dropdown info, it wants the entire server*/ } }); return true; } }); }; factory.updateServer = function(server){ var url = URL.updateServer; var body = server; console.log('update server with body',body); return $http.post(url,body).then(function(response){ if(response.data.Success){ if(server.connection_protocol==='HTTP'||server.connection_protocol==='HTTP_JSON'){ angular.element("#addServerSuccessModal").modal('show'); } serverDropdown.forEach(function(s,i){ if(s.addr_book_server_id===server.addr_book_server_id){ serverDropdown[i] = buildServerOption(server); } }); /*listener dropdowns will immediately get latest servers*/ Object.keys(serverListeners).forEach(function(listener){ serverListeners[listener](serverDropdown,'update'); }); console.log(response); return true; } else{ console.log('error'); angular.element("#addServerErrorModal").modal('show'); return false; } }); }; factory.deleteServer = function(server){ var url = URL.deleteServer; var body = server; console.log('delete server with body',body); $http.post(url,body).then(function(response){ var indexToDelete = -1; serverDropdown.forEach(function(s,i){ if(s.addr_book_server_id===server.addr_book_server_id){ indexToDelete = i; } }); if(indexToDelete>=0){ serverDropdown.splice(indexToDelete,1); } delete serverDataMap[server.addr_book_server_id]; Object.keys(serverListeners).forEach(function(listener){ serverListeners[listener](serverDropdown,'delete'); }); console.log(response); }); }; factory.enableDisableServer = function(server){ var url = URL.enableDisableServer; var body = server; console.log('enable server with body',body); return $http.post(url,body).then(function(response){ if(response.data.Success){ console.log(response); serverListeners['serverAddressBook'](server,'updateVldtdInd'); return true; } else{ console.log('error'); return false; } }); }; factory.getContacts = function(silent){ var url = URL.getContacts; // url = "assets/json/addressBook/contact.json"; // return $http.get(url).then(function(response){ return $http.post(url,{},{silentCall:silent}).then(function(response){ var sortedResponseFirstNameLastName = response.data.ContactAddressBooks.sort(function(a,b){ return a.first_name.localeCompare(b.first_name) || a.last_name.localeCompare(b.last_name); }); var latestContacts = utilService.removeDupe(sortedResponseFirstNameLastName,'addr_book_person_id'); contactDropdown = latestContacts.map(function(d){ return buildContactOption(d); }); emailDropdown = latestContacts.map(function(d){ return buildEmailOption(d); }); return latestContacts; }); }; factory.getContactById = function(id){ var url = URL.getContactById + id; return $http.get(url).then(function(response){return response.data;}); }; factory.addContact = function(contact){ var url = URL.addContact; var body = contact; console.log('adding contact with body',body); return $http.post(url,body).then(function(response){ if(response.data){ contact.addr_book_person_id = response.data.addr_book_person_id; contact.crid = response.data.crid; contactDropdown.push(buildContactOption(contact)); emailDropdown.push(buildEmailOption(contact)); Object.keys(contactListeners).forEach(function(listener){ if(['createFeed','modifyFeed','sendToAddress'].indexOf(listener)>=0){ contactListeners[listener](emailDropdown,'create'); } else if(listener!=="peopleAddressBook"){ contactListeners[listener](contactDropdown,'create'); } else{ contactListeners[listener](contact,'create'); /*address book doesn't want the dropdown info, it wants the entire contact*/ } }); angular.element('.contact-form-modal').modal('hide'); return true; } else{ return false; } }); }; factory.isServerPrimaryContact = function(contact){ var url = URL.isServerPrimaryContact; url += contact.addr_book_person_id; //url = "assets/json/addressBook/isPrimaryContact.json"; return $http.get(url).then(function(response){ if(response.data && response.data.length){ return true; } else{ return false; } }); }; factory.isServerWithFeed = function(server){ var url = URL.isServerWithFeed; url += server.addr_book_server_id; //url = "assets/json/addressBook/isPrimaryContact.json"; return $http.get(url).then(function(response){ if(response.data && response.data.length){ return true; } else{ return false; } }); }; factory.updateContact = function(contact){ var url = URL.updateContact; var body = contact; console.log('updating contact with body',body); return $http.post(url,body).then(function(response){ if(response.data){ contactDropdown.forEach(function(_contactOption,i){ if(_contactOption.addr_book_person_id===contact.addr_book_person_id){ contactDropdown[i] = buildContactOption(contact); } }); emailDropdown.forEach(function(_contactOption,i){ if(_contactOption.addr_book_person_id===contact.addr_book_person_id){ emailDropdown[i] = buildEmailOption(contact); } }); Object.keys(contactListeners).forEach(function(listener){ if(['createFeed','modifyFeed','sendToAddress'].indexOf(listener)>=0){ contactListeners[listener](emailDropdown,'update'); } else{ contactListeners[listener](contactDropdown,'update'); } }); return true; } else{ return false; } }); }; factory.deleteContact = function(contact){ var url = URL.deleteContact; var body = contact; console.log("deleting contact with body",body); return $http.post(url,body).then(function(){ var indexToDelete = -1; contactDropdown.forEach(function(c,i){ if(c.addr_book_person_id===contact.addr_book_person_id){ indexToDelete = i; } }); if(indexToDelete>=0){ contactDropdown.splice(indexToDelete,1); } indexToDelete = -1; emailDropdown.forEach(function(c,i){ if(c.addr_book_person_id===contact.addr_book_person_id){ indexToDelete = i; } }); if(indexToDelete>=0){ emailDropdown.splice(indexToDelete,1); } Object.keys(contactListeners).forEach(function(listener){ if(['createFeed','modifyFeed','sendToAddress'].indexOf(listener)>=0){ contactListeners[listener](emailDropdown,'delete'); } else{ contactListeners[listener](contactDropdown,'delete'); } }); }); }; factory.updatePhoneNumber = function(contact){ var url = URL.updatePhoneNumber; // update contact data map contactDataMap[contact.addr_book_person_id] = angular.copy(contact); $http.post(url,contact).then(function(){ if(contactListeners.peopleAddressBook){ contactListeners.peopleAddressBook(contact,'update'); } }); }; factory.testServerConnection = function(serverDetail){ // from set up delivery method, no change on server info var url = URL.testServerConnectionHTTP; // all protocol use same endpoint now var temp = factory.getServerData(serverDetail.addr_book_server_id); var body = {}; if(temp.connection_protocol==="HTTP"){ body.addr_book_server_id = serverDetail.addr_book_server_id; body.connection_protocol = temp.connection_protocol; body.push_type = serverDetail.provisionType.indexOf('DELIVERY')>=0?"DELIVERY":"NOTIFICATION"; body.crid = temp.crid; body.destn_host = temp.destn_host; //body.pswd = temp.pswd; load pw from DB since it is encrypted body.user_name = temp.user_name; body.file_type = serverDetail.format+"_"+serverDetail.messageVersion; } else if(temp.connection_protocol==="HTTP_JSON"){ body.addr_book_server_id = serverDetail.addr_book_server_id; body.connection_protocol = temp.connection_protocol; body.destn_host = temp.destn_host; body.file_type = serverDetail.format; (temp.user_name)&&(body.user_name = temp.user_name); } else{ body.addr_book_server_id = serverDetail.addr_book_server_id; body.connection_protocol = temp.connection_protocol; body.min_data_port = temp.min_data_port; body.destn_host = temp.destn_host; body.user_name = temp.user_name; body.tgt_drcty = temp.tgt_drcty; } var queryString = ""; Object.keys(body).forEach(function(_param,i){ queryString+=i===0?"?":"&"; queryString+=_param+"="+body[_param]; }); return $http.post(url,body).then(function(response){ console.log(response); var success = false; if(response.data && response.data.success &&response.data.responseMsg&&(response.data.responseMsg.statusCode===true||response.data.responseMsg.statusCode==200)){ success = true; } return success; }); }; factory.testServerConnectionNew = function(serverDetail){ // test new server connection, no address book server id yet var body = {}; var url = URL.testServerConnectionHTTP; // all protocol use same endpoint now if(serverDetail.connectionProtocol==="HTTP"){ body.addr_book_server_id = serverDetail.addr_book_server_id; body.connection_protocol = serverDetail.connectionProtocol; //HTTP/FTP body.push_type = serverDetail.provisionType.indexOf('DELIVERY')>=0?"DELIVERY":"NOTIFICATION"; body.destn_host = serverDetail.destnHost; body.pswd = serverDetail.pswd; body.user_name = serverDetail.user_name; body.file_type = serverDetail.file_type; } else if(serverDetail.connectionProtocol==="HTTP_JSON"){ body.file_type = serverDetail.file_type; body.connection_protocol = serverDetail.connectionProtocol; body.destn_host = serverDetail.destnHost; (serverDetail.user_name)&&(body.user_name = serverDetail.user_name); (serverDetail.pswd)&&(body.pswd = serverDetail.pswd); (serverDetail.addr_book_server_id)&&(!serverDetail.pswd)&&(body.addr_book_server_id = serverDetail.addr_book_server_id); } else{ body.connection_protocol = serverDetail.connectionProtocol; body.min_data_port = serverDetail.port?serverDetail.port:22; body.destn_host = serverDetail.destnHost; (serverDetail.pswd)&&(body.pswd = serverDetail.pswd); (serverDetail.addr_book_server_id)&&(!serverDetail.pswd)&&(body.addr_book_server_id = serverDetail.addr_book_server_id); body.user_name = serverDetail.user_name; body.tgt_drcty = serverDetail.tgt_drcty; } var queryString = ""; Object.keys(body).forEach(function(_param,i){ queryString+=i===0?"?":"&"; queryString+=_param+"="+body[_param]; }); return $http.post(url,body).then(function(response){ console.log(response); var success = false; if(response.data && response.data.success &&response.data.responseMsg&&(response.data.responseMsg.statusCode===true||response.data.responseMsg.statusCode==200)){ success = true; } return success; }); }; factory.testAndSaveServerConnectionFTP= function(serverObj, serverDetail, location){ var body = {}; var url = URL.testAndSaveServerConnectionFTP; body.addr_book_entry_name = serverObj.addr_book_entry_name; body.addr_book_person_id = serverObj.addr_book_person_id; if(serverDetail.addr_book_server_id){ body.addr_book_server_id = serverDetail.addr_book_server_id; } body.connection_protocol = serverObj.connection_protocol; body.crid_list = serverObj.crid_list; body.destn_host = serverObj.destn_host; body.min_data_port = serverObj.min_data_port; if(serverObj.port_approval_status){ body.port_approval_status = serverObj.port_approval_status; } body.pstl_host_ind = serverObj.pstl_host_ind; body.pswd = serverObj.pswd; body.tgt_drcty = serverObj.tgt_drcty; body.user_name = serverObj.user_name; var queryString = ""; Object.keys(body).forEach(function(_param,i){ queryString+=i===0?"?":"&"; queryString+=_param+"="+body[_param]; }); return $http.post(url,body).then(function(response){ console.log(response); if(response.data){ if(response.data && response.data.success &&response.data.responseMsg&&(response.data.responseMsg.statusCode===true||response.data.responseMsg.statusCode==200)){ serverObj.vldtd_ind = true; } else{ serverObj.vldtd_ind = false; } serverObj.addr_book_server_id = response.data.addr_book_server_id; if(!serverObj.dts_status){ serverObj.dts_status = response.data.responseMsg.statusCode; } if(!serverObj.last_updt_dtm){ var lastUpdated = new Date(response.data.lastUpdateDTM) + ""; serverObj.last_updt_dtm = lastUpdated; } serverObj.warning = factory.getServerWarning(serverObj); if(location != "viewDataManageFeedsCreate"){ //this causing an error on viewDataManageFeedsCreate page Object.keys(serverListeners).forEach(function(listener){ serverListeners[listener](serverObj,'create'); }); } } return serverObj; }); } function buildServerOption(server){ if(server.addr_book_server_id){ serverDataMap[server.addr_book_server_id] = angular.copy(server); } return { text:server.addr_book_entry_name?server.addr_book_entry_name:server.destn_host, value:server.addr_book_server_id, field:"target", addr_book_server_id:server.addr_book_server_id, connection_protocol:server.connection_protocol, crid:server.crid, crid_list:server.crid_list, warning:factory.getServerWarning(server) }; } function buildContactOption(contact){ if(contact.cont_type) { if("O" === contact.cont_type) { contact.cont_type = "Other"; } else if ("P" === contact.cont_type){ contact.cont_type = "Primary"; } else if ("T" === contact.cont_type){ contact.cont_type = "Technical"; } } if(contact.addr_book_person_id){ contactDataMap[contact.addr_book_person_id] = angular.copy(contact); } return { text:contact.first_name+" "+contact.last_name, value:contact.addr_book_person_id, addr_book_person_id:contact.addr_book_person_id, title:contact.first_name+" "+contact.last_name+" ("+contact.prmy_email+")", crid_list:contact.crid_list }; } function buildEmailOption(contact){ return { text:contact.prmy_email, value:contact.addr_book_person_id, addr_book_person_id:contact.addr_book_person_id, title:contact.first_name+" "+contact.last_name, crid_list:contact.crid_list }; } factory.getDeliveryMethodConfig = function(){ var url = URL.getDeliveryMethodConfig; return $http.get(url).then(function(response){ var messageOptions = {provisionType:[],messageVersion:[]}; response.data.ProvisionType.forEach(function(d){ messageOptions.provisionType.push({text:d.display_name,value:d.value,field:"provisionType"}); }); response.data.MessageVersion.forEach(function(d){ messageOptions.messageVersion.push({text:d.display_name,value:d.value,field:"messageVersion"}); }); messageOptions.provisionType.sort(utilService.sortJson('text')); messageOptions.messageVersion.sort(utilService.sortJson('text', true)); return messageOptions; }); } factory.buildServerOption = buildServerOption; factory.buildContactOption = buildContactOption; factory.buildEmailOption = buildEmailOption; return factory; } }()); ;//WebContent/app/components/main/shared/factories/deleSubDataService.js (function(){ /* * @ngdoc * @name mt.main.deleSubDataService * @description * utility service factory for delegation/subscription * extract these functions out, becasue delegation/subscription has too much formatting of data * */ angular.module('mt.main').factory('deleSubDataService',['$rootScope','utilService',deleSubDataService]); function deleSubDataService($rootScope,utilService){ var factory = {}; var operatorValueMap = { "Equal to":"=", "Not Equal to":"!=", "Less than":"<", "Greater than":">", "Less than or Equal to":"<=", "Greater than or Equal to":">=", "Begins With":"beginsWith", "Ends With":"endsWith", "One of":"oneOf", "Not One of":"notOneOf", "Contains":"contains", "Does Not Contain":"doesNotContain", "Equal to (Fixed)":"=", "Equal to (Relative)":"equalToRelative", "Between":"between", "Less than or Equal to (Relative)":"lastDays", "Less than or Equal to (Fixed)":"<=" }; var operatorNameMap = { "=":"Equal to", "!=":"Not Equal to", "<":"Less than", ">":"Greater than", "<=":"Less than or Equal to", ">=":"Greater than or Equal to", "beginsWith":"Begins With", "endsWith":"Ends With", "oneOf":"One of", "notOneOf":"Not One of", "contains":"Contains", "doesNotContain":"Does Not Contain", "equalToRelative":"Equal to (Relative)", "between":"Between", "lastDays":"Less than or Equal to (Relative)" }; var filterAndFieldsOptions; var epsPpcFilterAndFieldsOptions; factory.catchCompanyNameError = catchCompanyNameError; factory.buildBodyEntityForOneTimeView = buildBodyEntityForOneTimeView; factory.mapScanType = utilService.mapScanType; factory.mapScanTypeReverse = utilService.mapScanTypeReverse; factory.mapEventType = mapEventType; factory.mapEventTypeReverse = mapEventTypeReverse; factory.mapEntityList = mapEntityList; factory.mapFieldDisplayName = mapFieldDisplayName; factory.toCommaString = toCommaString; factory.cleanUpFilter = cleanUpFilter; factory.mapOperatorName = mapOperatorName; factory.cleanUpDataField = cleanUpDataField; factory.cleanUpTimePeriod = cleanUpTimePeriod; factory.removeDupe = removeDupe; factory.getUnique = getUnique; factory.stringifyFilterMap = stringifyFilterMap; factory.parseFilterMap = parseFilterMap; factory.getFilterAndFieldsOptions = getFilterAndFieldsOptions; factory.buildFilterAndFieldsOptions = buildFilterAndFieldsOptions; factory.getEpsPpcFilterAndFieldsOptions = getEpsPpcFilterAndFieldsOptions; factory.buildEpsPpcFilterAndFieldsOptions = buildEpsPpcFilterAndFieldsOptions; factory.getDelegationEntityByCrid = getDelegationEntityByCrid; //R3 factory.displayReportDetail = displayReportDetail; factory.displayEntityDetail = displayEntityDetail; factory.displayViewDetail = displayViewDetail; factory.displayFilterDetail = displayFilterDetail; factory.formatFilterListMap = formatFilterListMap; function catchCompanyNameError(data){ if(data.co_name){ return data.co_name; } else if(data.companyName){ return data.companyName; } else if(data.company_name){ return data.company_name; } else{ return "Unknown"; } } function buildBodyEntityForOneTimeView(entity,filterAndFields){ function _copyNoneEmpty(obj){ var obj2 = {}; for(var c in obj){ if(obj[c]&&obj[c].length){ obj2[c] = obj[c]; } } return obj2; } var result = { crid:entity.cridList, mid:_copyNoneEmpty(entity.cridMidList),//entity.midList,// rteg_code_list:entity.routingList, "scanType": utilService.mapScanType(filterAndFields.scanType), "scanSubType":mapEventType(filterAndFields.scanSubType) }; return result; } // mapScanType moved to utilService // mapScanTypeReverse moved to utilService function mapEventType(arr){ return arr.map(function(a){return a.value;}); } function mapEventTypeReverse(arr){ // didn't want to remove the function call from all the places... return arr; } function mapEventTypeReverse_old(obj){ var arr = []; if(obj.actualScanInd==="true" || obj.actualScanInd===true){ arr.push('Actual Handling Event'); } if(obj.assumedScanInd==="true" ||obj.assumedScanInd===true){ arr.push("Assumed Handling Event"); } if(obj.logicalScanInd==="true" ||obj.logicalScanInd===true){ arr.push("Logical Handling Event"); } return arr; } function mapEventType_old(arr){ var obj = {actualScanInd:"false",assumedScanInd:"false",logicalScanInd:"false"}; arr.forEach(function(a){ if(a==="Actual Handling Event"){ obj.actualScanInd="true"; } else if(a==="Assumed Handling Event"){ obj.assumedScanInd="true"; } else{ obj.logicalScanInd="true"; } }); return obj; } function mapEntityList(entity){ if(entity.scanType === "All"){ $rootScope.$broadcast('delegateRCPT',{ rcptVal : true }); }else{ $rootScope.$broadcast('delegateRCPT',{ rcptVal : false }); } var finalList = {}; entity.forEach(function(e){ finalList[e.delegatorCrid] = e.delegatorMid; }); return finalList; } function mapFieldDisplayName(filterConfig,filterAndFields){ // data fields, and scanSubType displaynames var lookup = {}; filterConfig.forEach(function(f){ if(f.filterLevel===filterAndFields.scanType){ lookup[f.fieldName.trim()] = f.displayName;//data fields "value" is fieldName column if(f.value){ lookup[f.value.trim()] = f.displayName + " "+f.operator; // event type "value" is value column } } }); var allDataFields = []; if(filterAndFields.dataFields===null||filterAndFields.dataFields.length===0){ filterConfig.forEach(function(f){ if(f.filterLevel===filterAndFields.scanType && f.filterCategory==="DataField"){ allDataFields.push(f.fieldName); } }); filterAndFields.dataFields = allDataFields; } filterAndFields.filter.forEach(function(f1){ f1.forEach(function(f2){ f2.fieldDisplayName = lookup[f2.field.trim()]; }); }); filterAndFields.dataFields = filterAndFields.dataFields.map(function(d){ var temp = {text:lookup[d.trim()],value:d.trim()}; return temp; })/*.sort(utilService.sortJson('text',false,sortLowerCase))*/; filterAndFields.scanSubType = filterAndFields.scanSubType.map(function(e){ var temp = {text:e.trim()?lookup[e.trim()]:"",value:e.trim()}; return temp; }); filterAndFields.scanSubType.sort(utilService.sortJson('value',false,orderHandlingEvent)); return filterAndFields; } function toCommaString(arr,field){ var s = ""; arr.forEach(function(a,i){ if(i===0){ s = ""+a[field]; } else{ s+=(","+a[field]); } }); return s; } function cleanUpFilter(filterArr){ return filterArr.map(function(_filter){ return _filter.map(function(_condition){ // var _op = _condition.operator.toLowerCase(); // _op = $.trim(_op); var formattedValue = _condition.value; if(typeof formattedValue==="string"){ formattedValue = $.trim(formattedValue); } return {value:formattedValue,field:_condition.field,operator:operatorValueMap[_condition.operator]}; }); }); } function mapOperatorName(filterArr){ return filterArr.map(function(_filter){ return _filter.map(function(_condition){ return {value:_condition.value,field:_condition.field,operator:operatorNameMap[_condition.operator]}; }); }); } function cleanUpDataField(dataFields){ return dataFields.map(function(o){return o.value;}); } function cleanUpTimePeriod(timePeriod){ return {startDate:utilService.formatDateObj(timePeriod.startDate), endDate:utilService.formatDateObj(timePeriod.endDate)}; } function removeDupe(arr,field){ var existing = []; var result = []; arr.forEach(function(a){ if(field){ if(existing.indexOf(a[field])<0){ existing.push(a[field]); result.push(a); } } else{ if(existing.indexOf(a)<0){ existing.push(a); result.push(a); } } }); return result; } function getUnique(arr,field){ var result = []; arr.forEach(function(a){ if(a[field]&&result.indexOf(a[field])===-1){ result.push(a[field]); } }); return result; } function stringifyFilterMap(filterMap){ var result = {}; var cleaned = {}; Object.keys(filterMap).forEach(function(key){ if(filterMap[key].STID&&filterMap[key].STID.length){ cleaned = {STID:[]}; cleaned.STID = filterMap[key].STID; result[key] = JSON.stringify(cleaned); } else{ result[key] = ""; } }); return result; } function parseFilterMap(filterMap,customKey){ var result = {}; if(filterMap&&filterMap!=="NULL" &&filterMap!=='null'){ Object.keys(filterMap).forEach(function(key){ if(filterMap[key].length){ result[key] = JSON.parse(filterMap[key]); } else{ result[key] = {}; result[key][customKey?customKey:"STID"] = []; //result[key] = {STID:[]}; } }); return result; } else{ return null; } } // define filter and fields function getFilterAndFieldsOptions(){ return filterAndFieldsOptions; } function buildFilterAndFieldsOptions(filterConfig){ filterAndFieldsOptions = {}; filterAndFieldsOptions.scanTypeOptions = getScanTypeOptions(filterConfig); filterAndFieldsOptions.eventTypeOptions = getEventTypeOptions(filterAndFieldsOptions.scanTypeOptions,filterConfig); var temp = getFieldOptionsAndConstraints(filterAndFieldsOptions.scanTypeOptions,filterConfig); filterAndFieldsOptions.fieldOptions = temp.fieldOptions; filterAndFieldsOptions.fieldConstraints = temp.fieldConstraints; filterAndFieldsOptions.dataFields = getDataFields(filterAndFieldsOptions.scanTypeOptions,filterConfig); filterAndFieldsOptions.linkedMailObjectDataFields = getLinkedMailObjectDataFields(filterAndFieldsOptions.scanTypeOptions,filterConfig); filterAndFieldsOptions.linkedMailObjectScanFields = getLinkedMailObjectScanFields(filterAndFieldsOptions.scanTypeOptions,filterConfig); return filterAndFieldsOptions; } //getEPSPPCConfig function getEpsPpcFilterAndFieldsOptions(){ return epsPpcFilterAndFieldsOptions; } function buildEpsPpcFilterAndFieldsOptions(epsPpcFilterConfig){ epsPpcFilterAndFieldsOptions = {}; epsPpcFilterAndFieldsOptions.scanTypeOptions = getEpsPpcScanTypeOptions(epsPpcFilterConfig); //epsPpcFilterAndFieldsOptions.eventTypeOptions = getEventTypeOptions(epsPpcFilterAndFieldsOptions.scanTypeOptions,epsPpcFilterConfig); return epsPpcFilterAndFieldsOptions; } /* loop through filterConfig, find scan types (unique values of the field filterLevel) and process is ViewData*/ function getScanTypeOptions(filterConfig){ var scanTypeOptions = []; var temp = []; filterConfig.forEach(function(f){ if(temp.indexOf(f.filterLevel)<0 && f.process==="ViewData"){ temp.push(f.filterLevel); scanTypeOptions.push({value:f.filterLevel.trim(),text:f.filterLevel}); } }); scanTypeOptions.push({value:"All",text:"All"}); scanTypeOptions.sort(utilService.sortJson('text',false,orderScanType)); return scanTypeOptions; } /* loop through filterConfig, find scan types (unique values of the field filterLevel) and process is epsPPCfields*/ function getEpsPpcScanTypeOptions(filterConfig){ var scanTypeOptions = []; var temp = []; filterConfig.forEach(function(f){ if(temp.indexOf(f.filterCategory)<0 && f.process==="epsPPCfields"){ temp.push(f.filterCategory); scanTypeOptions.push({value:f.filterCategory.trim(),text:f.filterCategory}); } }); //scanTypeOptions.push({value:"All",text:"All"}); scanTypeOptions.sort(utilService.sortJson('text',false,orderScanType)); return scanTypeOptions; } /* for each scan type, loop through filterConfig, find scan sub type for this scan type * (unique values of fieldName where filterCategory is "SubType") */ function getEventTypeOptions(scanTypeOptions,filterConfig){ var eventTypeOptions = {}; var temp = []; var tempAll = []; var tempAllNames = {}; scanTypeOptions.forEach(function(s){ temp = []; eventTypeOptions[s.value]=[]; filterConfig.forEach(function(f){ if(f.filterLevel===s.value && f.filterCategory==="SubType" && temp.indexOf(f.value)<0){ temp.push(f.value); eventTypeOptions[s.value].push({value:f.value.trim(),text:f.displayName+" "+f.operator,checked:true,readonly:false,delegationOnly:f.validDataType==="Future"}); if(tempAll.indexOf(f.value)<0){ tempAll.push(f.value); tempAllNames[f.value] = f.displayName; } } }); }); eventTypeOptions['All'] = tempAll.map(function(f){ return {value:f,text:tempAllNames[f].replace('*',''),checked:true,readonly:true,delegationOnly:true}; }); scanTypeOptions.forEach(function(s){ eventTypeOptions[s.value].sort(utilService.sortJson('value',false,orderHandlingEvent)); }); return eventTypeOptions; } /* for each scan type, loop through filterConfig to get filteralbe fields * (filterCagetory is "DataField", and filteralbe is true) * save this element as the field constraint of the field * operator is originally , delimited, split to an array * if value is not null, split value to an array to be used as dropdown */ function getFieldOptionsAndConstraints(scanTypeOptions,filterConfig){ var fieldOptions = {}; var fieldConstraints = {}; scanTypeOptions.forEach(function(s){ fieldOptions[s.value]=[]; fieldConstraints[s.value] = {}; filterConfig.forEach(function(f){ if(f.filterLevel===s.value && f.filterCategory==="DataField" && f.filterable=="true"){ f.fieldName = f.fieldName.trim(); fieldOptions[s.value].push({text:f.displayName,value:f.fieldName,viewInWebInd:f.viewInWebInd,multiValueInd:f.multiValueInd,reqFilterInd:f.reqFilterInd,dataType:f.dataType}); fieldConstraints[s.value][f.fieldName] = angular.copy(f); fieldConstraints[s.value][f.fieldName].operator = (f.operator&&f.operator!=="")?f.operator.split(','):["="]; // If the filterLevel is Full-Service Start-the-Clock Report the value of f(f.value) is always null/empty from the backend. if(f.value&&f.value!=="" && !(f.filterLevel === "Full-Service Start-the-Clock Report" && f.validDataType==="Date" && f.dataType==="Date")){ fieldConstraints[s.value][f.fieldName].value = f.value.split(','); if(f.value&&f.value!=="" && f.filterLevel !== "Full-Service Start-the-Clock Report"){ fieldConstraints[s.value][f.fieldName].inputType = "dropdown"; } } else{ fieldConstraints[s.value][f.fieldName].value = null; fieldConstraints[s.value][f.fieldName].inputType = "alphaNumericString"; if(f.validDataType==="Numeric"){ if(f.dataType!=="String"){ fieldConstraints[s.value][f.fieldName].inputType = "number"; } else{ fieldConstraints[s.value][f.fieldName].inputType = "numericString"; } } else if(f.validDataType==="Date" ||f.dataType==="Date"){ fieldConstraints[s.value][f.fieldName].inputType = "date"; } } } }); }); scanTypeOptions.forEach(function(s){ fieldOptions[s.value].sort(utilService.sortJson('text',false,sortLowerCase)); }); return {fieldOptions:fieldOptions,fieldConstraints:fieldConstraints}; } /* for each scan type, get available data fields */ function getDataFields(scanTypeOptions,filterConfig){ var tempAll = []; var tempAll2 = []; var dataFields = {}; scanTypeOptions.forEach(function(s){ dataFields[s.value]=[]; filterConfig.forEach(function(f){ if(f.filterLevel===s.value && f.filterCategory==="DataField"){ dataFields[s.value].push({text:f.displayName,value:f.fieldName.trim(),defaultInd:f.defaultInd,intDefaultInd:f.intDefaultInd,viewInWebInd:f.viewInWebInd,multiValueInd:f.multiValueInd}); if(tempAll.indexOf(f.fieldName)<0){ tempAll.push(f.fieldName); tempAll2.push({text:f.displayName,value:f.fieldName,defaultInd:"true",intDefaultInd:f.intDefaultInd,viewInWebInd:f.viewInWebInd,multiValueInd:f.multiValueInd}); } } }); }); dataFields['All'] = angular.copy(tempAll2); scanTypeOptions.forEach(function(s){ dataFields[s.value].sort(utilService.sortJson('text',false,sortLowerCase)); }); return dataFields; } function getLinkedMailObjectDataFields(scanTypeOptions,filterConfig){ var dataFields = {}; scanTypeOptions.forEach(function(s){ dataFields[s.value]=[]; // check if the field should be included for linked mail object data filterConfig.forEach(function(f){ if(f.filterLevel===s.value && f.filterCategory==="DataField"&&f.groupDisplayInd){ var _value = f.fieldName.trim(); if(["imcb","imtb","imb"].indexOf(_value.toLowerCase())<0){ dataFields[s.value].push({text:f.displayName,value:_value,defaultInd:f.defaultInd,intDefaultInd:f.intDefaultInd,viewInWebInd:f.viewInWebInd,multiValueInd:f.multiValueInd,multiValueInd:f.multiValueInd}); } } }); }); scanTypeOptions.forEach(function(s){ dataFields[s.value].sort(utilService.sortJson('text',false,sortLowerCase)); }); return dataFields; } function getLinkedMailObjectScanFields(scanTypeOptions,filterConfig){ var dataFields = {}; scanTypeOptions.forEach(function(s){ dataFields[s.value]=[]; // check if the field should be included for linked mail object data scan details filterConfig.forEach(function(f){ if(f.filterLevel===s.value && f.filterCategory==="DataField" && f.drillDownDisplayInd){ dataFields[s.value].push({text:f.displayName,value:f.fieldName.trim(),defaultInd:f.defaultInd,intDefaultInd:f.intDefaultInd,viewInWebInd:f.viewInWebInd}); } }); }); scanTypeOptions.forEach(function(s){ dataFields[s.value].sort(utilService.sortJson('text',false,sortLowerCase)); }); return dataFields; } function orderScanType(s){ var orderArray = ['All','Container','Handling Unit','Bundle','Piece']; if( orderArray.indexOf(s)>=0){ return orderArray.indexOf(s); } else{ return 9; } } function orderHandlingEvent(s){ var orderArray = ["A","L","AA","AL"]; if( orderArray.indexOf(s)>=0){ return orderArray.indexOf(s); } else{ return s; } } function sortLowerCase(s){ return s?s.toLowerCase():""; } function activeDate(startDate,endDate){ var today = +new Date(); var start = startDate&&startDate!=="null"? +new Date(startDate):Number.NEGATIVE_INFINITY; var end = endDate&&endDate!=="null"? +new Date(endDate):Number.POSITIVE_INFINITY; return start<=today && today<=end; } function getDelegationEntityByCrid(delegateCrid,allDelegation){ var result = []; var resultObj = {}; allDelegation.forEach(function(delegation){ if(delegation.delegate_crid===delegateCrid && activeDate(delegation.start_date,delegation.end_date)){ delegation.delegator_mid = delegation.delegator_mid?delegation.delegator_mid:"-1"; if(resultObj[delegation.delegator_crid]){ if(resultObj[delegation.delegator_crid].indexOf(delegation.delegator_mid)<=0){ resultObj[delegation.delegator_crid].push(delegation.delegator_mid); } } else{ resultObj[delegation.delegator_crid] = [delegation.delegator_mid]; } } }); for(var crid in resultObj){ if(resultObj[crid].indexOf("-1")>=0){ result.push({delegator_crid:crid,delegator_mid:[]}); } else{ result.push({delegator_crid:crid,delegator_mid:resultObj[crid]}); } } return result; } // R3 function displayEntityDetail(data, stids){ var detail = {}; detail.cridMidList = []; detail.cridStidList = []; detail.midStidList = []; detail.routingStidList = []; var midCrid = {}; // given a mid, find its crid if(data.cridMid){ Object.keys(data.cridMid).sort().forEach(function(c){ if(data.cridMid[c].length&&data.cridMid[c][0]){ detail.cridMidList.push({key:"CRID "+c, value:"MID(s): "+data.cridMid[c].sort().join(', ')}); // put mid-crid into midCrid look up data.cridMid[c].forEach(function(_m){ midCrid[_m] = c; }); } else{ data.cridMid[c] = []; detail.cridMidList.push({key:"CRID "+c, value:"All MIDs selected"}); } }); } if(data.cridStid){ Object.keys(data.cridStid).sort().forEach(function(c){ if(data.cridStid[c].length&&data.cridStid[c][0]){ detail.cridStidList.push({key:"All MID(s) of CRID "+c,value:"STID(s): "+data.cridStid[c].sort().join(', ')}); } else{ data.cridStid[c] = []; detail.cridStidList.push({key:"All MID(s) of CRID "+c, value:"All STIDs Selected"}); } }); } if(data.midStid){ Object.keys(data.midStid).sort().forEach(function(m){ var cridString = midCrid[m]? " of CRID "+midCrid[m]:""; if(data.midStid[m].length&&data.midStid[m][0]){ detail.midStidList.push({key:"MID "+m+cridString, value:"STID(s): "+data.midStid[m].sort().join(', ')}); } else{ data.midStid[m]= []; detail.midStidList.push({key:"MID "+m+cridString, value:"All STIDs Selected"}); } }); } if(data.routingStid){ Object.keys(data.routingStid).sort().forEach(function(r){ if(data.routingStid[r].length&&data.routingStid[r][0]){ detail.routingStidList.push({key:"Routing Code "+r, value:"STID(s): "+data.routingStid[r].sort().join(', ')}); } else{ data.routingStid[r] = []; if(stids){ detail.routingStidList.push({key:"Routing Code "+r, value:"STID(s): "+stids.sort().join(', ')}); //if empty array, display the tracing stids list } else{ detail.routingStidList.push({key:"Routing Code "+r,value:"All STIDs Selected"}); } } }); } // need these maps for loading selection into select entity directive detail.cridMid = data.cridMid; detail.cridStid = data.cridStid; detail.midStid = data.midStid; detail.routingStid = data.routingStid; return detail; } function displayFilterDetail(filterAndFields,data){ var temp = { filter:data.filter, scanType:utilService.mapScanTypeReverse(data.ev_type), dataFields:[], scanSubType:[] }; return mapFieldDisplayName(filterAndFields,temp).filter; } function displayViewDetail(filterAndFields,data){ var temp = { filter:[], scanType:utilService.mapScanTypeReverse(data.ev_type), dataFields:data.dataFields, scanSubType:[] }; return mapFieldDisplayName(filterAndFields,temp).dataFields; } function displayReportDetail(filterAndFields,data, stids){ var detail = {entity:{},filter:{},view:{},mailObject:{}}; detail.entity = displayEntityDetail(data.entity, stids); detail.filter = displayFilterDetail(filterAndFields,data.filter); detail.view = displayViewDetail(filterAndFields,data.view); var temp = { filter:[], scanType:utilService.mapScanTypeReverse(data.ev_type), dataFields:[], scanSubType:data.hdlg_ev_type }; var scanSubType = mapFieldDisplayName(filterAndFields,temp).scanSubType; detail.mailObject = { scanType:utilService.mapScanTypeReverse(data.ev_type), scanSubType: scanSubType, showWarning:false // show warning about handling event type available in future }; scanSubType.forEach(function(e){ if(e.text.indexOf('*')>=0){ detail.mailObject.showWarning = true; } }); return detail; } function formatFilterListMap(filterListMap){ var filterArray = []; // format filterlistmap into delegation filter style Object.keys(filterListMap).forEach(function(groupId){ var _group = filterListMap[groupId]; var group = []; _group.forEach(function(_condition){ group.push({field:_condition.dataElement,operator:_condition.operator,value:_condition.filterValue}); }); filterArray.push(group); }); return filterArray; } return factory; } }()); ;//WebContent/app/components/main/shared/factories/deleSubHttpService.js (function(){ /** * @ngdoc service * @name mt.main.deleSubHttpService * @requires $http * @description * This service makes AJAX calls to ivws_mt. * This is one place to store/construct all the end points related to view my data manage feeds, and manage my data authorizations, or delegation and subscription * * */ angular.module('mt.main').factory('deleSubHttpService',['$http','$rootScope','$q','utilService','addressBookService','deleSubDataService','userProfileService',deleSubHttpService]); function deleSubHttpService($http,$rootScope,$q,utilService,addressBookService,deleSubDataService,userProfileService){ var factory = {}; var root = $rootScope.IVWS_MT; var URL = { "getMyDataAccessPendingApproval":root+"/Delegations/getPendingRequest", /*get*/ "cancelRequest": root+"/Delegations/cancelRequest?", /*get, with parameters*/ "getDeliveryMethodConfig": root+"/Addressbooks/getTargetList?process=", /*delivery method config. bulk error would would be mail quality*/ "getMyRoleManagementCrid":root+"", "getMyRoleManagementMidByCrid":root+"", "getMyRoleManagementMidByMid":root+"", "getCrid": root+"/Subscriptions/getMyAccessCrid", /*get crid I have access to*/ "getCridsWithFullServiceIndicator": root+"/Subscriptions/getMyAccessCridWithFullServiceIndicator", /*get crid I have access to*/ "getMidByMid":root+"/Subscriptions/getMyAccessCridMidPairByMid?mid=", /*mid look up, mid I have access to, partial*/ "getMyAccessMidByCrid":root+"/Subscriptions/getMyAccessCridMidPairByCrid?crid=", /*mids I have access to under crid*/ //"getMyAccessRoutingByRouting":root+"/Subscriptions/getMyAccessRoutingByRouting?routing=", //"getMyAccessRoutingByCrid": root + "/Subscriptions/getMyAccessRoutingByCrid?crid=", "getMyAccessRouting":root+"/Subscriptions/getMyAccessRouting", "searchRoutingCodeByCridMid": root + "/routing/searchByCridMid?crid=", "getMailObjectsForCridMidRouting": root + "/visibility/getMailObjectsForCridMidRouting", "getAccessCridMid": root + "/Subscriptions/accessCridMid", "getStidOptions": root + "/routing/stids", "getDataAuthorizedToMeDetailByCrid": root+"/Subscriptions/viewDataAuthorizedToMeDetailsList?crid=", "getFilterConfig":root+"/dropdown/configFilter", /*get*/ "loadView":"", "saveView":"", "getViewDataFileHistory": root + "/Subscriptions/getDownloadList", "downloadFileHistory": root + "/Subscriptions/download?fileId=", "oneTimeDownloadFileHistory": root + "/Subscriptions/download?fileId=", "getViewInWebData":root + "/Subscriptions/viewSubscriptionsInWeb", /*post*/ "prepareForData": root + "/Subscriptions/prepareForData?type=", "getMyFeeds":root+"/Subscriptions/viewFeeds", "getFeedOutputHistory": root + "/Subscriptions/getOutputHistory", /*get*/ "resend": root + "/Subscriptions/resend", /*get*/ "resendSelectedFiles": root + "/Subscriptions/bulkResend", "getFeedDetail":root+"/Subscriptions/viewFeedDetails", "updateFeed":root+"/Subscriptions/modifyFeedDetails", /*post*/ "createFeed":root+"/Subscriptions/createSubscription", /*post*/ "deleteFeed": root+"/Subscriptions/deleteFeedDetails", "transferFeedOwnerCrid": root + "/Subscriptions/assignFeed", "exportDelegation" : root + "/Delegations/getAuthorizationHistoryExport", "exportDelegationToMe" : root + "/Delegations/getDataAuthorizedToMeExport", "exportSubscriptionFeeds" : root + "/Subscriptions/exportFeeds", "exportViewDataEntities": root + "/visibility/exportViewDataEntities?type=", "searchForFullServiceIndicators" : root+"/Subscriptions/searchForFullServiceIndicators", "searchForCrid":root + "/Subscriptions/SearchByCrid?crid=", /*search against all crids*/ "searchForMid":root + "/Subscriptions/SearchByMid?mid=", /*search against all mids*/ "getAllMidByCrid":root+"/Subscriptions/getAllCridMidPairByCrid?crid=", "isCridInternal":root+"/Subscriptions/isCridsInternal", "requestAccess":root+"/Delegations/requestAccess", /*post? TODO: not tested*/ "getRequestHistory": root+"/Delegations/getRequestHistory", /*get*/ "getDataAccessPendingMyApproval": root+"/Delegations/getPendingAuthorizations", /*get*/ "approveAuthorization":root+"/Delegations/approveRequest", /*POST*/ "getReasonsToDeny":root +"/dropdown/denyReason", "rejectAuthorization":root+"/Delegations/rejectRequest?", /*get*/ "deleteAuthorization":root+"/Delegations/deleteAuthorization?", "getAuthorizationHistory": root+"/Delegations/getAuthorizationHistory", /*get*/ "getAuthorizationHistoryDetail": root + "/Delegations/viewDataAuthorizedToMeDetails",/*TODO: same as data authorized to me detail?*/ "modifyAuthorizationHistoryDetail":root + "/Delegations/modifyDataAuthorizationHistory", "getMyCrid":root+"/Subscriptions/getMyCrid",/*get strictly my crids*/ "getMyMidByMid":root+"/Subscriptions/getMyCridMidPairByMid?mid=", /*strictly my mids*/ "getMyMidByCrid":root+"/Subscriptions/getMyCridMidPairByCrid?crid=", /*strictly my mids under this crid*/ "authorizeToUser":root+"/Delegations/authorizeToUsers", /*post*/ "getDataAuthorizedToMe":root+"/Delegations/dataAuthorizedToMe", "getDataAuthorizedToMeDetail":root + "/Delegations/viewDataAuthorizedToMeDetails", "updateDataAuthorizedToMeDetail":root + "/Delegations/modifyDataAuthorizedToMeDetails", "getBulkErrorConfig" : root + "/dropdown/configFilter?process=bulkErrorFieldToErrorTypeMapping", "getEPSPPCConfig" : root + "/dropdown/configFilter?process=epsPPCfields", "getConfigValues" : root + "/dropdown/configValue", "getViewInWebDisable" : root + "/dropdown/configValue", "getLogicalParentThresholdEnable" : root + "/dropdown/configValue", "getOtqDownloadAddressDisable": root + "/dropdown/configValue", "getMaxDateRangeOtq" : root + "/dropdown/configValue", "getMaxDatePastOtq": root + "/dropdown/configValue" }; /*------my dashboard------*/ /*------view my data manage feeds------*/ factory.getMyDataAccessPendingApproval = function(){ var url = URL.getMyDataAccessPendingApproval; return $http.get(url); }; var ePSPPCPackage = {}; function transaction(data){ if(data.filterType === "Address Quality"){ ePSPPCPackage.Transactions.AddressQuality[data.fieldName] = data.displayName; }else if(data.filterType === "Commercial Mailings"){ ePSPPCPackage.Transactions.CommercialMailings[data.fieldName] = data.displayName; }else if(data.filterType === "Deposits"){ ePSPPCPackage.Transactions.Deposits[data.fieldName] = data.displayName; }else if(data.filterType === "Network Returns"){ ePSPPCPackage.Transactions.NetworkReturns[data.fieldName] = data.displayName; }else if(data.filterType === "PC Postage"){ ePSPPCPackage.Transactions.PCPostage[data.fieldName] = data.displayName; }else if(data.filterType === "PO Boxes"){ ePSPPCPackage.Transactions.POBoxes[data.fieldName] = data.displayName; }else if(data.filterType === "NCMS"){ ePSPPCPackage.Transactions.NCMS[data.fieldName] = data.displayName; } } function bankAccountWithdrawal(data){ if(data.filterCategory === "Bank Account Withdrawals" || data.filterCategory === "BANK_ACCOUNT_WITHDRAWL"){ ePSPPCPackage.BankAccountWithdrawals.BankAccountWithdrawals[data.fieldName] = data.displayName; } } function postageStatementDetails(data){ if(data.filterCategory === "Postage Statement Details" || data.filterCategory === "POSTAGE_STATEMENT_DETAILS"){ ePSPPCPackage.PostageStatementDetails.PostageStatementDetails[data.fieldName] = data.displayName; } } function finalNotification(data){ if(data.filterCategory === "Final Notification" || data.filterCategory === "FINAL_NOTIFICATION"){ ePSPPCPackage.FinalNotification.FinalNotification[data.fieldName] = data.displayName; } } function pricingScan(data){ if(data.filterCategory === "Pricing Notification" || data.filterCategory === "PRICING_NOTIFICATION"){ ePSPPCPackage.PricingNotification.PricingNotification[data.fieldName] = data.displayName; } } //bulk error subscription // object keys are not exactly error types due to spaces and slashes. Could have one object keyed by error types due duplicates. var bulkErrorPackage = {}; function fullService(data){ if(data.filterType ==="MID"){ bulkErrorPackage.FullService.MID[data.fieldName] = data.displayName; } else if(data.filterType === "STID"){ bulkErrorPackage.FullService.STID[data.fieldName] = data.displayName; } else if(data.filterType === "Barcode Uniqueness"){ bulkErrorPackage.FullService.BarcodeUniqueness[data.fieldName] = data.displayName; //errorModifyData.FullService.copy[data.filterTypereplace(/\s/g, '')][data.fieldName] = data.displayName; } else if(data.filterType === "By/For"){ bulkErrorPackage.FullService.ByFor[data.fieldName] = data.displayName; } else if(data.filterType === "Unlinked Copal"){ bulkErrorPackage.FullService.UnlinkedCopal[data.fieldName] = data.displayName; } else if(data.filterType === "Entry Facility"){ bulkErrorPackage.FullService.EntryFacility[data.fieldName] = data.displayName; } else if(data.filterType === "Nesting/Sortation"){ bulkErrorPackage.FullService.NestingSortation[data.fieldName] = data.displayName; } else if(data.filterType === "Warning"){ bulkErrorPackage.FullService.Warning[data.fieldName] = data.displayName; }else{ console.log("Error type not matched " + data.filterType); } } function eInduction(data){ if(data.filterType === "Undocumented"){ bulkErrorPackage.eInduction.Undocumented[data.fieldName] = data.displayName; } else if(data.filterType === "Payment"){ bulkErrorPackage.eInduction.Payment[data.fieldName] = data.displayName; } else if(data.filterType === "Entry Point Discount"){ bulkErrorPackage.eInduction.EntryPoint[data.fieldName] = data.displayName; } else if(data.filterType === "Zone"){ bulkErrorPackage.eInduction.Zone[data.fieldName] = data.displayName; } else if(data.filterType === "Misshipped"){ bulkErrorPackage.eInduction.Misshipped[data.fieldName] = data.displayName; } else if(data.filterType === "Duplicate"){ bulkErrorPackage.eInduction.Duplicate[data.fieldName] = data.displayName; } else if(data.filterType === "Warning"){ bulkErrorPackage.eInduction.Warning[data.fieldName] = data.displayName; } } function seamlessAcceptance(data){ if(data.filterType === "Undocumented"){ bulkErrorPackage.SeamlessAcceptance.Undocumented[data.fieldName] = data.displayName; } else if(data.filterType === "Delivery Point"){ bulkErrorPackage.SeamlessAcceptance.DeliveryPoint[data.fieldName] = data.displayName; } else if(data.filterType === "Nesting/Sortation"){ bulkErrorPackage.SeamlessAcceptance.NestingSortation[data.fieldName] = data.displayName; } else if(data.filterType === "Postage"){ bulkErrorPackage.SeamlessAcceptance.Postage[data.fieldName] = data.displayName; } else if(data.filterType === "Weight"){ bulkErrorPackage.SeamlessAcceptance.Weight[data.fieldName] = data.displayName; } else if(data.filterType === "Mail Characteristic"){ bulkErrorPackage.SeamlessAcceptance.MailCharacteristics[data.fieldName] = data.displayName; } else if(data.filterType === "Warning"){ bulkErrorPackage.SeamlessAcceptance.Warning[data.fieldName] = data.displayName; } } function moveUpdate(data){ if(data.filterType === "Move Update"){ bulkErrorPackage.MoveUpdate.MoveUpdate[data.fieldName] = data.displayName; } else if(data.filterType === "Warning"){ bulkErrorPackage.MoveUpdate.Warning[data.fieldName] = data.displayName; } } //WS call to get EPSPPC data factory.getEPSPPCConfig = function(){ var url = URL.getEPSPPCConfig; return $http.get(url,{cache:true}); } factory.getEPSPPCFieldsOptions = function(resetPpc){ if(Object.keys(ePSPPCPackage).length === 0 || resetPpc){ ePSPPCPackage.Transactions = {"AddressQuality" :{}, "CommercialMailings" : {},"Deposits" : {}, "NetworkReturns" : {}, "PCPostage" : {}, "POBoxes":{},"NCMS":{}}; ePSPPCPackage.BankAccountWithdrawals = {"BankAccountWithdrawals" :{}}; ePSPPCPackage.PostageStatementDetails = {"PostageStatementDetails" : {}}; ePSPPCPackage.FinalNotification = {"FinalNotification" : {}}; ePSPPCPackage.PricingNotification = {"PricingNotification" : {}}; return factory.getEPSPPCConfig().then(function(response){ angular.forEach(response.data,function(element){ if(element.filterCategory === "Transactions" || element.filterCategory ==='TRANSACTIONS' ){ transaction(element); } else if(element.filterCategory === "Bank Account Withdrawals" || element.filterCategory === "BANK_ACCOUNT_WITHDRAWL" ){ bankAccountWithdrawal(element); } else if(element.filterCategory === "Postage Statement Details" || element.filterCategory === "POSTAGE_STATEMENT_DETAILS"){ postageStatementDetails(element); } else if(element.filterCategory === "Final Notification" || element.filterCategory === "FINAL_NOTIFICATION"){ finalNotification(element); } else if(element.filterCategory === "Pricing Notification" || element.filterCategory === "PRICING_NOTIFICATION"){ pricingScan(element); } }); return ePSPPCPackage; }) } else{ var deferred = $q.defer(); deferred.resolve(ePSPPCPackage); return deferred.promise; } } factory.mapEpsPpcDisplayNames = function(filterAndFields,scanType,type){ var scanGroupOptions; var dataFields = []; angular.forEach(ePSPPCPackage, function(scanGroup, key){ scanType = scanType.replace(/\s+/g, ''); if(key === scanType){ scanGroupOptions = scanGroup; } }); if(scanType === "Transactions"){ //need an extra loop because of sub-checkboxes for transactions angular.forEach(scanGroupOptions, function(subGroup, k){ angular.forEach(subGroup, function(text, value){ angular.forEach(filterAndFields, function(ff, x){ if(type == 'Approve'){ if(text === ff){ var dataObj = {text:text, value:value}; dataFields.push(dataObj); } }else{ if(value === ff){ var dataObj = {text:text, value:ff}; dataFields.push(dataObj); } } }); }); }); } else{ angular.forEach(scanGroupOptions[scanType], function(scanItem, k){ angular.forEach(filterAndFields, function(ff, x){ if(type == 'Approve'){ if(scanItem === ff){ var dataObj = {text:scanItem, value:k}; dataFields.push(dataObj); } }else{ if(k === ff){ var dataObj = {text:scanItem, value:ff}; dataFields.push(dataObj); } } }); }); } return dataFields; } // WS call to get bulk error data factory.getBulkErrorConfig = function(){ var url = URL.getBulkErrorConfig; return $http.get(url,{cache:true}); } factory.getBEFilterAndFieldsOptions = function(){ if(Object.keys(bulkErrorPackage).length === 0){ bulkErrorPackage.FullService = {"MID" :{}, "STID" :{},"BarcodeUniqueness" :{},"ByFor" :{}, "UnlinkedCopal" :{},"EntryFacility" :{},"NestingSortation" :{},"Warning":{}}; bulkErrorPackage.MoveUpdate = {"MoveUpdate":{},"Warning" :{}}; bulkErrorPackage.SeamlessAcceptance = {"Undocumented":{},"DeliveryPoint" :{}, "NestingSortation" :{},"Postage" :{},"Weight" :{},"MailCharacteristics" :{},"Warning" : {}}; bulkErrorPackage.eInduction = {"Undocumented":{},"Payment" :{}, "EntryPoint" :{},"Zone" :{},"Misshipped" :{},"Duplicate" :{},"Warning" :{}}; return factory.getBulkErrorConfig().then(function(response){ angular.forEach(response.data,function(element){ if(element.filterCategory ==="Full Service"){ fullService(element); } else if(element.filterCategory === "eInduction"){ eInduction(element); } else if(element.filterCategory === "Seamless Acceptance"){ seamlessAcceptance(element); } else if(element.filterCategory === "Move Update"){ moveUpdate(element); } }); return bulkErrorPackage; }) } else{ var deferred = $q.defer(); deferred.resolve(bulkErrorPackage); return deferred.promise; } }; factory.getAccessCridMid = function(){ var url = URL.getAccessCridMid; return $http.get(url); } factory.getStidOptions = function(){ var url = URL.getStidOptions; return $http.get(url); } factory.getConfigValues = function(){ var url = URL.getConfigValues; var body = ["BULK_ERROR_ENABLE","EMAIL_TIMESTAMP_FORMAT"]; return $http.post(url,body); } factory.getViewInWebDisable = function(){ var url = URL.getConfigValues; var body = ["PIECE_VIEW_IN_WEB_DISABLE", "BUNDLE_VIEW_IN_WEB_DISABLE"]; return $http.post(url,body); } factory.getOtqDownloadAddressDisable = function(){ var url = URL.getConfigValues; var body = ["PIECE_OTQ_DOWNLOAD_ADDRESS_DISABLE"]; return $http.post(url,body); } factory.getLogicalParentThresholdEnable= function(){ var url = URL.getConfigValues; var body = ["LOGICAL_PARENT_THRESHOLD_ENABLE"]; return $http.post(url,body); } factory.getStcConfigValues = function (){ var url = URL.getConfigValues; var body = ["STC_REPORT_ENABLE"]; return $http.post(url,body); } factory.getMaxDateRangeOtq = function (){ var url = URL.getConfigValues; url+="?confType="+"ONE_TIME_QUERY"; var body = ["PIECE_QUERY_DATE_RANGE"]; return $http.post(url,body); } factory.getMaxDatePastOtq = function (){ var url = URL.getConfigValues; url+="?confType="+"ONE_TIME_QUERY"; var body = ["PIECE_MAX_DAYS_PAST"]; return $http.post(url,body); } factory.getSessionTimeout = function (){ var url = URL.getConfigValues; var body = ["APPLICATION_TIMEOUT_MILLISEC"]; return $http.post(url,body); } factory.cancelRequest = function(toCancel){ var url = URL.cancelRequest; url+="requestUuid="+toCancel.req_id; url+="&delegationUuid="+toCancel.delegation_id; url+="&delegationStatus="+toCancel.req_sts; console.log("cancel request with url",url); return $http.get(url); }; factory.getCrid = function(purpose,delegateCrid){ var url = ""; console.log("get crid for", purpose); if(purpose==="authorize"){ // get crids that I can select to delegate to others var deferred = $q.defer(); deferred.resolve(userProfileService.getCridNamesBasedOnPermission('authorize',true)); return deferred.promise; } else if(purpose==="receiveDelegation"){ // get crids that I can select as recipient crid when requesting a delegation var deferred = $q.defer(); deferred.resolve(userProfileService.getCridNamesBasedOnPermission('requestDelegation',true)); return deferred.promise; } else if(purpose==="view"|| purpose==="createFeed"|| purpose==="modifyFeed"){ // get crids that I have visibility access url = URL.getCrid; if((purpose==="createFeed"|| purpose==="modifyFeed")&&delegateCrid){ url +="?delegateCrid="+delegateCrid; } return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ return {crid:d.crid,companyName:deleSubDataService.catchCompanyNameError(d)}; }),'crid') .filter(function(d){ return userProfileService.hasVisibility({type:"crid",crid:d.crid}); }); }); } }; factory.checkVisibilityForTransferFeed = function(feedEntity,toCrid){ // check if user has visibility for mail objects of this entity var pass = true; return factory.getMailObjectsForCridMidRouting(feedEntity,{},toCrid).then(function(_restriction){ if(_restriction.scanType.length&&_restriction.scanType.indexOf(utilService.mapScanTypeReverse(feedEntity.scanType))>=0){ // check if handling event types are covered feedEntity.scanSubType.forEach(function(e){ pass = pass && _restriction.eventType[utilService.mapScanTypeReverse(feedEntity.scanType)].indexOf(e)>=0; }); } else{ pass = false; } return pass; }); }; factory.transferFeedOwnerCrid = function(feed){ var url = URL.transferFeedOwnerCrid; var body = { prfl_id:feed.prfl_id, sbscbr_crid: feed.sbscbr_crid }; return $http.post(url,body); }; factory.exportFeed = function(scope){ var url; var currentTabIndex = scope.currentTabIndex; var tabID = scope.subTabs.data[currentTabIndex].id; var format = scope.exportOption.export_format; if ( tabID === 'approveDataRequest' ) { url = URL.exportDelegation + format; } else if ( tabID === 'dataAuthorizedToMe') { url = URL.exportDelegationToMe + format; } else if ( tabID === 'manageFeeds') { url = URL.exportSubscriptionFeeds + format; } else { return; } return $http.get(url); }; factory.exportViewDataEntities = function(format){ var url = URL.exportViewDataEntities + format; return $http.get(url); }; factory.searchForFullServiceIndicators = function(cridSearchTerm){ return $http.post(URL.searchForFullServiceIndicators, cridSearchTerm).then(function(res){return res.data;}); }; factory.getCridsWithFullServiceIndicator = function(purpose,delegateCrid,evType){ var url = ""; console.log("get crid for", purpose); console.log("get crid for evType", evType); if(purpose==="view"|| purpose==="createFeed" || purpose==="modifyFeed"){ // get crids that I have visibility access url = URL.getCridsWithFullServiceIndicator; if((purpose==="createFeed"|| purpose==="modifyFeed")&&delegateCrid){ url +="?delegateCrid="+delegateCrid; if(evType){ url +="&evType="+evType; } } return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ return {crid:d.crid,companyName:deleSubDataService.catchCompanyNameError(d), fullServiceIndicator:d.fullServiceIndicator}; }),'crid') .filter(function(d){ return userProfileService.hasVisibility({type:"crid",crid:d.crid}); }); }); } }; factory.getMidByMid = function(mid,purpose,delegateCrid){ // search mid clicked var url = ""; console.log("partial search mid for", purpose); if(purpose==='request'){ url = URL.searchForMid + "*"+mid+"*"; // no restriction when requesting return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ d.mid = d.mid? d.mid:d.mlr_id; d.companyName = deleSubDataService.catchCompanyNameError(d); return d; }),'mid'); }); } else{ if(purpose==="view"||purpose==="createFeed"||purpose==="modifyFeed"){ url = URL.getMidByMid; // TODO: change to visibility mids url += mid; if((purpose==="createFeed"|| purpose==="modifyFeed")&&delegateCrid){ url +="&delegateCrid="+delegateCrid; } return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ d.companyName = deleSubDataService.catchCompanyNameError(d); return d; }),'mid') .filter(function(d){ return userProfileService.hasVisibility({type:"mid",crid:d.crid,mid:d.mid}); }); }); } else if(purpose==="authorize"||purpose==="receiveDelegation"){ var task = purpose==="authorize"?"authorize":"requestDelegation"; url = URL.getMidByMid; url += mid; // search from mids of crids I belong to, and delegated to my crid, then filter based on permission return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ d.companyName = deleSubDataService.catchCompanyNameError(d); return d; }),'mid').filter(function(d){ return userProfileService.getAccess(task,d.crid,d.mid); }); }); } } //url = "assets/json/myMid.json"; }; factory.isCridInternal = function(crid){ var url = URL.isCridInternal; var body = crid; return $http.post(url, body); }; factory.getMidByCrid = function(crid,purpose,delegateCrid){ // clicked a crid to see mids var url = ""; console.log("get mid by crid for", purpose); if(purpose==="authorize"){ return userProfileService.getMidsBasedOnPermission("authorize",crid); } else if(purpose==="receiveDelegation"){ return userProfileService.getMidsBasedOnPermission("requestDelegation",crid); } else if(purpose==="request"){ // no restriction when requesting url = URL.getAllMidByCrid + crid; //url = "assets/json/companyCridMid/mid.json"; return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ d.companyName = deleSubDataService.catchCompanyNameError(d); return d; }),'mid'); }); } else if(purpose==="view"||purpose==="createFeed"|| purpose==="modifyFeed"){ url = URL.getMyAccessMidByCrid + crid;//TODO: change to visibility access mids if((purpose==="createFeed"|| purpose==="modifyFeed")&&delegateCrid){ url +="&delegateCrid="+delegateCrid; } return $http.get(url).then(function(response){ return utilService.removeDupe(response.data.map(function(d){ d.companyName = deleSubDataService.catchCompanyNameError(d); return d; }),'mid').filter(function(d){ return userProfileService.hasVisibility({type:"mid",crid:d.crid,mid:d.mid}); }); }); } }; factory.getRoutingCode = function(purpose,delegateCrid){ var url = ""; if(purpose==='view'){ url = URL.getMyAccessRouting; // TODO: change to visibility routing } else if(purpose==="createFeed" || purpose==="modifyFeed"){ url = URL.searchRoutingCodeByCridMid + delegateCrid; } //url = "assets/json/companyCridMid/routing.json"; return $http.get(url).then(function(response){ if(response.data&&response.data.rteg_code_list&&response.data.rteg_code_list.length>0){ return utilService.removeDupe(response.data.rteg_code_list.map(function(r){ r = r.split('"').join(''); return r; })).filter(function(d){ return userProfileService.hasVisibility({type:"routingCode",routingCode:d}); }).sort(); } else{ return []; } }); }; factory.getMailObjectsForCridMidRouting = function(entity,restriction,delegateCrid,isEPSPPC){ var url = URL.getMailObjectsForCridMidRouting; var body = {routingList:[],crids:[]}; var _routingList = []; var isEPSPPC = isEPSPPC || false; console.log('restriction in getmailobjectcridmid... is ',restriction); if(entity.routingList){ _routingList = entity.routingList; } else if(entity.routingFilterMap){ _routingList = Object.keys(entity.routingFilterMap); } body.routingList = _routingList.map(function(r){ return {crid:userProfileService.getCridForVisibileRoutingCode(r),rteg_code_str:r}; }); if(entity.cridMidDetail){ Object.keys(entity.cridMidDetail).forEach(function(_crid){ body.crids.push({ "crid": _crid, "midList": entity.cridMidDetail[_crid], receiving_crid:delegateCrid }); }); } else { // entity comes from modify feed, no parent crid info available for mids if(entity.cridFilterMap){ Object.keys(entity.cridFilterMap).forEach(function(_crid){ body.crids.push({ "crid": _crid, "midList": [], receiving_crid:delegateCrid }); }); } if(entity.midFilterMap && !entity.cridMidMap){ Object.keys(entity.midFilterMap).forEach(function(_mid){ body.crids.push({ "crid": null, "midList": [_mid], receiving_crid:delegateCrid }); }); } else if(entity.midFilterMap && entity.cridMidMap){ Object.keys(entity.cridMidMap).forEach(function(crid){ console.log("crid ", crid); console.log("mids ", entity.cridMidMap[crid]); body.crids.push({ "crid": crid, "midList": entity.cridMidMap[crid], receiving_crid:delegateCrid }); }); } } //url = "assets/json/visibility/getMailObjectType2.json"; return $http.post(url,body).then(function(res){ var eventTypeRestriction = {}; var combinedRestriction = {}; var scanType; res.data.forEach(function(r){ scanType = deleSubDataService.mapScanTypeReverse(r.id); if (!isEPSPPC){ if (r.id != 'PPC_PN' && r.id != 'PPC_FN' && r.id != 'EPS_BA' && r.id != 'EPS_PS' && r.id != 'EPS_TS'){ if(r.mail_event_type.length&&(!restriction.scanType || restriction.scanType.indexOf(scanType)>=0)){ eventTypeRestriction[scanType] = r.mail_event_type.map(function(e){ return e.id; }); } } } else if (isEPSPPC) { if (r.id == 'PPC_PN' || r.id == 'PPC_FN' || r.id == 'EPS_BA' || r.id == 'EPS_PS' || r.id == 'EPS_TS'){ eventTypeRestriction[scanType] = []; //eventTypeRestriction[scanType].push("NONE"); } } }); combinedRestriction.scanType = Object.keys(eventTypeRestriction); combinedRestriction.eventType = eventTypeRestriction; console.log('should get users available checkbox with',body); console.log("user has visibility on checkboxes:",res); console.log("user has visibility on mail objects:",combinedRestriction); return combinedRestriction; }); }; /*------search company crid mid in all------*/ factory.searchForCrid = function(crid){ // request var url = URL.searchForCrid+ "*"+crid+"*"; return $http.get(url).then(function(response){ return response.data.map(function(d){ return {crid:d.crid,companyName:deleSubDataService.catchCompanyNameError(d)}; }); }); }; // not called anymore factory.searchForMid = function(mid){ var url = URL.searchForMid + "*"+mid+"*"; //url = "assets/json/companyCridMid/mid.json"; return $http.get(url).then(function(response){ return response.data.map(function(d){ d.mid = d.mid? d.mid:d.mlr_id; d.companyName = deleSubDataService.catchCompanyNameError(d); return d; }); }); }; factory.getDeliveryMethodConfig = function(purpose){ /* this method builds the target option (servers) from data received, which should be latest * save a copy of server dropdown to address book service in case of edit and delete * won't be called again when servers are changed at other places of the app, addressBookService will provide latest server * */ var url = URL.getDeliveryMethodConfig; if(purpose==="CreateFeed"){ url+="CreateFeed"; //url = "assets/json/viewMyDataManageFeeds/createFeedNoTarget.json"; return $http.get(url).then(function(response){ var options = {format:[],target:[],frequencyUnit:[],timezoneUnit:[],delimiter:[],delimiter_mult_value:[], provisionType:[],messageVersion:[],compressionInd:[],ampmType:[{text:"AM",value:"AM",field:"ampmType"},{text:"PM",value:"PM",field:"ampmType"}]}; response.data.FileType.forEach(function(d){ options.format.push({text:d.display_name,value:d.value,field:"format"}); /*the value is in the field dataType or field_name*/ }); response.data.Target.forEach(function(d){ options.target.push(addressBookService.buildServerOption(d)); }); response.data.Frequency.forEach(function(d){ options.frequencyUnit.push({text:d.display_name,value:d.value,field:"frequencyUnit"}); /*the value is in the field dataType or field_name*/ }); (!response.data.TimeZone)&&(response.data.TimeZone=[{display_name:"Eastern (UTC-5)",value:"US/Eastern"}]); response.data.TimeZone.forEach(function(d){ options.timezoneUnit.push({text:d.display_name,value:d.value,field:"timezoneUnit"}); /*the value is in the field dataType or field_name*/ }); response.data.Delimiter.forEach(function(d){ options.delimiter.push({text:d.display_name,value:d.value,field:"delimiter"}); /*the value is in the field dataType or field_name*/ options.delimiter_mult_value.push({text:d.display_name,value:d.value,field:"delimiter"}); /*the value is in the field dataType or field_name*/ }); response.data.ProvisionType.forEach(function(d){ options.provisionType.push({text:d.display_name,value:d.value,field:"provisionType"}); }); response.data.MessageVersion.forEach(function(d){ options.messageVersion.push({text:d.display_name,value:d.value,field:"messageVersion"}); }); response.data.CompressionInd.forEach(function(d){ options.compressionInd.push({text:d.display_name,value:d.value,field:"compressionInd"}); }); options.compressionInd.sort(utilService.sortJson('text')); options.format.sort(utilService.sortJson('text')); options.provisionType.sort(utilService.sortJson('text')); options.messageVersion.sort(utilService.sortJson('text', true)); options.delimiter.sort(utilService.sortJson('text')); options.delimiter_mult_value.sort(utilService.sortJson('text')); options.target.sort(utilService.sortJson('text')); // options.timezoneUnit.sort(utilService.sortJson('text')); options.timezoneUnit.sort(utilService.sortJson('text',false,function(s){ return ['atlantic (utc-04)','eastern (utc-5)','central (utc-6)','mountain (utc-7)','pacific (utc-8)','alaska (utc-9)','hawaii (utc-10)'].indexOf(s.toLowerCase()); })); options.delimiter.push({text:"Other - Please specify",value:"other",field:"delimiter"}); options.delimiter_mult_value.push({text:"Other - Please specify",value:"other",field:"delimiter"},{text:"N/A",value:"na",field:"delimiter"}); addressBookService.saveServerDropdown(options.target); options.frequencyUnit.sort(utilService.sortJson('text',false,function(s){ return ['minutes','minute(s)','hours','hour(s)','days','day(s)'].indexOf(s.toLowerCase()); })); options.EpsPpcFrequencies = [{value:"HOURS",text:"Hourly"},{value:"DAYS",text:"Daily"},{value:"WEEKS",text:"Weekly"},{value :"MONTHS",text:"Monthly"}]; // these don't come from mt_web_config table // options.frequencyMinutes = [{text:"15",value:"15"}, // {text:"30",value:"30"}, // {text:"45",value:"45"}]; return options; }); } else{ url +="DeliveryMethod"; //url = "assets/json/viewMyDataManageFeeds/deliveryMethodNoTarget.json"; return $http.get(url).then(function(response){ var options = {fileType:[],delimiter:[], target:[],dataFormat:[],provisionType:[],messageVersion:[],compressionInd:[]}; response.data.DataFormat.forEach(function(d){ options.dataFormat.push({text:d.display_name,value:d.value,field:"dataFormat"}); /*the value is in the field dataType or field_name*/ }); response.data.FileType.forEach(function(d){ options.fileType.push({text:d.display_name,value:d.value,field:"fileType"}); /*the value is in the field dataType or field_name*/ }); response.data.Target.forEach(function(d){ options.target.push(addressBookService.buildServerOption(d)); }); response.data.Delimiter.forEach(function(d){ options.delimiter.push({text:d.display_name,value:d.value,field:"delimiter"}); /*the value is in the field dataType or field_name*/ }); response.data.ProvisionType.forEach(function(d){ options.provisionType.push({text:d.display_name,value:d.value,field:"provisionType"}); /*the value is in the field dataType or field_name*/ }); response.data.MessageVersion.forEach(function(d){ options.messageVersion.push({text:d.display_name,value:d.value,field:"messageVersion"}); }); response.data.CompressionInd.forEach(function(d){ options.compressionInd.push({text:d.display_name,value:d.value,field:"compressionInd"}); }); options.delimiter.sort(utilService.sortJson('text')); options.delimiter.push({text:"Other - Please specify",value:"other",field:"delimiter"}); addressBookService.saveServerDropdown(options.target); options.compressionInd.sort(utilService.sortJson('text')); options.fileType.sort(utilService.sortJson('text')); options.provisionType.sort(utilService.sortJson('text')); options.messageVersion.sort(utilService.sortJson('text', true)); options.target.sort(utilService.sortJson('text')); options.EpsPpcFrequencies = [{value:"HOURS",text:"Hourly"},{value:"DAYS",text:"Daily"},{value:"WEEKS",text:"Weekly"},{value :"MONTHS",text:"Monthly"}]; return options; }); } }; factory.getViewDataFileHistory = function(){ var url = URL.getViewDataFileHistory; return $http.get(url); }; factory.downloadFileHistory = function(fileId, fileName, feedDataType){ var url = URL.downloadFileHistory+fileId+"&type=bulkError"; if(fileName) { fileName = fileName.replace(' ','_').replace('?','_').replace('&','_'); url +='&fileName=' + fileName; } if(feedDataType && feedDataType!== "RBT") { url +='&feedDataType=' + feedDataType; } if(feedDataType && feedDataType === "RBT") { url = URL.downloadFileHistory + fileId + '&type=RBT'; } window.location = url; }; factory.oneTimeDownloadFileHistory = function(fileId){ var url = URL.oneTimeDownloadFileHistory+fileId+"&type=OneTime"; window.location = url; }; // not in use anymore, delegation rule can be at mid level, but select entity is multi-mid/crid, only backend checks delegation restrictions factory.getDataAuthorizedToMeDetailByCrid = function(finalList){ var crid = Object.keys(finalList)[0]; var url = URL.getDataAuthorizedToMeDetailByCrid + crid; return $http.get(url).then(function(response){ var restrictions = {}; if(response.data.length){ restrictions = {scanType:[],scanSubType:{},dataFields:{},filter:{}}; response.data.forEach(function(auth){ var _scanType = deleSubDataService.mapScanTypeReverse(auth.entity[0].scanType); var _scanSubType = deleSubDataService.mapEventTypeReverse(auth.entity[0].scanSubType); if(restrictions.scanType.indexOf(_scanType)<0){ restrictions.scanType.push(_scanType); restrictions.scanSubType[_scanType] = _scanSubType; restrictions.filter[_scanType] = auth.filter.map(function(ff){ return ff.map(function(f){ f.operator = operatorNameMap[f.operator]; f.readonly = true; return f; }); }); restrictions.dataFields[_scanType] = auth.dataFields; } }); } else{ restrictions = null; // my own crid } return restrictions; }); }; factory.prepareForData = function(entity,filterAndFields,config,type){ var url = URL.prepareForData + type; var body = {entity:{},filter:[],dataFields:[],deliveryMethod:{}}; body.entity = deleSubDataService.buildBodyEntityForOneTimeView(entity,filterAndFields); body.dataFields = deleSubDataService.cleanUpDataField(filterAndFields.dataFields); body.filter = deleSubDataService.cleanUpFilter(filterAndFields.filter); body.scanRecordStatus = filterAndFields.scanRecordStatus; body.parentScanOption = filterAndFields.parentScanOption; body.tracingStidInd = filterAndFields.tracingStidInd; body.nonTracingStidInd = filterAndFields.nonTracingStidInd; var deliveryMethod = {}; if(type==='sendToAddress'){ deliveryMethod = { file_type:config.format==="MAILXML"?config.format+"_"+config.messageVersion:config.format, field_delimiter:"", target:config.target.map(function(_t){ return {uuid:_t,host:addressBookService.getServerData(_t).destn_host}; }), contact:config.contact.map(function(_t){ return {uuid:_t,email:addressBookService.getContactData(_t).prmy_email}; }), connection_protocol:config.provisionType, ntfy_on_err_ind:config.ntfy_on_err_ind, ntfy_on_scs_ind:config.ntfy_on_scs_ind, compression_ind:config.compressionInd==="false"?false:true }; if(config.format==="DELIMITED"){ deliveryMethod.field_delimiter = config.delimiter==="other"?config.delimiter2:config.delimiter; } else{ deliveryMethod.field_delimiter = null; } if(config.format==="MAILXML"){ deliveryMethod.compression_ind = false; } } else{ deliveryMethod.file_type = config.format; // no mailxml if(config.format==='DELIMITED'){ deliveryMethod.field_delimiter = config.delimiter==='other'?config.delimiter2:config.delimiter; } } body.deliveryMethod = deliveryMethod; console.log(type+' with body',JSON.stringify(body)); return $http.post(url,body); }; factory.getViewInWebData = function(entity,filterAndFields,paginationOptions){ var url = URL.getViewInWebData; var body = {entity:[],filter:[],dataFields:[]}; // view in web uses a different entity format, need parent crid of mid to simplify query Object.keys(entity.cridMidList).forEach(function(_crid){ body.entity.push({ "crid": _crid, "mid": entity.cridMidList[_crid].length?entity.cridMidList[_crid]:[], "rteg_code_list":[], "scanType": deleSubDataService.mapScanType(filterAndFields.scanType), "scanSubType":deleSubDataService.mapEventType(filterAndFields.scanSubType) }); }); body.dataFields = deleSubDataService.cleanUpDataField(filterAndFields.dataFields); body.filter = deleSubDataService.cleanUpFilter(filterAndFields.filter); body.scanRecordStatus = filterAndFields.scanRecordStatus; body.parentScanOption = filterAndFields.parentScanOption; // pagination body.startingRow = paginationOptions.start; body.rowCount = paginationOptions.next; body.linkedMailObjectInd = false; console.log("ajax call for view in web data with",JSON.stringify(body)); return $http.post(url,body).then(function(res){ var result = {data:[], recordCount:0}; if(res.data&&res.data.results.length>0){ result.data = res.data.results; result.recordCount = res.data.recordCount; // test data // result.data = result.data.map(function(d,i){ // d.appt_id = paginationOptions.start+i+1; // return d; // }); } return result; }); }; factory.getViewInWebDataForLinkedMailObject = function(entity,filterAndFields,paginationOptions,dataFields,drillControl){ var url = URL.getViewInWebData; var body = {entity:[],filter:[],dataFields:[],linkedMailObjectInd:true,groupInd:false}; Object.keys(entity.cridMidList).forEach(function(_crid){ body.entity.push({ "crid": _crid, "mid": entity.cridMidList[_crid].length?entity.cridMidList[_crid]:[], "rteg_code_list":[], "scanType": deleSubDataService.mapScanType(filterAndFields.scanType), "scanSubType":deleSubDataService.mapEventType(filterAndFields.scanSubType) }); }); body.dataFields = deleSubDataService.cleanUpDataField(dataFields); body.filter = deleSubDataService.cleanUpFilter(filterAndFields.filter); body.scanRecordStatus = filterAndFields.scanRecordStatus; body.parentScanOption = filterAndFields.parentScanOption; console.log("drillControl for http call",drillControl); body.groupInd = drillControl.currentView==="data"; body.startingRow = paginationOptions.start || 0; body.rowCount = paginationOptions.next || 200; body.nextOffset = paginationOptions.nextOffset || 0; var filterToAdd = []; if(drillControl.currentLevel!==drillControl.initialLevel){ body.entity = body.entity.map(function(e){ e.scanType = deleSubDataService.mapScanType(drillControl.currentLevel); return e; }); if(drillControl.currentLevel==="Handling Unit"){ (drillControl.CS.imcb)&&(filterToAdd.push({field:"IMCB",operator:"=",value:drillControl.CS.imcb})); (drillControl.CS.job_id)&&(filterToAdd.push({field:"JOB_ID",operator:"=",value:drillControl.CS.job_id})); (drillControl.CS.mailg_grp_id)&&(filterToAdd.push({field:"MAILG_GRP_ID",operator:"=",value:drillControl.CS.mailg_grp_id})); } else if(drillControl.currentLevel==="Bundle"){ (drillControl.CS.imcb)&&(filterToAdd.push({field:"IMCB",operator:"=",value:drillControl.CS.imcb})); (drillControl.TS.imtb)&&(filterToAdd.push({field:"IMTB",operator:"=",value:drillControl.TS.imtb})); } } if(drillControl.currentView==="scan"){ if(drillControl.currentLevel==="Container"){ (drillControl.CS.imcb)&&(filterToAdd.push({field:"IMCB",operator:"=",value:drillControl.CS.imcb})); } if(drillControl.currentLevel==="Handling Unit"){ (drillControl.TS.imtb)&&(filterToAdd.push({field:"IMTB",operator:"=",value:drillControl.TS.imtb})); } } (body.filter.length)?(body.filter[0] = body.filter[0].concat(filterToAdd)):(body.filter=filterToAdd.length?[filterToAdd]:[]); console.log("ajax call for view in web data with",JSON.stringify(body)); // mock data for dev purpose // if(drillControl.currentView==="data"&&drillControl.currentLevel==="Container"){ // url= "assets/json/linkedMailObject/CSdata.json"; // } // if(drillControl.currentView==="data"&&drillControl.currentLevel==="Handling Unit"){ // url= "assets/json/linkedMailObject/TSdata.json"; // } // if(drillControl.currentView==="scan"&&drillControl.currentLevel==="Container"){ // url= "assets/json/linkedMailObject/CSscan.json"; // } // if(drillControl.currentView==="scan"&&drillControl.currentLevel==="Handling Unit"){ // url= "assets/json/linkedMailObject/TSscan.json"; // } // if(drillControl.currentView==="data"&&drillControl.currentLevel==="Bundle"){ // url= "assets/json/linkedMailObject/BSdata.json"; // } // if(drillControl.currentView==="scan"&&drillControl.currentLevel==="Bundle"){ // url= "assets/json/linkedMailObject/BSscan.json"; // } return $http.post(url,body).then(function(res){ var result = {data:[], recordCount:0,nextOffset:0}; if(res.data&&res.data.results.length>0){ result.data = res.data.results; result.recordCount = res.data.recordCount; result.nextOffset = res.data.nextOffset; // test data // result.data = result.data.map(function(d,i){ // d._debug = paginationOptions.start+i+1; // return d; // }); } return result; }); }; factory.getMyFeeds = function(){ var url = URL.getMyFeeds; //url = "assets/json/viewMyDataManageFeeds/myFeeds.json"; return addressBookService.getServers().then(function(){ return $http.get(url); }); }; factory.getFeedOutputHistory = function(row, fileHistoryDataType){ var url = URL.getFeedOutputHistory + "?profileId="+row.prfl_id; //url = "assets/json/viewMyDataManageFeeds/feedHistory.json"; // test only if(row.feed_data_type) url += '&feedDataType=' + row.feed_data_type; return $http.get(url); }; factory.resend = function(row, feedDataType){ var url = URL.resend +"?provnDate="+ row.provn_date if(row.sbscptn_prfl_id){ url += "&profileId="+row.sbscptn_prfl_id + "&fileId=" + row.file_id + "&addrBookServerId=" + row.addr_book_server_id; } else{ url += "&profileId="+row.prfl_id + "&fileId=" + row.file_id + "&addrBookServerId=" + row.addr_book_connection_id; } if(feedDataType) { url +='&feedDataType=' + feedDataType; } return $http.get(url); }; factory.resendSelectedFiles = function(fileArray){ var url = URL.resendSelectedFiles; var body = fileArray; return $http.post(url, body); }; factory.getFeedDetail = function(feed,action){ console.log("get feed detail for feed",feed); var url = URL.getFeedDetail; //url = "assets/json/viewMyDataManageFeeds/feedDetail.json"; return $http.post(url,{"prfl_id":feed.prfl_id}).then(function(response){ //return $http.get(url).then(function(response){ console.log('response in getfeeddetail is ', response); if(response.data.error||response.data.errorCount){ if(response.data.errorCount){ response.data.error = response.data.errorCount; } return response.data; } else{ var detail = {"scanType":"","scanSubType":[],"filter":[],"dataFields":[],"finalList":{}}; if(action==='view'){ if(response.data.entity){ console.log("viewing feed:",feed); detail.scanType = deleSubDataService.mapScanTypeReverse(response.data.entity.scanType); console.log('detail.scanType is ', detail.scanType); detail.filter = deleSubDataService.mapOperatorName(response.data.filter); if(detail.filter.length > 0){ for(var x=0;x 0){ for(var x=0;x0){ body.entity.cridFilterMap = deleSubDataService.stringifyFilterMap(entityInfo.copy.cridFilterMap); } else{ body.entity.cridFilterMap = null; } if(entityInfo.copy.midFilterMap&&Object.keys(entityInfo.copy.midFilterMap).length>0){ body.entity.midFilterMap = deleSubDataService.stringifyFilterMap(entityInfo.copy.midFilterMap); } else{ body.entity.midFilterMap = null; } if(entityInfo.copy.routingFilterMap&&Object.keys(entityInfo.copy.routingFilterMap).length>0){ body.entity.rtegCodeFilterMap = deleSubDataService.stringifyFilterMap(entityInfo.copy.routingFilterMap); } else{ body.entity.rtegCodeFilterMap = null; } body.entity.prfl_id = entityInfo.old.prfl_id; body.entity.scanType = entityInfo.old.scanType; // use old scan type, since it shouldn't change //body.entity.scanType = deleSubDataService.mapScanType(filter.scanType); body.entity.scanSubType = deleSubDataService.mapEventType(filter.scanSubType); body.dataFields = deleSubDataService.cleanUpDataField(filter.dataFields); body.filter = deleSubDataService.cleanUpFilter(filter.filter); body.scanRecordStatus = filter.scanRecordStatus; body.parentScanOption = filter.parentScanOption; body.deliveryMethod = feed; body.startDate = null; body.endDate = null; body.companyName = companyName; body.createUser = feed.createUser; body.entity.imb_tracing_svc_ind = feed.imb_tracing_svc_ind; body.entity.first_handling_event = feed.first_handling_event; body.createDate = utilService.formatDateObj(new Date(feed.createDate)); } //body.scheduleId = feed.scheduleId; var url = URL.updateFeed; console.log("updating feed with body",JSON.stringify(body)); return $http.post(url,[body]); }; factory.deleteFeed = function(entityInfo){ var url = URL.deleteFeed; var body = {"prfl_id":entityInfo.prfl_id}; return $http.post(url,body); }; factory.createFeed = function(newFinalList,newFilterAndFields,newDataFeedConfig,companyName){ var body = {"entity":{},"dataFields":[],"filter":[],"deliveryMethod":{}}; // post error data if( newFilterAndFields.bulkFeedList != undefined && Object.keys(newFilterAndFields.bulkFeedList).length >0){ var newErrorFeed = angular.copy(body); var bulkList = []; var cridFilterMap = {}; if(newFilterAndFields.cridFilterMap != undefined && newFilterAndFields.cridFilterMap.length >0){ newFilterAndFields.cridFilterMap.forEach(function(cridObj){ cridFilterMap[cridObj.crid] = ""; }) } angular.forEach(newFilterAndFields.bulkFeedList,function(feed){ newErrorFeed.deliveryMethod = angular.copy(feed); newErrorFeed.deliveryMethod.feed_data_type= "mail_quality_data"; newErrorFeed.mlr_role = feed.mlr_role; newErrorFeed.err_type = feed.filterType; newErrorFeed.pgm = feed.filterCategory; newErrorFeed.frequency = feed.frequency || "Daily"; newErrorFeed.dataFields = feed.dataFields; newErrorFeed.contact = feed.contact; delete newErrorFeed.deliveryMethod.mlr_role; delete newErrorFeed.deliveryMethod.err_type; delete newErrorFeed.deliveryMethod.pgm; delete newErrorFeed.deliveryMethod.frequency; delete newErrorFeed.deliveryMethod.dataFields; newErrorFeed.scanType = "BE"; newErrorFeed.deliveryMethod.send_intvl_unit = feed.send_intvl_unit; newErrorFeed.deliveryMethod.send_intvl = feed.send_intvl; newErrorFeed.deliveryMethod.sch_start_tz = feed.sch_start_tz; newErrorFeed.deliveryMethod.sch_start_dtm = feed.sch_start_dtm; newErrorFeed.deliveryMethod.imb_tracing_svc_ind = false; newErrorFeed.deliveryMethod.first_handling_event = false; newErrorFeed.deliveryMethod.compression_ind = feed.compression_ind; newErrorFeed.deliveryMethod.startDate = null; newErrorFeed.deliveryMethod.endDate = null; //newErrorFeed.deliveryMethod.contact =[]; newErrorFeed.deliveryMethod.contact = feed.contact; newErrorFeed.deliveryMethod.connection_protocol ="DTS_FTP"; newErrorFeed.entity.cridFilterMap = cridFilterMap; bulkList.push(newErrorFeed); newErrorFeed = angular.copy(body); }); console.log('create error feeds with',JSON.stringify(bulkList[0])); var url = URL.createFeed; return $http.post(url,bulkList); } else if( newFilterAndFields.EPSFeedList != undefined && Object.keys(newFilterAndFields.EPSFeedList).length >0){ var newEPSFeed = angular.copy(body); var EPSList = []; var cridFilterMap = {}; if(newFilterAndFields.cridFilterMap != undefined && newFilterAndFields.cridFilterMap.length >0){ newFilterAndFields.cridFilterMap.forEach(function(cridObj){ cridFilterMap[cridObj.crid] = ""; }) //console.log('cridFilterMap[cridObj.crid] is ', cridFilterMap); } angular.forEach(newFilterAndFields.EPSFeedList,function(feed){ newEPSFeed.deliveryMethod = angular.copy(feed); newEPSFeed.deliveryMethod.feed_data_type= "EPS_Data"; //newErrorFeed.mlr_role = feed.mlr_role; newEPSFeed.err_type = feed.filterType; newEPSFeed.pgm = feed.filterCategory; newEPSFeed.dataFields = feed.dataFields; newEPSFeed.contact = feed.contact; //delete newEPSFeed.deliveryMethod.mlr_role; delete newEPSFeed.deliveryMethod.err_type; delete newEPSFeed.deliveryMethod.pgm; delete newEPSFeed.deliveryMethod.frequency; //this was used to update the Your Feeds grid immediately. Don't need to send in. delete newEPSFeed.deliveryMethod.dataFields; newEPSFeed.scanType = feed.scanType; newEPSFeed.deliveryMethod.send_intvl_unit = feed.send_intvl_unit; newEPSFeed.deliveryMethod.send_intvl = feed.send_intvl; newEPSFeed.deliveryMethod.sch_start_tz = feed.sch_start_tz; newEPSFeed.deliveryMethod.sch_start_dtm = feed.sch_start_dtm; newEPSFeed.deliveryMethod.imb_tracing_svc_ind = false; newEPSFeed.deliveryMethod.first_handling_event = false; newEPSFeed.deliveryMethod.compression_ind = feed.compression_ind; newEPSFeed.deliveryMethod.startDate = null; newEPSFeed.deliveryMethod.endDate = null; //newErrorFeed.deliveryMethod.contact =[]; newEPSFeed.deliveryMethod.contact = feed.contact; newEPSFeed.deliveryMethod.connection_protocol ="DTS_FTP"; newEPSFeed.entity.cridFilterMap = cridFilterMap; EPSList.push(newEPSFeed); newEPSFeed = angular.copy(body); }); console.log('create EPS feed with',JSON.stringify(EPSList[0])); var url = URL.createFeed; return $http.post(url,EPSList); } else if( newFilterAndFields.PPCFeedList != undefined && Object.keys(newFilterAndFields.PPCFeedList).length >0){ var newPPCFeed = angular.copy(body); var PPCList = []; var cridFilterMap = {}; if(newFilterAndFields.cridFilterMap != undefined && newFilterAndFields.cridFilterMap.length >0){ newFilterAndFields.cridFilterMap.forEach(function(cridObj){ cridFilterMap[cridObj.crid] = ""; }) } angular.forEach(newFilterAndFields.PPCFeedList,function(feed){ newPPCFeed.deliveryMethod = angular.copy(feed); newPPCFeed.deliveryMethod.feed_data_type= "PPC_Data"; //newErrorFeed.mlr_role = feed.mlr_role; newPPCFeed.err_type = feed.filterType; newPPCFeed.pgm = feed.filterCategory; //newPPCFeed.frequency = feed.frequency; newPPCFeed.frequency = null; newPPCFeed.dataFields = feed.dataFields; newPPCFeed.contact = feed.contact; //delete newPPCFeed.deliveryMethod.mlr_role; delete newPPCFeed.deliveryMethod.err_type; delete newPPCFeed.deliveryMethod.pgm; delete newPPCFeed.deliveryMethod.frequency; delete newPPCFeed.deliveryMethod.dataFields; newPPCFeed.scanType = feed.scanType; newPPCFeed.deliveryMethod.send_intvl_unit = feed.send_intvl_unit; newPPCFeed.deliveryMethod.send_intvl = feed.send_intvl; newPPCFeed.deliveryMethod.sch_start_tz = feed.sch_start_tz; newPPCFeed.deliveryMethod.sch_start_dtm = feed.sch_start_dtm; newPPCFeed.deliveryMethod.imb_tracing_svc_ind = false; newPPCFeed.deliveryMethod.first_handling_event = false; newPPCFeed.deliveryMethod.compression_ind = feed.compression_ind; newPPCFeed.deliveryMethod.startDate = null; newPPCFeed.deliveryMethod.endDate = null; //newErrorFeed.deliveryMethod.contact =[]; newPPCFeed.deliveryMethod.contact = feed.contact; newPPCFeed.deliveryMethod.connection_protocol ="DTS_FTP"; newPPCFeed.entity.cridFilterMap = cridFilterMap; PPCList.push(newPPCFeed); newPPCFeed = angular.copy(body); }); console.log('create PPC feed with',JSON.stringify(PPCList[0])); var url = URL.createFeed; return $http.post(url,PPCList); } else{ body.entity.rptEntityId = newFinalList.rptEntityId; body.scanType = deleSubDataService.mapScanType(newFilterAndFields.scanType); body.scanSubType = deleSubDataService.mapEventType(newFilterAndFields.scanSubType); if(newFinalList.cridFilterMap&&Object.keys(newFinalList.cridFilterMap).length>0){ body.entity.cridFilterMap = deleSubDataService.stringifyFilterMap(newFinalList.cridFilterMap); } else{ body.entity.cridFilterMap = null; } if(newFinalList.midFilterMap&&Object.keys(newFinalList.midFilterMap).length>0){ body.entity.midFilterMap = deleSubDataService.stringifyFilterMap(newFinalList.midFilterMap); } else{ body.entity.midFilterMap = null; } if(newFinalList.routingFilterMap&&Object.keys(newFinalList.routingFilterMap).length>0){ body.entity.rtegCodeFilterMap = deleSubDataService.stringifyFilterMap(newFinalList.routingFilterMap); } else{ body.entity.rtegCodeFilterMap = null; } body.parentScanOption = newFilterAndFields.parentScanOption; body.dataFields = deleSubDataService.cleanUpDataField(newFilterAndFields.dataFields); body.filter = deleSubDataService.cleanUpFilter(newFilterAndFields.filter); body.scanRecordStatus = newFilterAndFields.scanRecordStatus; body.deliveryMethod = angular.copy(newDataFeedConfig); delete body.deliveryMethod.delimiter2; delete body.deliveryMethod.delimiter_mult_value_other; body.entity.imb_tracing_svc_ind = newDataFeedConfig.imb_tracing_svc_ind; body.entity.first_handling_event = newDataFeedConfig.first_handling_event; body.startDate = null; body.endDate = null; body.companyName = newDataFeedConfig.co_name;//companyName; console.log('create feed with',JSON.stringify(body)); var url = URL.createFeed; return $http.post(url,[body]); } }; /*------manage my data authorizations------*/ /*----request access to data*/ factory.createDelegation = function(finalList,filterAndFields,selectedUser,timePeriod,type,ppcVal,scanVal,val,helpDeskAuthnCorres){ var url = type==="authorize"?URL.authorizeToUser:URL.requestAccess; var body = {}; var filterAndFieldsArr = []; // if selected one scan type, 1 element in the array; if selected "All", 4 elements in the array var requestsArr = []; // each request is for one scan type timePeriod = deleSubDataService.cleanUpTimePeriod(timePeriod); if(filterAndFields.scanType==='All' || scanVal === 'All'){ var allOptions = deleSubDataService.getFilterAndFieldsOptions(); var eachScanType = {}; if(allOptions){ allOptions.scanTypeOptions.forEach(function(s){ if(s.value!=="All" && s.value!=="Full-Service Start-the-Clock Report"){ eachScanType = {}; eachScanType.scanType = s.value; eachScanType.scanSubType = allOptions.eventTypeOptions[s.value];//.map(function(e){return e.value;}); eachScanType.dataFields = allOptions.dataFields[s.value]; eachScanType.filter = []; filterAndFieldsArr.push(eachScanType); } }); } } else{ if((ppcVal == 'Payment Transactions' || ppcVal == 'Package Attributes') && val == "transaction" ){ filterAndFieldsArr = filterAndFields.scanSubType; }else{ filterAndFieldsArr = [filterAndFields]; } } filterAndFieldsArr.forEach(function(_filterAndFields){ var value; body = {"entity":[],"dataFields":[],"filter":[],"startDate":"","endDate":""}; if(ppcVal == 'Payment Transactions' || ppcVal == 'Package Attributes' ){ angular.forEach(_filterAndFields.scanType,function(scanVal){ if(scanVal.value == val){ val = scanVal.text; } }) val = val.charAt(0).toUpperCase()+ val.slice(1); if(val != "Transaction"){ _filterAndFields.scanSubType = []; _filterAndFields.value = ''; value = val; }else{ value = "Transactions"; } Object.keys(finalList).forEach(function(delegatorCrid){ Object.keys(selectedUser).forEach(function(delegateCrid){ body.entity.push({ "delegateCrid": delegateCrid, "delegateMid": [], "delegatorCrid": delegatorCrid, "delegatorMid": [], "scanType": deleSubDataService.mapScanType(value), "scanSubType":[_filterAndFields.value] }); }); }); if(val != "Transactions"){ body.entity.scanSubType = []; } angular.forEach(scanVal,function(dataVal){ angular.forEach(dataVal.dataFields,function(innerVal){ body.dataFields.push(innerVal.value); }) }); body.filter = []; }else{ Object.keys(finalList).forEach(function(delegatorCrid){ Object.keys(selectedUser).forEach(function(delegateCrid){ body.entity.push({ "delegateCrid": delegateCrid, "delegateMid": selectedUser[delegateCrid].allMidsFlag?[]:selectedUser[delegateCrid].mids, "delegatorCrid": delegatorCrid, "delegatorMid": finalList[delegatorCrid].allMidsFlag?[]:finalList[delegatorCrid].mids, "scanType": deleSubDataService.mapScanType(_filterAndFields.scanType), "scanSubType":deleSubDataService.mapEventType(_filterAndFields.scanSubType) }); }); }); body.dataFields = deleSubDataService.cleanUpDataField(_filterAndFields.dataFields); body.filter = deleSubDataService.cleanUpFilter(_filterAndFields.filter); } body.scanRecordStatus = filterAndFields.scanRecordStatus; body.startDate = timePeriod.startDate; body.endDate = timePeriod.endDate; body.helpDeskAuthnCorres = helpDeskAuthnCorres; requestsArr.push($http.post(url,angular.copy(body))); console.log('create delegation for '+type+" with body",JSON.stringify(body)); }); return $q.all(requestsArr); }; // use createDelegation factory.requestAccess = function(delegator,filterAndFields,delegate,timePeriod,ppcVal,scanVal,val){ return factory.createDelegation(delegator,filterAndFields,delegate,timePeriod,'request',ppcVal,scanVal,val); /*var url = URL.requestAccess; var formatedTimePeriod = deleSubDataService.cleanUpTimePeriod(timePeriod); var body = {"entity":[],"startDate":formatedTimePeriod.startDate,"endDate":formatedTimePeriod.endDate}; Object.keys(delegator).forEach(function(delegatorCrid){ Object.keys(delegate).forEach(function(delegateCrid){ body.entity.push({ "delegateCrid": delegateCrid, "delegateMid": delegate[delegateCrid].allMidsFlag&&userProfileService.getAccess('requestDelegation',delegateCrid)?[]:delegate[delegateCrid].mids, "delegatorCrid": delegatorCrid, "delegatorMid": delegator[delegatorCrid].allMidsFlag?[]:delegator[delegatorCrid].mids }); }); }); console.log('request access with ',JSON.stringify(body)); return $http.post(url,body);*/ }; factory.getRequestHistory = function(){ var url = URL.getRequestHistory; //url = "assets/json/authorizationHistory.json"; return $http.get(url); }; /*----approve data request----*/ factory.getDataAccessPendingMyApproval = function(){ var url = URL.getDataAccessPendingMyApproval; //url = "assets/json/authorizationHistory.json"; return $http.get(url); }; factory.getAuthorizationHistory = function(){ var url = URL.getAuthorizationHistory; //url = "assets/json/authorizationHistory.json"; return $http.get(url); }; factory.getDelegationDetail = function(record,type, dataType){ // type: view, modify, record.req_sts: Request Pending, Request Approved, Request Cancelled, Request Rejected var url = ""; var body = {"requestUuid": record.req_id, "delegationUuid":record.delegation_id}; // if(record.req_sts==="Request Pending"){ // url = "assets/json/manageMyDataAuthorizations/detail.json"; // } // else{ url = URL.getDataAuthorizedToMeDetail; //} return $http.post(url,body).then(function(response){ var detail = {"scanType":"","scanSubType":[],"filter":[],"dataFields":[],"finalList":{}}; if(response.data.error||response.data.errorCount||response.data.cancel||response.data.reject){ if(response.data.errorCount){ response.data.error = response.data.errorCount; } return response.data; } else{ if(type==='view'){ if(response.data.entity){ detail.scanType = deleSubDataService.mapScanTypeReverse(response.data.entity[0].scanType); detail.filter = deleSubDataService.mapOperatorName(response.data.filter); if(detail.filter.length > 0){ for(var x=0;x 0){ for(var x=0;x 0){ for(var x=0;x 0){ for(var x=0;x 0){ for(var x=0;xWebContent/app/components/main/shared/factories/notificationService.js (function(){ /** * @ngdoc service * @name mt.main.deleSubHttpService * @requires $http * @description * This service makes AJAX calls to ivws_mt. * This is one place to store/construct all the end points related to view my data manage feeds, and manage my data authorizations, or delegation and subscription * * */ angular.module('mt').factory('notificationService',['$http','$rootScope','$q','utilService','userProfileService',notificationService]); function notificationService($http,$rootScope,$q,utilService,userProfileService){ var factory = {}; var root = $rootScope.IVWS_MT; var URL = { "getNotifications":root+"/notifications",/*get*/ "setNotificationStatus":root+"/notifications/", "getNotificationSettings": root+"/notification/settings", "updateNotificationSettings": root+"/notificatino/settings" }; factory.getNotifications = function(statuses){ var url = URL.getNotifications; if(statuses){ url += "?notificationStatus=" + statuses.join(); } return $http.get(url, {silentCall:true}); }; factory.getInitialNotifications = function(statuses){ var url = URL.getNotifications; if(statuses){ url += "?notificationStatus=" + statuses.join(); } return $http.get(url); }; factory.setNotificationStatus = function(id, status){ var url = URL.setNotificationStatus; url += id; var body = {"status":status} return $http.post(url,body); }; factory.getNotificationSettings = function(){ var url = URL.getNotificationSettings; return $http.get(url); } factory.updateNotificationSettings = function(notificationSettings){ var url = URL.getNotificationSettings; body = notificationSettings; return $http.post(url,body); } return factory; } }()); ;//WebContent/app/components/main/shared/factories/reportQueryHttpService.js (function(){ /** * @ngdoc service * @name mt.main.reportQueryHttpService * @requires $http * @description * This service makes AJAX calls to ivws_mt. * * */ angular.module('mt.main').factory('reportQueryHttpService',['$http','$rootScope','$q','utilService','userProfileService','deleSubDataService','deleSubHttpService',reportQueryHttpService]); function reportQueryHttpService($http,$rootScope,$q,utilService,userProfileService,deleSubDataService,deleSubHttpService){ var factory = {}; var root = $rootScope.IVWS_MT; var URL = { "report": root+"/savedReport/report", //?evType=&delegateCrid= "reportEntity": root+"/savedReport/reportEntity", //?delegatedCrid= "getEntity":root+"/savedReport/reportEntity/", //?entityId= "reportFilter": root+"/savedReport/reportfilter", //?evType= "reportView": root+"/savedReport/reportView", //?evType= "validateFeeds": root+"/savedReport/reportEntity/validateFeeds" }; // json field names for each component, WS used to have different field names for each component... var jsonFieldMap = { report:{ id:"id", name:"name", desc:"description", ev_type:"mailObjectType", hdlg_ev_type:"mailEventTypes", privateInd:"privateInd", ownerCrids:"ownerCrids", ownerCompanies:"ownerCompanies" }, entity:{ id:"id", name:"name", desc:"description", ev_type:"ev_type", privateInd:"privateInd", ownerCrids:"ownerCrids", ownerCompanies:"ownerCompanies" }, filter:{ id:"id", name:"name", desc:"description", ev_type:"filterEvType", privateInd:"privateInd", ownerCrids:"ownerCrids", ownerCompanies:"ownerCompanies" }, view:{ id:"id", name:"name", desc:"description", ev_type:"viewEvType", privateInd:"privateInd", ownerCrids:"ownerCrids", ownerCompanies:"ownerCompanies" } }; factory.getRQAccessWithCoName= function(task){ /*createCompanyReport, updateCompanyReport, deleteCompanyReport, viewCompanyReport createUserReport, updateUserReport, deleteUserReport, viewUserReport*/ // returns a promise, use .then() return userProfileService.getCridNamesBasedOnPermission(task); }; factory.getRQAccessCrids = function(task){ /*createCompanyReport, updateCompanyReport, deleteCompanyReport, viewCompanyReport createUserReport, updateUserReport, deleteUserReport, viewUserReport*/ // returns array of crids sync return userProfileService.getCridsBasedOnPermission(task); }; factory.hasPermissionTo = function(task,componentCrids){ return userProfileService.getAccessOverlap(task,componentCrids); }; //testing call console.log("testing---I'm report manager for crids ",factory.getRQAccessCrids("createCompanyReport")); function unifyFieldNames(componentType,d){ /* * map json names, id, name, desc, create user, last update user, create time, last update time * ev_type, privateInd, ownerCrdis, ownerCompanies are mapped to common names (use entity json as standard) * view data fields mapped to dataFields for consistency throughout UI * */ d.ev_type = d.mailObjectType||d.evType||d.ev_type||d.viewEvType||d.filterEvType||""; d.ev_type2 = deleSubDataService.mapScanTypeReverse(d.ev_type); if(componentType==="report"){ // d.id = d.rpt_id; // d.name = d.rpt_name; // d.description = d.rpt_desc; // d.createdUser = d.create_user; // d.createdDate = d.create_dtm; // d.lastUpdateUser = d.last_updt_user; // d.lastUpdateDate = d.last_updt_dtm; // d.ownerCompanies =d.owner_co_name_map ||{}; // d.ownerCrids = d.owner_crid_list ||[]; // d.privateInd = d.private_ind; d.hdlg_ev_type = d.mailEventTypes ||[]; // not sure yet } if(componentType==="entity"){ d.cridMid = d.cridMid ||{}; d.midStid = d.midStid ||{}; d.cridStid = d.cridStid ||{}; d.routingStid = d.routingStid ||{}; } if(componentType==="filter"){ //d.filter = deleSubDataService.formatFilterListMap(d.filterListMap); d.filterList = d.filterList || []; d.filter = deleSubDataService.mapOperatorName(d.filterList); } if(componentType==="view"){ // d.id = d.viewID; // d.name = d.reportName; // d.description = d.reportDescpt; // d.createdUser = d.createUser; // d.createdDate = d.createTimestamp; // d.lastUpdateUser = d.userLastUpdated; // d.lastUpdateDate = d.lastUpdated; // d.ownerCompanies =d.ownerCompanyNameMap ||{}; // d.ownerCrids = d.ownerCridList ||[]; // d.privateInd = d.private; d.dataFields = d.columnNames ||[]; } d.ownerCrids = d.ownerCrids || []; d.ownerCompanies = d.ownerCompanies ||{}; d.ownerNames = Object.keys(d.ownerCompanies).map(function(c){ return d.ownerCompanies[c] ;}).join(","); return d; } factory.getEntity = function(id){ var url = URL.getEntity; url += id; return $http.get(url); }; factory.reviewEntityUpdate = function(componentType, component, oldComponentData){ var body = buildComponentBody(componentType,component,oldComponentData); console.log("update component WS payload:",body); var url = URL.validateFeeds; return $http.post(url, body); }; factory.getAvailableReportComponents = function(componentType,options){ var url = ""; if(componentType==="report"){ url = URL.report; //url = "assets/json/reportAndQuery/getAvailableReportsWithDetail.json"; } else if(componentType==="entity"){ url = URL.reportEntity; //url = "assets/json/reportAndQuery/getAvailableEntities.json"; } else if(componentType==="filter"){ url = URL.reportFilter; //url = "assets/json/reportAndQuery/getAvailableFilters.json"; } else if(componentType==="view"){ url = URL.reportView; //url = "assets/json/reportAndQuery/getAvailableViews.json"; } if((componentType==="entity"||componentType==="report") && options.delegateCrid){ url+="?delegateCrid="+options.delegateCrid+"&feedsInd=true"; } if(componentType==="filter"||componentType==="view"){ url+="?evType="+options.ev_type; } console.log("getting report component with options:",options); return $http.get(url).then(function(response){ return response.data .map(function(d){ return unifyFieldNames(componentType,d); }); }); }; factory.getReportDetail = function(report){ // var url = URL.report+"/"+report.id; // url = report.ev_type==="BS"?"assets/json/reportAndQuery/getReportDetail_BS.json":"assets/json/reportAndQuery/getReportDetail.json"; // return $http.get(url).then(function(response){ // return response.data; // }); // WS includes report detail on previous endpoint, might break it up into 2 separate calls // for now, return a promise of report object itself to mimic the behavior var deferred = $q.defer(); report.entity = report.entity ||{}; report.filter = report.filter ||{}; report.view = report.view ||{}; report.filter.ev_type = report.ev_type; report.view.ev_type = report.ev_type; deferred.resolve(report); return deferred.promise; }; factory.displayDetail = function(componentType,data, stids){ var detail = {}; var deferred = $q.defer(); if(componentType==="report"){ return deleSubHttpService.getFilterConfig().then(function(response2){ data = unifyFieldNames('report',data); data.entity = unifyFieldNames('entity',data.entity); data.filter = unifyFieldNames('filter',data.filter); data.view = unifyFieldNames('view',data.view); detail = deleSubDataService.displayReportDetail(response2.data,data, stids); return detail; }); } else if(componentType==="entity"){ deferred.resolve(deleSubDataService.displayEntityDetail(data, stids)); return deferred.promise; } else if(componentType==="filter"){ return deleSubHttpService.getFilterConfig().then(function(response2){ detail = deleSubDataService.displayFilterDetail(response2.data,data); return detail; }); } else if(componentType==="view"){ return deleSubHttpService.getFilterConfig().then(function(response2){ detail = deleSubDataService.displayViewDetail(response2.data,data); return detail; }); } }; factory.deleteReportComponent = function(componentType,component){ var url = ""; if(componentType==="report"){ url = URL.report; //url = "assets/json/reportAndQuery/getAvailableReports.json"; } else if(componentType==="entity"){ url = URL.reportEntity; //url = "assets/json/reportAndQuery/getAvailableEntities.json"; } else if(componentType==="filter"){ url = URL.reportFilter; //url = "assets/json/reportAndQuery/getAvailableFilters.json"; } else if(componentType==="view"){ url = URL.reportView; //url = "assets/json/reportAndQuery/getAvailableViews.json"; } url+="?"+jsonFieldMap[componentType].id+"="+component.id; console.log("deleting: ",component); return $http.delete(url); }; factory.createReportComponent = function(componentType,component){ //console.log("create component placeholder", componentType, component); var body = buildComponentBody(componentType,component); console.log("create component WS payload:",body); var url = ""; if(componentType==="report"){ url = URL.report; //url = "assets/json/reportAndQuery/getAvailableReports.json"; } else if(componentType==="entity"){ url = URL.reportEntity; //url = "assets/json/reportAndQuery/getAvailableEntities.json"; } else if(componentType==="filter"){ url = URL.reportFilter; //url = "assets/json/reportAndQuery/getAvailableFilters.json"; } else if(componentType==="view"){ url = URL.reportView; //url = "assets/json/reportAndQuery/getAvailableViews.json"; } // url = "assets/json/reportAndQuery/testDupeName.json"; // return $http.get(url,body).then(function(response){ return $http.post(url,body).then(function(response){ if(response.data&&response.data.id){ body.id = response.data.id; body.newFlag = true; // indicate this is create new component instead of update return body; // body contains new component meta } else{ return {errorMsg:response.data.errorMsg||"Cannot save "+componentType+" with duplicate name"}; } }); }; factory.updateReportComponent = function(componentType,component,oldComponentData){ function _helper(response){ if(response.data&&response.data.id){ return body; } else{ return {errorMsg:response.data.errorMsg||"Cannot save "+componentType+" with duplicate name"}; } } //console.log("update component placeholder", componentType, component,oldComponentData); var body = buildComponentBody(componentType,component,oldComponentData); console.log("update component WS payload:",body); var url = ""; if(componentType==="report"){ url = URL.report; //url = "assets/json/reportAndQuery/getAvailableReports.json"; // url = "assets/json/reportAndQuery/testDupeName.json"; // return $http.get(url,body).then(_helper); return $http.post(url,body).then(_helper); } else if(componentType==="entity"){ url = URL.reportEntity; //url = "assets/json/reportAndQuery/getAvailableEntities.json"; // url = "assets/json/reportAndQuery/testDupeName.json"; // return $http.get(url,body).then(_helper); return $http.post(url,body).then(_helper); } else if(componentType==="filter"){ url = URL.reportFilter; //url = "assets/json/reportAndQuery/getAvailableFilters.json"; // url = "assets/json/reportAndQuery/testDupeName.json"; // return $http.get(url,body).then(_helper); return $http.post(url,body).then(_helper); } else if(componentType==="view"){ url = URL.reportView; //url = "assets/json/reportAndQuery/getAvailableViews.json"; // url = "assets/json/reportAndQuery/testDupeName.json"; // return $http.get(url,body).then(_helper); return $http.post(url,body).then(_helper); } }; function buildComponentBody(componentType,component,oldComponentData){ var body = {}; // 1, populate meta fields: name, desc, ev_type, id (if updating existing component) body[jsonFieldMap[componentType].name] = component.meta.componentName; body[jsonFieldMap[componentType].desc] = component.meta.componentDescription; body[jsonFieldMap[componentType].ev_type] = utilService.mapScanType(component.content.scanType); if(oldComponentData){ // updating existing component, get its id body[jsonFieldMap[componentType].id]= oldComponentData.id; } // 2, populate access level fields body[jsonFieldMap[componentType].privateInd] = component.meta.privateReport?true:false; if(!component.meta.privateReport){ // non-private, need to set up crids, company names, access groups (future) if(!oldComponentData || oldComponentData.privateInd){ // creating new component, or old component is private, take the crid list as is body[jsonFieldMap[componentType].ownerCrids] = component.meta.componentCridsInput; body[jsonFieldMap[componentType].ownerCompanies] = {}; component.meta.coNameRef.forEach(function(c){ if(body[jsonFieldMap[componentType].ownerCrids].indexOf(c.value)>=0){ body[jsonFieldMap[componentType].ownerCompanies][c.value] = c.companyName; } }); } else{ // old component had crid list, don't remove crids that I don't have access to remove var oldCrids = oldComponentData.ownerCrids; var myCrids = factory.getRQAccessCrids("createCompanyReport"); var newCrids = component.meta.componentCridsInput; var notMyCrids = oldCrids.filter(function(o){ return myCrids.indexOf(o)<0; }); body[jsonFieldMap[componentType].ownerCrids] = notMyCrids.concat(newCrids); body[jsonFieldMap[componentType].ownerCompanies] = {}; component.meta.coNameRef.forEach(function(c){ if(body[jsonFieldMap[componentType].ownerCrids].indexOf(c.value)>=0){ body[jsonFieldMap[componentType].ownerCompanies][c.value] = c.companyName; } }); notMyCrids.forEach(function(c){ // get name for notMyCrids from oldComponentData body[jsonFieldMap[componentType].ownerCompanies][c] = oldComponentData.ownerCompanies[c]; }); } } // 3, populate "data" fields if(componentType==="report"){ body[jsonFieldMap[componentType].hdlg_ev_type] = deleSubDataService.mapEventType(component.content.scanSubType); body.entity = {}; _entityHelper(body.entity,component.content.entity); body.filter = {}; body.filter.filterList = deleSubDataService.cleanUpFilter(component.content.filter); body.scanRecordStatus = component.content.scanRecordStatus; body.tracingStidInd = component.content.tracingStidInd; body.nonTracingStidInd = component.content.nonTracingStidInd; body.parentScanOption = component.content.parentScanOption; body.view = {}; body.view.columnNames = deleSubDataService.cleanUpDataField(component.content.dataFields); // if(oldComponentData){ // updating existing component, get its id // if(oldComponentData.entity&&oldComponentData.entity.id){ // body.entity.id = oldComponentData.entity.id; // } // if(oldComponentData.filter&&oldComponentData.filter.id){ // body.filter.id = oldComponentData.filter.id; // } // if(oldComponentData.view&&oldComponentData.view.id){ // body.view.id = oldComponentData.view.id; // } // } } else if(componentType==="entity"){ _entityHelper(body,component.content); } else if(componentType==="filter"){ body.filterList = deleSubDataService.cleanUpFilter(component.content.data); } else if(componentType==="view") { body.columnNames = deleSubDataService.cleanUpDataField(component.content.data); } return body; } function _entityHelper(body,content){ if(content.entityType==="otq"){ // one time query, no stids body.cridMid = content.cridMidList||{}; body.cridStid = {}; // put empty STID on crids in cridList, which are "all mids" crids content.cridList.forEach(function(c){ body.cridStid[c] = []; }); body.midStid = {}; // put empty stid on mids in midList, which are "single mid" selected content.midList.forEach(function(m){ body.midStid[m] = []; }); body.routingStid = {}; // put empty stid on routings in routingList content.routingList.forEach(function(r){ body.routingStid[r] = []; }); } else if(content.entityType==="feed"){ body.cridMid = content.cridMidList||{}; body.cridStid = {}; Object.keys(content.cridFilterMap).forEach(function(c){ body.cridStid[c] = content.cridFilterMap[c].STID; }); body.midStid = {}; Object.keys(content.midFilterMap).forEach(function(m){ body.midStid[m] = content.midFilterMap[m].STID; }); body.routingStid = {}; Object.keys(content.routingFilterMap).forEach(function(r){ body.routingStid[r] = content.routingFilterMap[r].STID; }); } } return factory; } }()); ;//WebContent/app/shared/factories/httpInterceptorService.js (function(){ /** * @ngdoc service * @name mt.httpInterceptor * @requires $rootScope * @requires $location * @requires pendingRequestsFactory * @description * http interceptor service, redirects to error page based on error status code * add request to pendingRequestsFactory when fired, remove it from pendingRequestsFactory when returned * */ angular.module('mt').factory('httpInterceptor',['$rootScope','$location','pendingRequestsFactory',httpInterceptor]); function httpInterceptor($rootScope, $location,pendingRequestsFactory){ var service = {}, handledErrors =[400,404,500]; var timeoutCounter = 0; /* service.request = function(config){ var currentUser = $cookies.username, access_token = currentUser ? currentUser.access_token : null; if(access_token){ config.headers.authorization = access_token; config.headers.admin = $cookies.role; }; return config; };*/ service.request = function(config){ if(!config.silentCall){ config.timeStamp = new Date().getTime(); pendingRequestsFactory.add({url:config.url, time:config.timeStamp}); } return config; }; service.requestError = function(config){ return config; }; service.response = function(response){ if(!response.config.silentCall){ pendingRequestsFactory.remove({url:response.config.url, time:response.config.timeStamp}); } return response; }; service.responseError = function(response) { //we assume the session is expired; if(response.status === 410 || response.status === 403||response.status===302||response.status===0){ timeoutCounter++; if(timeoutCounter===1){ var ivws_mt = $rootScope.IVWS_MT+ "/app/redirect"; var envVariable = "";//devpx-cust if($rootScope.env==='dev'||$rootScope.env==='aws'){ envVariable = "devpx-cust"; } else if($rootScope.env==='cat'){ envVariable = 'catpx-cust'; } else if($rootScope.env==='sit'){ envVariable = 'sitpx-cust'; } location.href = "https://"+envVariable+"reg.usps.com/logout?app=INFORMED_VISIBILITY&appURL=" + ivws_mt; } } if(handledErrors.indexOf(response.status)!== -1){ $location.path('/httpError/'+response.status); } if(!response.config.silentCall){ pendingRequestsFactory.remove({url:response.config.url, time:response.config.timeStamp}); } return response; }; return service; } angular.module('mt').config(['$httpProvider',function($httpProvider){ $httpProvider.interceptors.push('httpInterceptor'); }]); }()); ;//WebContent/app/shared/factories/utilService.js (function(){ /* * @ngdoc * @name mt.utilService * @description * utility service factory, has functions for formatting * */ angular.module('mt').factory('utilService',['$timeout','$window','$rootScope',utilService]); function utilService($timeout, $window, $rootScope){ var factory = {}; factory.formatDate = formatDate; factory.allMid = allMid; factory.formatInputDate = formatInputDate; factory.formatDateObj = formatDateObj; factory.formatDateObjToUTC = formatDateObjToUTC; factory.dateReverse = dateReverse; factory.myAngularFilter = myAngularFilter; factory.removeDupe = removeDupe; factory.sortJson = sortJson; factory.getTimeZone = getTimeZone; factory.csvExport = csvExport; factory.jspdfExport = jspdfExport; factory.intersection = intersection; factory.mapScanTypeReverse = mapScanTypeReverse; factory.mapScanType = mapScanType; factory.arrToObj = arrToObj; factory.setAppConfig = setAppConfig; factory.getAppConfig = getAppConfig; factory.downloadFeed = downloadFeed; factory.sortDateString = sortDateString; function formatDate(s){ // returns MM/DD/YYYY to display on UI if(s&&s!=='null'){ if(s.length<=8){//MMDDYYYY format, add / return s.substring(0,2)+"/"+s.substring(2,4)+"/"+s.substring(4); } else{ // date string format, parse it first var d = new Date(s); var month = d.getMonth()+1>=10? d.getMonth()+1:"0"+(d.getMonth()+1); var day = d.getDate()>=10?d.getDate():"0"+d.getDate(); return month+"/"+day+"/"+d.getFullYear(); } } else{ return ""; } } function allMid(s){ if(!s || s==="" || (angular.isArray(s)&&s.length===0)){ return "ALL"; } else{ return s; } } /* format date from request to MMDDYYYY * request is a request obj, with field start_dtm and end_dtm*/ function formatInputDate(request){ var r = angular.copy(request); var start = new Date(r.start_dtm); var m = start.getMonth()+1>=10?start.getMonth()+1:"0"+(start.getMonth()+1); var d = start.getDate()>=10? start.getDate():"0"+start.getDate(); r.start_dtm = d+"/"+m+"/"+start.getFullYear(); var end = new Date(r.end_dtm); m = end.getMonth()+1>=10?end.getMonth()+1:"0"+(end.getMonth()+1); d = end.getDate()>=10? end.getDate():"0"+end.getDate(); r.end_dtm = d+"/"+m+"/"+end.getFullYear(); return {startDate:r.start_dtm,endDate:r.end_dtm}; } function formatDateObj(dt){ // dt is Date object, returns MMDDYYYY to send to WS if ( Object.prototype.toString.call(dt) === "[object Date]" ){ /*it is a Date obj*/ if (!isNaN(dt.getTime())) { // valid Date object return (dt.getMonth()+1>9?"":"0")+(dt.getMonth()+1)+""+(dt.getDate()>9?"":"0")+dt.getDate()+""+dt.getFullYear(); } else{ /*Invalid date object*/ return ""; } } else{ return ""; } } function formatDateObjToUTC(dt){ // dt is Date object, returns MMDDYYYY to send to WS if ( Object.prototype.toString.call(dt) === "[object Date]" ){ /*it is a Date obj*/ if (!isNaN(dt.getTime())) { // valid Date object var utcString = dt.getUTCDate()+""+(dt.getUTCMonth()>9?"":"0")+(dt.getUTCMonth()+1)+""+(dt.getUTCDate()>9?"":"0")+dt.getUTCFullYear(); utcString += (dt.getUTCHours()>9?"":"0")+(dt.getUTCHours())+(dt.getUTCMinutes()>9?"":"0")+dt.getUTCMinutes(); return utcString; } else{ /*Invalid date object*/ return ""; } } else{ return ""; } } function dateReverse(date){ //takes a date in MM/DD/YYYY format and returns it as YYYMMDD so it can be sorted accurately as a String x1=date.slice(0,2); x2=date.slice(3,5); x3=date.slice(6,10); return x3 + x1 + x2; } /* * filter data array, return sub array whose attr included in param "fields" contains key * used in ui-grid, since $filter doesn't work with ui-grid * */ function myAngularFilter(data,key,fields){ if(!data.length){ return []; } else if(!key){ return data; } else{ if (fields.length===0){ fields = Object.keys(data[0]); // didn't specify what fields, search all fields in data array } return data.filter(function(obj){ var pass = false; var value; fields.forEach(function(f){ if(f.indexOf('.')<0){ value = obj[f]+""; value = value.toLowerCase(); key = key.toLowerCase(); pass = pass || (value.indexOf(key)>=0); } else{// ie, target.desc var ff = f.split('.'); value = obj; // want obj.target.desc ff.forEach(function(_ff){ value = value[_ff]; // }); value = value+""; value = value.toLowerCase(); key = key.toLowerCase(); pass = pass || (value.indexOf(key)>=0); } }); return pass; }); } } /*return array reduced to no dupes in the field given*/ function removeDupe(arr,field){ var existing = []; var result = []; arr.forEach(function(a){ if(field){ if(existing.indexOf(a[field])<0){ existing.push(a[field]); result.push(a); } } else{ if(existing.indexOf(a)<0){ existing.push(a); result.push(a); } } }); return result; } function sortJson(field, reverse, primer){ var key = primer ? function(x) {return primer(x[field])} : function(x) {return x[field]}; reverse = !reverse ? 1 : -1; return function (a, b) { a = key(a); b = key(b); return reverse * ((a > b) - (b > a)); } } function csvExport(column,data,delimiter,escChar){ delimiter = delimiter||","; escChar = escChar||'\\'; var csvString = ''; column.forEach(function(c){ if(c.displayName){ csvString = csvString + "\"" +c.displayName.replace(delimiter,escChar+delimiter) +"\"" +","; } else{ csvString = csvString + ","; } }); csvString = csvString.substring(0,csvString.length - 1); csvString +="\n"; data.forEach(function(row){ column.forEach(function(c){ if(c.field&& row[c.field]!==undefined && row[c.field]!==null ){ if(typeof row[c.field]==="string"){ csvString = csvString + "\"" +row[c.field].replace(delimiter,escChar+delimiter) +"\"" +","; } else{ csvString = csvString +row[c.field]+","; } } else{ csvString = csvString + ","; } }); csvString = csvString.substring(0,csvString.length - 1); csvString = csvString + "\n"; }); csvString = csvString.substring(0, csvString.length - 1); // $timeout(function() { // var a = $('', { // style:'display:none', // href:'data:application/octet-stream;base64,'+btoa(csvString), // download:'download.csv', // onclick:'window.open(this.href)' // }).appendTo('body'); // a[0].click(); // a.remove(); // }, 0, false); downloadFile('download.csv',csvString,delimiter); } function isIE(){ var match = navigator.userAgent.search(/(?:Edge|MSIE|Trident\/.*; rv:)/); var isIE = false; if (match !== -1) { isIE = true; } return isIE; } function downloadFile (fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility) { var D = document; var a = D.createElement('a'); var strMimeType = 'application/octet-stream;charset=utf-8'; var rawFile; var ieVersion = isIE(); // IE10+ if (navigator.msSaveBlob) { return navigator.msSaveOrOpenBlob( new Blob( [exporterOlderExcelCompatibility ? "\uFEFF" : '', csvContent], { type: strMimeType } ), fileName ); } if (ieVersion) { var frame = D.createElement('iframe'); document.body.appendChild(frame); frame.contentWindow.document.open('text/html', 'replace'); frame.contentWindow.document.write('sep=' + columnSeparator + '\r\n' + csvContent); frame.contentWindow.document.close(); frame.contentWindow.focus(); frame.contentWindow.document.execCommand('SaveAs', true, fileName); document.body.removeChild(frame); return true; } //html5 A[download] if ('download' in a) { var blob = new Blob( [exporterOlderExcelCompatibility ? "\uFEFF" : '', csvContent], { type: strMimeType } ); rawFile = URL.createObjectURL(blob); a.setAttribute('download', fileName); } else { rawFile = 'data:' + strMimeType + ',' + encodeURIComponent(csvContent); a.setAttribute('target', '_blank'); } a.href = rawFile; a.setAttribute('style', 'display:none;'); D.body.appendChild(a); $timeout(function() { if (a.click) { a.click(); // Workaround for Safari 5 } else if (document.createEvent) { var eventObj = document.createEvent('MouseEvents'); eventObj.initEvent('click', true, true); a.dispatchEvent(eventObj); } D.body.removeChild(a); }, 0, false); } function jspdfExport(column,data){ var cols = []; var rows = []; var recordIdx; var columnDef; var columnIdx; // copy ng-grid's titles to pdf's table definition: var allColumnDefs = column; for ( columnIdx in allColumnDefs ) { columnDef = allColumnDefs[columnIdx]; var newColumnDef = { title: columnDef.displayName, dataKey: columnDef.field }; cols.push(newColumnDef); } // copy ng-grid's actual data to pdf's table: var allRecords = data; for (recordIdx in allRecords ) { var record = allRecords[recordIdx]; var newRow = {}; for (columnIdx in allColumnDefs ) { columnDef = allColumnDefs[columnIdx]; var value = record[columnDef.field]; if (value !== null) { newRow[columnDef.field] = value; } } rows.push(newRow); } var docName = 'download.pdf'; var pdfStyle = { styles: { overflow: 'linebreak' } }; var paperSize = cols.length>15?'a3':'a4'; var doc = new jsPDF('l', 'pt',paperSize); doc.autoTable(cols, rows, pdfStyle); doc.save(docName); } /* return a string as an offset to UTC time*/ function getTimeZone(){ return new Date().getTimezoneOffset(); } function intersection(arr1,arr2){ var result = []; if(angular.isArray(arr1)&&angular.isArray(arr2)&&arr2.length&&arr1.length){ arr1.forEach(function(a1){ if(arr2.indexOf(a1)>=0){ result.push(a1); } }); } if(!arr2.length){ result = arr1; } //console.log("intersection of ",arr1,arr2,result); return result; } function mapScanTypeReverse(scan){ var keys = {"CS":"Container","TS":"Handling Unit","PS":"Piece","BS":"Bundle","STC":"Full-Service Start-the-Clock Report","All":"All","EPS_TS":"Transactions", "PPC_FN":"Final Notification","EPS_BA":"Bank Account Withdrawals","EPS_PS":"Postage Statement Details","PPC_PN":"Pricing Notification","PPC_BA":"Bank Account Withdrawals","PPC_TS":"Transactions"}; return keys[scan]||scan; } function mapScanType(scan){ var keys = {"Container":"CS","Handling Unit":"TS","Piece":"PS","Bundle":"BS","Full-Service Start-the-Clock Report":"STC","All":"All", "Transactions":"EPS_TS","Bank Account Withdrawals":"EPS_BA","Postage Statement Details":"EPS_PS","Final Notification":"PPC_FN","Pricing Notification":"PPC_PN"}; return keys[scan]; } function downloadFeed(response, ID){ $window.open(response.config.url, "_self"); angular.element('#' + ID).modal('hide'); } function arrToObj(arr,keyField){ var obj = {}; arr.forEach(function(a){ if(keyField && a[keyField]){ obj[a[keyField]] = angular.copy(a); } }); return obj; } var appConfig = {}; function setAppConfig(configArray){ if(configArray&&configArray.length){ configArray.forEach(function(d){ if(d.field_name){ appConfig[d.field_name] = d; if(d.value&&d.value.indexOf(",")>=0){ appConfig[d.field_name].value = d.value.split(","); } } }); } console.log("app config:",appConfig); } function getAppConfig(field){ if(field&&appConfig){ return appConfig[field]; } return appConfig; } function sortDateString(s1,s2){ function _helper(a){ // convert date string to value if(a && a!=="null"){ var a1 = new Date(a); if (!isNaN(a1.getTime())){ var v = +a1; } else{ v = +new Date(); // not a date, put it in the front } } else{ v = +new Date(); // empty, put it in the front } return v; } //console.log( "s1,s2",_helper(s1),_helper(s2),_helper(s1) - _helper(s2)); if( _helper(s1) > _helper(s2)){ return 1; } else if(_helper(s1) < _helper(s2)){ return -1; } else{ return 0; } } return factory; } }());