Browse Source

Remve name from assignment, add type to post params

Joachim M. Giæver 2 years ago
parent
commit
c9694e7de7
2 changed files with 15 additions and 17 deletions
  1. 11 4
      src/AbstractPostSerializable.php
  2. 4 13
      src/Assignment.php

+ 11 - 4
src/AbstractPostSerializable.php

@@ -8,10 +8,10 @@ abstract class AbstractPostSerializable implements PostSerializableInterface {
     public static function fromPostParams(array $post): PostSerializableInterface {
         $vars = [];
 
-        foreach (static::getPostParams() as $key => $required) {
+        foreach (static::getPostParams() as $key => $param) {
             $vars[$key] = isset($post[$key]) && ((bool)$post[$key]) && strtolower((string)$post[$key]) != "off" ? htmlspecialchars($post[$key], ENT_QUOTES | ENT_SUBSTITUTE) : null;
 
-            if ($vars[$key] == null && $required)
+            if ($vars[$key] == null && $param->required)
                 throw new \Symfony\Component\HttpClient\Exception\InvalidArgumentException(
                     sprintf("Missing required argmuent: %s", $key)
                 );
@@ -30,9 +30,15 @@ abstract class AbstractPostSerializable implements PostSerializableInterface {
 
         foreach ((new ReflectionClass(static::class))->getConstructor()->getParameters() as $param) {
             if ($short)
-                $vars[$param->getName()] = !($param->isOptional() || $param->allowsNull());
+                $vars[$param->getName()] = (object)[
+                    'type' => $param->getType(),
+                    'required' => !($param->isOptional() || $param->allowsNull())
+                ];
             else
-                $vars[sprintf('%s-%s', static::namespace(), $param->getName())] = !($param->isOptional() || $param->allowsNull());
+                $vars[sprintf('%s-%s', static::namespace(), $param->getName())] = (object)[
+                    'type' => $param->getType(),
+                    'required' => !($param->isOptional() || $param->allowsNull())
+                ];
         }
 
         return $vars;
@@ -42,3 +48,4 @@ abstract class AbstractPostSerializable implements PostSerializableInterface {
         return strtolower(basename(str_replace('\\', DIRECTORY_SEPARATOR, static::class)));
     }
 }
+

+ 4 - 13
src/Assignment.php

@@ -4,24 +4,15 @@ namespace DNB;
 
 class Assignment extends AbstractPostSerializable implements PostSerializableInterface {
     
-    private string $number;
-    private ?string $name;
+    private string $assignmentNumber;
 
     public function __construct(
-        string $number,
-        ?string $name = null
+        string $assignmentNumber
     ){
-        $this->number = $number;
-        $this->name = $name;
-    }
-
-    public function getName(): string {
-        return $this->name;
+        $this->assignmentNumber = $assignmentNumber;
     }
 
     public function toPostParams(): array {
-        return [
-            'assignmentNumber' => $this->number
-        ];
+        return ['assignmentNumber' => $this->assignmentNumber];
     }
 }