Untitled
unknown
plain_text
a year ago
9.8 kB
5
Indexable
old code
------------------------------------------------------------------
public with sharing class OBEB2B_DTP_UpdateCharacteristics_Queue implements Queueable {
private OBE_I31_SwagOrder orderRequest;
private Map<String, Object> outputFromPreviousQueue;
private String billingAccountId;
@testvisible
private boolean testMode=false;
public OBEB2B_DTP_UpdateCharacteristics_Queue(OBE_I31_SwagOrder orderRequest, Map<String, Object> outputFromPreviousQueue, String billingAccountId) {
this.orderRequest = orderRequest;
this.outputFromPreviousQueue = outputFromPreviousQueue;
this.billingAccountId = billingAccountId;
}
public void execute(QueueableContext context) {
try {
List<Object> orderItemsWrapped = (List<Object>)this.outputFromPreviousQueue.get('orderItems');
List<Object> listIpInput = processOrderItems(orderItemsWrapped);
vlocity_cmt.DRProcessResult result = processAttributes(listIpInput);
if (!hasErrors(result)) {
processDiscountProductAttributes();
invokeManageSubscription();
enqueueNextQueue();
} else {
// logErrors(result);
System.debug('inside else');
Map<String, Object> resultMap = result.convertToMap();
Map<String, Object> errors = (Map<String, Object>)resultMap.get('errors');
LOG_LogMessageUtility.logMessage(
new CustomException('Error'),
'OBEB2B_DTP_UpdateCharacteristics_Queue',
'execute',
'Error: ' + errors,
JSON.serialize(this.orderRequest),
null,
true
);
}
} catch (Exception ex) {
LOG_LogMessageUtility.logMessage(new CustomException('Unhandled Exception'), 'OBEB2B_DTP_UpdateCharacteristics_Queue', 'execute', ex.getMessage(), JSON.serialize(this.orderRequest), null, true);
}
}
@testvisible
private List<Object> processOrderItems(List<Object> orderItemsWrapped) {
List<Object> listIpInput = new List<Object>();
Integer indexToRemove = -1;
for (Object each : orderItemsWrapped) {
Map<String, Object> eachMap = (Map<String, Object>)each;
Map<String, Object> mapOrderItemChars = mapCharacteristics(eachMap);
if (!mapOrderItemChars.isEmpty()) {
listIpInput.add(mapOrderItemChars);
indexToRemove = getOrderItemIndex(eachMap);
}
if (indexToRemove != -1) {
orderRequest.orderItems.remove(indexToRemove);
indexToRemove = -1;
}
}
return listIpInput;
}
@testvisible
private Map<String, Object> mapCharacteristics(Map<String, Object> eachMap) {
Map<String, Object> mapOrderItemChars = new Map<String, Object>();
for (OBE_I31_SwagOrderItem oItem : orderRequest.orderItems) {
if (!oItem.characteristics.isEmpty() && oItem.epcCode == eachMap.get('Product_Code')) {
mapOrderItemChars.put('orderItemId', eachMap.get('Id'));
for (OBE_I31_SwagOrderItemCharacteristics characteristic : oItem.characteristics) {
mapOrderItemChars.put(characteristic.name, characteristic.value);
}
}
}
return mapOrderItemChars;
}
@testvisible
private Integer getOrderItemIndex(Map<String, Object> eachMap) {
for (Integer i = 0; i < orderRequest.orderItems.size(); i++) {
if (orderRequest.orderItems[i].epcCode == eachMap.get('Product_Code')) {
return i;
}
}
return -1;
}
@testvisible
private vlocity_cmt.DRProcessResult processAttributes(List<Object> listIpInput) {
return vlocity_cmt.DRGlobal.processObjectsJSON(
JSON.serialize(listIpInput),
'OBEB2B_DTP_UpdateOrderItemAttributes'
);
}
@testvisible
private Boolean hasErrors(vlocity_cmt.DRProcessResult result) {
if (Test.isRunningTest()) {
return false;
}
Map<String, Object> resultMap = result.convertToMap();
return (Boolean)resultMap.get('hasErrors');
}
@testvisible
private void processDiscountProductAttributes() {
String procedureName = 'ObeB2B_AutoAddDiscountProds';
Map<String, Object> ipInput = new Map<String, Object>{ 'ContextId' => (String)this.outputFromPreviousQueue.get('cartId') };
vlocity_cmt.IntegrationProcedureService.runIntegrationService(procedureName, ipInput, new Map<String, Object>());
}
@testvisible
private void invokeManageSubscription() {
Map<String, Object> inputMap = new Map<String, Object>{ 'cartId' => (String)this.outputFromPreviousQueue.get('cartId') };
ObeB2B_ManageSubscription obj = new ObeB2B_ManageSubscription();
obj.InvokeMethod('assignSubscription', inputMap, new Map<String, Object>(), new Map<String, Object>());
}
@testvisible
private void enqueueNextQueue() {
if (!Test.isRunningTest() || testMode) {
System.enqueueJob(new OBEB2B_DTP_UpdateOI_Queue(
(String)this.outputFromPreviousQueue.get('cartId'),
this.orderRequest,
billingAccountId
));
}
}
public class CustomException extends Exception {}
public class DRWrapper {
public List<Object> input;
}
}
------------------------------------------------------------------
new code
------------------------------------------------------------------
public with sharing class OBEB2B_DTP_UpdateCharacteristics_Queue implements Queueable {
private OBE_I31_SwagOrder orderRequest;
private Map<String, Object> outputFromPreviousQueue;
private String billingAccountId;
public OBEB2B_DTP_UpdateCharacteristics_Queue(OBE_I31_SwagOrder orderRequest, Map<String, Object> outputFromPreviousQueue, String billingAccountId) {
this.orderRequest = orderRequest;
this.outputFromPreviousQueue = outputFromPreviousQueue;
this.billingAccountId = billingAccountId;
}
public void execute(QueueableContext context) {
List<Object> orderItemsWrapped = (List<Object>)this.outputFromPreviousQueue.get('orderItems');
Integer i =-1;
List<Object> listIpInput = new List<Object>();
for (Object each : orderItemsWrapped) {
Map<String, Object> eachMap = (Map<String, Object>)each;
Map<String, Object> mapOrderItemChars = new Map<String, Object>();
for(OBE_I31_SwagOrderItem oItem : orderRequest.orderItems){
if (!oItem.characteristics.isEmpty()) {
if (oItem.epcCode == eachMap.get('Product_Code')) {
i = orderRequest.orderItems.indexof(oItem);
mapOrderItemChars.put('orderItemId', eachMap.get('Id'));
for (OBE_I31_SwagOrderItemCharacteristics characteristic : oItem.characteristics) {
mapOrderItemChars.put(characteristic.name, characteristic.value);
}
listIpInput.add(mapOrderItemChars);
}
else {
}
}
}
if(i!=-1){
orderRequest.orderItems.remove(i);
i = -1;
}
}
vlocity_cmt.DRProcessResult result = vlocity_cmt.DRGlobal.processObjectsJSON(JSON.serialize(listIpInput), 'OBEB2B_DTP_UpdateOrderItemAttributes');
Map<String, Object> resultMap = result.convertToMap();
Map<String, Object> errors = (Map<String, Object>)resultMap.get('errors');
Boolean hasErrors = (Boolean)resultMap.get('hasErrors');
if(Test.isRunningTest()){
hasErrors = false;
}
if (!hasErrors) {
// copy discount product attributes from CLI to OLI
String procedureName = 'ObeB2B_AutoAddDiscountProds';
Map<String, Object> ipInput = new Map<String, Object>();
Map<String, Object> ipOutput = new Map<String, Object>();
Map<String, Object> ipOptions = new Map<String, Object>();
ipInput.put('ContextId', (String)this.outputFromPreviousQueue.get('cartId'));
ipOutput = (Map<String, Object>) vlocity_cmt.IntegrationProcedureService.runIntegrationService(
procedureName,
ipInput,
ipOptions
);
Map<String, Object> inputMap = new Map<String, Object>();
Map<String, Object> outputMap = new Map<String, Object>();
Map<String, Object> options = new Map<String, Object>();
InputMap.put('cartId', (String)this.outputFromPreviousQueue.get('cartId'));
ObeB2B_ManageSubscription obj=new ObeB2B_ManageSubscription();
boolean out = obj.InvokeMethod('assignSubscription',inputMap,outputMap,options);
if(!Test.isRunningTest()){
Id jobId = System.enqueueJob(new OBEB2B_DTP_UpdateOI_Queue((String)this.outputFromPreviousQueue.get('cartId'), this.orderRequest, billingAccountId));
}
} else {
LOG_LogMessageUtility.logMessage(new CustomException('Error'), 'OBEB2B_DTP_UpdateCharacteristics_Queue', 'OBEB2B_DTP_UpdateCharacteristics_Queue.execute', 'OBEB2B_DTP_UpdateCharacteristics_Queue.execute Error: ' + errors, JSON.serialize(this.orderRequest), null, true);
}
}
public class CustomException extends Exception {}
public class DRWrapper {
public List<Object> input;
}
}Editor is loading...
Leave a Comment