/** * * @param Site $site * @param \DateTime $startDate */ protected function processLoanUpdates(Site $site, \DateTime $startDate) { $updatedLoans = $this->loanUtil->getLoans($site, $startDate); $updatedLoanIds = array(); if (isset($updatedLoans['loans'])) { $updatedLoanIds = $updatedLoans['loans']; } if (count($updatedLoanIds) > 0) { $i = 1; foreach ($updatedLoanIds as $losId) { $loan = $this->em->getRepository('SudouxMortgageBundle:LoanApplication')->findByLosIds($losId); if (isset($loan)) { try { $this->output->writeln(sprintf('processing loan #%s. LOS ID: %s', $loan->getId(), $losId)); $this->loanUtil->upsertLoanFromLos($loan); $this->output->writeln(sprintf('updated loan: %s of %s loans processed - id: %s', $i, count($updatedLoanIds), $loan->getId())); } catch (\Exception $e) { $errorMessage = sprintf('updating loan #%s failed', $loan->getId()) . ' | ' . $e->getMessage(); if ($this->batchCommand) { $jobLog = new BatchJobLog(); $jobLog->setStatus(2); $jobLog->setBatchJob($this->batchJob); $jobLog->setStackTrace($e->getTraceAsString()); $jobLog->setMessage($errorMessage); $this->em->persist($jobLog); $this->em->flush($jobLog); } $this->output->writeln($errorMessage); $this->logger->crit($errorMessage); } } else { $losConn = $site->getSettings()->getLos(); if (isset($losConn)) { $importLoans = $losConn->getImportLosLoans(); if ($importLoans) { try { $this->output->writeln(sprintf('processing loan with LOS #%s', $losId)); $this->loanUtil->createLoanFromLos($site, $losId); $this->output->writeln(sprintf('created loan: %s of %s loans processed', $i, count($updatedLoanIds))); } catch (\Exception $e) { $errorMessage = sprintf('adding loan #%s failed', $losId) . $e->getMessage(); $this->output->writeln($errorMessage); $this->logger->crit($errorMessage); if ($this->batchCommand) { $jobLog = new BatchJobLog(); $jobLog->setStatus(2); $jobLog->setBatchJob($this->batchJob); $jobLog->setStackTrace($e->getTraceAsString()); $jobLog->setMessage($errorMessage); $this->em->persist($jobLog); $this->em->flush($jobLog); } } } } } $i++; } $this->output->writeln('Loan updates complete!'); } else { $this->output->writeln("No loans to update."); } }