I think uploading packs is more or less working. I nutted out a few bugs in a lot...
[rock.divinelegy.git] / Controllers / SimfileController.php
index 00dc15c..defa951 100644 (file)
@@ -10,6 +10,8 @@ use Services\IZipParser;
 use DataAccess\StepMania\ISimfileRepository;\r
 use DataAccess\StepMania\IPackRepository;\r
 use DataAccess\IFileRepository;\r
+use Domain\Entities\StepMania\ISimfile;\r
+use Domain\Entities\StepMania\IPack;\r
 \r
 class SimfileController implements IDivineController\r
 {\r
@@ -103,20 +105,26 @@ class SimfileController implements IDivineController
             $zipParser->parse($file);\r
             \r
             //save the actual zip in the db\r
-            //$this->_fileRepository->save($file);  \r
-            foreach($zipParser->simfiles() as $simfile)\r
-            {\r
-                $this->_fileRepository->save($simfile->getBanner());\r
-                $this->_fileRepository->save($simfile->getSimfile());\r
-                $this->_simfileRepository->save($simfile);\r
-            }\r
+            $this->_fileRepository->save($file);  \r
             \r
             if($zipParser->isPack())\r
             {\r
+                //XXX: Tricky! pack() uses packbuilder and so returns a new pack each time.\r
+                //I tried to be clever and call pack() multiple times thinking I was getting the same\r
+                //object. Should I cache it in zipparser?\r
                 $pack = $zipParser->pack();\r
                 $this->_fileRepository->save($pack->getBanner());\r
                 $this->_packRepository->save($pack);\r
             }\r
+            \r
+            foreach($zipParser->simfiles() as $simfile)\r
+            {   \r
+                $banner = $simfile->getBanner() ? $this->_fileRepository->save($simfile->getBanner()) : null;\r
+                $simfileZip = $simfile->getSimfile() ? $this->_fileRepository->save($simfile->getSimfile()) : null;\r
+\r
+                if(isset($pack)) $simfile->addToPack($pack);\r
+                $this->_simfileRepository->save($simfile);\r
+            }\r
         }\r
     }\r
 }\r