You are on page 1of 2

public class {

public static List<WSMagentoAPIResponseWrapper>


WSMagentoCartAPIServiceClassHandler(String jsonReqBody){

List<WSMagentoCartAPIResponseWrapper> listOfCartAPIResponseWrapper = new


List<WSMagentoCartAPIResponseWrapper>();

Type resultType = Type.forName('List<WSMagentoCartAPIRequestWrapper>');


List<WSMagentoCartAPIRequestWrapper> listOfCartAPIRequestWrapper
=(List<WSMagentoCartAPIRequestWrapper>)JSON.deserialize(jsonReqBody, resultType);

// insert Account, order and orderitem


List<Account> accounts = new List<Account>();
List<Order> orders = new List<Order>();
List<OrderItem> orderItems = new List<OrderItem>();

// get Existing Accounts


Set<String> EmailSet = new Set<String>();
Set<String> PhoneSet = new Set<String>();
if(listOfCartAPIRequestWrapper.size() > 0){
for(WSMagentoCartAPIRequestWrapper cart : listOfCartAPIRequestWrapper){

if(!String.isEmpty(cart.customer.email)){
EmailSet.add(cart.customer.email);
}

if(!String.isEmpty(cart.billing_address.email)){
EmailSet.add(cart.billing_address.email);
}

if(!String.isEmpty(cart.customer.phone)){
PhoneSet.add(cart.customer.phone);
}

if(!String.isEmpty(cart.billing_address.telephone)){
PhoneSet.add(cart.billing_address.telephone);
}

List<Account> existingAccounts = [SELECT Id,Phone,PersonEmail FROM


Account WHERE PersonEmail = :EmailSet OR Phone = :PhoneSet];
Account account =new Account();
if (!existingAccounts.isEmpty()) {
// There is already an account with this email or
phone
for(Account ac:existingAccounts){
if(ac.Phone!=''||ac.Phone!=NULL){
account.Phone=ac.Phone;
break;
}
}
for(Account ac:existingAccounts){
if(ac.PersonEmail!=''||ac.PersonEmail!=NULL){
account.PersonEmail=ac.PersonEmail;
break;
}
}
} else {
account = CartAPIHelper.createAccount(cart);
accounts.add(account);
}

// Create Order
Order order = CartAPIHelper.createOrder(cart, account);
Map<Integer, Order> cartIdOrderMap = new Map<Integer, Order>();
cartIdOrderMap.put(cart.cart_id,order);
orders.add(order);

// Create OrderItems
List<WSMagentoCartAPIRequestWrapper.Item> itemList = cart.items;
for (WSMagentoCartAPIRequestWrapper.Item item : itemList) {
OrderItem orderItem = CartAPIHelper.createOrderItem(item, order);
orderItems.add(orderItem);
}

WSMagentoCartAPIResponseWrapper response =
CartAPIHelper.createResponse(cart);
listOfCartAPIResponseWrapper.add(response);
}

// Insert accounts, orders, and order items in bulk


insert accounts;
insert orders;
insert orderItems;

return listOfCartAPIResponseWrapper;
}

You might also like