예제 #1
0
$f = fopen(SYSTEM_CSV_FILE, 'r');
if ($f === false) {
    throw new IOException('Could not open ' . SYSTEM_CSV_FILE . ' for reading');
}
$reader = new CsvFileReader($f);
$reader->addFields($config['csv.fields']);
$pos = 0;
$counter = new Counter(true, [COUNT_CREATED, COUNT_EXISTING, COUNT_NEXT_PASS]);
while (!$reader->eof() && ++$pos) {
    $row = $reader->read();
    $logger->debug('-- Read CSV row', [$row]);
    $qb = $client->createQueryBuilder();
    $qb->select('Id')->from('Account')->where('Name = :dealership');
    $account = $qb->setMaxResults(1)->setParameter('dealership', $row->dealership)->getQuery()->getOneOrNullResult();
    if ($account === null) {
        $counter->inc(COUNT_NEXT_PASS);
        continue;
    }
    $logger->debug('Found Account with Id ' . $account->Id, [$account]);
    $qb = $client->createQueryBuilder();
    $qb->select('Id')->from('Contact')->where('AccountId = :id')->andWhere($qb->expr()->orX('Phone like :phone', 'Phone_2__c like :phone', 'Phone like :alt', 'Phone_2__c like :alt'));
    $contact = $qb->setMaxResults(1)->setParameter('id', $account->Id)->setParameter('phone', getPhoneLikeStatement($row->phone))->setParameter('alt', getPhoneLikeStatement($row->altPhone))->getQuery()->getOneOrNullResult();
    if ($contact !== null) {
        $counter->inc(COUNT_EXISTING);
        continue;
    }
    $sob = new SObject();
    $sob->type = 'Contact';
    $sob->fields = ['AccountId' => $account->Id, 'FirstName' => $row->firstName, 'LastName' => $row->lastName, 'Phone' => $row->phone, 'Phone_2__c' => $row->altPhone, 'Job_Title__c' => $row->position, 'Street' => $row->street, 'City' => $row->city, 'State' => $row->state, 'PostalCode' => $row->zip];
    $logger->info('Creating new Contact on Account (' . $account->Id . ')', [$sob]);
    if (!DRY_RUN) {
예제 #2
0
         $account = new stdClass();
         $account->Id = sprintf('row#%d', $pos);
         $account->fresh = true;
         $logger->info(sprintf(MSG_SF_ACCOUNT_CREATED . ' from row %d', $row->phone, $pos));
     }
 } else {
     if (strtolower($account->fields->Name) === strtolower($row->dealership)) {
         continue;
     } else {
         if (in_array(cleanPhone($account->fields->Phone), [$row->phone, $row->altPhone])) {
             continue;
         }
     }
     $account->fresh = false;
 }
 $counter->inc($account->fresh ? COUNT_ACCOUNT_CREATED : COUNT_ACCOUNT_EXISTING);
 if (!$account->fresh) {
     if (strlen($row->phone) !== 10) {
         $logger->warning(sprintf(MSG_SF_UNRELIABLE_PHONE_LOOKUP, $pos));
     }
     $qb = $client->createQueryBuilder();
     $qb->select('Id')->from('Contact')->where('AccountId = :id')->andWhere($qb->expr()->orX('Phone like :phone', 'Phone_2__c like :phone', 'Phone like :alt', 'Phone_2__c like :alt'));
     $contact = $qb->setMaxResults(1)->setParameter('id', $account->Id)->setParameter('phone', getPhoneLikeStatement($row->phone))->setParameter('alt', getPhoneLikeStatement($row->altPhone))->getQuery()->getOneOrNullResult();
     if ($contact !== null) {
         $counter->inc(COUNT_CONTACT_EXISTING);
         continue;
     }
 }
 $sob = new SObject();
 $sob->type = 'Contact';
 $sob->fields = ['AccountId' => $account->Id, 'FirstName' => $row->firstName, 'LastName' => $row->lastName, 'Phone' => $row->phone, 'Phone_2__c' => $row->altPhone, 'Job_Title__c' => $row->position, 'Street' => $row->street, 'City' => $row->city, 'State' => $row->state, 'PostalCode' => $row->zip];