Skip to content

Instantly share code, notes, and snippets.

View SalesforceBobLightning's full-sized avatar
💭
Easy-peasy

Salesforce Bob Lightning SalesforceBobLightning

💭
Easy-peasy
View GitHub Profile
@SalesforceBobLightning
SalesforceBobLightning / WeightConverter
Created February 14, 2019 13:50
Salesforce Apex Weight Converter
public class WeightConverter {
private static final Decimal KILOGRAMS_TO_POUNDS_RATIO = 2.205;
public static Decimal kilogramsToPounds(Decimal kilograms) {
return kilograms * KILOGRAMS_TO_POUNDS_RATIO;
}
public static Decimal poundsToKilograms(Decimal pounds) {
return pounds / KILOGRAMS_TO_POUNDS_RATIO;
@SalesforceBobLightning
SalesforceBobLightning / TwilioIncomingCallRESTController.cls
Last active February 2, 2019 23:27
How to return Twilio TwiML from a Salesforce Apex REST API Controller
@RestResource(urlMapping='/twilio/incoming-call/')
global without sharing class TwilioIncomingCallRESTController {
@HttpPost
global static void handlePost()
{
String phoneNumber = getParam('From');
String response = TwilioIncomingCallService.getResponse(phoneNumber);
RestContext.Response.addHeader('Content-Type','application/xml');
@SalesforceBobLightning
SalesforceBobLightning / workers-available.js
Created February 1, 2019 09:03
Twilo Flex Function for use with a Studio Run Function Widget to determine if workers are available or it's within opening hours
const moment = require('moment-timezone');
const TIMEZONE = 'Europe/London'; // timezone needed for Daylight Saving Time adjustment
const OPEN_TIME = 9; // 9AM
const CLOSE_TIME = 18; // 8PM
const FRIDAY = 5;
const SATURDAY = 6;
const SAT_OPEN_TIME = 10; // 10AM
const SAT_CLOSE_TIME = 15; // 3PM
process.on('unhandledRejection', error => {
@SalesforceBobLightning
SalesforceBobLightning / timeout.js
Last active February 1, 2019 08:54
Twilio Flex Function to route calls to a Voicemail TwiML on TaskRouter Workflow timeout
const VOICEMAIL_TWIML_URL = 'https://handler.twilio.com/twiml/XXXXXXXXXXXXXXXXXXXXXXXXXXXX';
process.on('unhandledRejection', error => {
console.log('unhandledRejection', error.message);
});
exports.handler = function (context, event, callback) {
var twiml = new Twilio.twiml.VoiceResponse();
const client = context.getTwilioClient();
@SalesforceBobLightning
SalesforceBobLightning / FileUpload.cmp
Last active March 14, 2024 10:24
Salesforce Lightning FileUpload Component
<aura:component controller="FileUploadController">
<aura:attribute name="parentId" type="Id" />
<aura:attribute name="label" type="String" />
<aura:attribute name="uploading" type="Boolean" default="false" />
<aura:handler event="aura:waiting" action="{!c.waiting}" />
<aura:handler event="aura:doneWaiting" action="{!c.doneWaiting}" />
<aura:if isTrue="{!v.uploading}">
<lightning:spinner alternativeText="Loading" size="large" />
</aura:if>
<div>
@SalesforceBobLightning
SalesforceBobLightning / NetworkingUtils.cls
Last active January 9, 2019 21:36
Salesforce Apex Networking Utils
public without sharing class NetworkingUtils {
public static String getCurrentUserIPAddress() {
Map<String, String> headersMap = ApexPages.currentPage().getHeaders();
// True-Client-IP has the value when the request is coming via the caching integration.
String ipAddress = headersMap.get('True-Client-IP');
if (String.isEmpty(ipAddress)) {
//Generated by FuseIT WSDL2Apex (http://www.fuseit.com/Solutions/SFDC-Explorer/Help-WSDL-Parser.aspx)
// Warning: DataStorageItem - All the XmlSchemaElements in '<xsd:choice>' element are added as members of the class. Choice Members: CreditCardData DE_DirectDebitData OrderId Function
// Warning: Action_element - All the XmlSchemaElements in '<xsd:choice>' element are added as members of the class. Choice Members: InitiateClearing InquiryCardInformation InquiryOrder InquiryTransaction StoreHostedData RecurringPayment Validate GetExternalTransactionStatus GetExternalConsumerInformation SendEMailNotification GetLastOrders GetLastTransactions ManageProducts ManageProductStock RequestCardRateForDCC RequestMerchantRateForDynamicPricing CreatePaymentURL
// Warning: InquiryTransaction_element - All the XmlSchemaElements in '<xsd:choice>' element are added as members of the class. Choice Members: OrderId TDate IpgTransactionId MerchantTransactionId
// Warning: Validate_element - All the XmlSchemaElements in '<xsd:cho
@SalesforceBobLightning
SalesforceBobLightning / MessagingHelper.cls
Created December 6, 2018 22:23
Salesforce Apex Email Messaging Helper Library
public without sharing class MessagingHelper {
public static void send(Messaging.SingleEmailMessage mail) {
MessagingHelper.handleSendEmailResult(Messaging.sendEmail(MessagingHelper.createEmailMessages(mail)));
}
public static Messaging.EmailFileAttachment[] createEmailFileAttachment(String filename, Blob body) {
Messaging.EmailFileAttachment emailAttachment = new Messaging.EmailFileAttachment();
emailAttachment.setFileName(filename);
emailAttachment.setBody(body);
@SalesforceBobLightning
SalesforceBobLightning / GetPickListValues.cls
Created November 23, 2018 10:52
Get Salesforce PickList values as CSV String
Schema.DescribeFieldResult dfr = Opportunity.StageName.getDescribe();
List<Schema.PicklistEntry> picklistValues = dfr.getPicklistValues();
String output = '';
for(Schema.PicklistEntry entry : picklistValues) {
if (output != '') {
output += ',';
}
@SalesforceBobLightning
SalesforceBobLightning / DatetimeUtils.cls
Created November 12, 2018 19:46
Salesforce Apex Datetime Utils
public without sharing class DatetimeUtils {
public static String getDayOfMonthSuffix(Integer n) {
if (n == null) {
return '';
}
if (n >= 11 && n <= 13) {
return 'th';