Untitled

mail@pastecode.io avatar
unknown
apex
2 years ago
1.3 kB
5
Indexable
Never
List<Product2> produtosSF = new List<Product2>();
List<Map<String, Object>> produtosAPI = new List<Map<String, Object>>();

Map<String, Product2> produtosSFMap = new Map<String, Product2>();
Map<String, Object> produtosAPIMap = new Map<String, Product2>();

for(Product2 currentProduct : produtosSF)
{
    produtosSFMap.put(currentProduct.ServiceIdentifier, currentProduct);
}

for(Map<String, Object> currentProduct : produtosAPI)
{
    produtosAPIMap.put(String.valueOf(currentProduct.get('ServiceIdentifier')), currentProduct);
}

List<Object> objectsToBeInserted = new List<Object>();
List<Object> objectsToBeUpdated = new List<Object>();

/*
Compara se o object de produtosAPIMap está dentro de produtosSFMap
Caso True: coloca o object de produtosAPIMap no objectsToBeUpdated
Caso False: coloca o object de produtosAPIMap no objectsToBeInserted
*/

for(String currentKey : produtosAPIMap.keySet())
{
    if(produtosSFMap.keySet().contains(currentKey))
    {
        String dateStr = String.valueOf(produtosAPIMap.get(currentKey).get('CreatedDate'));
        if(Date.parse(dateStr) > produtosSFMap.get(currentKey).CreatedDate)
            objectsToBeUpdated.add(produtosAPIMap.get(currentKey));
    }
    else:
        objectsToBeInserted.add(produtosAPIMap.get(currentKey));
}