Guest User

Untitled

a guest
Jun 20th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.26 KB | None | 0 0
  1. public with sharing class TwilioSmsMsgWrapper {
  2. @AuraEnabled
  3. public string nextPageUri {get;set;}
  4. @AuraEnabled
  5. public Boolean hasNextPage {get;set;}
  6. @AuraEnabled
  7. public Integer nextOffSet {get;set;}
  8. @AuraEnabled
  9. public Boolean hasMessages {get;set;}
  10. @AuraEnabled
  11. public List<SmsMessage> messages {get;set;}
  12. @AuraEnabled
  13. public Integer avatarIndexOnLoad {get;set;}
  14.  
  15. public TwilioSmsMsgWrapper(Map<String,Object> messageMap){
  16. this.messages = new List<SmsMessage>();
  17. String messagesKey = TwilioSmsList.MESSAGESKEY;
  18. if(messageMap.containsKey(messagesKey)){
  19. List<Object> messageData = (List<Object>)messageMap.get(messagesKey);
  20. for (Object o : messageData) {
  21. if (o instanceof TwilioSms) {
  22. messages.add(new SmsMessage((TwilioSms) o));
  23. }
  24. }
  25. }
  26. this.nextPageUri = (String)messageMap.get('next_page_uri');
  27. if(this.nextPageUri != null){
  28. this.nextPageUri = TwilioConstants.TWILIO_API_BASE + this.nextPageUri;
  29. }
  30. this.hasNextPage = this.nextPageUri != null;
  31. this.hasMessages = this.messages.size() > 0;
  32. }
  33.  
  34. public List<Message__c> convertMessagesToSobjectMessages(){
  35. List<Message__c> msgs = new List<Message__c>();
  36. for(SmsMessage sms:this.messages){
  37. msgs.add(sms.toMessageRecord());
  38. }
  39. return msgs;
  40. }
  41.  
  42. public TwilioSmsMsgWrapper(List<Message__c> msgRecs,string mobilePhone){
  43. this.hasMessages = false;
  44. this.hasNextPage = false;
  45. this.nextOffSet = null;
  46. messages = new List<SmsMessage>();
  47. for(Message__c msgRec:msgRecs){
  48. messages.add(new SmsMessage(msgRec));
  49. }
  50. if(messages.size() > 0){
  51. hasMessages = true;
  52. hasNextPage = new MessageSelector().getMostRecentMessageForPhoneNumberWithOffset(mobilePhone,25).size() > 0;
  53. }
  54. if(hasNextPage){
  55. nextOffSet = 25;
  56. }
  57. this.assignInitialAvatarNumbers(mobilePhone);
  58. }
  59.  
  60. public TwilioSmsMsgWrapper(List<Message__c> msgRecs,string mobilePhone,Integer offSet){
  61. hasMessages = false;
  62. hasNextPage = false;
  63. this.nextOffSet = null;
  64. messages = new List<SmsMessage>();
  65. for(Message__c msgRec:msgRecs){
  66. messages.add(new SmsMessage(msgRec));
  67. }
  68. if(messages.size() > 0){
  69. hasMessages = true;
  70. }
  71. if(offSet <= 2000){
  72. this.nextOffSet = offSet + 25;
  73. hasNextPage = new MessageSelector().getMostRecentMessageForPhoneNumberWithOffset(mobilePhone,this.nextOffSet).size() > 0;
  74. if(!hasNextPage){
  75. this.nextOffSet = null;
  76. }
  77. }
  78. }
  79.  
  80. public TwilioSmsMsgWrapper(List<Message__c> msgRecs,string mobilePhone,Integer offSet,Id recordId){
  81. this(msgRecs,mobilePhone,offSet);
  82. this.assignRelatedRecordDetails(recordId);
  83. }
  84.  
  85. public void assignRelatedRecordDetails(Id recordId){
  86. String initials = null;
  87. Schema.SObjectType sobjectType = recordId.getSobjectType();
  88. if(sobjectType == Schema.Contact.SObjectType){
  89. Contact contactRec = (Contact)new ContactSelector().getRecordById(recordId);
  90. if(contactRec.FirstName != null){
  91. initials = contactRec.FirstName.substring(0,1);
  92. }
  93. if(initials!= null){
  94. initials += contactRec.LastName.substring(0,1);
  95. }else {
  96. initials = contactRec.LastName.substring(0,1);
  97. }
  98. }
  99.  
  100. if(sobjectType == Schema.Lead.SObjectType){
  101. Lead leadRec = (Lead)new LeadSelector().getRecordById(recordId);
  102. if(leadRec.FirstName != null){
  103. initials = leadRec.FirstName.substring(0,1);
  104. }
  105. if(initials!= null){
  106. initials += leadRec.LastName.substring(0,1);
  107. }else {
  108. initials = leadRec.LastName.substring(0,1);
  109. }
  110. }
  111.  
  112. for(SmsMessage sms:this.messages){
  113. if(sms.direction == 'inbound'){
  114. sms.recordInitials = initials;
  115. }
  116. }
  117. }
  118.  
  119. public void assignInitialAvatarNumbers(string phoneNumber){
  120. Map<Integer,String> integerToStringMap = new Map<Integer,String>{
  121. 1 =>'one',
  122. 2 =>'two',
  123. 3 =>'three',
  124. 4 =>'four',
  125. 5 =>'five'
  126. };
  127.  
  128. Integer currentAvatarNumber = 1;
  129. Map<Id,String> idToAvatarNumberMap = new Map<Id, String>();
  130.  
  131. for(SmsMessage sms:this.messages){
  132. if(!idToAvatarNumberMap.containsKey(sms.createdById)){
  133. idToAvatarNumberMap.put(sms.CreatedById,integerToStringMap.get(currentAvatarNumber));
  134. //Once we have reached 5 reset back to one.
  135. if(currentAvatarNumber >= 5){
  136. currentAvatarNumber = 1;
  137. }
  138. currentAvatarNumber = currentAvatarNumber + 1;
  139. }
  140. }
  141.  
  142. //Go through and assign the number
  143. for(SmsMessage sms:this.messages){
  144. if(sms.direction != 'inbound'){
  145. sms.avatar = idToAvatarNumberMap.get(sms.createdById);
  146. }
  147. }
  148. if(this.messages.size() > 0){
  149. this.avatarIndexOnLoad =currentAvatarNumber -1;
  150. } else {
  151. this.avatarIndexOnLoad = 0;
  152. }
  153. }
  154.  
  155.  
  156. public class SmsMessage {
  157. @AuraEnabled
  158. public String id {get;set;}
  159. @AuraEnabled
  160. public String sid {get;set;}
  161. @AuraEnabled
  162. public Datetime dateCreated {get;set;}
  163. @AuraEnabled
  164. public Datetime dateUpdated {get;set;}
  165. @AuraEnabled
  166. public Datetime dateSent {get;set;}
  167. @AuraEnabled
  168. public String toPhone {get;set;}
  169. @AuraEnabled
  170. public String fromPhone {get;set;}
  171. @AuraEnabled
  172. public String body {get;set;}
  173. @AuraEnabled
  174. public String status {get;set;}
  175. @AuraEnabled
  176. public String direction {get;set;}
  177. @AuraEnabled
  178. public String uri {get;set;}
  179. @AuraEnabled
  180. public String errorMessage {get;set;}
  181. @AuraEnabled
  182. public String errorCode {get;set;}
  183. @AuraEnabled
  184. public String createdById {get;set;}
  185. @AuraEnabled
  186. public String createdByName {get;set;}
  187. @AuraEnabled
  188. public String createdByInitials {get;set;}
  189. @AuraEnabled
  190. public String recordInitials {get;set;}
  191. @AuraEnabled
  192. public Boolean isNew {get;set;}
  193. @AuraEnabled
  194. public String avatar {get;set;}
  195. @AuraEnabled
  196. public String messagingServiceSid {get;set;}
  197.  
  198.  
  199. public SmsMessage(TwilioSms smsMessage){
  200. this.sid = smsMessage.getSid();
  201. this.dateCreated = smsMessage.getDateCreated();
  202. this.dateUpdated = smsMessage.getDateUpdated();
  203. this.dateSent = smsMessage.getDateSent();
  204. this.toPhone = smsMessage.getTo();
  205. this.fromPhone = smsMessage.getFrom();
  206. this.body = smsMessage.getBody();
  207. this.status = smsMessage.getStatus();
  208. this.direction = smsMessage.getDirection();
  209. this.uri = smsMessage.getResourceLocation();
  210. this.errorMessage = smsMessage.getErrorMessage();
  211. this.errorCode = smsMessage.getErrorCode();
  212. this.messagingServiceSid = smsMessage.getMessagingServiceSid();
  213. }
  214.  
  215. public SmsMessage(Message__c msgRec){
  216. this.id = msgRec.Id;
  217. this.sid = msgRec.Message_SID__c;
  218. this.dateCreated = msgRec.Date_Created__c;
  219. this.dateUpdated = msgRec.Date_Updated__c;
  220. this.dateSent = (msgRec.Date_Sent__c != null)?msgRec.Date_Sent__c:msgRec.CreatedDate;
  221. this.toPhone = msgRec.To_Number__c;
  222. this.fromPhone = msgRec.From_Number__c;
  223. this.body = msgRec.Body__c;
  224. this.status = msgRec.Status__c;
  225. this.direction = msgRec.Direction__c;
  226. this.uri = msgRec.Resource_Location__c;
  227. this.errorMessage = msgRec.API_Failure_Message__c;
  228. this.errorCode = msgRec.Error_Code__c;
  229. this.createdById = msgRec.CreatedById;
  230. this.createdByName = msgRec.CreatedBy.Name;
  231. this.createdByInitials = msgRec.CreatedBy.FirstName.substring(0,1) + msgRec.CreatedBy.LastName.substring(0,1);
  232. this.messagingServiceSid = msgRec.Messaging_Service_SId__c;
  233.  
  234. }
  235.  
  236. public Message__c toMessageRecord(){
  237. Message__c msgRec = new Message__c();
  238. msgRec.Message_SID__c = this.sid;
  239. msgRec.Date_Created__c = this.dateCreated;
  240. msgRec.Date_Updated__c = this.dateUpdated;
  241. msgRec.Date_Sent__c = this.dateSent;
  242. msgRec.To_Number__c = this.toPhone;
  243. msgRec.From_Number__c = this.fromPhone;
  244. msgRec.Body__c = this.body;
  245. msgRec.Status__c = this.status;
  246. msgRec.Direction__c = this.direction;
  247. msgRec.Resource_Location__c = this.uri;
  248. msgRec.API_Failure_Message__c = this.errorMessage;
  249. msgRec.Error_Code__c = this.errorCode;
  250. msgRec.Messaging_Service_SId__c = this.messagingServiceSid;
  251. return msgRec;
  252. }
  253. }
  254. }
Add Comment
Please, Sign In to add comment