Name

sn_customerservice.CSEMailUtil

Description

No description available

Script

var CSEMailUtil = Class.create();
CSEMailUtil.prototype = {
  initialize: function() {
  },

  checkCaseChannel: function(email) {
  	var emails = this.getCSProductEmail();
  	if(!GlidePluginManager.isActive('com.glide.email_accounts') || gs.nil(email))
  		return false;
  	var toEmails = email.toLowerCase().split(',');
  	for(var i=0;i<toEmails.length;i++) 
  		if(emails.indexOf(toEmails[i]) > -1)
  			return true;
  	return false;
  },
  
  checkCaseProperty: function(email){
  	if(gs.nil(email))
  		return false;
  	var toEmails = email.split(',');
  	if(GlidePluginManager.isActive('com.glide.email_accounts')
  		&& toEmails.indexOf(this.getDefaultEmail().toLowerCase()) > -1)
  		return true;
  	return false;
  },
  
  checkCaseConfigPrefix: function(subject){
  	if(subject && subject.indexOf(this.getConfigPrefix())==0)
  		return true;
  	else
  		return false;
  },
  
  isUserExist: function(email_from){
  	if(gs.getProperty('sn_customerservice.email.create_case_for_non_matched_user', '')=="true")
  		return true;
  	
  	return this._isCustomerExist(email_from) || this._isAuthorizedContributorExist(email_from);
  },

  checkIfSenderHasFullAccessOnCase: function(caseGr, email_from){
  	if(gs.nil(caseGr) || gs.nil(email_from)) return false;
  	var emailFromLowerCase = (email_from+'').toLowerCase();
  	if(!gs.nil(caseGr.consumer) && !gs.nil(caseGr.consumer.email) && (caseGr.consumer.email.toLowerCase() == emailFromLowerCase)){
  		return true;
  	}
  	if(!gs.nil(caseGr.contact) && !gs.nil(caseGr.contact.email) && (caseGr.contact.email.toLowerCase() == emailFromLowerCase)){
  		return true;
  	}
  	return new global.CSMRelationshipUtils().checkIfEmailBelongsToCaseRelatedPartyWithFullAccess(caseGr, emailFromLowerCase);
  },

  getDefaultEmail: function(){
  	return gs.getProperty('glide.cs.email.case_queue_address', '');
  },
  
  getConfigPrefix: function(){
  	return gs.getProperty('glide.cs.email.new_case_prefix', 'Case:');
  },
  
  getProductFromPrefix: function(subject){
  	var product = '';
  	if(subject && subject.split(":").length>1){
  		var prefix = subject.split(":")[0];
  		var gr = new GlideRecord('cmdb_model');
  		gr.addQuery('display_name', prefix);
  		gr.query();
  		if(gr.next()) {
  			product = gr.getValue('sys_id');
  		}
  	}
  	return product;
  },
  
  getProductFromEmail: function(email){
  	var product = '';
  	if(gs.nil(email))
  		return product;
  	var emails = email.split(',');
  	emails = emails.reduce(function (filtered , mailId) {
  		if(mailId && !gs.nil(mailId.trim()))
  			filtered.push(mailId.trim());
  		return filtered;
  	}, []);

  	if(!emails || emails.length <= 0)
  		return product;
  	var gr = new GlideRecord('sn_customerservice_channel_config');
  	gr.addQuery('email_address', emails);
  	gr.setLimit(1);
  	gr.query();
  	if(gr.next()) 
  		product = gr.product + '';
  	return product;
  },
  
  getCSProductEmail: function() {
  	var emails = [];
  	var gr = new GlideRecord('sn_customerservice_channel_config');
  	//gr.addQuery('channel_type', 'email');
  	gr.addActiveQuery();
  	gr.query();
  	while(gr.next()) {
  		emails.push(gr.getValue("email_address").toLowerCase());
  	}
  	return emails;
  },
  
  getUserIDFromEmail: function(email){
  	var gr = new GlideRecord("customer_contact");
  	gr.addQuery('email',email);
  	gr.query(); 
  	if(gr.next()) { 
  		return gr.getValue("sys_id");
  	}else{
  		return "";
  	}
  },
  
  _isCustomerExist: function(email_from) {
  	var gr = new GlideRecord('customer_contact');
  	gr.addQuery('email',email_from);
  	gr.query(); 
  	if(gr.next()) {
  		if((new global.CSHelper()).userHasRole(gr.sys_id,'sn_customerservice.customer')){
  			return true;
  		}
  	}
  	return false;
  },
  
  _isAuthorizedContributorExist: function(email_from) {
  	var gr = new GlideRecord('sys_user');
  	gr.addQuery('email',email_from);
  	gr.query(); 
  	if(gr.next()) {
  		if((new global.CSHelper()).userHasRole(gr.sys_id,'sn_customerservice.case_authorized_contributor')){
  			return true;
  		}
  	}
  	return false;
  },

  type: 'CSEMailUtil'
};

Sys ID

75a9b13bc3123100d5907bfaa2d3aee5

Offical Documentation

Official Docs: