示例#1
0
 /**
  * 
  * @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.");
     }
 }