diff --git a/backend/content-type/eCampSingleText/src/Entity/SingleText.php b/backend/content-type/eCampSingleText/src/Entity/SingleText.php index 4bb00db7b5..c450bffc4f 100644 --- a/backend/content-type/eCampSingleText/src/Entity/SingleText.php +++ b/backend/content-type/eCampSingleText/src/Entity/SingleText.php @@ -13,7 +13,7 @@ class SingleText extends BaseContentTypeEntity { /** * @ORM\Column(type="text", nullable=true) */ - private ?string $text; + private ?string $text = null; public function getText(): ?string { return $this->text; diff --git a/backend/module/eCampApi/config/Rest/activity.config.php b/backend/module/eCampApi/config/Rest/activity.config.php index 5d91fbe79b..cba46fedae 100644 --- a/backend/module/eCampApi/config/Rest/activity.config.php +++ b/backend/module/eCampApi/config/Rest/activity.config.php @@ -49,7 +49,7 @@ 'validators' => [], ], 5 => [ - 'name' => 'activityCategoryId', + 'name' => 'categoryId', 'required' => false, 'filters' => [], 'validators' => [], diff --git a/backend/module/eCampApi/config/Rest/activityCategory.config.php b/backend/module/eCampApi/config/Rest/category.config.php similarity index 88% rename from backend/module/eCampApi/config/Rest/activityCategory.config.php rename to backend/module/eCampApi/config/Rest/category.config.php index 5a9b0fce39..18964ed5c4 100644 --- a/backend/module/eCampApi/config/Rest/activityCategory.config.php +++ b/backend/module/eCampApi/config/Rest/category.config.php @@ -2,21 +2,21 @@ use eCampApi\ConfigFactory; -$config = ConfigFactory::createConfig('ActivityCategory', 'ActivityCategories'); +$config = ConfigFactory::createConfig('Category', 'Categories'); array_push( - $config['api-tools-rest']['eCampApi\\V1\\Rest\\ActivityCategory\\Controller']['collection_query_whitelist'], + $config['api-tools-rest']['eCampApi\\V1\\Rest\\Category\\Controller']['collection_query_whitelist'], 'campId' ); $config['api-tools-content-validation'] = [ - 'eCampApi\\V1\\Rest\\ActivityCategory\\Controller' => [ - 'input_filter' => 'eCampApi\\V1\\Rest\\ActivityCategory\\Validator', + 'eCampApi\\V1\\Rest\\Category\\Controller' => [ + 'input_filter' => 'eCampApi\\V1\\Rest\\Category\\Validator', ], ]; $config['input_filter_specs'] = [ - 'eCampApi\\V1\\Rest\\ActivityCategory\\Validator' => [ + 'eCampApi\\V1\\Rest\\Category\\Validator' => [ 0 => [ 'name' => 'short', 'required' => true, diff --git a/backend/module/eCampApi/config/Rest/contentTypeConfig.config.php b/backend/module/eCampApi/config/Rest/categoryContent.config.php similarity index 76% rename from backend/module/eCampApi/config/Rest/contentTypeConfig.config.php rename to backend/module/eCampApi/config/Rest/categoryContent.config.php index 7680df8354..3870a554b2 100644 --- a/backend/module/eCampApi/config/Rest/contentTypeConfig.config.php +++ b/backend/module/eCampApi/config/Rest/categoryContent.config.php @@ -2,7 +2,7 @@ use eCampApi\ConfigFactory; -$entity = 'ContentTypeConfig'; +$entity = 'CategoryContent'; $config = ConfigFactory::createConfig($entity); return $config; diff --git a/backend/module/eCampApi/config/Rest/contentTypeConfigTemplate.config.php b/backend/module/eCampApi/config/Rest/categoryContentTemplate.config.php similarity index 86% rename from backend/module/eCampApi/config/Rest/contentTypeConfigTemplate.config.php rename to backend/module/eCampApi/config/Rest/categoryContentTemplate.config.php index f0416960a9..d4e415c9e6 100644 --- a/backend/module/eCampApi/config/Rest/contentTypeConfigTemplate.config.php +++ b/backend/module/eCampApi/config/Rest/categoryContentTemplate.config.php @@ -2,7 +2,7 @@ use eCampApi\ConfigFactory; -$entity = 'ContentTypeConfigTemplate'; +$entity = 'CategoryContentTemplate'; $config = ConfigFactory::createConfig($entity); // read-only endpoint @@ -11,7 +11,7 @@ array_push( $config['api-tools-rest']["eCampApi\\V1\\Rest\\{$entity}\\Controller"]['collection_query_whitelist'], - 'activityCategoryTemplateId' + 'categoryTemplateId' ); return $config; diff --git a/backend/module/eCampApi/config/Rest/categoryContentType.config.php b/backend/module/eCampApi/config/Rest/categoryContentType.config.php new file mode 100644 index 0000000000..770d436941 --- /dev/null +++ b/backend/module/eCampApi/config/Rest/categoryContentType.config.php @@ -0,0 +1,8 @@ +setCamp($this->activityResponsible->getCamp()); $activity->setTitle('Activity1'); - $activity->setActivityCategory($this->activityResponsible->getActivity()->getActivityCategory()); + $activity->setCategory($this->activityResponsible->getActivity()->getCategory()); $this->getEntityManager()->persist($activity); $this->getEntityManager()->flush(); diff --git a/backend/module/eCampApi/test/Rest/ActivityTest.php b/backend/module/eCampApi/test/Rest/ActivityTest.php index 61bfd6b21b..5c7cb0933b 100644 --- a/backend/module/eCampApi/test/Rest/ActivityTest.php +++ b/backend/module/eCampApi/test/Rest/ActivityTest.php @@ -4,10 +4,9 @@ use Doctrine\Common\DataFixtures\Loader; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\User; -use eCamp\CoreTest\Data\ActivityCategoryTestData; use eCamp\CoreTest\Data\ActivityTestData; +use eCamp\CoreTest\Data\CategoryTestData; use eCamp\CoreTest\Data\PeriodTestData; use eCamp\CoreTest\Data\ScheduleEntryTestData; use eCamp\CoreTest\Data\UserTestData; @@ -20,8 +19,8 @@ class ActivityTest extends AbstractApiControllerTestCase { /** @var Activity */ protected $activity; - /** @var ActivityCategory */ - protected $activityCategory; + /** @var Category */ + protected $category; /** @var User */ protected $user; @@ -32,12 +31,14 @@ public function setUp(): void { parent::setUp(); $userLoader = new UserTestData(); + $categoryLoader = new CategoryTestData(); $activityLoader = new ActivityTestData(); $periodLoader = new PeriodTestData(); $scheduleEntryLoader = new ScheduleEntryTestData(); $loader = new Loader(); $loader->addFixture($userLoader); + $loader->addFixture($categoryLoader); $loader->addFixture($activityLoader); $loader->addFixture($periodLoader); $loader->addFixture($scheduleEntryLoader); @@ -45,7 +46,7 @@ public function setUp(): void { $this->user = $userLoader->getReference(UserTestData::$USER1); $this->activity = $activityLoader->getReference(ActivityTestData::$ACTIVITY1); - $this->activityCategory = $activityLoader->getReference(ActivityCategoryTestData::$CATEGORY2); + $this->category = $categoryLoader->getReference(CategoryTestData::$CATEGORY2); $this->authenticateUser($this->user); } @@ -70,7 +71,7 @@ public function testFetch() { } } JSON; - $expectedEmbeddedObjects = ['camp', 'activityCategory', 'scheduleEntries', 'activityContents', 'campCollaborations']; // TODO discuss: wouldn't 'activityResponsibles' be more intuitive than 'campCollaborations' + $expectedEmbeddedObjects = ['camp', 'category', 'scheduleEntries', 'activityContents', 'campCollaborations']; // TODO discuss: wouldn't 'activityResponsibles' be more intuitive than 'campCollaborations' $this->verifyHalResourceResponse($expectedBody, $expectedLinks, $expectedEmbeddedObjects); } @@ -116,18 +117,18 @@ public function testCreateWithoutTitle() { public function testCreateWithoutCategory() { $this->setRequestContent([ 'title' => 'Activity2', - 'activityCategoryId' => 'xxx', ]); + 'categoryId' => 'xxx', ]); $this->dispatch("{$this->apiEndpoint}", 'POST'); $this->assertResponseStatusCode(422); - $this->assertObjectHasAttribute('notFound', $this->getResponseContent()->validation_messages->activityCategoryId); + $this->assertObjectHasAttribute('notFound', $this->getResponseContent()->validation_messages->categoryId); } public function testCreateSuccess() { $this->setRequestContent([ 'title' => 'Activity2', - 'activityCategoryId' => $this->activity->getActivityCategory()->getId(), ]); + 'categoryId' => $this->activity->getCategory()->getId(), ]); $this->dispatch("{$this->apiEndpoint}", 'POST'); @@ -138,14 +139,14 @@ public function testCreateSuccess() { public function testUpdateSuccess() { $this->setRequestContent([ 'title' => 'Activity3', - 'activityCategoryId' => $this->activityCategory->getId(), ]); + 'categoryId' => $this->category->getId(), ]); $this->dispatch("{$this->apiEndpoint}/{$this->activity->getId()}", 'PATCH'); $this->assertResponseStatusCode(200); $this->assertEquals('Activity3', $this->getResponseContent()->title); - $this->assertEquals($this->activityCategory->getId(), $this->getResponseContent()->_embedded->activityCategory->id); + $this->assertEquals($this->category->getId(), $this->getResponseContent()->_embedded->category->id); } public function testDelete() { diff --git a/backend/module/eCampApi/test/Rest/CampTemplateTest.php b/backend/module/eCampApi/test/Rest/CampTemplateTest.php index 5425ceb6e1..b95b07bfad 100644 --- a/backend/module/eCampApi/test/Rest/CampTemplateTest.php +++ b/backend/module/eCampApi/test/Rest/CampTemplateTest.php @@ -56,7 +56,7 @@ public function testFetch() { } } JSON; - $expectedEmbeddedObjects = ['activityCategoryTemplates']; + $expectedEmbeddedObjects = ['categoryTemplates']; $this->verifyHalResourceResponse($expectedBody, $expectedLinks, $expectedEmbeddedObjects); } diff --git a/backend/module/eCampApi/test/Rest/CampTest.php b/backend/module/eCampApi/test/Rest/CampTest.php index 25cca9358d..8e84ab5c71 100644 --- a/backend/module/eCampApi/test/Rest/CampTest.php +++ b/backend/module/eCampApi/test/Rest/CampTest.php @@ -65,7 +65,7 @@ public function testFetch() { } } JSON; - $expectedEmbeddedObjects = ['creator', 'campCollaborations', 'periods', 'activityCategories']; + $expectedEmbeddedObjects = ['creator', 'campCollaborations', 'periods', 'categories']; $this->verifyHalResourceResponse($expectedBody, $expectedLinks, $expectedEmbeddedObjects); } diff --git a/backend/module/eCampApi/test/Rest/CategoryContentTypeTemplateTest.php b/backend/module/eCampApi/test/Rest/CategoryContentTypeTemplateTest.php new file mode 100644 index 0000000000..f3ccf45a06 --- /dev/null +++ b/backend/module/eCampApi/test/Rest/CategoryContentTypeTemplateTest.php @@ -0,0 +1,102 @@ +addFixture($userLoader); + $loader->addFixture($categoryTemplateLoader); + $loader->addFixture($categoryContentTypeTemplateLoader); + $this->loadFixtures($loader); + + $this->user = $userLoader->getReference(UserTestData::$USER1); + $this->categoryTemplate = $categoryTemplateLoader->getReference(CategoryTemplateTestData::$TEMPLATE1); + $this->categoryContentTypeTemplate = $categoryContentTypeTemplateLoader->getReference(CategoryContentTypeTemplateTestData::$TEMPLATE1); + + $this->authenticateUser($this->user); + } + + public function testFetch() { + $this->dispatch("{$this->apiEndpoint}/{$this->categoryContentTypeTemplate->getId()}", 'GET'); + + $this->assertResponseStatusCode(200); + + $expectedBody = <<categoryContentTypeTemplate->getId()}" + } +JSON; + + $expectedLinks = <<host}{$this->apiEndpoint}/{$this->categoryContentTypeTemplate->getId()}" + } + } +JSON; + $expectedEmbeddedObjects = ['contentType']; + + $this->verifyHalResourceResponse($expectedBody, $expectedLinks, $expectedEmbeddedObjects); + } + + public function testFetchAll() { + $categoryTemplateId = $this->categoryTemplate->getId(); + $this->dispatch("{$this->apiEndpoint}?page_size=10&categoryTemplateId={$categoryTemplateId}", 'GET'); + + $this->assertResponseStatusCode(200); + + $this->assertEquals(1, $this->getResponseContent()->total_items); + $this->assertEquals(10, $this->getResponseContent()->page_size); + $this->assertEquals("http://{$this->host}{$this->apiEndpoint}?page_size=10&categoryTemplateId={$categoryTemplateId}&page=1", $this->getResponseContent()->_links->self->href); + $this->assertEquals($this->categoryContentTypeTemplate->getId(), $this->getResponseContent()->_embedded->items[0]->id); + } + + public function testCreateForbidden() { + $this->dispatch("{$this->apiEndpoint}", 'POST'); + $this->assertResponseStatusCode(405); + } + + public function testPatchForbidden() { + $this->dispatch("{$this->apiEndpoint}/{$this->categoryContentTypeTemplate->getId()}", 'PATCH'); + $this->assertResponseStatusCode(405); + } + + public function testUpdateForbidden() { + $this->dispatch("{$this->apiEndpoint}/{$this->categoryContentTypeTemplate->getId()}", 'PUT'); + $this->assertResponseStatusCode(405); + } + + public function testDeleteForbidden() { + $this->dispatch("{$this->apiEndpoint}/{$this->categoryContentTypeTemplate->getId()}", 'DELETE'); + $this->assertResponseStatusCode(405); + } +} diff --git a/backend/module/eCampApi/test/Rest/ActivityCategoryTemplateTest.php b/backend/module/eCampApi/test/Rest/CategoryTemplateTest.php similarity index 66% rename from backend/module/eCampApi/test/Rest/ActivityCategoryTemplateTest.php rename to backend/module/eCampApi/test/Rest/CategoryTemplateTest.php index 970b0887da..c9592bea58 100644 --- a/backend/module/eCampApi/test/Rest/ActivityCategoryTemplateTest.php +++ b/backend/module/eCampApi/test/Rest/CategoryTemplateTest.php @@ -3,20 +3,20 @@ namespace eCamp\ApiTest\Rest; use Doctrine\Common\DataFixtures\Loader; -use eCamp\Core\Entity\ActivityCategoryTemplate; use eCamp\Core\Entity\CampTemplate; +use eCamp\Core\Entity\CategoryTemplate; use eCamp\Core\Entity\User; -use eCamp\CoreTest\Data\ActivityCategoryTemplateTestData; use eCamp\CoreTest\Data\CampTemplateTestData; +use eCamp\CoreTest\Data\CategoryTemplateTestData; use eCamp\CoreTest\Data\UserTestData; use eCamp\LibTest\PHPUnit\AbstractApiControllerTestCase; /** * @internal */ -class ActivityCategoryTemplateTest extends AbstractApiControllerTestCase { - /** @var ActivityCategoryTemplate */ - protected $activityCategoryTemplate; +class CategoryTemplateTest extends AbstractApiControllerTestCase { + /** @var CategoryTemplate */ + protected $categoryTemplate; /** @var CampTemplate */ protected $campTemplate; @@ -24,36 +24,36 @@ class ActivityCategoryTemplateTest extends AbstractApiControllerTestCase { /** @var User */ protected $user; - private $apiEndpoint = '/api/activity-category-templates'; + private $apiEndpoint = '/api/category-templates'; public function setUp(): void { parent::setUp(); $userLoader = new UserTestData(); $campTemplateLoader = new CampTemplateTestData(); - $activityCategoryTemplateLoader = new ActivityCategoryTemplateTestData(); + $categoryTemplateLoader = new CategoryTemplateTestData(); $loader = new Loader(); $loader->addFixture($userLoader); $loader->addFixture($campTemplateLoader); - $loader->addFixture($activityCategoryTemplateLoader); + $loader->addFixture($categoryTemplateLoader); $this->loadFixtures($loader); $this->user = $userLoader->getReference(UserTestData::$USER1); $this->campTemplate = $campTemplateLoader->getReference(CampTemplateTestData::$TEMPLATE1); - $this->activityCategoryTemplate = $activityCategoryTemplateLoader->getReference(ActivityCategoryTemplateTestData::$TEMPLATE1); + $this->categoryTemplate = $categoryTemplateLoader->getReference(CategoryTemplateTestData::$TEMPLATE1); $this->authenticateUser($this->user); } public function testFetch() { - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategoryTemplate->getId()}", 'GET'); + $this->dispatch("{$this->apiEndpoint}/{$this->categoryTemplate->getId()}", 'GET'); $this->assertResponseStatusCode(200); $expectedBody = <<activityCategoryTemplate->getId()}", + "id": "{$this->categoryTemplate->getId()}", "short": "AC", "name": "ActivityCategory1", "color": "#FF00FF", @@ -64,11 +64,11 @@ public function testFetch() { $expectedLinks = <<host}{$this->apiEndpoint}/{$this->activityCategoryTemplate->getId()}" + "href": "http://{$this->host}{$this->apiEndpoint}/{$this->categoryTemplate->getId()}" } } JSON; - $expectedEmbeddedObjects = ['contentTypeConfigTemplates']; + $expectedEmbeddedObjects = ['categoryContentTypeTemplates', 'categoryContentTemplates']; $this->verifyHalResourceResponse($expectedBody, $expectedLinks, $expectedEmbeddedObjects); } @@ -82,7 +82,7 @@ public function testFetchAll() { $this->assertEquals(1, $this->getResponseContent()->total_items); $this->assertEquals(10, $this->getResponseContent()->page_size); $this->assertEquals("http://{$this->host}{$this->apiEndpoint}?page_size=10&campTemplateId={$campTemplateId}&page=1", $this->getResponseContent()->_links->self->href); - $this->assertEquals($this->activityCategoryTemplate->getId(), $this->getResponseContent()->_embedded->items[0]->id); + $this->assertEquals($this->categoryTemplate->getId(), $this->getResponseContent()->_embedded->items[0]->id); } public function testCreateForbidden() { @@ -91,17 +91,17 @@ public function testCreateForbidden() { } public function testPatchForbidden() { - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategoryTemplate->getId()}", 'PATCH'); + $this->dispatch("{$this->apiEndpoint}/{$this->categoryTemplate->getId()}", 'PATCH'); $this->assertResponseStatusCode(405); } public function testUpdateForbidden() { - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategoryTemplate->getId()}", 'PUT'); + $this->dispatch("{$this->apiEndpoint}/{$this->categoryTemplate->getId()}", 'PUT'); $this->assertResponseStatusCode(405); } public function testDeleteForbidden() { - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategoryTemplate->getId()}", 'DELETE'); + $this->dispatch("{$this->apiEndpoint}/{$this->categoryTemplate->getId()}", 'DELETE'); $this->assertResponseStatusCode(405); } } diff --git a/backend/module/eCampApi/test/Rest/ActivityCategoryTest.php b/backend/module/eCampApi/test/Rest/CategoryTest.php similarity index 74% rename from backend/module/eCampApi/test/Rest/ActivityCategoryTest.php rename to backend/module/eCampApi/test/Rest/CategoryTest.php index 89fe7414f6..9398fc24b2 100644 --- a/backend/module/eCampApi/test/Rest/ActivityCategoryTest.php +++ b/backend/module/eCampApi/test/Rest/CategoryTest.php @@ -3,49 +3,49 @@ namespace eCamp\ApiTest\Rest; use Doctrine\Common\DataFixtures\Loader; -use eCamp\Core\Entity\ActivityCategory; +use eCamp\Core\Entity\Category; use eCamp\Core\Entity\User; -use eCamp\CoreTest\Data\ActivityCategoryTestData; +use eCamp\CoreTest\Data\CategoryTestData; use eCamp\CoreTest\Data\UserTestData; use eCamp\LibTest\PHPUnit\AbstractApiControllerTestCase; /** * @internal */ -class ActivityCategoryTest extends AbstractApiControllerTestCase { - /** @var ActivityCategory */ - protected $activityCategory; +class CategoryTest extends AbstractApiControllerTestCase { + /** @var Category */ + protected $category; /** @var User */ protected $user; - private $apiEndpoint = '/api/activity-categories'; + private $apiEndpoint = '/api/categories'; public function setUp(): void { parent::setUp(); $userLoader = new UserTestData(); - $activityCategoryLoader = new ActivityCategoryTestData(); + $categoryLoader = new CategoryTestData(); $loader = new Loader(); $loader->addFixture($userLoader); - $loader->addFixture($activityCategoryLoader); + $loader->addFixture($categoryLoader); $this->loadFixtures($loader); $this->user = $userLoader->getReference(UserTestData::$USER1); - $this->activityCategory = $activityCategoryLoader->getReference(ActivityCategoryTestData::$CATEGORY1); + $this->category = $categoryLoader->getReference(CategoryTestData::$CATEGORY1); $this->authenticateUser($this->user); } public function testFetch() { - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategory->getId()}", 'GET'); + $this->dispatch("{$this->apiEndpoint}/{$this->category->getId()}", 'GET'); $this->assertResponseStatusCode(200); $expectedBody = <<activityCategory->getId()}", + "id": "{$this->category->getId()}", "short": "LS", "name": "ActivityCategory1", "color": "#FF9800", @@ -56,7 +56,7 @@ public function testFetch() { $expectedLinks = <<host}{$this->apiEndpoint}/{$this->activityCategory->getId()}" + "href": "http://{$this->host}{$this->apiEndpoint}/{$this->category->getId()}" } } JSON; @@ -66,7 +66,7 @@ public function testFetch() { } public function testFetchAll() { - $campId = $this->activityCategory->getCamp()->getId(); + $campId = $this->category->getCamp()->getId(); $this->dispatch("{$this->apiEndpoint}?page_size=10&campId={$campId}", 'GET'); $this->assertResponseStatusCode(200); @@ -74,7 +74,7 @@ public function testFetchAll() { $this->assertEquals(2, $this->getResponseContent()->total_items); $this->assertEquals(10, $this->getResponseContent()->page_size); $this->assertEquals("http://{$this->host}{$this->apiEndpoint}?page_size=10&campId={$campId}&page=1", $this->getResponseContent()->_links->self->href); - $this->assertEquals($this->activityCategory->getId(), $this->getResponseContent()->_embedded->items[0]->id); + $this->assertEquals($this->category->getId(), $this->getResponseContent()->_embedded->items[0]->id); } public function testCreateWithoutParams() { @@ -110,7 +110,7 @@ public function testCreateSuccess() { 'short' => 'AC2', 'color' => '#FFFFFF', 'numberingStyle' => 'i', - 'campId' => $this->activityCategory->getCamp()->getId(), ]); + 'campId' => $this->category->getCamp()->getId(), ]); $this->dispatch("{$this->apiEndpoint}", 'POST'); @@ -122,7 +122,7 @@ public function testUpdateSuccess() { $this->setRequestContent([ 'name' => 'ActivityCategory3', ]); - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategory->getId()}", 'PATCH'); + $this->dispatch("{$this->apiEndpoint}/{$this->category->getId()}", 'PATCH'); $this->assertResponseStatusCode(200); @@ -130,11 +130,11 @@ public function testUpdateSuccess() { } public function testDelete() { - $this->dispatch("{$this->apiEndpoint}/{$this->activityCategory->getId()}", 'DELETE'); + $this->dispatch("{$this->apiEndpoint}/{$this->category->getId()}", 'DELETE'); $this->assertResponseStatusCode(204); - $result = $this->getEntityManager()->find(ActivityCategory::class, $this->activityCategory->getId()); + $result = $this->getEntityManager()->find(Category::class, $this->category->getId()); $this->assertNull($result); } } diff --git a/backend/module/eCampApi/test/Rest/ContentTypeConfigTemplateTest.php b/backend/module/eCampApi/test/Rest/ContentTypeConfigTemplateTest.php deleted file mode 100644 index 8bce5e1f3b..0000000000 --- a/backend/module/eCampApi/test/Rest/ContentTypeConfigTemplateTest.php +++ /dev/null @@ -1,104 +0,0 @@ -addFixture($userLoader); - $loader->addFixture($activityCategoryTemplateLoader); - $loader->addFixture($contentTypeConfigTemplateLoader); - $this->loadFixtures($loader); - - $this->user = $userLoader->getReference(UserTestData::$USER1); - $this->activityCategoryTemplate = $activityCategoryTemplateLoader->getReference(ActivityCategoryTemplateTestData::$TEMPLATE1); - $this->contentTypeConfigTemplate = $contentTypeConfigTemplateLoader->getReference(ContentTypeConfigTemplateTestData::$TEMPLATE1); - - $this->authenticateUser($this->user); - } - - public function testFetch() { - $this->dispatch("{$this->apiEndpoint}/{$this->contentTypeConfigTemplate->getId()}", 'GET'); - - $this->assertResponseStatusCode(200); - - $expectedBody = <<contentTypeConfigTemplate->getId()}", - "required": true, - "multiple": true - } -JSON; - - $expectedLinks = <<host}{$this->apiEndpoint}/{$this->contentTypeConfigTemplate->getId()}" - } - } -JSON; - $expectedEmbeddedObjects = ['contentType']; - - $this->verifyHalResourceResponse($expectedBody, $expectedLinks, $expectedEmbeddedObjects); - } - - public function testFetchAll() { - $activityCategoryTemplateId = $this->activityCategoryTemplate->getId(); - $this->dispatch("{$this->apiEndpoint}?page_size=10&activityCategoryTemplateId={$activityCategoryTemplateId}", 'GET'); - - $this->assertResponseStatusCode(200); - - $this->assertEquals(1, $this->getResponseContent()->total_items); - $this->assertEquals(10, $this->getResponseContent()->page_size); - $this->assertEquals("http://{$this->host}{$this->apiEndpoint}?page_size=10&activityCategoryTemplateId={$activityCategoryTemplateId}&page=1", $this->getResponseContent()->_links->self->href); - $this->assertEquals($this->contentTypeConfigTemplate->getId(), $this->getResponseContent()->_embedded->items[0]->id); - } - - public function testCreateForbidden() { - $this->dispatch("{$this->apiEndpoint}", 'POST'); - $this->assertResponseStatusCode(405); - } - - public function testPatchForbidden() { - $this->dispatch("{$this->apiEndpoint}/{$this->contentTypeConfigTemplate->getId()}", 'PATCH'); - $this->assertResponseStatusCode(405); - } - - public function testUpdateForbidden() { - $this->dispatch("{$this->apiEndpoint}/{$this->contentTypeConfigTemplate->getId()}", 'PUT'); - $this->assertResponseStatusCode(405); - } - - public function testDeleteForbidden() { - $this->dispatch("{$this->apiEndpoint}/{$this->contentTypeConfigTemplate->getId()}", 'DELETE'); - $this->assertResponseStatusCode(405); - } -} diff --git a/backend/module/eCampCore/data/dev/ActivityCategoryData.php b/backend/module/eCampCore/data/dev/ActivityCategoryData.php deleted file mode 100644 index d6b8fda2f6..0000000000 --- a/backend/module/eCampCore/data/dev/ActivityCategoryData.php +++ /dev/null @@ -1,117 +0,0 @@ -getRepository(ActivityCategory::class); - - /** @var Camp $camp */ - $camp = $this->getReference(CampData::$CAMP_1); - - $activityCategory = $repository->findOneBy(['camp' => $camp, 'name' => 'Lagersport']); - if (null == $activityCategory) { - $activityCategory = new ActivityCategory(); - $activityCategory->setCamp($camp); - $activityCategory->setName('Lagersport'); - $activityCategory->setShort('LS'); - $activityCategory->setColor('#4CAF50'); - $activityCategory->setNumberingStyle('1'); - $manager->persist($activityCategory); - - // add prefered content types - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$STORYBOARD)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$STORYCONTEXT)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$SAFETYCONCEPT)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$NOTES)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$MATERIAL)); - } - $this->addReference(self::$EVENTCATEGORY_1_LS, $activityCategory); - - $activityCategory = $repository->findOneBy(['camp' => $camp, 'name' => 'Lageraktivität']); - if (null == $activityCategory) { - $activityCategory = new ActivityCategory(); - $activityCategory->setCamp($camp); - $activityCategory->setName('Lageraktivität'); - $activityCategory->setShort('LA'); - $activityCategory->setColor('#FF9800'); - $activityCategory->setNumberingStyle('A'); - $manager->persist($activityCategory); - - // add prefered content types - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$STORYCONTEXT)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$NOTES)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$MATERIAL)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$LATHEMATICAREA)); - } - $this->addReference(self::$EVENTCATEGORY_1_LA, $activityCategory); - - /** @var Camp $camp */ - $camp = $this->getReference(CampData::$CAMP_2); - - $activityCategory = $repository->findOneBy(['camp' => $camp, 'name' => 'Lagersport']); - if (null == $activityCategory) { - $activityCategory = new ActivityCategory(); - $activityCategory->setCamp($camp); - $activityCategory->setName('Lagersport'); - $activityCategory->setShort('LS'); - $activityCategory->setColor('#4CAF50'); - $activityCategory->setNumberingStyle('1'); - $manager->persist($activityCategory); - - // add prefered content types - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$STORYBOARD)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$STORYCONTEXT)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$SAFETYCONCEPT)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$NOTES)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$MATERIAL)); - } - $this->addReference(self::$EVENTCATEGORY_2_LS, $activityCategory); - - $activityCategory = $repository->findOneBy(['camp' => $camp, 'name' => 'Lageraktivität']); - if (null == $activityCategory) { - $activityCategory = new ActivityCategory(); - $activityCategory->setCamp($camp); - $activityCategory->setName('Lageraktivität'); - $activityCategory->setShort('LA'); - $activityCategory->setColor('#FF9800'); - $activityCategory->setNumberingStyle('A'); - $manager->persist($activityCategory); - - // add prefered content types - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$STORYCONTEXT)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$NOTES)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$MATERIAL)); - $this->addContentType($manager, $activityCategory, $this->getReference(ContentTypeData::$LATHEMATICAREA)); - } - $this->addReference(self::$EVENTCATEGORY_2_LA, $activityCategory); - - $manager->flush(); - } - - public function getDependencies() { - return [CampData::class, ContentTypeData::class]; - } - - private function addContentType(ObjectManager $manager, ActivityCategory $activityCategory, ContentType $contentType) { - $contentTypeConfig = new ContentTypeConfig(); - $contentTypeConfig->setContentType($contentType); - $activityCategory->addContentTypeConfig($contentTypeConfig); - $manager->persist($contentTypeConfig); - - return $contentTypeConfig; - } -} diff --git a/backend/module/eCampCore/data/dev/ActivityData.php b/backend/module/eCampCore/data/dev/ActivityData.php index 136f33cd4d..ec7c3baef6 100644 --- a/backend/module/eCampCore/data/dev/ActivityData.php +++ b/backend/module/eCampCore/data/dev/ActivityData.php @@ -6,8 +6,8 @@ use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\Camp; +use eCamp\Core\Entity\Category; use eCamp\Lib\Fixture\ContainerAwareInterface; use eCamp\Lib\Fixture\ContainerAwareTrait; @@ -24,17 +24,17 @@ public function load(ObjectManager $manager) { /** @var Camp $camp */ $camp = $this->getReference(CampData::$CAMP_1); - /** @var ActivityCategory $activityCategoryLs */ - $activityCategoryLs = $this->getReference(ActivityCategoryData::$EVENTCATEGORY_1_LS); - /** @var ActivityCategory $activityCategoryLa */ - $activityCategoryLa = $this->getReference(ActivityCategoryData::$EVENTCATEGORY_1_LA); + /** @var Category $categoryLs */ + $categoryLs = $this->getReference(CategoryData::$EVENTCATEGORY_1_LS); + /** @var Category $categoryLa */ + $categoryLa = $this->getReference(CategoryData::$EVENTCATEGORY_1_LA); $activity = $repository->findOneBy(['camp' => $camp, 'title' => 'Activity LS']); if (null == $activity) { $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('Activity LS'); - $activity->setActivityCategory($activityCategoryLs); + $activity->setCategory($categoryLs); $manager->persist($activity); } @@ -45,7 +45,7 @@ public function load(ObjectManager $manager) { $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('Activity LA'); - $activity->setActivityCategory($activityCategoryLa); + $activity->setCategory($categoryLa); $manager->persist($activity); } @@ -53,17 +53,17 @@ public function load(ObjectManager $manager) { /** @var Camp $camp */ $camp = $this->getReference(CampData::$CAMP_2); - /** @var ActivityCategory $activityCategoryLs */ - $activityCategoryLs = $this->getReference(ActivityCategoryData::$EVENTCATEGORY_2_LS); - /** @var ActivityCategory $activityCategoryLa */ - $activityCategoryLa = $this->getReference(ActivityCategoryData::$EVENTCATEGORY_2_LA); + /** @var Category $categoryLs */ + $categoryLs = $this->getReference(CategoryData::$EVENTCATEGORY_2_LS); + /** @var Category $categoryLa */ + $categoryLa = $this->getReference(CategoryData::$EVENTCATEGORY_2_LA); $activity = $repository->findOneBy(['camp' => $camp, 'title' => 'Activity LS']); if (null == $activity) { $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('Activity LS'); - $activity->setActivityCategory($activityCategoryLs); + $activity->setCategory($categoryLs); $manager->persist($activity); } @@ -74,7 +74,7 @@ public function load(ObjectManager $manager) { $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('Activity LA'); - $activity->setActivityCategory($activityCategoryLa); + $activity->setCategory($categoryLa); $manager->persist($activity); } @@ -84,6 +84,6 @@ public function load(ObjectManager $manager) { } public function getDependencies() { - return [CampData::class, ActivityCategoryData::class]; + return [CampData::class, CategoryData::class]; } } diff --git a/backend/module/eCampCore/data/dev/CategoryData.php b/backend/module/eCampCore/data/dev/CategoryData.php new file mode 100644 index 0000000000..9183c4d3fc --- /dev/null +++ b/backend/module/eCampCore/data/dev/CategoryData.php @@ -0,0 +1,117 @@ +getRepository(Category::class); + + /** @var Camp $camp */ + $camp = $this->getReference(CampData::$CAMP_1); + + $category = $repository->findOneBy(['camp' => $camp, 'name' => 'Lagersport']); + if (null == $category) { + $category = new Category(); + $category->setCamp($camp); + $category->setName('Lagersport'); + $category->setShort('LS'); + $category->setColor('#4CAF50'); + $category->setNumberingStyle('1'); + $manager->persist($category); + + // add prefered content types + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$STORYBOARD)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$STORYCONTEXT)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$SAFETYCONCEPT)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$NOTES)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$MATERIAL)); + } + $this->addReference(self::$EVENTCATEGORY_1_LS, $category); + + $category = $repository->findOneBy(['camp' => $camp, 'name' => 'Lageraktivität']); + if (null == $category) { + $category = new Category(); + $category->setCamp($camp); + $category->setName('Lageraktivität'); + $category->setShort('LA'); + $category->setColor('#FF9800'); + $category->setNumberingStyle('A'); + $manager->persist($category); + + // add prefered content types + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$STORYCONTEXT)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$NOTES)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$MATERIAL)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$LATHEMATICAREA)); + } + $this->addReference(self::$EVENTCATEGORY_1_LA, $category); + + /** @var Camp $camp */ + $camp = $this->getReference(CampData::$CAMP_2); + + $category = $repository->findOneBy(['camp' => $camp, 'name' => 'Lagersport']); + if (null == $category) { + $category = new Category(); + $category->setCamp($camp); + $category->setName('Lagersport'); + $category->setShort('LS'); + $category->setColor('#4CAF50'); + $category->setNumberingStyle('1'); + $manager->persist($category); + + // add prefered content types + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$STORYBOARD)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$STORYCONTEXT)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$SAFETYCONCEPT)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$NOTES)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$MATERIAL)); + } + $this->addReference(self::$EVENTCATEGORY_2_LS, $category); + + $category = $repository->findOneBy(['camp' => $camp, 'name' => 'Lageraktivität']); + if (null == $category) { + $category = new Category(); + $category->setCamp($camp); + $category->setName('Lageraktivität'); + $category->setShort('LA'); + $category->setColor('#FF9800'); + $category->setNumberingStyle('A'); + $manager->persist($category); + + // add prefered content types + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$STORYCONTEXT)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$NOTES)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$MATERIAL)); + $this->addContentType($manager, $category, $this->getReference(ContentTypeData::$LATHEMATICAREA)); + } + $this->addReference(self::$EVENTCATEGORY_2_LA, $category); + + $manager->flush(); + } + + public function getDependencies() { + return [CampData::class, ContentTypeData::class]; + } + + private function addContentType(ObjectManager $manager, Category $category, ContentType $contentType) { + $categoryContentType = new CategoryContentType(); + $categoryContentType->setContentType($contentType); + $category->addCategoryContentType($categoryContentType); + $manager->persist($categoryContentType); + + return $categoryContentType; + } +} diff --git a/backend/module/eCampCore/data/dev/GroupMembershipData.php b/backend/module/eCampCore/data/dev/GroupMembershipData.php index 3914dcdd80..4e51d31a68 100644 --- a/backend/module/eCampCore/data/dev/GroupMembershipData.php +++ b/backend/module/eCampCore/data/dev/GroupMembershipData.php @@ -4,7 +4,7 @@ use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\DependentFixtureInterface; -use Doctrine\Common\Persistence\ObjectManager; +use Doctrine\Persistence\ObjectManager; use eCamp\Core\Entity\Group; use eCamp\Core\Entity\GroupMembership; use eCamp\Core\Entity\User; diff --git a/backend/module/eCampCore/data/prod/ActivityCategoryTemplateData.php b/backend/module/eCampCore/data/prod/CategoryTemplateData.php similarity index 80% rename from backend/module/eCampCore/data/prod/ActivityCategoryTemplateData.php rename to backend/module/eCampCore/data/prod/CategoryTemplateData.php index c932387ea4..bd7d997822 100644 --- a/backend/module/eCampCore/data/prod/ActivityCategoryTemplateData.php +++ b/backend/module/eCampCore/data/prod/CategoryTemplateData.php @@ -5,31 +5,31 @@ use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; -use eCamp\Core\Entity\ActivityCategoryTemplate; use eCamp\Core\Entity\CampTemplate; +use eCamp\Core\Entity\CategoryContentTypeTemplate; +use eCamp\Core\Entity\CategoryTemplate; use eCamp\Core\Entity\ContentType; -use eCamp\Core\Entity\ContentTypeConfigTemplate; -class ActivityCategoryTemplateData extends AbstractFixture implements DependentFixtureInterface { +class CategoryTemplateData extends AbstractFixture implements DependentFixtureInterface { public static $PBS_JS_KIDS_LAGERSPORT = 'PBS_JS_KIDS_LAGERSPORT'; public static $PBS_JS_KIDS_LAGERAKTIVITAET = 'PBS_JS_KIDS_LAGERAKTIVITAET'; public static $PBS_JS_TEEN_LAGERSPORT = 'PBS_JS_TEEN_LAGERSPORT'; public static $PBS_JS_TEEN_LAGERAKTIVITAET = 'PBS_JS_TEEN_LAGERAKTIVITAET'; public function load(ObjectManager $manager) { - $repository = $manager->getRepository(ActivityCategoryTemplate::class); + $repository = $manager->getRepository(CategoryTemplate::class); /** @var CampTemplate $pbsJsKids */ $pbsJsKids = $this->getReference(CampTemplateData::$PBS_JS_KIDS); $lagersport = $repository->findOneBy(['name' => 'Lagersport', 'campTemplate' => $pbsJsKids]); if (null == $lagersport) { - $lagersport = new ActivityCategoryTemplate(); + $lagersport = new CategoryTemplate(); $lagersport->setShort('LS'); $lagersport->setName('Lagersport'); $lagersport->setColor('#4CAF50'); $lagersport->setNumberingStyle('1'); - $pbsJsKids->addActivityCategoryTemplate($lagersport); + $pbsJsKids->addCategoryTemplate($lagersport); $manager->persist($lagersport); // add allowed content types @@ -43,12 +43,12 @@ public function load(ObjectManager $manager) { $lageraktivitaet = $repository->findOneBy(['name' => 'Lageraktivität', 'campTemplate' => $pbsJsKids]); if (null == $lageraktivitaet) { - $lageraktivitaet = new ActivityCategoryTemplate(); + $lageraktivitaet = new CategoryTemplate(); $lageraktivitaet->setShort('LA'); $lageraktivitaet->setName('Lageraktivität'); $lageraktivitaet->setColor('#FF9800'); $lageraktivitaet->setNumberingStyle('A'); - $pbsJsKids->addActivityCategoryTemplate($lageraktivitaet); + $pbsJsKids->addCategoryTemplate($lageraktivitaet); $manager->persist($lageraktivitaet); // add allowed content types @@ -65,12 +65,12 @@ public function load(ObjectManager $manager) { $lagersport = $repository->findOneBy(['name' => 'Lagersport', 'campTemplate' => $pbsJsTeen]); if (null == $lagersport) { - $lagersport = new ActivityCategoryTemplate(); + $lagersport = new CategoryTemplate(); $lagersport->setShort('LS'); $lagersport->setName('Lagersport'); $lagersport->setColor('#4CAF50'); $lagersport->setNumberingStyle('1'); - $pbsJsTeen->addActivityCategoryTemplate($lagersport); + $pbsJsTeen->addCategoryTemplate($lagersport); $manager->persist($lagersport); // add allowed content types @@ -84,12 +84,12 @@ public function load(ObjectManager $manager) { $lageraktivitaet = $repository->findOneBy(['name' => 'Lageraktivität', 'campTemplate' => $pbsJsTeen]); if (null == $lageraktivitaet) { - $lageraktivitaet = new ActivityCategoryTemplate(); + $lageraktivitaet = new CategoryTemplate(); $lageraktivitaet->setShort('LA'); $lageraktivitaet->setName('Lageraktivität'); $lageraktivitaet->setColor('#FF9800'); $lageraktivitaet->setNumberingStyle('A'); - $pbsJsTeen->addActivityCategoryTemplate($lageraktivitaet); + $pbsJsTeen->addCategoryTemplate($lageraktivitaet); $manager->persist($lageraktivitaet); // add allowed content types @@ -108,12 +108,12 @@ public function getDependencies() { return [CampTemplateData::class, ContentTypeData::class]; } - private function addContentType(ObjectManager $manager, ActivityCategoryTemplate $activityCategoryTemplate, ContentType $contentType) { - $contentTypeConfigTemplate = new ContentTypeConfigTemplate(); - $contentTypeConfigTemplate->setContentType($contentType); - $activityCategoryTemplate->addContentTypeConfigTemplate($contentTypeConfigTemplate); - $manager->persist($contentTypeConfigTemplate); + private function addContentType(ObjectManager $manager, CategoryTemplate $categoryTemplate, ContentType $contentType): CategoryContentTypeTemplate { + $categoryContentTypeTemplate = new CategoryContentTypeTemplate(); + $categoryContentTypeTemplate->setContentType($contentType); + $categoryTemplate->addCategoryContentTypeTemplate($categoryContentTypeTemplate); + $manager->persist($categoryContentTypeTemplate); - return $contentTypeConfigTemplate; + return $categoryContentTypeTemplate; } } diff --git a/backend/module/eCampCore/src/Acl/AclFactory.php b/backend/module/eCampCore/src/Acl/AclFactory.php index 4065e34668..d51aaf3375 100644 --- a/backend/module/eCampCore/src/Acl/AclFactory.php +++ b/backend/module/eCampCore/src/Acl/AclFactory.php @@ -3,16 +3,18 @@ namespace eCamp\Core\Acl; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; -use eCamp\Core\Entity\ActivityCategoryTemplate; use eCamp\Core\Entity\ActivityContent; use eCamp\Core\Entity\ActivityResponsible; use eCamp\Core\Entity\Camp; use eCamp\Core\Entity\CampCollaboration; use eCamp\Core\Entity\CampTemplate; +use eCamp\Core\Entity\Category; +use eCamp\Core\Entity\CategoryContent; +use eCamp\Core\Entity\CategoryContentTemplate; +use eCamp\Core\Entity\CategoryContentType; +use eCamp\Core\Entity\CategoryContentTypeTemplate; +use eCamp\Core\Entity\CategoryTemplate; use eCamp\Core\Entity\ContentType; -use eCamp\Core\Entity\ContentTypeConfig; -use eCamp\Core\Entity\ContentTypeConfigTemplate; use eCamp\Core\Entity\Day; use eCamp\Core\Entity\Group; use eCamp\Core\Entity\GroupMembership; @@ -55,13 +57,15 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o $acl->addResource(CampTemplate::class, BaseEntity::class); $acl->addResource(MaterialListTemplate::class, BaseEntity::class); - $acl->addResource(ActivityCategoryTemplate::class, BaseEntity::class); - $acl->addResource(ContentTypeConfigTemplate::class, BaseEntity::class); + $acl->addResource(CategoryTemplate::class, BaseEntity::class); + $acl->addResource(CategoryContentTypeTemplate::class, BaseEntity::class); + $acl->addResource(CategoryContentTemplate::class, BaseEntity::class); $acl->addResource(ContentType::class, BaseEntity::class); $acl->addResource(Activity::class, BaseEntity::class); - $acl->addResource(ActivityCategory::class, BaseEntity::class); - $acl->addResource(ContentTypeConfig::class, BaseEntity::class); + $acl->addResource(Category::class, BaseEntity::class); + $acl->addResource(CategoryContentType::class, BaseEntity::class); + $acl->addResource(CategoryContent::class, BaseEntity::class); $acl->addResource(ActivityContent::class, BaseEntity::class); $acl->addResource(ActivityResponsible::class, BaseEntity::class); @@ -88,8 +92,9 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o Group::class, CampTemplate::class, MaterialListTemplate::class, - ActivityCategoryTemplate::class, - ContentTypeConfigTemplate::class, + CategoryTemplate::class, + CategoryContentTypeTemplate::class, + CategoryContentTemplate::class, ContentType::class, ], [ @@ -144,8 +149,9 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o Period::class, Day::class, Activity::class, - ActivityCategory::class, - ContentTypeConfig::class, + Category::class, + CategoryContentType::class, + CategoryContent::class, ActivityResponsible::class, ScheduleEntry::class, ActivityContent::class, @@ -163,8 +169,9 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o Period::class, Day::class, Activity::class, - ActivityCategory::class, - ContentTypeConfig::class, + Category::class, + CategoryContentType::class, + CategoryContent::class, ActivityResponsible::class, ScheduleEntry::class, ActivityContent::class, diff --git a/backend/module/eCampCore/src/Entity/Activity.php b/backend/module/eCampCore/src/Entity/Activity.php index 4149fdb607..b7879705e6 100644 --- a/backend/module/eCampCore/src/Entity/Activity.php +++ b/backend/module/eCampCore/src/Entity/Activity.php @@ -34,10 +34,10 @@ class Activity extends BaseEntity implements BelongsToCampInterface { private ?Camp $camp = null; /** - * @ORM\ManyToOne(targetEntity="ActivityCategory") + * @ORM\ManyToOne(targetEntity="Category") * @ORM\JoinColumn(nullable=false) */ - private ?ActivityCategory $activityCategory = null; + private ?Category $category = null; /** * @ORM\Column(type="text") @@ -70,12 +70,12 @@ public function setCamp(?Camp $camp) { $this->camp = $camp; } - public function getActivityCategory(): ?ActivityCategory { - return $this->activityCategory; + public function getCategory(): ?Category { + return $this->category; } - public function setActivityCategory(?ActivityCategory $activityCategory): void { - $this->activityCategory = $activityCategory; + public function setCategory(?Category $category): void { + $this->category = $category; } public function getTitle(): ?string { diff --git a/backend/module/eCampCore/src/Entity/ActivityCategoryTemplate.php b/backend/module/eCampCore/src/Entity/ActivityCategoryTemplate.php deleted file mode 100644 index b3f82ad85d..0000000000 --- a/backend/module/eCampCore/src/Entity/ActivityCategoryTemplate.php +++ /dev/null @@ -1,106 +0,0 @@ -contentTypeConfigTemplates = new ArrayCollection(); - } - - public function getCampTemplate(): ?CampTemplate { - return $this->campTemplate; - } - - public function setCampTemplate(?CampTemplate $campTemplate) { - $this->campTemplate = $campTemplate; - } - - public function getShort(): ?string { - return $this->short; - } - - public function setShort(?string $short) { - $this->short = $short; - } - - public function getName(): ?string { - return $this->name; - } - - public function setName(?string $name) { - $this->name = $name; - } - - public function getColor(): ?string { - return $this->color; - } - - public function setColor(?string $color) { - $this->color = $color; - } - - public function getNumberingStyle(): ?string { - return $this->numberingStyle; - } - - public function setNumberingStyle(?string $numberingStyle) { - $this->numberingStyle = $numberingStyle; - } - - public function getContentTypeConfigTemplates(): Collection { - return $this->contentTypeConfigTemplates; - } - - public function addContentTypeConfigTemplate(ContentTypeConfigTemplate $contentTypeConfigTemplate) { - $contentTypeConfigTemplate->setActivityCategoryTemplate($this); - $this->contentTypeConfigTemplates->add($contentTypeConfigTemplate); - } - - public function removeContentTypeConfigTemplate(ContentTypeConfigTemplate $contentTypeConfigTemplate) { - $contentTypeConfigTemplate->setActivityCategoryTemplate(null); - $this->contentTypeConfigTemplates->removeElement($contentTypeConfigTemplate); - } -} diff --git a/backend/module/eCampCore/src/Entity/ActivityContent.php b/backend/module/eCampCore/src/Entity/ActivityContent.php index 744fa92da3..6d39ac7b8e 100644 --- a/backend/module/eCampCore/src/Entity/ActivityContent.php +++ b/backend/module/eCampCore/src/Entity/ActivityContent.php @@ -2,6 +2,8 @@ namespace eCamp\Core\Entity; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use eCamp\Core\ContentType\ContentTypeStrategyInterface; use eCamp\Core\ContentType\ContentTypeStrategyProviderAware; @@ -19,24 +21,46 @@ class ActivityContent extends BaseEntity implements ContentTypeStrategyProviderA * @ORM\ManyToOne(targetEntity="Activity") * @ORM\JoinColumn(nullable=false, onDelete="cascade") */ - public ?Activity $activity = null; + private ?Activity $activity = null; + + /** + * @ORM\ManyToOne(targetEntity="ActivityContent") + * @ORM\JoinColumn(nullable=true) + */ + private ?ActivityContent $parent = null; + + /** + * @ORM\OneToMany(targetEntity="ActivityContent", mappedBy="parent") + */ + private Collection $children; + + /** + * @ORM\Column(type="json", nullable=true) + */ + private ?string $position = null; /** * @ORM\ManyToOne(targetEntity="ContentType") * @ORM\JoinColumn(nullable=false) */ - protected ?ContentType $contentType = null; + private ?ContentType $contentType = null; /** * @ORM\Column(type="string", length=64, nullable=true) */ private ?string $instanceName = null; + public function __construct() { + parent::__construct(); + + $this->children = new ArrayCollection(); + } + public function getActivity(): ?Activity { return $this->activity; } - public function setActivity(?Activity $activity) { + public function setActivity(?Activity $activity): void { $this->activity = $activity; } @@ -44,6 +68,18 @@ public function getCamp(): ?Camp { return (null != $this->activity) ? $this->activity->getCamp() : null; } + public function isRoot(): bool { + return null == $this->parent; + } + + public function getParent(): ?ActivityContent { + return $this->parent; + } + + public function setParent(?ActivityContent $parent): void { + $this->parent = $parent; + } + public function getContentType(): ?ContentType { return $this->contentType; } @@ -60,6 +96,28 @@ public function setInstanceName(?string $instanceName): void { $this->instanceName = $instanceName; } + public function getChildren(): Collection { + return $this->children; + } + + public function addChild(ActivityContent $activityContent): void { + $activityContent->setParent($this); + $this->children->add($activityContent); + } + + public function removeChild(ActivityContent $activityContent): void { + $activityContent->setParent(null); + $this->children->removeElement($activityContent); + } + + public function getPosition() { + return $this->position; + } + + public function setPosition($position): void { + $this->position = $position; + } + /** * Returns the strategy class of the content-type. */ diff --git a/backend/module/eCampCore/src/Entity/Camp.php b/backend/module/eCampCore/src/Entity/Camp.php index fabfe6d78a..bf7c002996 100644 --- a/backend/module/eCampCore/src/Entity/Camp.php +++ b/backend/module/eCampCore/src/Entity/Camp.php @@ -34,9 +34,9 @@ class Camp extends BaseEntity implements BelongsToCampInterface { protected Collection $periods; /** - * @ORM\OneToMany(targetEntity="ActivityCategory", mappedBy="camp", orphanRemoval=true) + * @ORM\OneToMany(targetEntity="Category", mappedBy="camp", orphanRemoval=true) */ - protected Collection $activityCategories; + protected Collection $categories; /** * @ORM\OneToMany(targetEntity="Activity", mappedBy="camp", orphanRemoval=true) @@ -86,7 +86,7 @@ public function __construct() { $this->collaborations = new ArrayCollection(); $this->jobs = new ArrayCollection(); $this->periods = new ArrayCollection(); - $this->activityCategories = new ArrayCollection(); + $this->categories = new ArrayCollection(); $this->activities = new ArrayCollection(); $this->materialLists = new ArrayCollection(); } @@ -229,18 +229,18 @@ public function removePeriod(Period $period): void { $this->periods->removeElement($period); } - public function getActivityCategories(): Collection { - return $this->activityCategories; + public function getCategories(): Collection { + return $this->categories; } - public function addActivityCategory(ActivityCategory $activityCategory): void { - $activityCategory->setCamp($this); - $this->activityCategories->add($activityCategory); + public function addCategory(Category $category): void { + $category->setCamp($this); + $this->categories->add($category); } - public function removeActivityCategory(ActivityCategory $activityCategory): void { - $activityCategory->setCamp(null); - $this->activityCategories->removeElement($activityCategory); + public function removeCategory(Category $category): void { + $category->setCamp(null); + $this->categories->removeElement($category); } public function getActivities(): Collection { diff --git a/backend/module/eCampCore/src/Entity/CampTemplate.php b/backend/module/eCampCore/src/Entity/CampTemplate.php index be1fd56bb2..6b2e6c8228 100644 --- a/backend/module/eCampCore/src/Entity/CampTemplate.php +++ b/backend/module/eCampCore/src/Entity/CampTemplate.php @@ -19,9 +19,9 @@ class CampTemplate extends BaseEntity { private ?string $name = null; /** - * @ORM\OneToMany(targetEntity="ActivityCategoryTemplate", mappedBy="campTemplate", orphanRemoval=true) + * @ORM\OneToMany(targetEntity="CategoryTemplate", mappedBy="campTemplate", orphanRemoval=true) */ - private Collection $activityCategoryTemplates; + private Collection $categoryTemplates; /** * @ORM\OneToMany(targetEntity="MaterialListTemplate", mappedBy="campTemplate", orphanRemoval=true) @@ -31,7 +31,7 @@ class CampTemplate extends BaseEntity { public function __construct() { parent::__construct(); - $this->activityCategoryTemplates = new ArrayCollection(); + $this->categoryTemplates = new ArrayCollection(); $this->materialListTemplates = new ArrayCollection(); } @@ -43,18 +43,18 @@ public function setName(?string $name) { $this->name = $name; } - public function getActivityCategoryTemplates(): Collection { - return $this->activityCategoryTemplates; + public function getCategoryTemplates(): Collection { + return $this->categoryTemplates; } - public function addActivityCategoryTemplate(ActivityCategoryTemplate $activityCategoryTemplate) { - $activityCategoryTemplate->setCampTemplate($this); - $this->activityCategoryTemplates->add($activityCategoryTemplate); + public function addCategoryTemplate(CategoryTemplate $categoryTemplate) { + $categoryTemplate->setCampTemplate($this); + $this->categoryTemplates->add($categoryTemplate); } - public function removeActivityCategoryTemplate(ActivityCategoryTemplate $activityCategoryTemplate) { - $activityCategoryTemplate->setCampTemplate(null); - $this->activityCategoryTemplates->removeElement($activityCategoryTemplate); + public function removeCategoryTemplate(CategoryTemplate $categoryTemplate) { + $categoryTemplate->setCampTemplate(null); + $this->categoryTemplates->removeElement($categoryTemplate); } public function getMaterialListTemplates(): Collection { diff --git a/backend/module/eCampCore/src/Entity/ActivityCategory.php b/backend/module/eCampCore/src/Entity/Category.php similarity index 61% rename from backend/module/eCampCore/src/Entity/ActivityCategory.php rename to backend/module/eCampCore/src/Entity/Category.php index b56b35d1a6..1b15f14263 100644 --- a/backend/module/eCampCore/src/Entity/ActivityCategory.php +++ b/backend/module/eCampCore/src/Entity/Category.php @@ -8,15 +8,20 @@ use eCamp\Lib\Entity\BaseEntity; /** - * ActivityCategory. + * Category. * * @ORM\Entity */ -class ActivityCategory extends BaseEntity implements BelongsToCampInterface { +class Category extends BaseEntity implements BelongsToCampInterface { /** - * @ORM\OneToMany(targetEntity="ContentTypeConfig", mappedBy="activityCategory", orphanRemoval=true) + * @ORM\OneToMany(targetEntity="CategoryContentType", mappedBy="category", orphanRemoval=true) */ - protected Collection $contentTypeConfigs; + protected Collection $categoryContentTypes; + + /** + * @ORM\OneToMany(targetEntity="CategoryContent", mappedBy="category", orphanRemoval=true) + */ + protected Collection $categoryContents; /** * @ORM\ManyToOne(targetEntity="Camp") @@ -27,7 +32,7 @@ class ActivityCategory extends BaseEntity implements BelongsToCampInterface { /** * @ORM\Column(type="string", length=32, nullable=true) */ - private ?string $activityCategoryTemplateId = null; + private ?string $categoryTemplateId = null; /** * @ORM\Column(type="string", length=16, nullable=false) @@ -52,7 +57,8 @@ class ActivityCategory extends BaseEntity implements BelongsToCampInterface { public function __construct() { parent::__construct(); - $this->contentTypeConfigs = new ArrayCollection(); + $this->categoryContentTypes = new ArrayCollection(); + $this->categoryContents = new ArrayCollection(); } public function getCamp(): ?Camp { @@ -60,32 +66,50 @@ public function getCamp(): ?Camp { } /** - * @internal Do not set the {@link Camp} directly on the ActivityCategory. Instead use {@see Camp::addActivityCategory()} + * @internal Do not set the {@link Camp} directly on the Category. Instead use {@see Camp::addCategory()} */ public function setCamp(?Camp $camp) { $this->camp = $camp; } - public function getContentTypeConfigs(): Collection { - return $this->contentTypeConfigs; + public function getCategoryContentTypes(): Collection { + return $this->categoryContentTypes; + } + + public function addCategoryContentType(CategoryContentType $categoryContentType) { + $categoryContentType->setCategory($this); + $this->categoryContentTypes->add($categoryContentType); + } + + public function removeCategoryContentType(CategoryContentType $categoryContentType) { + $categoryContentType->setCategory(null); + $this->categoryContentTypes->removeElement($categoryContentType); + } + + public function getCategoryContents(): Collection { + return $this->categoryContents; + } + + public function getRootCategoryContents(): Collection { + return $this->categoryContents->filter(fn (CategoryContent $cc) => $cc->isRoot()); } - public function addContentTypeConfig(ContentTypeConfig $contentTypeConfig) { - $contentTypeConfig->setActivityCategory($this); - $this->contentTypeConfigs->add($contentTypeConfig); + public function addCategoryContent(CategoryContent $categoryContent) { + $categoryContent->setCategory($this); + $this->categoryContents->add($categoryContent); } - public function removeContentTypeConfig(ContentTypeConfig $contentTypeConfig) { - $contentTypeConfig->setActivityCategory(null); - $this->contentTypeConfigs->removeElement($contentTypeConfig); + public function removeCategoryContent(CategoryContent $categoryContent) { + $categoryContent->setCategory(null); + $this->categoryContents->removeElement($categoryContent); } - public function getActivityCategoryTemplateId(): ?string { - return $this->activityCategoryTemplateId; + public function getCategoryTemplateId(): ?string { + return $this->categoryTemplateId; } - public function setActivityCategoryTemplateId(?string $activityCategoryTemplateId) { - $this->activityCategoryTemplateId = $activityCategoryTemplateId; + public function setCategoryTemplateId(?string $categoryTemplateId) { + $this->categoryTemplateId = $categoryTemplateId; } public function getShort(): ?string { diff --git a/backend/module/eCampCore/src/Entity/CategoryContent.php b/backend/module/eCampCore/src/Entity/CategoryContent.php new file mode 100644 index 0000000000..33c272a265 --- /dev/null +++ b/backend/module/eCampCore/src/Entity/CategoryContent.php @@ -0,0 +1,128 @@ +children = new ArrayCollection(); + } + + public function getCategory(): ?Category { + return $this->category; + } + + public function setCategory(?Category $category): void { + $this->category = $category; + } + + public function getCamp(): ?Camp { + return (null != $this->category) ? $this->category->getCamp() : null; + } + + public function isRoot(): bool { + return null == $this->parent; + } + + public function getParent(): ?CategoryContent { + return $this->parent; + } + + public function setParent(?CategoryContent $parent): void { + $this->parent = $parent; + } + + public function getContentType(): ?ContentType { + return $this->contentType; + } + + public function setContentType(?ContentType $contentType): void { + $this->contentType = $contentType; + } + + public function getInstanceName(): ?string { + return $this->instanceName; + } + + public function setInstanceName(?string $instanceName): void { + $this->instanceName = $instanceName; + } + + public function getChildren(): Collection { + return $this->children; + } + + public function addChild(CategoryContent $categoryContent): void { + $categoryContent->setParent($this); + $this->children->add($categoryContent); + } + + public function removeChild(CategoryContent $categoryContent): void { + $categoryContent->setParent(null); + $this->children->removeElement($categoryContent); + } + + public function getPosition() { + return $this->position; + } + + public function setPosition($position): void { + $this->position = $position; + } + + public function getCategoryContentTemplateId(): ?string { + return $this->categoryContentTemplateId; + } + + public function setCategoryContentTemplateId(?string $categoryContentTemplateId): void { + $this->categoryContentTemplateId = $categoryContentTemplateId; + } +} diff --git a/backend/module/eCampCore/src/Entity/CategoryContentTemplate.php b/backend/module/eCampCore/src/Entity/CategoryContentTemplate.php new file mode 100644 index 0000000000..e92e1c9fd0 --- /dev/null +++ b/backend/module/eCampCore/src/Entity/CategoryContentTemplate.php @@ -0,0 +1,111 @@ +children = new ArrayCollection(); + } + + public function getCategoryTemplate(): ?CategoryTemplate { + return $this->categoryTemplate; + } + + public function setCategoryTemplate(?CategoryTemplate $categoryTemplate): void { + $this->categoryTemplate = $categoryTemplate; + } + + public function isRoot(): bool { + return null == $this->parent; + } + + public function getParent(): ?CategoryContentTemplate { + return $this->parent; + } + + public function setParent(?CategoryContentTemplate $parent): void { + $this->parent = $parent; + } + + public function getContentType(): ?ContentType { + return $this->contentType; + } + + public function setContentType(?ContentType $contentType): void { + $this->contentType = $contentType; + } + + public function getInstanceName(): ?string { + return $this->instanceName; + } + + public function setInstanceName(?string $instanceName): void { + $this->instanceName = $instanceName; + } + + public function getChildren(): Collection { + return $this->children; + } + + public function addChild(CategoryContentTemplate $categoryContentTemplate): void { + $categoryContentTemplate->setParent($this); + $this->children->add($categoryContentTemplate); + } + + public function removeChild(CategoryContentTemplate $categoryContentTemplate): void { + $categoryContentTemplate->setParent(null); + $this->children->removeElement($categoryContentTemplate); + } + + public function getPosition() { + return $this->position; + } + + public function setPosition($position): void { + $this->position = $position; + } +} diff --git a/backend/module/eCampCore/src/Entity/CategoryContentType.php b/backend/module/eCampCore/src/Entity/CategoryContentType.php new file mode 100644 index 0000000000..a3e8ae7092 --- /dev/null +++ b/backend/module/eCampCore/src/Entity/CategoryContentType.php @@ -0,0 +1,59 @@ +category) ? $this->category->getCamp() : null; + } + + public function getCategory(): ?Category { + return $this->category; + } + + public function setCategory(?Category $category): void { + $this->category = $category; + } + + public function getContentType(): ?ContentType { + return $this->contentType; + } + + public function setContentType(?ContentType $contentType): void { + $this->contentType = $contentType; + } + + public function getCategoryContentTypeTemplateId(): ?string { + return $this->categoryContentTypeTemplateId; + } + + public function setCategoryContentTypeTemplateId(?string $categoryContentTypeTemplateId): void { + $this->categoryContentTypeTemplateId = $categoryContentTypeTemplateId; + } +} diff --git a/backend/module/eCampCore/src/Entity/CategoryContentTypeTemplate.php b/backend/module/eCampCore/src/Entity/CategoryContentTypeTemplate.php new file mode 100644 index 0000000000..f3bb981326 --- /dev/null +++ b/backend/module/eCampCore/src/Entity/CategoryContentTypeTemplate.php @@ -0,0 +1,42 @@ +categoryTemplate; + } + + public function setCategoryTemplate(?CategoryTemplate $categoryTemplate) { + $this->categoryTemplate = $categoryTemplate; + } + + public function getContentType(): ?ContentType { + return $this->contentType; + } + + public function setContentType(?ContentType $contentType) { + $this->contentType = $contentType; + } +} diff --git a/backend/module/eCampCore/src/Entity/CategoryTemplate.php b/backend/module/eCampCore/src/Entity/CategoryTemplate.php new file mode 100644 index 0000000000..692005d9ff --- /dev/null +++ b/backend/module/eCampCore/src/Entity/CategoryTemplate.php @@ -0,0 +1,130 @@ +categoryContentTypeTemplates = new ArrayCollection(); + $this->categoryContentTemplates = new ArrayCollection(); + } + + public function getCampTemplate(): ?CampTemplate { + return $this->campTemplate; + } + + public function setCampTemplate(?CampTemplate $campTemplate) { + $this->campTemplate = $campTemplate; + } + + public function getShort(): ?string { + return $this->short; + } + + public function setShort(?string $short) { + $this->short = $short; + } + + public function getName(): ?string { + return $this->name; + } + + public function setName(?string $name) { + $this->name = $name; + } + + public function getColor(): ?string { + return $this->color; + } + + public function setColor(?string $color) { + $this->color = $color; + } + + public function getNumberingStyle(): ?string { + return $this->numberingStyle; + } + + public function setNumberingStyle(?string $numberingStyle) { + $this->numberingStyle = $numberingStyle; + } + + public function getCategoryContentTypeTemplates(): Collection { + return $this->categoryContentTypeTemplates; + } + + public function addCategoryContentTypeTemplate(CategoryContentTypeTemplate $categoryContentTypeTemplate) { + $categoryContentTypeTemplate->setCategoryTemplate($this); + $this->categoryContentTypeTemplates->add($categoryContentTypeTemplate); + } + + public function removeCategoryContentTypeTemplate(CategoryContentTypeTemplate $categoryContentTypeTemplate) { + $categoryContentTypeTemplate->setCategoryTemplate(null); + $this->categoryContentTypeTemplates->removeElement($categoryContentTypeTemplate); + } + + public function getCategoryContentTemplates(): Collection { + return $this->categoryContentTemplates; + } + + public function getRootCategoryContentTemplates(): Collection { + return $this->categoryContentTemplates->filter(fn (CategoryContentTemplate $cct) => $cct->isRoot()); + } + + public function addCategoryContentTemplate(CategoryContentTemplate $categoryContentTemplate) { + $categoryContentTemplate->setCategoryTemplate($this); + $this->categoryContentTemplates->add($categoryContentTemplate); + } + + public function removeCategoryContentTemplate(CategoryContentTemplate $categoryContentTemplate) { + $categoryContentTemplate->setCategoryTemplate(null); + $this->categoryContentTemplates->removeElement($categoryContentTemplate); + } +} diff --git a/backend/module/eCampCore/src/Entity/ContentTypeConfig.php b/backend/module/eCampCore/src/Entity/ContentTypeConfig.php deleted file mode 100644 index 81bf5cd10a..0000000000 --- a/backend/module/eCampCore/src/Entity/ContentTypeConfig.php +++ /dev/null @@ -1,86 +0,0 @@ -activityCategory) ? $this->activityCategory->getCamp() : null; - } - - public function getActivityCategory(): ?ActivityCategory { - return $this->activityCategory; - } - - public function setActivityCategory(?ActivityCategory $activityCategory) { - $this->activityCategory = $activityCategory; - } - - public function getContentType(): ?ContentType { - return $this->contentType; - } - - public function setContentType(?ContentType $contentType) { - $this->contentType = $contentType; - } - - public function getContentTypeConfigTemplateId(): ?string { - return $this->contentTypeConfigTemplateId; - } - - public function setContentTypeConfigTemplateId(?string $contentTypeConfigTemplateId) { - $this->contentTypeConfigTemplateId = $contentTypeConfigTemplateId; - } - - public function getRequired(): bool { - return $this->required; - } - - public function setRequired(bool $required) { - $this->required = $required; - } - - public function getMultiple(): bool { - return $this->multiple; - } - - public function setMultiple(bool $multiple) { - $this->multiple = $multiple; - } -} diff --git a/backend/module/eCampCore/src/Entity/ContentTypeConfigTemplate.php b/backend/module/eCampCore/src/Entity/ContentTypeConfigTemplate.php deleted file mode 100644 index 24d09d0d9f..0000000000 --- a/backend/module/eCampCore/src/Entity/ContentTypeConfigTemplate.php +++ /dev/null @@ -1,69 +0,0 @@ -activityCategoryTemplate; - } - - public function setActivityCategoryTemplate(?ActivityCategoryTemplate $activityCategoryTemplate) { - $this->activityCategoryTemplate = $activityCategoryTemplate; - } - - public function getContentType(): ?ContentType { - return $this->contentType; - } - - public function setContentType(?ContentType $contentType) { - $this->contentType = $contentType; - } - - public function getRequired(): bool { - return $this->required; - } - - public function setRequired(bool $required) { - $this->required = $required; - } - - public function getMultiple(): bool { - return $this->multiple; - } - - public function setMultiple(bool $multiple) { - $this->multiple = $multiple; - } -} diff --git a/backend/module/eCampCore/src/Entity/ScheduleEntry.php b/backend/module/eCampCore/src/Entity/ScheduleEntry.php index cc42f644ef..bfe254afe2 100644 --- a/backend/module/eCampCore/src/Entity/ScheduleEntry.php +++ b/backend/module/eCampCore/src/Entity/ScheduleEntry.php @@ -73,20 +73,20 @@ public function setActivity(?Activity $activity) { $this->activity = $activity; } - public function getActivityCategory(): ?ActivityCategory { - return (null !== $this->activity) ? $this->activity->getActivityCategory() : null; + public function getCategory(): ?Category { + return (null !== $this->activity) ? $this->activity->getCategory() : null; } public function getNumberingStyle(): ?string { - $activityCategory = $this->getActivityCategory(); + $category = $this->getCategory(); - return (null !== $activityCategory) ? $activityCategory->getNumberingStyle() : null; + return (null !== $category) ? $category->getNumberingStyle() : null; } public function getColor(): ?string { - $activityCategory = $this->getActivityCategory(); + $category = $this->getCategory(); - return (null !== $activityCategory) ? $activityCategory->getColor() : null; + return (null !== $category) ? $category->getColor() : null; } public function getPeriodOffset(): int { @@ -182,7 +182,7 @@ public function getNumber(): string { $dayNumber = $this->getDayNumber(); $scheduleEntryNumber = $this->getScheduleEntryNumber(); - $category = $this->getActivityCategory(); + $category = $this->getCategory(); $scheduleEntryStyledNumber = (null !== $category) ? $category->getStyledNumber($scheduleEntryNumber) : $scheduleEntryNumber; return $dayNumber.'.'.$scheduleEntryStyledNumber; diff --git a/backend/module/eCampCore/src/EntityService/ActivityCategoryService.php b/backend/module/eCampCore/src/EntityService/ActivityCategoryService.php deleted file mode 100644 index fb36bc6411..0000000000 --- a/backend/module/eCampCore/src/EntityService/ActivityCategoryService.php +++ /dev/null @@ -1,90 +0,0 @@ -contentTypeConfigService = $contentTypeConfigService; - } - - public function createFromTemplate(Camp $camp, ActivityCategoryTemplate $template): ActivityCategory { - /** @var ActivityCategory $activityCategory */ - $activityCategory = $this->create((object) [ - 'campId' => $camp->getId(), - 'short' => $template->getShort(), - 'name' => $template->getName(), - 'color' => $template->getColor(), - 'numberingStyle' => $template->getNumberingStyle(), - ]); - $activityCategory->setActivityCategoryTemplateId($template->getId()); - - /** @var ContentTypeConfigTemplate $contentTypeConfigTemplate */ - foreach ($template->getContentTypeConfigTemplates() as $contentTypeConfigTemplate) { - $this->contentTypeConfigService->createFromTemplate($activityCategory, $contentTypeConfigTemplate); - } - - return $activityCategory; - } - - /** - * @param mixed $data - * - * @throws EntityNotFoundException - * @throws ORMException - * @throws NoAccessException - */ - protected function createEntity($data): ActivityCategory { - /** @var ActivityCategory $activityCategory */ - $activityCategory = parent::createEntity($data); - - /** @var Camp $camp */ - $camp = $this->findRelatedEntity(Camp::class, $data, 'campId'); - $camp->addActivityCategory($activityCategory); - - return $activityCategory; - } - - protected function fetchAllQueryBuilder($params = []): QueryBuilder { - $q = parent::fetchAllQueryBuilder($params); - $q->andWhere($this->createFilter($q, Camp::class, 'row', 'camp')); - - if (isset($params['campId'])) { - $q->andWhere('row.camp = :campId'); - $q->setParameter('campId', $params['campId']); - } - - return $q; - } - - protected function fetchQueryBuilder($id): QueryBuilder { - $q = parent::fetchQueryBuilder($id); - $q->andWhere($this->createFilter($q, Camp::class, 'row', 'camp')); - - return $q; - } -} diff --git a/backend/module/eCampCore/src/EntityService/ActivityContentService.php b/backend/module/eCampCore/src/EntityService/ActivityContentService.php index 424bd7eb2c..00b4880088 100644 --- a/backend/module/eCampCore/src/EntityService/ActivityContentService.php +++ b/backend/module/eCampCore/src/EntityService/ActivityContentService.php @@ -9,9 +9,11 @@ use eCamp\Core\Entity\Activity; use eCamp\Core\Entity\ActivityContent; use eCamp\Core\Entity\Camp; +use eCamp\Core\Entity\CategoryContent; use eCamp\Core\Entity\ContentType; use eCamp\Core\Hydrator\ActivityContentHydrator; use eCamp\Lib\Acl\NoAccessException; +use eCamp\Lib\Entity\BaseEntity; use eCamp\Lib\Service\ServiceUtils; use Laminas\Authentication\AuthenticationService; use Psr\Container\ContainerExceptionInterface; @@ -31,6 +33,26 @@ public function __construct(ServiceUtils $serviceUtils, AuthenticationService $a $this->setContentTypeStrategyProvider($contentTypeStrategyProvider); } + /** + * Create ActivityContent and all Child-ActivityContents. + */ + public function createFromCategoryContent(Activity $activity, CategoryContent $categoryContent): ActivityContent { + /** @var ActivityContent $activityContent */ + $activityContent = $this->create((object) [ + 'activityId' => $activity->getId(), + 'contentTypeId' => $categoryContent->getContentType()->getId(), + 'instanceName' => $categoryContent->getInstanceName(), + 'position' => $categoryContent->getPosition(), + ]); + + foreach ($categoryContent->getChildren() as $childCategoryContent) { + $childActivityContent = $this->createFromCategoryContent($activity, $childCategoryContent); + $activityContent->addChild($childActivityContent); + } + + return $activityContent; + } + /** * @param mixed $data * @@ -39,7 +61,7 @@ public function __construct(ServiceUtils $serviceUtils, AuthenticationService $a * @throws ORMException * @throws NoAccessException */ - public function createEntity($data): ActivityContent { + protected function createEntity($data): ActivityContent { /** @var ActivityContent $activityContent */ $activityContent = parent::createEntity($data); @@ -56,6 +78,19 @@ public function createEntity($data): ActivityContent { return $activityContent; } + protected function patchEntity(BaseEntity $entity, $data): ActivityContent { + /** @var ActivityContent $entity */ + $entity = parent::patchEntity($entity, $data); + + if (isset($data['parentId'])) { + /** @var ActivityContent $parent */ + $parent = $this->findRelatedEntity(ActivityContent::class, $data, 'parentId'); + $entity->setParent($parent); + } + + return $entity; + } + protected function fetchAllQueryBuilder($params = []): QueryBuilder { $q = parent::fetchAllQueryBuilder($params); $q->join('row.activity', 'e'); diff --git a/backend/module/eCampCore/src/EntityService/ActivityService.php b/backend/module/eCampCore/src/EntityService/ActivityService.php index 830e438a2f..71aa70052c 100644 --- a/backend/module/eCampCore/src/EntityService/ActivityService.php +++ b/backend/module/eCampCore/src/EntityService/ActivityService.php @@ -5,9 +5,9 @@ use Doctrine\ORM\ORMException; use Doctrine\ORM\QueryBuilder; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\Camp; -use eCamp\Core\Entity\ContentTypeConfig; +use eCamp\Core\Entity\Category; +use eCamp\Core\Entity\CategoryContent; use eCamp\Core\Entity\ScheduleEntry; use eCamp\Core\Hydrator\ActivityHydrator; use eCamp\Lib\Acl\NoAccessException; @@ -52,10 +52,10 @@ protected function createEntity($data): Activity { /** @var Activity $activity */ $activity = parent::createEntity($data); - /** @var ActivityCategory $category */ - $category = $this->findRelatedEntity(ActivityCategory::class, $data, 'activityCategoryId'); + /** @var Category $category */ + $category = $this->findRelatedEntity(Category::class, $data, 'categoryId'); - $activity->setActivityCategory($category); + $activity->setCategory($category); $activity->setCamp($category->getCamp()); // TODO meeting discus: Why do we actually need camp on activity? Redundant relationship return $activity; @@ -97,9 +97,9 @@ protected function patchEntity(BaseEntity $entity, $data): Activity { $this->updateActivityResponsibles($activity, $data); $this->updateScheduleEntries($activity, $data); - if (!empty($data->activityCategoryId)) { - $category = $this->findRelatedEntity(ActivityCategory::class, $data, 'activityCategoryId'); - $activity->setActivityCategory($category); + if (!empty($data->categoryId)) { + $category = $this->findRelatedEntity(Category::class, $data, 'categoryId'); + $activity->setCategory($category); } return $entity; @@ -196,16 +196,11 @@ private function updateScheduleEntries(Activity $activity, $data) { } private function createInitialActivityContents(Activity $activity) { - $contentTypeConfigs = $activity->getActivityCategory()->getContentTypeConfigs(); - - /** @var ContentTypeConfig $contentTypeConfig */ - foreach ($contentTypeConfigs as $contentTypeConfig) { - if ($contentTypeConfig->getRequired()) { - $this->activityContentService->create((object) [ - 'activityId' => $activity->getId(), - 'contentTypeId' => $contentTypeConfig->getContentType()->getId(), - ]); - } + $categoryContents = $activity->getCategory()->getRootCategoryContents(); + + /** @var CategoryContent $categoryContent */ + foreach ($categoryContents as $categoryContent) { + $this->activityContentService->createFromCategoryContent($activity, $categoryContent); } } } diff --git a/backend/module/eCampCore/src/EntityService/CampService.php b/backend/module/eCampCore/src/EntityService/CampService.php index e3fea1a4c3..c033945544 100644 --- a/backend/module/eCampCore/src/EntityService/CampService.php +++ b/backend/module/eCampCore/src/EntityService/CampService.php @@ -5,10 +5,10 @@ use Doctrine\ORM\ORMException; use Doctrine\ORM\QueryBuilder; use eCamp\Core\Entity\AbstractCampOwner; -use eCamp\Core\Entity\ActivityCategoryTemplate; use eCamp\Core\Entity\Camp; use eCamp\Core\Entity\CampCollaboration; use eCamp\Core\Entity\CampTemplate; +use eCamp\Core\Entity\CategoryTemplate; use eCamp\Core\Entity\MaterialListTemplate; use eCamp\Core\Entity\User; use eCamp\Core\Hydrator\CampHydrator; @@ -21,7 +21,7 @@ class CampService extends AbstractEntityService { protected PeriodService $periodService; protected MaterialListService $materialListService; - protected ActivityCategoryService $activityCategoryService; + protected CategoryService $categoryService; protected CampCollaborationService $campCollaboratorService; public function __construct( @@ -29,7 +29,7 @@ public function __construct( AuthenticationService $authenticationService, PeriodService $periodService, MaterialListService $materialListService, - ActivityCategoryService $activityCategoryService, + CategoryService $categoryService, CampCollaborationService $campCollaboratorService ) { parent::__construct( @@ -41,7 +41,7 @@ public function __construct( $this->periodService = $periodService; $this->materialListService = $materialListService; - $this->activityCategoryService = $activityCategoryService; + $this->categoryService = $categoryService; $this->campCollaboratorService = $campCollaboratorService; } @@ -95,7 +95,7 @@ protected function createEntityPost(BaseEntity $entity, $data): Camp { if (isset($data->campTemplateId)) { // CampTemplateId given // - Create MaterialLists - // - Create ActivityCategories + ContentTypeConfigs + // - Create Categories $camp->setCampTemplateId($data->campTemplateId); /** @var CampTemplate $campTemplate */ @@ -106,9 +106,9 @@ protected function createEntityPost(BaseEntity $entity, $data): Camp { $this->materialListService->createFromTemplate($camp, $materialListTemplate); } - /** @var ActivityCategoryTemplate $activityCategoryTemplate */ - foreach ($campTemplate->getActivityCategoryTemplates() as $activityCategoryTemplate) { - $this->activityCategoryService->createFromTemplate($camp, $activityCategoryTemplate); + /** @var CategoryTemplate $categoryTemplate */ + foreach ($campTemplate->getCategoryTemplates() as $categoryTemplate) { + $this->categoryService->createFromTemplate($camp, $categoryTemplate); } } diff --git a/backend/module/eCampCore/src/EntityService/CategoryContentService.php b/backend/module/eCampCore/src/EntityService/CategoryContentService.php new file mode 100644 index 0000000000..650d2d989d --- /dev/null +++ b/backend/module/eCampCore/src/EntityService/CategoryContentService.php @@ -0,0 +1,72 @@ +create((object) [ + 'categoryId' => $category->getId(), + 'contentTypeId' => $template->getContentType()->getId(), + 'instanceName' => $template->getInstanceName(), + 'position' => $template->getPosition(), + ]); + $categoryContent->setCategoryContentTemplateId($template->getId()); + + foreach ($template->getChildren() as $childTemplate) { + $childCategoryContent = $this->createFromTemplate($category, $childTemplate); + $categoryContent->addChild($childCategoryContent); + } + + return $categoryContent; + } + + protected function createEntity($data): CategoryContent { + /** @var CategoryContent $categoryContent */ + $categoryContent = parent::createEntity($data); + + /** @var Category $category */ + $category = $this->findRelatedEntity(Category::class, $data, 'categoryId'); + $category->addCategoryContent($categoryContent); + + /** @var ContentType $contentType */ + $contentType = $this->findRelatedEntity(ContentType::class, $data, 'contentTypeId'); + $categoryContent->setContentType($contentType); + + return $categoryContent; + } + + protected function patchEntity(BaseEntity $entity, $data): CategoryContent { + /** @var CategoryContent $entity */ + $entity = parent::patchEntity($entity, $data); + + if (isset($data['parentId'])) { + /** @var CategoryContent $parent */ + $parent = $this->findRelatedEntity(CategoryContent::class, $data, 'parentId'); + $entity->setParent($parent); + } + + return $entity; + } +} diff --git a/backend/module/eCampCore/src/EntityService/CategoryContentTypeService.php b/backend/module/eCampCore/src/EntityService/CategoryContentTypeService.php new file mode 100644 index 0000000000..7ae046a393 --- /dev/null +++ b/backend/module/eCampCore/src/EntityService/CategoryContentTypeService.php @@ -0,0 +1,48 @@ +create((object) [ + 'categoryId' => $category->getId(), + 'contentTypeId' => $template->getContentType()->getId(), + ]); + $categoryContentType->setCategoryContentTypeTemplateId($template->getId()); + + return $categoryContentType; + } + + protected function createEntity($data): CategoryContentType { + /** @var CategoryContentType $categoryContentType */ + $categoryContentType = parent::createEntity($data); + + /** @var Category $category */ + $category = $this->findRelatedEntity(Category::class, $data, 'categoryId'); + $category->addCategoryContentType($categoryContentType); + + /** @var ContentType $contentType */ + $contentType = $this->findRelatedEntity(ContentType::class, $data, 'contentTypeId'); + $categoryContentType->setContentType($contentType); + + return $categoryContentType; + } +} diff --git a/backend/module/eCampCore/src/EntityService/CategoryContentTypeTemplateService.php b/backend/module/eCampCore/src/EntityService/CategoryContentTypeTemplateService.php new file mode 100644 index 0000000000..2780a7df1a --- /dev/null +++ b/backend/module/eCampCore/src/EntityService/CategoryContentTypeTemplateService.php @@ -0,0 +1,36 @@ +findRelatedEntity(CategoryTemplate::class, $data, 'categoryTemplateId'); + $categoryTemplate->addCategoryContentTypeTemplate($categoryContentTypeTemplate); + + /** @var ContentType $contentType */ + $contentType = $this->findRelatedEntity(ContentType::class, $data, 'contentTypeId'); + $categoryContentTypeTemplate->setContentType($contentType); + + return $categoryContentTypeTemplate; + } +} diff --git a/backend/module/eCampCore/src/EntityService/CategoryService.php b/backend/module/eCampCore/src/EntityService/CategoryService.php new file mode 100644 index 0000000000..aa8758a301 --- /dev/null +++ b/backend/module/eCampCore/src/EntityService/CategoryService.php @@ -0,0 +1,99 @@ +categoryContentTypeService = $categoryContentTypeService; + $this->categoryContentService = $categoryContentService; + } + + public function createFromTemplate(Camp $camp, CategoryTemplate $template): Category { + /** @var Category $category */ + $category = $this->create((object) [ + 'campId' => $camp->getId(), + 'short' => $template->getShort(), + 'name' => $template->getName(), + 'color' => $template->getColor(), + 'numberingStyle' => $template->getNumberingStyle(), + ]); + $category->setCategoryTemplateId($template->getId()); + + /** @var CategoryContentTypeTemplate $categoryContentTypeTemplate */ + foreach ($template->getCategoryContentTypeTemplates() as $categoryContentTypeTemplate) { + $this->categoryContentTypeService->createFromTemplate($category, $categoryContentTypeTemplate); + } + + /** @var CategoryContentTemplate $categoryContentTemplate */ + foreach ($template->getRootCategoryContentTemplates() as $categoryContentTemplate) { + $this->categoryContentService->createFromTemplate($category, $categoryContentTemplate); + } + + return $category; + } + + /** + * @param mixed $data + * + * @throws EntityNotFoundException + * @throws ORMException + * @throws NoAccessException + */ + protected function createEntity($data): Category { + /** @var Category $category */ + $category = parent::createEntity($data); + + /** @var Camp $camp */ + $camp = $this->findRelatedEntity(Camp::class, $data, 'campId'); + $camp->addCategory($category); + + return $category; + } + + protected function fetchAllQueryBuilder($params = []): QueryBuilder { + $q = parent::fetchAllQueryBuilder($params); + $q->andWhere($this->createFilter($q, Camp::class, 'row', 'camp')); + + if (isset($params['campId'])) { + $q->andWhere('row.camp = :campId'); + $q->setParameter('campId', $params['campId']); + } + + return $q; + } + + protected function fetchQueryBuilder($id): QueryBuilder { + $q = parent::fetchQueryBuilder($id); + $q->andWhere($this->createFilter($q, Camp::class, 'row', 'camp')); + + return $q; + } +} diff --git a/backend/module/eCampCore/src/EntityService/ActivityCategoryTemplateService.php b/backend/module/eCampCore/src/EntityService/CategoryTemplateService.php similarity index 72% rename from backend/module/eCampCore/src/EntityService/ActivityCategoryTemplateService.php rename to backend/module/eCampCore/src/EntityService/CategoryTemplateService.php index 11e3f7aef7..71932f7578 100644 --- a/backend/module/eCampCore/src/EntityService/ActivityCategoryTemplateService.php +++ b/backend/module/eCampCore/src/EntityService/CategoryTemplateService.php @@ -3,17 +3,17 @@ namespace eCamp\Core\EntityService; use Doctrine\ORM\QueryBuilder; -use eCamp\Core\Entity\ActivityCategoryTemplate; -use eCamp\Core\Hydrator\ActivityCategoryTemplateHydrator; +use eCamp\Core\Entity\CategoryTemplate; +use eCamp\Core\Hydrator\CategoryTemplateHydrator; use eCamp\Lib\Service\ServiceUtils; use Laminas\Authentication\AuthenticationService; -class ActivityCategoryTemplateService extends AbstractEntityService { +class CategoryTemplateService extends AbstractEntityService { public function __construct(ServiceUtils $serviceUtils, AuthenticationService $authenticationService) { parent::__construct( $serviceUtils, - ActivityCategoryTemplate::class, - ActivityCategoryTemplateHydrator::class, + CategoryTemplate::class, + CategoryTemplateHydrator::class, $authenticationService ); } diff --git a/backend/module/eCampCore/src/EntityService/ContentTypeConfigService.php b/backend/module/eCampCore/src/EntityService/ContentTypeConfigService.php deleted file mode 100644 index 629cf2a2d7..0000000000 --- a/backend/module/eCampCore/src/EntityService/ContentTypeConfigService.php +++ /dev/null @@ -1,50 +0,0 @@ -create((object) [ - 'activityCategoryId' => $activityCategory->getId(), - 'contentTypeId' => $template->getContentType()->getId(), - 'required' => $template->getRequired(), - 'multiple' => $template->getMultiple(), - ]); - $contentTypeConfig->setContentTypeConfigTemplateId($template->getId()); - - return $contentTypeConfig; - } - - protected function createEntity($data): ContentTypeConfig { - /** @var ContentTypeConfig $contentTypeConfig */ - $contentTypeConfig = parent::createEntity($data); - - /** @var ActivityCategory $activityCategory */ - $activityCategory = $this->findRelatedEntity(ActivityCategory::class, $data, 'activityCategoryId'); - $activityCategory->addContentTypeConfig($contentTypeConfig); - - /** @var ContentType $contentType */ - $contentType = $this->findRelatedEntity(ContentType::class, $data, 'contentTypeId'); - $contentTypeConfig->setContentType($contentType); - - return $contentTypeConfig; - } -} diff --git a/backend/module/eCampCore/src/EntityService/ContentTypeConfigTemplateService.php b/backend/module/eCampCore/src/EntityService/ContentTypeConfigTemplateService.php deleted file mode 100644 index ecc72589fd..0000000000 --- a/backend/module/eCampCore/src/EntityService/ContentTypeConfigTemplateService.php +++ /dev/null @@ -1,35 +0,0 @@ -findRelatedEntity(ActivityCategoryTemplate::class, $data, 'activityCategoryTemplateId'); - $activityCategoryTemplate->addContentTypeConfig($contentTypeConfigTemplate); - - /** @var ContentType $contentType */ - $contentType = $this->findRelatedEntity(ContentType::class, $data, 'contentTypeId'); - $contentTypeConfigTemplate->setContentType($contentType); - - return $contentTypeConfigTemplate; - } -} diff --git a/backend/module/eCampCore/src/Hydrator/ActivityCategoryHydrator.php b/backend/module/eCampCore/src/Hydrator/ActivityCategoryHydrator.php deleted file mode 100644 index 7b69142d2d..0000000000 --- a/backend/module/eCampCore/src/Hydrator/ActivityCategoryHydrator.php +++ /dev/null @@ -1,58 +0,0 @@ - $activityCategory->getId(), - 'short' => $activityCategory->getShort(), - 'name' => $activityCategory->getName(), - - 'color' => $activityCategory->getColor(), - 'numberingStyle' => $activityCategory->getNumberingStyle(), - - 'camp' => EntityLink::Create($activityCategory->getCamp()), - 'contentTypeConfigs' => new ContentTypeConfigCollection($activityCategory->getContentTypeConfigs()), - ]; - } - - /** - * @param object $object - */ - public function hydrate(array $data, $object): ActivityCategory { - /** @var ActivityCategory $activityCategory */ - $activityCategory = $object; - - if (isset($data['short'])) { - $activityCategory->setShort($data['short']); - } - if (isset($data['name'])) { - $activityCategory->setName($data['name']); - } - - if (isset($data['color'])) { - $activityCategory->setColor($data['color']); - } - if (isset($data['numberingStyle'])) { - $activityCategory->setNumberingStyle($data['numberingStyle']); - } - - return $activityCategory; - } -} diff --git a/backend/module/eCampCore/src/Hydrator/ActivityCategoryTemplateHydrator.php b/backend/module/eCampCore/src/Hydrator/ActivityCategoryTemplateHydrator.php deleted file mode 100644 index 38f083f47b..0000000000 --- a/backend/module/eCampCore/src/Hydrator/ActivityCategoryTemplateHydrator.php +++ /dev/null @@ -1,54 +0,0 @@ - $activityCategoryTemplate->getId(), - 'short' => $activityCategoryTemplate->getShort(), - 'name' => $activityCategoryTemplate->getName(), - 'color' => $activityCategoryTemplate->getColor(), - 'numberingStyle' => $activityCategoryTemplate->getNumberingStyle(), - 'contentTypeConfigTemplates' => new ContentTypeConfigTemplateCollection($activityCategoryTemplate->getContentTypeConfigTemplates()), - ]; - } - - /** - * @param object $object - */ - public function hydrate(array $data, $object): ActivityCategoryTemplate { - /** @var ActivityCategoryTemplate $activityCategoryTemplate */ - $activityCategoryTemplate = $object; - - if (isset($data['short'])) { - $activityCategoryTemplate->setShort($data['short']); - } - if (isset($data['name'])) { - $activityCategoryTemplate->setName($data['name']); - } - if (isset($data['color'])) { - $activityCategoryTemplate->setColor($data['color']); - } - if (isset($data['numberingStyle'])) { - $activityCategoryTemplate->setNumberingStyle($data['numberingStyle']); - } - - return $activityCategoryTemplate; - } -} diff --git a/backend/module/eCampCore/src/Hydrator/ActivityContentHydrator.php b/backend/module/eCampCore/src/Hydrator/ActivityContentHydrator.php index 9429d94f29..d0bd38f391 100644 --- a/backend/module/eCampCore/src/Hydrator/ActivityContentHydrator.php +++ b/backend/module/eCampCore/src/Hydrator/ActivityContentHydrator.php @@ -37,8 +37,10 @@ public function extract($object): array { $data = [ 'id' => $activityContent->getId(), 'instanceName' => $activityContent->getInstanceName(), + 'position' => $activityContent->getPosition(), 'contentTypeName' => $contentType->getName(), + 'parent' => ($activityContent->isRoot() ? null : new EntityLink($activityContent->getParent())), 'contentType' => new EntityLink($activityContent->getContentType()), 'activity' => Link::factory([ @@ -71,6 +73,9 @@ public function hydrate(array $data, $object): ActivityContent { if (isset($data['instanceName'])) { $activityContent->setInstanceName($data['instanceName']); } + if (isset($data['position'])) { + $activityContent->setPosition($data['position']); + } return $activityContent; } diff --git a/backend/module/eCampCore/src/Hydrator/ActivityHydrator.php b/backend/module/eCampCore/src/Hydrator/ActivityHydrator.php index af7fb05839..10c57b6e7a 100644 --- a/backend/module/eCampCore/src/Hydrator/ActivityHydrator.php +++ b/backend/module/eCampCore/src/Hydrator/ActivityHydrator.php @@ -14,8 +14,8 @@ class ActivityHydrator implements HydratorInterface { public static function HydrateInfo(): array { return [ - 'activityCategory' => Util::Entity(function (Activity $e) { - return $e->getActivityCategory(); + 'category' => Util::Entity(function (Activity $e) { + return $e->getCategory(); }), 'campCollaborations' => Util::Collection(function (Activity $e) { return new CampCollaborationCollection( @@ -43,7 +43,7 @@ public function extract($object): array { 'location' => $activity->getLocation(), 'camp' => new EntityLink($activity->getCamp()), - 'activityCategory' => EntityLink::Create($activity->getActivityCategory()), + 'category' => EntityLink::Create($activity->getCategory()), 'campCollaborations' => new EntityLinkCollection(new CampCollaborationCollection( $activity->getActivityResponsibles()->map(function (ActivityResponsible $ar) { diff --git a/backend/module/eCampCore/src/Hydrator/CampHydrator.php b/backend/module/eCampCore/src/Hydrator/CampHydrator.php index 3198c2ff24..aa3ee3839d 100644 --- a/backend/module/eCampCore/src/Hydrator/CampHydrator.php +++ b/backend/module/eCampCore/src/Hydrator/CampHydrator.php @@ -7,7 +7,7 @@ use eCamp\Lib\Entity\EntityLink; use eCamp\Lib\Entity\EntityLinkCollection; use eCamp\Lib\Hydrator\Util; -use eCampApi\V1\Rest\ActivityCategory\ActivityCategoryCollection; +use eCampApi\V1\Rest\Category\CategoryCollection; use eCampApi\V1\Rest\Day\DayCollection; use eCampApi\V1\Rest\Period\PeriodCollection; use Laminas\ApiTools\Hal\Link\Link; @@ -41,8 +41,8 @@ function (Camp $c) { }, null), ] ), - 'activityCategories' => Util::Collection(function (Camp $c) { - return new ActivityCategoryCollection($c->getActivityCategories()); + 'categories' => Util::Collection(function (Camp $c) { + return new CategoryCollection($c->getCategories()); }, null), ]; } @@ -72,7 +72,7 @@ public function extract($object): array { 'periods' => new EntityLinkCollection($camp->getPeriods()), - 'activityCategories' => new EntityLinkCollection($camp->getActivityCategories()), + 'categories' => new EntityLinkCollection($camp->getCategories()), 'activities' => Link::factory([ 'rel' => 'activities', 'route' => [ diff --git a/backend/module/eCampCore/src/Hydrator/CampTemplateHydrator.php b/backend/module/eCampCore/src/Hydrator/CampTemplateHydrator.php index e9ace2678b..a1daa17958 100644 --- a/backend/module/eCampCore/src/Hydrator/CampTemplateHydrator.php +++ b/backend/module/eCampCore/src/Hydrator/CampTemplateHydrator.php @@ -23,7 +23,7 @@ public function extract($object): array { 'id' => $campTemplate->getId(), 'name' => $campTemplate->getName(), - 'activityCategoryTemplates' => new EntityLinkCollection($campTemplate->getActivityCategoryTemplates()), + 'categoryTemplates' => new EntityLinkCollection($campTemplate->getCategoryTemplates()), ]; } diff --git a/backend/module/eCampCore/src/Hydrator/CategoryContentHydrator.php b/backend/module/eCampCore/src/Hydrator/CategoryContentHydrator.php new file mode 100644 index 0000000000..2cd5727553 --- /dev/null +++ b/backend/module/eCampCore/src/Hydrator/CategoryContentHydrator.php @@ -0,0 +1,50 @@ +getContentType(); + + return [ + 'id' => $categoryContent->getId(), + 'instanceName' => $categoryContent->getInstanceName(), + 'position' => $categoryContent->getPosition(), + 'contentTypeName' => $contentType->getName(), + + 'parent' => ($categoryContent->isRoot() ? null : new EntityLink($categoryContent->getParent())), + 'contentType' => new EntityLink($categoryContent->getContentType()), + ]; + } + + /** + * @param object $object + */ + public function hydrate(array $data, $object): CategoryContent { + /** @var CategoryContent $categoryContent */ + $categoryContent = $object; + + if (isset($data['instanceName'])) { + $categoryContent->setInstanceName($data['instanceName']); + } + if (isset($data['position'])) { + $categoryContent->setPosition($data['position']); + } + + return $categoryContent; + } +} diff --git a/backend/module/eCampCore/src/Hydrator/CategoryContentTemplateHydrator.php b/backend/module/eCampCore/src/Hydrator/CategoryContentTemplateHydrator.php new file mode 100644 index 0000000000..8fd4de1bf6 --- /dev/null +++ b/backend/module/eCampCore/src/Hydrator/CategoryContentTemplateHydrator.php @@ -0,0 +1,45 @@ +getContentType(); + + return [ + 'id' => $categoryContentTemplate->getId(), + 'instanceName' => $categoryContentTemplate->getInstanceName(), + 'contentTypeName' => $contentType->getName(), + + 'contentType' => new EntityLink($categoryContentTemplate->getContentType()), + ]; + } + + /** + * @param object $object + */ + public function hydrate(array $data, $object): CategoryContentTemplate { + /** @var CategoryContentTemplate $categoryContentTemplate */ + $categoryContentTemplate = $object; + + if (isset($data['instanceName'])) { + $categoryContentTemplate->setInstanceName($data['instanceName']); + } + + return $categoryContentTemplate; + } +} diff --git a/backend/module/eCampCore/src/Hydrator/CategoryContentTypeHydrator.php b/backend/module/eCampCore/src/Hydrator/CategoryContentTypeHydrator.php new file mode 100644 index 0000000000..9651f1901e --- /dev/null +++ b/backend/module/eCampCore/src/Hydrator/CategoryContentTypeHydrator.php @@ -0,0 +1,36 @@ + Util::Entity(function (CategoryContentType $e) { + return $e->getContentType(); + }), + ]; + } + + /** + * @param object $object + */ + public function extract($object): array { + /** @var CategoryContentType $categoryContentType */ + $categoryContentType = $object; + + return [ + 'id' => $categoryContentType->getId(), + ]; + } + + /** + * @param object $object + */ + public function hydrate(array $data, $object): CategoryContentType { + return $object; + } +} diff --git a/backend/module/eCampCore/src/Hydrator/CategoryContentTypeTemplateHydrator.php b/backend/module/eCampCore/src/Hydrator/CategoryContentTypeTemplateHydrator.php new file mode 100644 index 0000000000..dbd47673e9 --- /dev/null +++ b/backend/module/eCampCore/src/Hydrator/CategoryContentTypeTemplateHydrator.php @@ -0,0 +1,36 @@ + Util::Entity(function (CategoryContentTypeTemplate $e) { + return $e->getContentType(); + }), + ]; + } + + /** + * @param object $object + */ + public function extract($object): array { + /** @var CategoryContentTypeTemplate $categoryContentTypeTemplate */ + $categoryContentTypeTemplate = $object; + + return [ + 'id' => $categoryContentTypeTemplate->getId(), + ]; + } + + /** + * @param object $object + */ + public function hydrate(array $data, $object): CategoryContentTypeTemplate { + return $object; + } +} diff --git a/backend/module/eCampCore/src/Hydrator/CategoryHydrator.php b/backend/module/eCampCore/src/Hydrator/CategoryHydrator.php new file mode 100644 index 0000000000..17f48d8dab --- /dev/null +++ b/backend/module/eCampCore/src/Hydrator/CategoryHydrator.php @@ -0,0 +1,60 @@ + $category->getId(), + 'short' => $category->getShort(), + 'name' => $category->getName(), + + 'color' => $category->getColor(), + 'numberingStyle' => $category->getNumberingStyle(), + + 'camp' => EntityLink::Create($category->getCamp()), + 'categoryContentTypes' => new CategoryContentTypeCollection($category->getCategoryContentTypes()), + 'categoryContents' => new CategoryContentCollection($category->getCategoryContents()), + ]; + } + + /** + * @param object $object + */ + public function hydrate(array $data, $object): Category { + /** @var Category $category */ + $category = $object; + + if (isset($data['short'])) { + $category->setShort($data['short']); + } + if (isset($data['name'])) { + $category->setName($data['name']); + } + + if (isset($data['color'])) { + $category->setColor($data['color']); + } + if (isset($data['numberingStyle'])) { + $category->setNumberingStyle($data['numberingStyle']); + } + + return $category; + } +} diff --git a/backend/module/eCampCore/src/Hydrator/CategoryTemplateHydrator.php b/backend/module/eCampCore/src/Hydrator/CategoryTemplateHydrator.php new file mode 100644 index 0000000000..aedf0f7945 --- /dev/null +++ b/backend/module/eCampCore/src/Hydrator/CategoryTemplateHydrator.php @@ -0,0 +1,56 @@ + $categoryTemplate->getId(), + 'short' => $categoryTemplate->getShort(), + 'name' => $categoryTemplate->getName(), + 'color' => $categoryTemplate->getColor(), + 'numberingStyle' => $categoryTemplate->getNumberingStyle(), + 'categoryContentTypeTemplates' => new CategoryContentTypeTemplateCollection($categoryTemplate->getCategoryContentTypeTemplates()), + 'categoryContentTemplates' => new CategoryContentTemplateCollection($categoryTemplate->getCategoryContentTemplates()), + ]; + } + + /** + * @param object $object + */ + public function hydrate(array $data, $object): CategoryTemplate { + /** @var CategoryTemplate $categoryTemplate */ + $categoryTemplate = $object; + + if (isset($data['short'])) { + $categoryTemplate->setShort($data['short']); + } + if (isset($data['name'])) { + $categoryTemplate->setName($data['name']); + } + if (isset($data['color'])) { + $categoryTemplate->setColor($data['color']); + } + if (isset($data['numberingStyle'])) { + $categoryTemplate->setNumberingStyle($data['numberingStyle']); + } + + return $categoryTemplate; + } +} diff --git a/backend/module/eCampCore/src/Hydrator/ContentTypeConfigHydrator.php b/backend/module/eCampCore/src/Hydrator/ContentTypeConfigHydrator.php deleted file mode 100644 index 3d99cdc6a4..0000000000 --- a/backend/module/eCampCore/src/Hydrator/ContentTypeConfigHydrator.php +++ /dev/null @@ -1,48 +0,0 @@ - Util::Entity(function (ContentTypeConfig $e) { - return $e->getContentType(); - }), - ]; - } - - /** - * @param object $object - */ - public function extract($object): array { - /** @var ContentTypeConfig $contentTypeConfig */ - $contentTypeConfig = $object; - - return [ - 'id' => $contentTypeConfig->getId(), - 'required' => $contentTypeConfig->getRequired(), - 'multiple' => $contentTypeConfig->getMultiple(), - ]; - } - - /** - * @param object $object - */ - public function hydrate(array $data, $object): ContentTypeConfig { - /** @var ContentTypeConfig $contentTypeConfig */ - $contentTypeConfig = $object; - - if (isset($data['required'])) { - $contentTypeConfig->setRequired($data['required']); - } - if (isset($data['multiple'])) { - $contentTypeConfig->setMultiple($data['multiple']); - } - - return $contentTypeConfig; - } -} diff --git a/backend/module/eCampCore/src/Hydrator/ContentTypeConfigTemplateHydrator.php b/backend/module/eCampCore/src/Hydrator/ContentTypeConfigTemplateHydrator.php deleted file mode 100644 index c3dfcfc261..0000000000 --- a/backend/module/eCampCore/src/Hydrator/ContentTypeConfigTemplateHydrator.php +++ /dev/null @@ -1,48 +0,0 @@ - Util::Entity(function (ContentTypeConfigTemplate $e) { - return $e->getContentType(); - }), - ]; - } - - /** - * @param object $object - */ - public function extract($object): array { - /** @var ContentTypeConfigTemplate $contentTypeConfigTemplate */ - $contentTypeConfigTemplate = $object; - - return [ - 'id' => $contentTypeConfigTemplate->getId(), - 'required' => $contentTypeConfigTemplate->getRequired(), - 'multiple' => $contentTypeConfigTemplate->getMultiple(), - ]; - } - - /** - * @param object $object - */ - public function hydrate(array $data, $object): ContentTypeConfigTemplate { - /** @var ContentTypeConfigTemplate $contentTypeConfigTemplate */ - $contentTypeConfigTemplate = $object; - - if (isset($data['required'])) { - $contentTypeConfigTemplate->setRequired($data['required']); - } - if (isset($data['multiple'])) { - $contentTypeConfigTemplate->setMultiple($data['multiple']); - } - - return $contentTypeConfigTemplate; - } -} diff --git a/backend/module/eCampCore/test/Data/ActivityCategoryTemplateTestData.php b/backend/module/eCampCore/test/Data/ActivityCategoryTemplateTestData.php deleted file mode 100644 index e680c5b345..0000000000 --- a/backend/module/eCampCore/test/Data/ActivityCategoryTemplateTestData.php +++ /dev/null @@ -1,32 +0,0 @@ -getReference(CampTemplateTestData::$TEMPLATE1); - - $activityCategoryTemplate = new ActivityCategoryTemplate(); - $activityCategoryTemplate->setShort('AC'); - $activityCategoryTemplate->setName('ActivityCategory1'); - $activityCategoryTemplate->setColor('#FF00FF'); - $activityCategoryTemplate->setNumberingStyle('i'); - $campTemplate->addActivityCategoryTemplate($activityCategoryTemplate); - - $manager->persist($activityCategoryTemplate); - $manager->flush(); - - $this->addReference(self::$TEMPLATE1, $activityCategoryTemplate); - } - - public function getDependencies() { - return [CampTemplateTestData::class]; - } -} diff --git a/backend/module/eCampCore/test/Data/ActivityCategoryTestData.php b/backend/module/eCampCore/test/Data/ActivityCategoryTestData.php deleted file mode 100644 index 4bb922b920..0000000000 --- a/backend/module/eCampCore/test/Data/ActivityCategoryTestData.php +++ /dev/null @@ -1,44 +0,0 @@ -getReference(CampTestData::$CAMP1); - - $activityCategoryLS = new ActivityCategory(); - $activityCategoryLS->setCamp($camp); - $activityCategoryLS->setName('ActivityCategory1'); - $activityCategoryLS->setShort('LS'); - $activityCategoryLS->setColor('#FF9800'); - $activityCategoryLS->setNumberingStyle('i'); - - $activityCategoryLA = new ActivityCategory(); - $activityCategoryLA->setCamp($camp); - $activityCategoryLA->setName('ActivityCategory2'); - $activityCategoryLA->setShort('LA'); - $activityCategoryLA->setColor('#4CAF50'); - $activityCategoryLA->setNumberingStyle('i'); - - $manager->persist($activityCategoryLS); - $manager->persist($activityCategoryLA); - $manager->flush(); - - $this->addReference(self::$CATEGORY1, $activityCategoryLS); - $this->addReference(self::$CATEGORY2, $activityCategoryLA); - } - - public function getDependencies() { - return [CampTestData::class]; - } -} diff --git a/backend/module/eCampCore/test/Data/ActivityTestData.php b/backend/module/eCampCore/test/Data/ActivityTestData.php index 85b53cd99c..6a90bc7568 100644 --- a/backend/module/eCampCore/test/Data/ActivityTestData.php +++ b/backend/module/eCampCore/test/Data/ActivityTestData.php @@ -6,8 +6,8 @@ use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\Camp; +use eCamp\Core\Entity\Category; class ActivityTestData extends AbstractFixture implements DependentFixtureInterface { public static $ACTIVITY1 = Activity::class.':ACTIVITY1'; @@ -16,13 +16,13 @@ public function load(ObjectManager $manager) { /** @var Camp $ccamp */ $camp = $this->getReference(CampTestData::$CAMP1); - /** @var ActivityCategory $category */ - $category = $this->getReference(ActivityCategoryTestData::$CATEGORY1); + /** @var Category $category */ + $category = $this->getReference(CategoryTestData::$CATEGORY1); $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('Activity1'); - $activity->setActivityCategory($category); + $activity->setCategory($category); $manager->persist($activity); $manager->flush(); @@ -31,6 +31,6 @@ public function load(ObjectManager $manager) { } public function getDependencies() { - return [CampTestData::class, ActivityCategoryTestData::class]; + return [CampTestData::class, CategoryTestData::class]; } } diff --git a/backend/module/eCampCore/test/Data/CategoryContentTemplateTestData.php b/backend/module/eCampCore/test/Data/CategoryContentTemplateTestData.php new file mode 100644 index 0000000000..4ef4d8ea9d --- /dev/null +++ b/backend/module/eCampCore/test/Data/CategoryContentTemplateTestData.php @@ -0,0 +1,32 @@ +getReference(CategoryTemplateTestData::$TEMPLATE1); + $contentType = $this->getReference(ContentTypeTestData::$TYPE1); + + $categoryContentTemplate = new CategoryContentTemplate(); + $categoryContentTemplate->setContentType($contentType); + $categoryTemplate->addCategoryContentTemplate($categoryContentTemplate); + + $manager->persist($categoryContentTemplate); + $manager->flush(); + + $this->addReference(self::$TEMPLATE1, $categoryContentTemplate); + } + + public function getDependencies() { + return [CategoryTemplateTestData::class, ContentTypeTestData::class]; + } +} diff --git a/backend/module/eCampCore/test/Data/CategoryContentTestData.php b/backend/module/eCampCore/test/Data/CategoryContentTestData.php new file mode 100644 index 0000000000..a1eb38bd0c --- /dev/null +++ b/backend/module/eCampCore/test/Data/CategoryContentTestData.php @@ -0,0 +1,32 @@ +getReference(CategoryTestData::$CATEGORY1); + $contentType = $this->getReference(ContentTypeTestData::$TYPE1); + + $categoryContent = new CategoryContent(); + $categoryContent->setContentType($contentType); + $category->addCategoryContent($categoryContent); + + $manager->persist($categoryContent); + $manager->flush(); + + $this->addReference(self::$CATEGORY_CONTENT1, $categoryContent); + } + + public function getDependencies() { + return [CategoryTestData::class, ContentTypeTestData::class]; + } +} diff --git a/backend/module/eCampCore/test/Data/CategoryContentTypeTemplateTestData.php b/backend/module/eCampCore/test/Data/CategoryContentTypeTemplateTestData.php new file mode 100644 index 0000000000..09d0cfdb83 --- /dev/null +++ b/backend/module/eCampCore/test/Data/CategoryContentTypeTemplateTestData.php @@ -0,0 +1,32 @@ +getReference(CategoryTemplateTestData::$TEMPLATE1); + $contentType = $this->getReference(ContentTypeTestData::$TYPE1); + + $categoryContentTypeTemplate = new CategoryContentTypeTemplate(); + $categoryContentTypeTemplate->setContentType($contentType); + $categoryTemplate->addCategoryContentTypeTemplate($categoryContentTypeTemplate); + + $manager->persist($categoryContentTypeTemplate); + $manager->flush(); + + $this->addReference(self::$TEMPLATE1, $categoryContentTypeTemplate); + } + + public function getDependencies() { + return [CategoryTemplateTestData::class, ContentTypeTestData::class]; + } +} diff --git a/backend/module/eCampCore/test/Data/CategoryContentTypeTestData.php b/backend/module/eCampCore/test/Data/CategoryContentTypeTestData.php new file mode 100644 index 0000000000..198f6a127e --- /dev/null +++ b/backend/module/eCampCore/test/Data/CategoryContentTypeTestData.php @@ -0,0 +1,32 @@ +getReference(CategoryTestData::$CATEGORY1); + $contentType = $this->getReference(ContentTypeTestData::$TYPE1); + + $categoryContentType = new CategoryContentType(); + $categoryContentType->setContentType($contentType); + $category->addCategoryContentType($categoryContentType); + + $manager->persist($categoryContentType); + $manager->flush(); + + $this->addReference(self::$CATEGORY_CONTENT_TYPE1, $categoryContentType); + } + + public function getDependencies() { + return [CategoryTestData::class, ContentTypeTestData::class]; + } +} diff --git a/backend/module/eCampCore/test/Data/CategoryTemplateTestData.php b/backend/module/eCampCore/test/Data/CategoryTemplateTestData.php new file mode 100644 index 0000000000..ffb1c79fff --- /dev/null +++ b/backend/module/eCampCore/test/Data/CategoryTemplateTestData.php @@ -0,0 +1,32 @@ +getReference(CampTemplateTestData::$TEMPLATE1); + + $categoryTemplate = new CategoryTemplate(); + $categoryTemplate->setShort('AC'); + $categoryTemplate->setName('ActivityCategory1'); + $categoryTemplate->setColor('#FF00FF'); + $categoryTemplate->setNumberingStyle('i'); + $campTemplate->addCategoryTemplate($categoryTemplate); + + $manager->persist($categoryTemplate); + $manager->flush(); + + $this->addReference(self::$TEMPLATE1, $categoryTemplate); + } + + public function getDependencies() { + return [CampTemplateTestData::class]; + } +} diff --git a/backend/module/eCampCore/test/Data/CategoryTestData.php b/backend/module/eCampCore/test/Data/CategoryTestData.php new file mode 100644 index 0000000000..96c7ed0250 --- /dev/null +++ b/backend/module/eCampCore/test/Data/CategoryTestData.php @@ -0,0 +1,44 @@ +getReference(CampTestData::$CAMP1); + + $categoryLS = new Category(); + $categoryLS->setCamp($camp); + $categoryLS->setName('ActivityCategory1'); + $categoryLS->setShort('LS'); + $categoryLS->setColor('#FF9800'); + $categoryLS->setNumberingStyle('i'); + + $categoryLA = new Category(); + $categoryLA->setCamp($camp); + $categoryLA->setName('ActivityCategory2'); + $categoryLA->setShort('LA'); + $categoryLA->setColor('#4CAF50'); + $categoryLA->setNumberingStyle('i'); + + $manager->persist($categoryLS); + $manager->persist($categoryLA); + $manager->flush(); + + $this->addReference(self::$CATEGORY1, $categoryLS); + $this->addReference(self::$CATEGORY2, $categoryLA); + } + + public function getDependencies() { + return [CampTestData::class]; + } +} diff --git a/backend/module/eCampCore/test/Data/ContentTypeConfigTemplateTestData.php b/backend/module/eCampCore/test/Data/ContentTypeConfigTemplateTestData.php deleted file mode 100644 index 22add8bbd4..0000000000 --- a/backend/module/eCampCore/test/Data/ContentTypeConfigTemplateTestData.php +++ /dev/null @@ -1,32 +0,0 @@ -getReference(ActivityCategoryTemplateTestData::$TEMPLATE1); - $contentType = $this->getReference(ContentTypeTestData::$TYPE1); - - $contentTypeConfigTemplate = new ContentTypeConfigTemplate(); - $contentTypeConfigTemplate->setContentType($contentType); - $contentTypeConfigTemplate->setRequired(true); - $contentTypeConfigTemplate->setMultiple(true); - $activityCategoryTemplate->addContentTypeConfigTemplate($contentTypeConfigTemplate); - - $manager->persist($contentTypeConfigTemplate); - $manager->flush(); - - $this->addReference(self::$TEMPLATE1, $contentTypeConfigTemplate); - } - - public function getDependencies() { - return [ActivityCategoryTemplateTestData::class, ContentTypeTestData::class]; - } -} diff --git a/backend/module/eCampCore/test/Data/ContentTypeConfigTestData.php b/backend/module/eCampCore/test/Data/ContentTypeConfigTestData.php deleted file mode 100644 index fbebb2cd53..0000000000 --- a/backend/module/eCampCore/test/Data/ContentTypeConfigTestData.php +++ /dev/null @@ -1,34 +0,0 @@ -getReference(ActivityCategoryTestData::$CATEGORY1); - $contentType = $this->getReference(ContentTypeTestData::$TYPE1); - - $contentTypeConfig = new ContentTypeConfig(); - $contentTypeConfig->setContentType($contentType); - $contentTypeConfig->setRequired(true); - $contentTypeConfig->setMultiple(true); - $activityCategory->addContentTypeConfig($contentTypeConfig); - - $manager->persist($contentTypeConfig); - $manager->flush(); - - $this->addReference(self::$CONFIG1, $contentTypeConfig); - } - - public function getDependencies() { - return [ActivityCategoryTestData::class, ContentTypeTestData::class]; - } -} diff --git a/backend/module/eCampCore/test/Data/ScheduleEntryTestData.php b/backend/module/eCampCore/test/Data/ScheduleEntryTestData.php index 10c6378bd1..157a4bf577 100644 --- a/backend/module/eCampCore/test/Data/ScheduleEntryTestData.php +++ b/backend/module/eCampCore/test/Data/ScheduleEntryTestData.php @@ -5,7 +5,7 @@ use Doctrine\Common\DataFixtures\AbstractFixture; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; -use eCamp\Core\Entity\ActivityCategory; +use eCamp\Core\Entity\Category; use eCamp\Core\Entity\Period; use eCamp\Core\Entity\ScheduleEntry; @@ -13,7 +13,7 @@ class ScheduleEntryTestData extends AbstractFixture implements DependentFixtureI public static $ENTRY1 = ScheduleEntry::class.':ENTRY1'; public function load(ObjectManager $manager) { - /** @var ActivityCategory $category */ + /** @var Category $category */ $activity = $this->getReference(ActivityTestData::$ACTIVITY1); /** @var Period $period */ diff --git a/backend/module/eCampCore/test/Entity/ActivityCategoryTemplateTest.php b/backend/module/eCampCore/test/Entity/ActivityCategoryTemplateTest.php deleted file mode 100644 index aaa430cbc3..0000000000 --- a/backend/module/eCampCore/test/Entity/ActivityCategoryTemplateTest.php +++ /dev/null @@ -1,39 +0,0 @@ -setName('ActivityType Name'); - $activityCategoryTemplate->setColor('#FF00FF'); - $activityCategoryTemplate->setNumberingStyle('i'); - $campTemplate->addActivityCategoryTemplate($activityCategoryTemplate); - - $this->assertEquals($campTemplate, $activityCategoryTemplate->getCampTemplate()); - $this->assertEquals('ActivityType Name', $activityCategoryTemplate->getName()); - $this->assertEquals('#FF00FF', $activityCategoryTemplate->getColor()); - $this->assertEquals('i', $activityCategoryTemplate->getNumberingStyle()); - $this->assertInstanceOf('Doctrine\Common\Collections\ArrayCollection', $activityCategoryTemplate->getContentTypeConfigTemplates()); - } - - public function testContentTypeConfigTemplate() { - $activityCategoryTemplate = new ActivityCategoryTemplate(); - $contentTypeConfigTemplate = new ContentTypeConfigTemplate(); - - $this->assertCount(0, $activityCategoryTemplate->getContentTypeConfigTemplates()); - $activityCategoryTemplate->addContentTypeConfigTemplate($contentTypeConfigTemplate); - $this->assertContains($contentTypeConfigTemplate, $activityCategoryTemplate->getContentTypeConfigTemplates()); - $activityCategoryTemplate->removeContentTypeConfigTemplate($contentTypeConfigTemplate); - $this->assertCount(0, $activityCategoryTemplate->getContentTypeConfigTemplates()); - } -} diff --git a/backend/module/eCampCore/test/Entity/ActivityCategoryTest.php b/backend/module/eCampCore/test/Entity/ActivityCategoryTest.php deleted file mode 100644 index cb9e7dc902..0000000000 --- a/backend/module/eCampCore/test/Entity/ActivityCategoryTest.php +++ /dev/null @@ -1,63 +0,0 @@ -setCamp($camp); - $activityCategory->setName('TestCategory'); - $activityCategory->setShort('TC'); - $activityCategory->setColor('#1fa2df'); - $activityCategory->setNumberingStyle('i'); - - $this->assertEquals($camp, $activityCategory->getCamp()); - $this->assertEquals('TestCategory', $activityCategory->getName()); - $this->assertEquals('TC', $activityCategory->getShort()); - $this->assertEquals('#1fa2df', $activityCategory->getColor()); - $activityCategory->setColor('#FF00FF'); - $this->assertEquals('#FF00FF', $activityCategory->getColor()); - $this->assertEquals('i', $activityCategory->getNumberingStyle()); - } - - public function testAddRemoveContentTypeConfig() { - $activityCategory = new ActivityCategory(); - $contentTypeConfig = new ContentTypeConfig(); - - $this->assertCount(0, $activityCategory->getContentTypeConfigs()); - - $activityCategory->addContentTypeConfig($contentTypeConfig); - $this->assertCount(1, $activityCategory->getContentTypeConfigs()); - - $activityCategory->removeContentTypeConfig($contentTypeConfig); - $this->assertCount(0, $activityCategory->getContentTypeConfigs()); - } - - public function testNumberingStyle() { - $activityCategory = new ActivityCategory(); - - $this->assertEquals('31', $activityCategory->getStyledNumber(31)); - - $activityCategory->setNumberingStyle('a'); - $this->assertEquals('ae', $activityCategory->getStyledNumber(31)); - - $activityCategory->setNumberingStyle('A'); - $this->assertEquals('AE', $activityCategory->getStyledNumber(31)); - - $activityCategory->setNumberingStyle('i'); - $this->assertEquals('xxxi', $activityCategory->getStyledNumber(31)); - - $activityCategory->setNumberingStyle('I'); - $this->assertEquals('XXXI', $activityCategory->getStyledNumber(31)); - } -} diff --git a/backend/module/eCampCore/test/Entity/ActivityContentTest.php b/backend/module/eCampCore/test/Entity/ActivityContentTest.php index 18783efcfb..81c2a8f1ff 100644 --- a/backend/module/eCampCore/test/Entity/ActivityContentTest.php +++ b/backend/module/eCampCore/test/Entity/ActivityContentTest.php @@ -25,10 +25,27 @@ public function testActivityContent() { $activityContent->setActivity($activity); $activityContent->setContentType($contentType); $activityContent->setInstanceName('ActivityContentName'); + $activityContent->setPosition('position'); $this->assertEquals($activity, $activityContent->getActivity()); $this->assertEquals($contentType, $activityContent->getContentType()); $this->assertEquals('ActivityContentName', $activityContent->getInstanceName()); - $this->assertEquals($contentType, $activityContent->getContentType()); + $this->assertEquals('position', $activityContent->getPosition()); + $this->assertEquals($camp, $activityContent->getCamp()); + } + + public function testActivityContentHierarchy() { + $activityContent = new ActivityContent(); + $childActivityContent = new ActivityContent(); + + // Add Child-ActivityContent + $activityContent->addChild($childActivityContent); + $this->assertCount(1, $activityContent->getChildren()); + $this->assertEquals($activityContent, $childActivityContent->getParent()); + + // Remove Child-ActivityContent + $activityContent->removeChild($childActivityContent); + $this->assertCount(0, $activityContent->getChildren()); + $this->assertNull($childActivityContent->getParent()); } } diff --git a/backend/module/eCampCore/test/Entity/ActivityTest.php b/backend/module/eCampCore/test/Entity/ActivityTest.php index 29ed3054e1..97583739a5 100644 --- a/backend/module/eCampCore/test/Entity/ActivityTest.php +++ b/backend/module/eCampCore/test/Entity/ActivityTest.php @@ -3,9 +3,9 @@ namespace eCamp\CoreTest\Entity; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\ActivityContent; use eCamp\Core\Entity\Camp; +use eCamp\Core\Entity\Category; use eCamp\Core\Entity\ScheduleEntry; use eCamp\LibTest\PHPUnit\AbstractTestCase; @@ -13,19 +13,18 @@ * @internal */ class ActivityTest extends AbstractTestCase { - public function testActivityCategory() { + public function testCategory() { $camp = new Camp(); - - $activityCategory = new ActivityCategory(); + $category = new Category(); $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('ActivityTitle'); - $activity->setActivityCategory($activityCategory); + $activity->setCategory($category); $this->assertEquals($camp, $activity->getCamp()); $this->assertEquals('ActivityTitle', $activity->getTitle()); - $this->assertEquals($activityCategory, $activity->getActivityCategory()); + $this->assertEquals($category, $activity->getCategory()); } public function testActivityContent() { diff --git a/backend/module/eCampCore/test/Entity/CampTemplateTest.php b/backend/module/eCampCore/test/Entity/CampTemplateTest.php index 9011a22c1d..b49916ebb9 100644 --- a/backend/module/eCampCore/test/Entity/CampTemplateTest.php +++ b/backend/module/eCampCore/test/Entity/CampTemplateTest.php @@ -2,8 +2,8 @@ namespace eCamp\CoreTest\Entity; -use eCamp\Core\Entity\ActivityCategoryTemplate; use eCamp\Core\Entity\CampTemplate; +use eCamp\Core\Entity\CategoryTemplate; use eCamp\LibTest\PHPUnit\AbstractTestCase; /** @@ -17,14 +17,14 @@ public function testCampTemplate() { $this->assertEquals('CampTemplate.Name', $campTemplate->getName()); } - public function testActivityCategoryTemplate() { + public function testCategoryTemplate() { $campTemplate = new CampTemplate(); - $activityCategoryTemplate = new ActivityCategoryTemplate(); + $categoryTemplate = new CategoryTemplate(); - $this->assertCount(0, $campTemplate->getActivityCategoryTemplates()); - $campTemplate->addActivityCategoryTemplate($activityCategoryTemplate); - $this->assertContains($activityCategoryTemplate, $campTemplate->getActivityCategoryTemplates()); - $campTemplate->removeActivityCategoryTemplate($activityCategoryTemplate); - $this->assertCount(0, $campTemplate->getActivityCategoryTemplates()); + $this->assertCount(0, $campTemplate->getCategoryTemplates()); + $campTemplate->addCategoryTemplate($categoryTemplate); + $this->assertContains($categoryTemplate, $campTemplate->getCategoryTemplates()); + $campTemplate->removeCategoryTemplate($categoryTemplate); + $this->assertCount(0, $campTemplate->getCategoryTemplates()); } } diff --git a/backend/module/eCampCore/test/Entity/CampTest.php b/backend/module/eCampCore/test/Entity/CampTest.php index b0f0d14442..0d2349b730 100644 --- a/backend/module/eCampCore/test/Entity/CampTest.php +++ b/backend/module/eCampCore/test/Entity/CampTest.php @@ -3,9 +3,9 @@ namespace eCamp\CoreTest\Entity; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\Camp; use eCamp\Core\Entity\CampCollaboration; +use eCamp\Core\Entity\Category; use eCamp\Core\Entity\Job; use eCamp\Core\Entity\Period; use eCamp\Core\Entity\User; @@ -69,15 +69,15 @@ public function testJob() { $this->assertEquals(0, $camp->getJobs()->count()); } - public function testActivityCategory() { + public function testCategory() { $camp = new Camp(); - $category = new ActivityCategory(); + $category = new Category(); - $this->assertEquals(0, $camp->getActivityCategories()->count()); - $camp->addActivityCategory($category); - $this->assertContains($category, $camp->getActivityCategories()); - $camp->removeActivityCategory($category); - $this->assertEquals(0, $camp->getActivityCategories()->count()); + $this->assertEquals(0, $camp->getCategories()->count()); + $camp->addCategory($category); + $this->assertContains($category, $camp->getCategories()); + $camp->removeCategory($category); + $this->assertEquals(0, $camp->getCategories()->count()); } public function testActivity() { diff --git a/backend/module/eCampCore/test/Entity/CategoryContentTemplateTest.php b/backend/module/eCampCore/test/Entity/CategoryContentTemplateTest.php new file mode 100644 index 0000000000..24ba22e51d --- /dev/null +++ b/backend/module/eCampCore/test/Entity/CategoryContentTemplateTest.php @@ -0,0 +1,54 @@ +setCampTemplate($campTemplate); + $categoryTemplate->setName('CategoryName'); + + $categoryContentTemplate = new CategoryContentTemplate(); + $categoryContentTemplate->setCategoryTemplate($categoryTemplate); + $categoryContentTemplate->setContentType($contentType); + $categoryContentTemplate->setInstanceName('CategoryContentName'); + $categoryContentTemplate->setPosition('position'); + + $this->assertEquals($categoryTemplate, $categoryContentTemplate->getCategoryTemplate()); + $this->assertEquals($contentType, $categoryContentTemplate->getContentType()); + $this->assertEquals('CategoryContentName', $categoryContentTemplate->getInstanceName()); + $this->assertEquals('position', $categoryContentTemplate->getPosition()); + } + + public function testCategoryContentTemplateHierarchy() { + $categoryContentTemplate = new CategoryContentTemplate(); + $childCategoryContentTemplate = new CategoryContentTemplate(); + + // Add Child-CategoryContentTemplate + $categoryContentTemplate->addChild($childCategoryContentTemplate); + $this->assertCount(1, $categoryContentTemplate->getChildren()); + $this->assertEquals($categoryContentTemplate, $childCategoryContentTemplate->getParent()); + $this->assertTrue($categoryContentTemplate->isRoot()); + $this->assertFalse($childCategoryContentTemplate->isRoot()); + + // Remove Child-CategoryContentTemplate + $categoryContentTemplate->removeChild($childCategoryContentTemplate); + $this->assertCount(0, $categoryContentTemplate->getChildren()); + $this->assertNull($childCategoryContentTemplate->getParent()); + $this->assertTrue($categoryContentTemplate->isRoot()); + $this->assertTrue($childCategoryContentTemplate->isRoot()); + } +} diff --git a/backend/module/eCampCore/test/Entity/CategoryContentTest.php b/backend/module/eCampCore/test/Entity/CategoryContentTest.php new file mode 100644 index 0000000000..914472d0bf --- /dev/null +++ b/backend/module/eCampCore/test/Entity/CategoryContentTest.php @@ -0,0 +1,55 @@ +setCamp($camp); + $category->setName('CategoryName'); + + $categoryContent = new CategoryContent(); + $categoryContent->setCategory($category); + $categoryContent->setContentType($contentType); + $categoryContent->setInstanceName('CategoryContentName'); + $categoryContent->setPosition('position'); + + $this->assertEquals($category, $categoryContent->getCategory()); + $this->assertEquals($contentType, $categoryContent->getContentType()); + $this->assertEquals('CategoryContentName', $categoryContent->getInstanceName()); + $this->assertEquals('position', $categoryContent->getPosition()); + $this->assertEquals($camp, $categoryContent->getCamp()); + } + + public function testCategoryContentHierarchy() { + $categoryContent = new CategoryContent(); + $childCategoryContent = new CategoryContent(); + + // Add Child-CategoryContent + $categoryContent->addChild($childCategoryContent); + $this->assertCount(1, $categoryContent->getChildren()); + $this->assertEquals($categoryContent, $childCategoryContent->getParent()); + $this->assertTrue($categoryContent->isRoot()); + $this->assertFalse($childCategoryContent->isRoot()); + + // Remove Child-CategoryContent + $categoryContent->removeChild($childCategoryContent); + $this->assertCount(0, $categoryContent->getChildren()); + $this->assertNull($childCategoryContent->getParent()); + $this->assertTrue($categoryContent->isRoot()); + $this->assertTrue($childCategoryContent->isRoot()); + } +} diff --git a/backend/module/eCampCore/test/Entity/CategoryContentTypeTemplateTest.php b/backend/module/eCampCore/test/Entity/CategoryContentTypeTemplateTest.php new file mode 100644 index 0000000000..843ed72622 --- /dev/null +++ b/backend/module/eCampCore/test/Entity/CategoryContentTypeTemplateTest.php @@ -0,0 +1,31 @@ +setCampTemplate($campTemplate); + $categoryTemplate->setName('CategoryName'); + + $categoryContentTypeTemplate = new CategoryContentTypeTemplate(); + $categoryContentTypeTemplate->setCategoryTemplate($categoryTemplate); + $categoryContentTypeTemplate->setContentType($contentType); + + $this->assertEquals($categoryTemplate, $categoryContentTypeTemplate->getCategoryTemplate()); + $this->assertEquals($contentType, $categoryContentTypeTemplate->getContentType()); + } +} diff --git a/backend/module/eCampCore/test/Entity/CategoryContentTypeTest.php b/backend/module/eCampCore/test/Entity/CategoryContentTypeTest.php new file mode 100644 index 0000000000..fcef930091 --- /dev/null +++ b/backend/module/eCampCore/test/Entity/CategoryContentTypeTest.php @@ -0,0 +1,32 @@ +setCamp($camp); + $category->setName('CategoryName'); + + $categoryContentType = new CategoryContentType(); + $categoryContentType->setCategory($category); + $categoryContentType->setContentType($contentType); + + $this->assertEquals($category, $categoryContentType->getCategory()); + $this->assertEquals($contentType, $categoryContentType->getContentType()); + $this->assertEquals($camp, $categoryContentType->getCamp()); + } +} diff --git a/backend/module/eCampCore/test/Entity/CategoryTemplateTest.php b/backend/module/eCampCore/test/Entity/CategoryTemplateTest.php new file mode 100644 index 0000000000..63054b98a4 --- /dev/null +++ b/backend/module/eCampCore/test/Entity/CategoryTemplateTest.php @@ -0,0 +1,52 @@ +setName('ActivityType Name'); + $categoryTemplate->setColor('#FF00FF'); + $categoryTemplate->setNumberingStyle('i'); + $campTemplate->addCategoryTemplate($categoryTemplate); + + $this->assertEquals($campTemplate, $categoryTemplate->getCampTemplate()); + $this->assertEquals('ActivityType Name', $categoryTemplate->getName()); + $this->assertEquals('#FF00FF', $categoryTemplate->getColor()); + $this->assertEquals('i', $categoryTemplate->getNumberingStyle()); + $this->assertInstanceOf('Doctrine\Common\Collections\ArrayCollection', $categoryTemplate->getCategoryContentTemplates()); + $this->assertInstanceOf('Doctrine\Common\Collections\ArrayCollection', $categoryTemplate->getCategoryContentTypeTemplates()); + } + + public function testCategoryContentTypeTemplate() { + $categoryTemplate = new CategoryTemplate(); + $categoryContentTypeTemplate = new CategoryContentTypeTemplate(); + + $this->assertCount(0, $categoryTemplate->getCategoryContentTypeTemplates()); + $categoryTemplate->addCategoryContentTypeTemplate($categoryContentTypeTemplate); + $this->assertContains($categoryContentTypeTemplate, $categoryTemplate->getCategoryContentTypeTemplates()); + $categoryTemplate->removeCategoryContentTypeTemplate($categoryContentTypeTemplate); + $this->assertCount(0, $categoryTemplate->getCategoryContentTypeTemplates()); + } + + public function testCategoryContentTemplate() { + $categoryTemplate = new CategoryTemplate(); + $categoryContentTemplate = new CategoryContentTemplate(); + + $this->assertCount(0, $categoryTemplate->getCategoryContentTemplates()); + $categoryTemplate->addCategoryContentTemplate($categoryContentTemplate); + $this->assertContains($categoryContentTemplate, $categoryTemplate->getCategoryContentTemplates()); + $categoryTemplate->removeCategoryContentTemplate($categoryContentTemplate); + $this->assertCount(0, $categoryTemplate->getCategoryContentTemplates()); + } +} diff --git a/backend/module/eCampCore/test/Entity/CategoryTest.php b/backend/module/eCampCore/test/Entity/CategoryTest.php new file mode 100644 index 0000000000..f62932baa9 --- /dev/null +++ b/backend/module/eCampCore/test/Entity/CategoryTest.php @@ -0,0 +1,73 @@ +setCamp($camp); + $category->setName('TestCategory'); + $category->setShort('TC'); + $category->setColor('#1fa2df'); + $category->setNumberingStyle('i'); + + $this->assertEquals($camp, $category->getCamp()); + $this->assertEquals('TestCategory', $category->getName()); + $this->assertEquals('TC', $category->getShort()); + $this->assertEquals('#1fa2df', $category->getColor()); + $category->setColor('#FF00FF'); + $this->assertEquals('#FF00FF', $category->getColor()); + $this->assertEquals('i', $category->getNumberingStyle()); + } + + public function testCategoryContentType() { + $category = new Category(); + $categoryContentType = new CategoryContentType(); + + $this->assertCount(0, $category->getCategoryContentTypes()); + $category->addCategoryContentType($categoryContentType); + $this->assertContains($categoryContentType, $category->getCategoryContentTypes()); + $category->removeCategoryContentType($categoryContentType); + $this->assertCount(0, $category->getCategoryContentTypes()); + } + + public function testCategoryContent() { + $category = new Category(); + $categoryContent = new CategoryContent(); + + $this->assertCount(0, $category->getCategoryContents()); + $category->addCategoryContent($categoryContent); + $this->assertContains($categoryContent, $category->getCategoryContents()); + $category->removeCategoryContent($categoryContent); + $this->assertCount(0, $category->getCategoryContents()); + } + + public function testNumberingStyle() { + $category = new Category(); + + $this->assertEquals('31', $category->getStyledNumber(31)); + + $category->setNumberingStyle('a'); + $this->assertEquals('ae', $category->getStyledNumber(31)); + + $category->setNumberingStyle('A'); + $this->assertEquals('AE', $category->getStyledNumber(31)); + + $category->setNumberingStyle('i'); + $this->assertEquals('xxxi', $category->getStyledNumber(31)); + + $category->setNumberingStyle('I'); + $this->assertEquals('XXXI', $category->getStyledNumber(31)); + } +} diff --git a/backend/module/eCampCore/test/Entity/ContentTypeConfigTest.php b/backend/module/eCampCore/test/Entity/ContentTypeConfigTest.php deleted file mode 100644 index ec960d5843..0000000000 --- a/backend/module/eCampCore/test/Entity/ContentTypeConfigTest.php +++ /dev/null @@ -1,33 +0,0 @@ -addActivityCategory($activityCategory); - $activityCategory->addContentTypeConfig($contentTypeConfig); - $contentTypeConfig->setContentType($contentType); - $contentTypeConfig->setRequired(true); - $contentTypeConfig->setMultiple(false); - - $this->assertEquals($camp, $contentTypeConfig->getCamp()); - $this->assertEquals($activityCategory, $contentTypeConfig->getActivityCategory()); - $this->assertEquals($contentType, $contentTypeConfig->getContentType()); - $this->assertTrue($contentTypeConfig->getRequired()); - $this->assertFalse($contentTypeConfig->getMultiple()); - } -} diff --git a/backend/module/eCampCore/test/Entity/ScheduleEntryTest.php b/backend/module/eCampCore/test/Entity/ScheduleEntryTest.php index f96ed640b9..ccfae7f592 100644 --- a/backend/module/eCampCore/test/Entity/ScheduleEntryTest.php +++ b/backend/module/eCampCore/test/Entity/ScheduleEntryTest.php @@ -3,8 +3,8 @@ namespace eCamp\CoreTest\Entity; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\Camp; +use eCamp\Core\Entity\Category; use eCamp\Core\Entity\Period; use eCamp\Core\Entity\ScheduleEntry; use eCamp\Lib\Types\DateUtc; @@ -27,14 +27,14 @@ public function testScheduleEntry() { $period->setStart($start); $period->setEnd($end); - $activityCategory = new ActivityCategory(); - $activityCategory->setColor('#1fa2df'); - $activityCategory->setNumberingStyle('i'); + $category = new Category(); + $category->setColor('#1fa2df'); + $category->setNumberingStyle('i'); $activity = new Activity(); $activity->setCamp($camp); $activity->setTitle('ActivityTitle'); - $activity->setActivityCategory($activityCategory); + $activity->setCategory($category); $scheduleEntry = new ScheduleEntry(); $scheduleEntry->setPeriod($period); @@ -57,7 +57,7 @@ public function testScheduleEntry() { $this->assertEquals($camp, $scheduleEntry->getCamp()); $this->assertEquals($period, $scheduleEntry->getPeriod()); $this->assertEquals($activity, $scheduleEntry->getActivity()); - $this->assertEquals($activityCategory, $scheduleEntry->getActivityCategory()); + $this->assertEquals($category, $scheduleEntry->getCategory()); $this->assertEquals(900, $scheduleEntry->getPeriodOffset()); $this->assertEquals(120, $scheduleEntry->getLength()); $this->assertEquals(0, $scheduleEntry->getLeft()); @@ -68,7 +68,7 @@ public function testScheduleEntry() { $this->assertEquals('1.ii', $scheduleEntry->getNumber()); $this->assertEquals('#1fa2df', $scheduleEntry->getColor()); - $activityCategory->setColor('#FF00FF'); + $category->setColor('#FF00FF'); $this->assertEquals('#FF00FF', $scheduleEntry->getColor()); $duration = $scheduleEntry->getDuration(); diff --git a/backend/module/eCampCore/test/Hydrator/ActivityCategoryHydratorTest.php b/backend/module/eCampCore/test/Hydrator/ActivityCategoryHydratorTest.php deleted file mode 100644 index b96f724e97..0000000000 --- a/backend/module/eCampCore/test/Hydrator/ActivityCategoryHydratorTest.php +++ /dev/null @@ -1,57 +0,0 @@ -setCamp($camp); - $activityCategory->setShort('sh'); - $activityCategory->setName('name'); - $activityCategory->setColor('#ff0000'); - $activityCategory->setNumberingStyle('i'); - - $hydrator = new ActivityCategoryHydrator(); - $data = $hydrator->extract($activityCategory); - -// $this->assertEquals($activityType, $data['activityType']); -// $this->assertEquals($camp, $data['camp']); - $this->assertEquals('sh', $data['short']); - $this->assertEquals('name', $data['name']); - $this->assertEquals('#ff0000', $data['color']); - $this->assertEquals('i', $data['numberingStyle']); - } - - public function testHydrate() { - $camp = new Camp(); - - $activityCategory = new ActivityCategory(); - $data = [ - 'short' => 'sh', - 'name' => 'name', - 'color' => '#00ff00', - 'numberingStyle' => 'a', - ]; - - $activityCategory->setCamp($camp); - - $hydrator = new ActivityCategoryHydrator(); - $hydrator->hydrate($data, $activityCategory); - - $this->assertEquals($camp, $activityCategory->getCamp()); - $this->assertEquals('sh', $activityCategory->getShort()); - $this->assertEquals('name', $activityCategory->getName()); - $this->assertEquals('#00ff00', $activityCategory->getColor()); - $this->assertEquals('a', $activityCategory->getNumberingStyle()); - } -} diff --git a/backend/module/eCampCore/test/Hydrator/ActivityCategoryTemplateHydratorTest.php b/backend/module/eCampCore/test/Hydrator/ActivityCategoryTemplateHydratorTest.php deleted file mode 100644 index 0b73e7d7a8..0000000000 --- a/backend/module/eCampCore/test/Hydrator/ActivityCategoryTemplateHydratorTest.php +++ /dev/null @@ -1,46 +0,0 @@ -setShort('n'); - $activityCategoryTemplate->setName('name'); - $activityCategoryTemplate->setColor('#ff0000'); - $activityCategoryTemplate->setNumberingStyle('i'); - - $hydrator = new ActivityCategoryTemplateHydrator(); - $data = $hydrator->extract($activityCategoryTemplate); - - $this->assertEquals('n', $data['short']); - $this->assertEquals('name', $data['name']); - $this->assertEquals('#ff0000', $data['color']); - $this->assertEquals('i', $data['numberingStyle']); - } - - public function testHydrate() { - $activityCategoryTemplate = new ActivityCategoryTemplate(); - $data = [ - 'short' => 'n', - 'name' => 'name', - 'color' => '#00ff00', - 'numberingStyle' => 'a', - ]; - - $hydrator = new ActivityCategoryTemplateHydrator(); - $hydrator->hydrate($data, $activityCategoryTemplate); - - $this->assertEquals('n', $activityCategoryTemplate->getShort()); - $this->assertEquals('name', $activityCategoryTemplate->getName()); - $this->assertEquals('#00ff00', $activityCategoryTemplate->getColor()); - $this->assertEquals('a', $activityCategoryTemplate->getNumberingStyle()); - } -} diff --git a/backend/module/eCampCore/test/Hydrator/CategoryContentHydratorTest.php b/backend/module/eCampCore/test/Hydrator/CategoryContentHydratorTest.php new file mode 100644 index 0000000000..d74c15c22f --- /dev/null +++ b/backend/module/eCampCore/test/Hydrator/CategoryContentHydratorTest.php @@ -0,0 +1,42 @@ +setName('ContentTypeName'); + $categoryContent = new CategoryContent(); + $categoryContent->setCategory($category); + $categoryContent->setContentType($contentType); + $categoryContent->setInstanceName('CategoryContentName'); + + $hydrator = new CategoryContentHydrator(); + $data = $hydrator->extract($categoryContent); + + $this->assertEquals('CategoryContentName', $data['instanceName']); + $this->assertEquals('ContentTypeName', $data['contentTypeName']); + } + + public function testHydrate() { + $categoryContent = new CategoryContent(); + $data = [ + 'instanceName' => 'CategoryContentName', + ]; + + $hydrator = new CategoryContentHydrator(); + $hydrator->hydrate($data, $categoryContent); + + $this->assertEquals('CategoryContentName', $categoryContent->getInstanceName()); + } +} diff --git a/backend/module/eCampCore/test/Hydrator/CategoryContentTemplateHydratorTest.php b/backend/module/eCampCore/test/Hydrator/CategoryContentTemplateHydratorTest.php new file mode 100644 index 0000000000..8f6d84ef14 --- /dev/null +++ b/backend/module/eCampCore/test/Hydrator/CategoryContentTemplateHydratorTest.php @@ -0,0 +1,42 @@ +setName('ContentTypeName'); + $categoryContentTemplate = new CategoryContentTemplate(); + $categoryContentTemplate->setCategoryTemplate($categoryTemplate); + $categoryContentTemplate->setContentType($contentType); + $categoryContentTemplate->setInstanceName('CategoryContentName'); + + $hydrator = new CategoryContentTemplateHydrator(); + $data = $hydrator->extract($categoryContentTemplate); + + $this->assertEquals('CategoryContentName', $data['instanceName']); + $this->assertEquals('ContentTypeName', $data['contentTypeName']); + } + + public function testHydrate() { + $categoryContentTemplate = new CategoryContentTemplate(); + $data = [ + 'instanceName' => 'CategoryContentName', + ]; + + $hydrator = new CategoryContentTemplateHydrator(); + $hydrator->hydrate($data, $categoryContentTemplate); + + $this->assertEquals('CategoryContentName', $categoryContentTemplate->getInstanceName()); + } +} diff --git a/backend/module/eCampCore/test/Hydrator/CategoryHydratorTest.php b/backend/module/eCampCore/test/Hydrator/CategoryHydratorTest.php new file mode 100644 index 0000000000..c599417a2f --- /dev/null +++ b/backend/module/eCampCore/test/Hydrator/CategoryHydratorTest.php @@ -0,0 +1,54 @@ +setCamp($camp); + $category->setShort('sh'); + $category->setName('name'); + $category->setColor('#ff0000'); + $category->setNumberingStyle('i'); + + $hydrator = new CategoryHydrator(); + $data = $hydrator->extract($category); + + $this->assertEquals('sh', $data['short']); + $this->assertEquals('name', $data['name']); + $this->assertEquals('#ff0000', $data['color']); + $this->assertEquals('i', $data['numberingStyle']); + } + + public function testHydrate() { + $camp = new Camp(); + + $category = new Category(); + $data = [ + 'short' => 'sh', + 'name' => 'name', + 'color' => '#00ff00', + 'numberingStyle' => 'a', + ]; + + $category->setCamp($camp); + + $hydrator = new CategoryHydrator(); + $hydrator->hydrate($data, $category); + + $this->assertEquals($camp, $category->getCamp()); + $this->assertEquals('sh', $category->getShort()); + $this->assertEquals('name', $category->getName()); + $this->assertEquals('#00ff00', $category->getColor()); + $this->assertEquals('a', $category->getNumberingStyle()); + } +} diff --git a/backend/module/eCampCore/test/Hydrator/CategoryTemplateHydratorTest.php b/backend/module/eCampCore/test/Hydrator/CategoryTemplateHydratorTest.php new file mode 100644 index 0000000000..a767e40ae6 --- /dev/null +++ b/backend/module/eCampCore/test/Hydrator/CategoryTemplateHydratorTest.php @@ -0,0 +1,46 @@ +setShort('n'); + $categoryTemplate->setName('name'); + $categoryTemplate->setColor('#ff0000'); + $categoryTemplate->setNumberingStyle('i'); + + $hydrator = new CategoryTemplateHydrator(); + $data = $hydrator->extract($categoryTemplate); + + $this->assertEquals('n', $data['short']); + $this->assertEquals('name', $data['name']); + $this->assertEquals('#ff0000', $data['color']); + $this->assertEquals('i', $data['numberingStyle']); + } + + public function testHydrate() { + $categoryTemplate = new CategoryTemplate(); + $data = [ + 'short' => 'n', + 'name' => 'name', + 'color' => '#00ff00', + 'numberingStyle' => 'a', + ]; + + $hydrator = new CategoryTemplateHydrator(); + $hydrator->hydrate($data, $categoryTemplate); + + $this->assertEquals('n', $categoryTemplate->getShort()); + $this->assertEquals('name', $categoryTemplate->getName()); + $this->assertEquals('#00ff00', $categoryTemplate->getColor()); + $this->assertEquals('a', $categoryTemplate->getNumberingStyle()); + } +} diff --git a/backend/module/eCampCore/test/Hydrator/ContentTypeConfigHydratorTest.php b/backend/module/eCampCore/test/Hydrator/ContentTypeConfigHydratorTest.php deleted file mode 100644 index 8ea900820d..0000000000 --- a/backend/module/eCampCore/test/Hydrator/ContentTypeConfigHydratorTest.php +++ /dev/null @@ -1,38 +0,0 @@ -setMultiple(true); - $contentTypeConfig->setRequired(true); - - $hydrator = new ContentTypeConfigHydrator(); - $data = $hydrator->extract($contentTypeConfig); - - $this->assertTrue($data['multiple']); - $this->assertTrue($data['required']); - } - - public function testHydrate() { - $contentTypeConfig = new ContentTypeConfig(); - $data = [ - 'multiple' => true, - 'required' => true, - ]; - - $hydrator = new ContentTypeConfigHydrator(); - $hydrator->hydrate($data, $contentTypeConfig); - - $this->assertTrue($contentTypeConfig->getMultiple()); - $this->assertTrue($contentTypeConfig->getRequired()); - } -} diff --git a/backend/module/eCampCore/test/Hydrator/ContentTypeConfigTemplateHydratorTest.php b/backend/module/eCampCore/test/Hydrator/ContentTypeConfigTemplateHydratorTest.php deleted file mode 100644 index 8444c95b7c..0000000000 --- a/backend/module/eCampCore/test/Hydrator/ContentTypeConfigTemplateHydratorTest.php +++ /dev/null @@ -1,38 +0,0 @@ -setMultiple(true); - $contentTypeConfigTemplate->setRequired(true); - - $hydrator = new ContentTypeConfigTemplateHydrator(); - $data = $hydrator->extract($contentTypeConfigTemplate); - - $this->assertTrue($data['multiple']); - $this->assertTrue($data['required']); - } - - public function testHydrate() { - $contentTypeConfigTemplate = new ContentTypeConfigTemplate(); - $data = [ - 'multiple' => true, - 'required' => true, - ]; - - $hydrator = new ContentTypeConfigTemplateHydrator(); - $hydrator->hydrate($data, $contentTypeConfigTemplate); - - $this->assertTrue($contentTypeConfigTemplate->getMultiple()); - $this->assertTrue($contentTypeConfigTemplate->getRequired()); - } -} diff --git a/backend/module/eCampCore/test/Service/ActivityServiceTest.php b/backend/module/eCampCore/test/Service/ActivityServiceTest.php index 6bd184fc62..424f872bc0 100644 --- a/backend/module/eCampCore/test/Service/ActivityServiceTest.php +++ b/backend/module/eCampCore/test/Service/ActivityServiceTest.php @@ -4,14 +4,15 @@ use Doctrine\Common\DataFixtures\Loader; use eCamp\Core\Entity\Activity; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\ActivityContent; use eCamp\Core\Entity\Camp; +use eCamp\Core\Entity\Category; use eCamp\Core\Entity\User; use eCamp\Core\EntityService\ActivityService; -use eCamp\CoreTest\Data\ActivityCategoryTestData; use eCamp\CoreTest\Data\CampTestData; -use eCamp\CoreTest\Data\ContentTypeConfigTestData; +use eCamp\CoreTest\Data\CategoryContentTestData; +use eCamp\CoreTest\Data\CategoryContentTypeTestData; +use eCamp\CoreTest\Data\CategoryTestData; use eCamp\CoreTest\Data\UserTestData; use eCamp\LibTest\PHPUnit\AbstractApiControllerTestCase; @@ -25,27 +26,29 @@ class ActivityServiceTest extends AbstractApiControllerTestCase { /** @var Camp */ protected $camp; - /** @var ActivityCategory */ - protected $activityCategory; + /** @var Category */ + protected $category; public function setUp(): void { parent::setUp(); $userLoader = new UserTestData(); $campLoader = new CampTestData(); - $activityCategoryLoader = new ActivityCategoryTestData(); - $contentTypeConfigLoader = new ContentTypeConfigTestData(); + $categoryLoader = new CategoryTestData(); + $categoryContentTypeLoader = new CategoryContentTypeTestData(); + $categoryContentLoader = new CategoryContentTestData(); $loader = new Loader(); $loader->addFixture($userLoader); $loader->addFixture($campLoader); - $loader->addFixture($activityCategoryLoader); - $loader->addFixture($contentTypeConfigLoader); + $loader->addFixture($categoryLoader); + $loader->addFixture($categoryContentTypeLoader); + $loader->addFixture($categoryContentLoader); $this->loadFixtures($loader); $this->user = $userLoader->getReference(UserTestData::$USER1); $this->camp = $campLoader->getReference(CampTestData::$CAMP1); - $this->activityCategory = $activityCategoryLoader->getReference(ActivityCategoryTestData::$CATEGORY1); + $this->category = $categoryLoader->getReference(CategoryTestData::$CATEGORY1); $this->authenticateUser($this->user); } @@ -54,13 +57,14 @@ public function testCreateActivity() { /** @var ActivityService $activityService */ $activityService = $this->getApplicationServiceLocator()->get(ActivityService::class); - $this->assertCount(1, $this->activityCategory->getContentTypeConfigs()); + $this->assertCount(1, $this->category->getCategoryContents()); + $this->assertCount(1, $this->category->getCategoryContentTypes()); /** @var Activity $activity */ $activity = $activityService->create((object) [ 'title' => 'ActivityTitle', 'campId' => $this->camp->getId(), - 'activityCategoryId' => $this->activityCategory->getId(), + 'categoryId' => $this->category->getId(), ]); $this->assertNotNull($activity); diff --git a/backend/module/eCampCore/test/Service/CampServiceTest.php b/backend/module/eCampCore/test/Service/CampServiceTest.php index e62c6002ce..f74585f8b0 100644 --- a/backend/module/eCampCore/test/Service/CampServiceTest.php +++ b/backend/module/eCampCore/test/Service/CampServiceTest.php @@ -3,16 +3,16 @@ namespace eCamp\CoreTest\Service; use Doctrine\Common\DataFixtures\Loader; -use eCamp\Core\Entity\ActivityCategory; use eCamp\Core\Entity\Camp; use eCamp\Core\Entity\CampTemplate; -use eCamp\Core\Entity\ContentTypeConfig; +use eCamp\Core\Entity\Category; +use eCamp\Core\Entity\CategoryContent; use eCamp\Core\Entity\MaterialList; use eCamp\Core\Entity\User; use eCamp\Core\EntityService\CampService; -use eCamp\CoreTest\Data\ActivityCategoryTemplateTestData; use eCamp\CoreTest\Data\CampTemplateTestData; -use eCamp\CoreTest\Data\ContentTypeConfigTemplateTestData; +use eCamp\CoreTest\Data\CategoryContentTemplateTestData; +use eCamp\CoreTest\Data\CategoryTemplateTestData; use eCamp\CoreTest\Data\MaterialListTemplateTestData; use eCamp\CoreTest\Data\UserTestData; use eCamp\LibTest\PHPUnit\AbstractApiControllerTestCase; @@ -33,15 +33,15 @@ public function setUp(): void { $userLoader = new UserTestData(); $campTemplateLoader = new CampTemplateTestData(); $materialListTemplateLoader = new MaterialListTemplateTestData(); - $activityCategoryTemplateLoader = new ActivityCategoryTemplateTestData(); - $contentTypeConfigTemplateLoader = new ContentTypeConfigTemplateTestData(); + $categoryTemplateLoader = new CategoryTemplateTestData(); + $categoryContentTemplateLoader = new CategoryContentTemplateTestData(); $loader = new Loader(); $loader->addFixture($userLoader); $loader->addFixture($campTemplateLoader); $loader->addFixture($materialListTemplateLoader); - $loader->addFixture($activityCategoryTemplateLoader); - $loader->addFixture($contentTypeConfigTemplateLoader); + $loader->addFixture($categoryTemplateLoader); + $loader->addFixture($categoryContentTemplateLoader); $this->loadFixtures($loader); $this->user = $userLoader->getReference(UserTestData::$USER1); @@ -75,18 +75,18 @@ public function testCreateCampFromTemplate() { $this->assertNotNull($materialList); $this->assertNotNull($materialList->getMaterialListTemplateId()); - $this->assertCount(1, $camp->getActivityCategories()); - /** @var ActivityCategory $activityCategory */ - $activityCategory = $camp->getActivityCategories()->first(); - $this->assertNotNull($activityCategory); - $this->assertNotNull($activityCategory->getActivityCategoryTemplateId()); - $this->assertEquals('ActivityCategory1', $activityCategory->getName()); + $this->assertCount(1, $camp->getCategories()); + /** @var Category $category */ + $category = $camp->getCategories()->first(); + $this->assertNotNull($category); + $this->assertNotNull($category->getCategoryTemplateId()); + $this->assertEquals('ActivityCategory1', $category->getName()); - $this->assertCount(1, $activityCategory->getContentTypeConfigs()); - /** @var ContentTypeConfig $contentTypeConfig */ - $contentTypeConfig = $activityCategory->getContentTypeConfigs()->first(); - $this->assertNotNull($contentTypeConfig); - $this->assertNotNull($contentTypeConfig->getContentTypeConfigTemplateId()); - $this->assertEquals('Storyboard', $contentTypeConfig->getContentType()->getName()); + $this->assertCount(1, $category->getCategoryContents()); + /** @var CategoryContent $categoryContent */ + $categoryContent = $category->getCategoryContents()->first(); + $this->assertNotNull($categoryContent); + $this->assertNotNull($categoryContent->getCategoryContentTemplateId()); + $this->assertEquals('Storyboard', $categoryContent->getContentType()->getName()); } } diff --git a/backend/module/eCampLib/src/InputFilter/HtmlPurify.php b/backend/module/eCampLib/src/InputFilter/HtmlPurify.php index d767a15095..76f0358159 100644 --- a/backend/module/eCampLib/src/InputFilter/HtmlPurify.php +++ b/backend/module/eCampLib/src/InputFilter/HtmlPurify.php @@ -6,7 +6,7 @@ use Laminas\Filter\AbstractFilter; class HtmlPurify extends AbstractFilter { - private HTMLPurifier $htmlPurifier; + private ?HTMLPurifier $htmlPurifier = null; public function __construct($options = null) { $this->options = $options; diff --git a/frontend/src/components/camp/ActivityList.vue b/frontend/src/components/camp/ActivityList.vue index b8d5659356..b473f6598a 100644 --- a/frontend/src/components/camp/ActivityList.vue +++ b/frontend/src/components/camp/ActivityList.vue @@ -14,9 +14,9 @@ Lists all activity instances in a list view. :key="scheduleEntry._meta.self" two-line :to="scheduleEntryLink(scheduleEntry)"> - + {{ - scheduleEntry.activity().activityCategory().short + scheduleEntry.activity().category().short }} diff --git a/frontend/src/components/camp/CampActivityCategories.vue b/frontend/src/components/camp/CampCategories.vue similarity index 64% rename from frontend/src/components/camp/CampActivityCategories.vue rename to frontend/src/components/camp/CampCategories.vue index 956909080d..d833cafb48 100644 --- a/frontend/src/components/camp/CampActivityCategories.vue +++ b/frontend/src/components/camp/CampCategories.vue @@ -6,39 +6,39 @@ Displays all periods of a single camp and allows to edit them & create new ones
- {{ $tc('components.camp.campActivityCategories.title') }} - + {{ $tc('components.camp.campCategories.title') }} + - +
- - (1.{{ activityCategory.numberingStyle }}) {{ activityCategory.short }}: {{ activityCategory.name }} + + (1.{{ category.numberingStyle }}) {{ category.short }}: {{ category.name }} - + - + @@ -51,20 +51,20 @@ Displays all periods of a single camp and allows to edit them & create new ones - - {{ $tc('components.camp.campActivityCategories.deleteActivityCategoryQuestion') }} + + {{ $tc('components.camp.CampCategories.deleteCategoryQuestion') }}
  • - {{ activityCategory.short }}: {{ activityCategory.name }} + {{ category.short }}: {{ category.name }}
-