//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;
}
}());