Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
30 / 30
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ResourceActionTranslationProvider
100.00% covered (success)
100.00%
30 / 30
100.00% covered (success)
100.00%
2 / 2
10
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 provideStringTranslations
100.00% covered (success)
100.00%
29 / 29
100.00% covered (success)
100.00%
1 / 1
9
1<?php
2namespace Apie\Common\Translator;
3
4use Apie\Common\ActionDefinitionProvider;
5use Apie\Common\ActionDefinitions\CreateResourceActionDefinition;
6use Apie\Common\ActionDefinitions\ModifyResourceActionDefinition;
7use Apie\Common\ActionDefinitions\RunResourceMethodDefinition;
8use Apie\Core\BoundedContext\BoundedContext;
9use Apie\Core\BoundedContext\BoundedContextHashmap;
10use Apie\Core\BoundedContext\BoundedContextId;
11use Apie\Core\Context\ApieContext;
12use Apie\Core\Translator\Lists\TranslationStringSet;
13use Apie\Core\Translator\ValueObjects\ResourceAddResourceButtonLabel;
14use Apie\Core\Translator\ValueObjects\ResourceAddResourceHeader;
15use Apie\Core\Translator\ValueObjects\ResourceCustomActionResourceButtonLabel;
16use Apie\Core\Translator\ValueObjects\ResourceCustomActionResourceHeader;
17use Apie\Core\Translator\ValueObjects\ResourceCustomGlobalActionResourceButtonLabel;
18use Apie\Core\Translator\ValueObjects\ResourceCustomGlobalActionResourceHeader;
19use Apie\Core\Translator\ValueObjects\ResourceModifyResourceButtonLabel;
20use Apie\Core\Translator\ValueObjects\ResourceModifyResourceHeader;
21
22final class ResourceActionTranslationProvider implements TranslationStringProviderInterface
23{
24    public function __construct(
25        private readonly ActionDefinitionProvider $actionDefinitionProvider
26    ) {
27    }
28    public function provideStringTranslations(ApieContext $apieContext): TranslationStringSet
29    {
30        $result = [];
31        $hashmap = $apieContext->getContext(BoundedContextHashmap::class, false);
32        if ($hashmap instanceof BoundedContextHashmap) {
33            foreach ($hashmap as $boundedContext) {
34                $actionDefinitions = $this->actionDefinitionProvider->provideActionDefinitions(
35                    $boundedContext,
36                    $apieContext
37                        ->withContext(BoundedContextId::class, $boundedContext->getId())
38                        ->withContext(BoundedContext::class, $boundedContext)
39                );
40                /**
41                 * CreateResourceActionDefinition::class,
42            ReplaceResourceActionDefinition::class,
43            GetResourceActionDefinition::class,
44            GetResourceListActionDefinition::class,
45            ModifyResourceActionDefinition::class,
46            RemoveResourceActionDefinition::class,
47            RunGlobalMethodDefinition::class,
48            RunResourceMethodDefinition::class,
49            DownloadFilesActionDefinition::class,
50                */
51                foreach ($actionDefinitions as $actionDefinition) {
52                    // ReplaceResourceActionDefinition?
53                    if ($actionDefinition instanceof CreateResourceActionDefinition) {
54                        $result[] = ResourceAddResourceButtonLabel::createFromDefinition($actionDefinition, false);
55                        $result[] = ResourceAddResourceButtonLabel::createFromDefinition($actionDefinition, true);
56                        $result[] = ResourceAddResourceHeader::createFromDefinition($actionDefinition, false);
57                        $result[] = ResourceAddResourceHeader::createFromDefinition($actionDefinition, true);
58                    } elseif ($actionDefinition instanceof ModifyResourceActionDefinition) {
59                        $result[] = ResourceModifyResourceButtonLabel::createFromDefinition($actionDefinition, false);
60                        $result[] = ResourceModifyResourceButtonLabel::createFromDefinition($actionDefinition, true);
61                        $result[] = ResourceModifyResourceHeader::createFromDefinition($actionDefinition, false);
62                        $result[] = ResourceModifyResourceHeader::createFromDefinition($actionDefinition, true);
63                    } elseif ($actionDefinition instanceof RunResourceMethodDefinition) {
64                        $className = $actionDefinition->getMethod()->isStatic() ? ResourceCustomGlobalActionResourceButtonLabel::class : ResourceCustomActionResourceButtonLabel::class;
65                        $result[] = $className::createFromDefinition($actionDefinition, false);
66                        $result[] = $className::createFromDefinition($actionDefinition, true);
67                        $className = $actionDefinition->getMethod()->isStatic() ? ResourceCustomGlobalActionResourceHeader::class : ResourceCustomActionResourceHeader::class;
68                        $result[] = $className::createFromDefinition($actionDefinition, false);
69                        $result[] = $className::createFromDefinition($actionDefinition, true);
70                    }
71                }
72            }
73        }
74        return new TranslationStringSet($result);
75    }
76}