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