protected function execute(InputInterface $input, OutputInterface $output)
 {
     $commit = $input->getOption('commit');
     // Figure this out for new ones
     $loneliness = Loneliness::fromInteger(0);
     /** @var ContainerInterface $container */
     $container = $this->getContainer();
     /** @var PullRequestsRepository $pullRequestRepository */
     $pullRequestRepository = $container->get('lonely_pull_requests.repository.pull_requests');
     /** @var NotificationRepository $notificationRepository */
     $notificationRepository = $container->get('lonely_pull_requests.repository.notification');
     $lastEventDateTime = null;
     // Parse notifications for new pull requests
     $notifications = $notificationRepository->all();
     foreach ($notifications as $notification) {
         $output->writeln('Parsing notification for URL: ' . $notification->url()->toString());
         /** @var Notification $notification */
         $pullRequest = $notification->pullRequest($loneliness);
         $pullRequestRepository->add($pullRequest);
         // Update latest entry
         if ($lastEventDateTime === null || $notification->eventDateTime() > $lastEventDateTime) {
             $lastEventDateTime = $notification->eventDateTime();
         }
     }
     if ($commit && $lastEventDateTime !== null) {
         $notificationRepository->markRead($lastEventDateTime);
     }
 }
 public static function fromArray(array $array)
 {
     Ensure::keyExists($array, 'title');
     Ensure::keyExists($array, 'repositoryName');
     Ensure::keyExists($array, 'url');
     Ensure::keyExists($array, 'loneliness');
     return self::create(Title::fromString($array['title']), RepositoryName::fromString($array['repositoryName']), Url::fromString($array['url']), Loneliness::fromInteger($array['loneliness']));
 }
 public function testConvertToDatabaseValue()
 {
     $lonelinessScore = 42;
     $loneliness = Loneliness::fromInteger($lonelinessScore);
     $databaseValue = $this->type->convertToDatabaseValue($loneliness, $this->platform);
     $this->assertTrue(gettype($databaseValue) === 'integer');
     $this->assertSame($databaseValue, $lonelinessScore);
 }
 /**
  * Testing toString methods and assert no mutation
  */
 public function testToString()
 {
     $lonelinessScore = 42;
     $loneliness = Loneliness::fromInteger($lonelinessScore);
     // String casting
     $stringCastedLoneliness = (string) $loneliness;
     $this->assertEquals($lonelinessScore, $stringCastedLoneliness);
     $this->assertTrue(gettype($stringCastedLoneliness) === 'string');
     // String converted
     $stringConvertedLoneliness = $loneliness->toString();
     $this->assertEquals($lonelinessScore, $stringConvertedLoneliness);
     $this->assertTrue(gettype($stringConvertedLoneliness) === 'string');
     // String converted
     $integerConvertedLoneliness = $loneliness->toInteger();
     $this->assertEquals($lonelinessScore, $integerConvertedLoneliness);
     $this->assertTrue(gettype($integerConvertedLoneliness) === 'integer');
 }
 /**
  * Converts a value from its PHP representation to its database representation
  * of this type.
  *
  * @param Loneliness                                $value    The value to convert.
  * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform The currently used database platform.
  *
  * @return int The database representation of the value.
  */
 public function convertToDatabaseValue($value, AbstractPlatform $platform)
 {
     /** @var \LonelyPullRequests\Domain\Loneliness $value */
     return $value->toInteger();
 }