/**
  * @param AddStorage $addStorage
  */
 public function add(AddStorage $addStorage)
 {
     Assertion::integer($addStorage->storage);
     Assertion::integer($addStorage->quota);
     $storage = Storage::withUserDateUsageQuota(User::named($addStorage->name), new \DateTime(), Bytes::allocateUnits((int) $addStorage->storage), Quota::fromBytes(Bytes::allocateUnits((int) $addStorage->quota)));
     $this->storageRepository->add($storage);
 }
 /**
  * @test
  */
 public function shouldReturnDateSeparatelyOnJsonSerialize()
 {
     $dateTime = new \DateTime("2015-12-31 23:50:01");
     $storage = Storage::withUserDateUsageQuota(User::named('username'), $dateTime, Bytes::allocateUnits(0), Quota::fromBytes(Bytes::allocateUnits(1)));
     $serializedStorage = $storage->jsonSerialize();
     $this->assertSame('2015', $serializedStorage['year']);
     $this->assertSame('12', $serializedStorage['month']);
     $this->assertSame('31', $serializedStorage['day']);
     $this->assertSame('23', $serializedStorage['hour']);
     $this->assertSame('50', $serializedStorage['minute']);
 }
 /**
  * @param array $row
  * @param string $unitOfMeasurement
  * @return Storage
  */
 private function mapStorageUsageRowToStorage($row, $unitOfMeasurement = 'b')
 {
     $bytes = Bytes::allocateUnits((int) $row['usage']);
     switch ($unitOfMeasurement) {
         case 'gb':
             $bytes = $bytes->gigaBytes();
             break;
         case 'mb':
             $bytes = $bytes->megaBytes();
             break;
         case 'kb':
             $bytes = $bytes->kiloBytes();
             break;
     }
     return Storage::withUserDateUsageQuota(User::named($row['username']), \DateTime::createFromFormat("Y-m-d H:i:s", $row['created']), $bytes, Quota::fromBytes(Bytes::allocateUnits((int) $row['maximumusage'])));
 }
 /**
  * @param Storage $storage
  * @return CouldNotAddStorage
  */
 public static function byStorage(Storage $storage)
 {
     return new self("Could not add storage for " . $storage->user()->name());
 }
 /**
  * @param StorageCollection $collection
  * @param string $username
  */
 private function addStorageToCollection(StorageCollection $collection, $username)
 {
     $collection->add(Storage::withUserDateUsageQuota(User::named($username), new \DateTime("2015-12-31 23:50:01"), Bytes::allocateUnits(0), Quota::fromBytes(Bytes::allocateUnits(1))));
 }