Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public with sharing class TwilioSmsMsgWrapper {
- @AuraEnabled
- public string nextPageUri {get;set;}
- @AuraEnabled
- public Boolean hasNextPage {get;set;}
- @AuraEnabled
- public Integer nextOffSet {get;set;}
- @AuraEnabled
- public Boolean hasMessages {get;set;}
- @AuraEnabled
- public List<SmsMessage> messages {get;set;}
- @AuraEnabled
- public Integer avatarIndexOnLoad {get;set;}
- public TwilioSmsMsgWrapper(Map<String,Object> messageMap){
- this.messages = new List<SmsMessage>();
- String messagesKey = TwilioSmsList.MESSAGESKEY;
- if(messageMap.containsKey(messagesKey)){
- List<Object> messageData = (List<Object>)messageMap.get(messagesKey);
- for (Object o : messageData) {
- if (o instanceof TwilioSms) {
- messages.add(new SmsMessage((TwilioSms) o));
- }
- }
- }
- this.nextPageUri = (String)messageMap.get('next_page_uri');
- if(this.nextPageUri != null){
- this.nextPageUri = TwilioConstants.TWILIO_API_BASE + this.nextPageUri;
- }
- this.hasNextPage = this.nextPageUri != null;
- this.hasMessages = this.messages.size() > 0;
- }
- public List<Message__c> convertMessagesToSobjectMessages(){
- List<Message__c> msgs = new List<Message__c>();
- for(SmsMessage sms:this.messages){
- msgs.add(sms.toMessageRecord());
- }
- return msgs;
- }
- public TwilioSmsMsgWrapper(List<Message__c> msgRecs,string mobilePhone){
- this.hasMessages = false;
- this.hasNextPage = false;
- this.nextOffSet = null;
- messages = new List<SmsMessage>();
- for(Message__c msgRec:msgRecs){
- messages.add(new SmsMessage(msgRec));
- }
- if(messages.size() > 0){
- hasMessages = true;
- hasNextPage = new MessageSelector().getMostRecentMessageForPhoneNumberWithOffset(mobilePhone,25).size() > 0;
- }
- if(hasNextPage){
- nextOffSet = 25;
- }
- this.assignInitialAvatarNumbers(mobilePhone);
- }
- public TwilioSmsMsgWrapper(List<Message__c> msgRecs,string mobilePhone,Integer offSet){
- hasMessages = false;
- hasNextPage = false;
- this.nextOffSet = null;
- messages = new List<SmsMessage>();
- for(Message__c msgRec:msgRecs){
- messages.add(new SmsMessage(msgRec));
- }
- if(messages.size() > 0){
- hasMessages = true;
- }
- if(offSet <= 2000){
- this.nextOffSet = offSet + 25;
- hasNextPage = new MessageSelector().getMostRecentMessageForPhoneNumberWithOffset(mobilePhone,this.nextOffSet).size() > 0;
- if(!hasNextPage){
- this.nextOffSet = null;
- }
- }
- }
- public TwilioSmsMsgWrapper(List<Message__c> msgRecs,string mobilePhone,Integer offSet,Id recordId){
- this(msgRecs,mobilePhone,offSet);
- this.assignRelatedRecordDetails(recordId);
- }
- public void assignRelatedRecordDetails(Id recordId){
- String initials = null;
- Schema.SObjectType sobjectType = recordId.getSobjectType();
- if(sobjectType == Schema.Contact.SObjectType){
- Contact contactRec = (Contact)new ContactSelector().getRecordById(recordId);
- if(contactRec.FirstName != null){
- initials = contactRec.FirstName.substring(0,1);
- }
- if(initials!= null){
- initials += contactRec.LastName.substring(0,1);
- }else {
- initials = contactRec.LastName.substring(0,1);
- }
- }
- if(sobjectType == Schema.Lead.SObjectType){
- Lead leadRec = (Lead)new LeadSelector().getRecordById(recordId);
- if(leadRec.FirstName != null){
- initials = leadRec.FirstName.substring(0,1);
- }
- if(initials!= null){
- initials += leadRec.LastName.substring(0,1);
- }else {
- initials = leadRec.LastName.substring(0,1);
- }
- }
- for(SmsMessage sms:this.messages){
- if(sms.direction == 'inbound'){
- sms.recordInitials = initials;
- }
- }
- }
- public void assignInitialAvatarNumbers(string phoneNumber){
- Map<Integer,String> integerToStringMap = new Map<Integer,String>{
- 1 =>'one',
- 2 =>'two',
- 3 =>'three',
- 4 =>'four',
- 5 =>'five'
- };
- Integer currentAvatarNumber = 1;
- Map<Id,String> idToAvatarNumberMap = new Map<Id, String>();
- for(SmsMessage sms:this.messages){
- if(!idToAvatarNumberMap.containsKey(sms.createdById)){
- idToAvatarNumberMap.put(sms.CreatedById,integerToStringMap.get(currentAvatarNumber));
- //Once we have reached 5 reset back to one.
- if(currentAvatarNumber >= 5){
- currentAvatarNumber = 1;
- }
- currentAvatarNumber = currentAvatarNumber + 1;
- }
- }
- //Go through and assign the number
- for(SmsMessage sms:this.messages){
- if(sms.direction != 'inbound'){
- sms.avatar = idToAvatarNumberMap.get(sms.createdById);
- }
- }
- if(this.messages.size() > 0){
- this.avatarIndexOnLoad =currentAvatarNumber -1;
- } else {
- this.avatarIndexOnLoad = 0;
- }
- }
- public class SmsMessage {
- @AuraEnabled
- public String id {get;set;}
- @AuraEnabled
- public String sid {get;set;}
- @AuraEnabled
- public Datetime dateCreated {get;set;}
- @AuraEnabled
- public Datetime dateUpdated {get;set;}
- @AuraEnabled
- public Datetime dateSent {get;set;}
- @AuraEnabled
- public String toPhone {get;set;}
- @AuraEnabled
- public String fromPhone {get;set;}
- @AuraEnabled
- public String body {get;set;}
- @AuraEnabled
- public String status {get;set;}
- @AuraEnabled
- public String direction {get;set;}
- @AuraEnabled
- public String uri {get;set;}
- @AuraEnabled
- public String errorMessage {get;set;}
- @AuraEnabled
- public String errorCode {get;set;}
- @AuraEnabled
- public String createdById {get;set;}
- @AuraEnabled
- public String createdByName {get;set;}
- @AuraEnabled
- public String createdByInitials {get;set;}
- @AuraEnabled
- public String recordInitials {get;set;}
- @AuraEnabled
- public Boolean isNew {get;set;}
- @AuraEnabled
- public String avatar {get;set;}
- @AuraEnabled
- public String messagingServiceSid {get;set;}
- public SmsMessage(TwilioSms smsMessage){
- this.sid = smsMessage.getSid();
- this.dateCreated = smsMessage.getDateCreated();
- this.dateUpdated = smsMessage.getDateUpdated();
- this.dateSent = smsMessage.getDateSent();
- this.toPhone = smsMessage.getTo();
- this.fromPhone = smsMessage.getFrom();
- this.body = smsMessage.getBody();
- this.status = smsMessage.getStatus();
- this.direction = smsMessage.getDirection();
- this.uri = smsMessage.getResourceLocation();
- this.errorMessage = smsMessage.getErrorMessage();
- this.errorCode = smsMessage.getErrorCode();
- this.messagingServiceSid = smsMessage.getMessagingServiceSid();
- }
- public SmsMessage(Message__c msgRec){
- this.id = msgRec.Id;
- this.sid = msgRec.Message_SID__c;
- this.dateCreated = msgRec.Date_Created__c;
- this.dateUpdated = msgRec.Date_Updated__c;
- this.dateSent = (msgRec.Date_Sent__c != null)?msgRec.Date_Sent__c:msgRec.CreatedDate;
- this.toPhone = msgRec.To_Number__c;
- this.fromPhone = msgRec.From_Number__c;
- this.body = msgRec.Body__c;
- this.status = msgRec.Status__c;
- this.direction = msgRec.Direction__c;
- this.uri = msgRec.Resource_Location__c;
- this.errorMessage = msgRec.API_Failure_Message__c;
- this.errorCode = msgRec.Error_Code__c;
- this.createdById = msgRec.CreatedById;
- this.createdByName = msgRec.CreatedBy.Name;
- this.createdByInitials = msgRec.CreatedBy.FirstName.substring(0,1) + msgRec.CreatedBy.LastName.substring(0,1);
- this.messagingServiceSid = msgRec.Messaging_Service_SId__c;
- }
- public Message__c toMessageRecord(){
- Message__c msgRec = new Message__c();
- msgRec.Message_SID__c = this.sid;
- msgRec.Date_Created__c = this.dateCreated;
- msgRec.Date_Updated__c = this.dateUpdated;
- msgRec.Date_Sent__c = this.dateSent;
- msgRec.To_Number__c = this.toPhone;
- msgRec.From_Number__c = this.fromPhone;
- msgRec.Body__c = this.body;
- msgRec.Status__c = this.status;
- msgRec.Direction__c = this.direction;
- msgRec.Resource_Location__c = this.uri;
- msgRec.API_Failure_Message__c = this.errorMessage;
- msgRec.Error_Code__c = this.errorCode;
- msgRec.Messaging_Service_SId__c = this.messagingServiceSid;
- return msgRec;
- }
- }
- }
Add Comment
Please, Sign In to add comment