1111use Monarc \Core \Entity \UserSuperClass ;
1212use Monarc \Core \InputFormatter \FormattedInputParams ;
1313use Monarc \Core \Table \ReassessmentTriggerTable ;
14+ use Monarc \Core \Traits \TranslationNormalizationTrait ;
15+ use Monarc \Core \Traits \TranslationResolverTrait ;
1416
1517class ReassessmentTriggerService
1618{
19+ use TranslationNormalizationTrait;
20+ use TranslationResolverTrait;
21+
1722 private UserSuperClass $ connectedUser ;
1823
24+ /* ConfigService is used in TranslationResolverTrait. */
1925 public function __construct (
2026 private ReassessmentTriggerTable $ reassessmentTriggerTable ,
2127 private ConfigService $ configService ,
@@ -48,9 +54,15 @@ public function get(int $id): ReassessmentTrigger
4854 public function create (array $ data ): ReassessmentTrigger
4955 {
5056 $ reassessmentTrigger = (new ReassessmentTrigger ())
51- ->setTriggerTypeTranslations ($ data ['triggerTypes ' ])
52- ->setDescriptionTranslations ($ data ['descriptions ' ])
53- ->setMonitoringApproachTranslations ($ data ['monitoringApproaches ' ])
57+ ->setTriggerTypeTranslations (
58+ $ this ->normalizeTranslations ($ data ['triggerTypes ' ] ?? [], $ this ->getSupportedLanguageCodes ())
59+ )
60+ ->setDescriptionTranslations (
61+ $ this ->normalizeTranslations ($ data ['descriptions ' ] ?? [], $ this ->getSupportedLanguageCodes ())
62+ )
63+ ->setMonitoringApproachTranslations (
64+ $ this ->normalizeTranslations ($ data ['monitoringApproaches ' ] ?? [], $ this ->getSupportedLanguageCodes ())
65+ )
5466 ->setIsActive ((bool )($ data ['isActive ' ] ?? true ))
5567 ->setCreator ($ this ->connectedUser ->getEmail ());
5668
@@ -64,14 +76,19 @@ public function update(int $id, array $data): ReassessmentTrigger
6476 {
6577 $ reassessmentTrigger = $ this ->get ($ id );
6678
67- if (array_key_exists ('triggerTypes ' , $ data )) {
68- $ reassessmentTrigger ->setTriggerTypeTranslations ($ data ['triggerTypes ' ]);
79+ if (!empty ($ data ['triggerTypes ' ])) {
80+ $ reassessmentTrigger ->setTriggerTypeTranslations (
81+ $ this ->normalizeTranslations ($ data ['triggerTypes ' ], $ this ->getSupportedLanguageCodes ())
82+ );
6983 }
70- if (array_key_exists ('descriptions ' , $ data )) {
71- $ reassessmentTrigger ->setDescriptionTranslations ($ data ['descriptions ' ]);
84+ if (!empty ($ data ['descriptions ' ])) {
85+ $ reassessmentTrigger ->setDescriptionTranslations (
86+ $ this ->normalizeTranslations ($ data ['descriptions ' ], $ this ->getSupportedLanguageCodes ()));
7287 }
73- if (array_key_exists ('monitoringApproaches ' , $ data )) {
74- $ reassessmentTrigger ->setMonitoringApproachTranslations ($ data ['monitoringApproaches ' ]);
88+ if (!empty ($ data ['monitoringApproaches ' ])) {
89+ $ reassessmentTrigger ->setMonitoringApproachTranslations (
90+ $ this ->normalizeTranslations ($ data ['monitoringApproaches ' ], $ this ->getSupportedLanguageCodes ())
91+ );
7592 }
7693 if (isset ($ data ['isActive ' ])) {
7794 $ reassessmentTrigger ->setIsActive ((bool )$ data ['isActive ' ]);
@@ -125,7 +142,7 @@ public function getSelectionData(string $languageCode, bool $includeInactive = f
125142
126143 public function getDisplayTriggerType (ReassessmentTrigger $ reassessmentTrigger , ?string $ languageCode = null ): string
127144 {
128- return $ this ->resolveDisplayValue (
145+ return $ this ->resolveTranslation (
129146 $ reassessmentTrigger ->getTriggerTypeTranslations (),
130147 $ reassessmentTrigger ->getTriggerType () ?? '' ,
131148 $ languageCode
@@ -134,7 +151,7 @@ public function getDisplayTriggerType(ReassessmentTrigger $reassessmentTrigger,
134151
135152 public function getDisplayDescription (ReassessmentTrigger $ reassessmentTrigger , ?string $ languageCode = null ): string
136153 {
137- return $ this ->resolveDisplayValue (
154+ return $ this ->resolveTranslation (
138155 $ reassessmentTrigger ->getDescriptionTranslations (),
139156 $ reassessmentTrigger ->getDescription (),
140157 $ languageCode
@@ -146,7 +163,7 @@ public function getDisplayDescription(ReassessmentTrigger $reassessmentTrigger,
146163 */
147164 public function getTriggerTypes (ReassessmentTrigger $ reassessmentTrigger ): array
148165 {
149- return $ this ->getEditableTranslations (
166+ return $ this ->resolveTranslations (
150167 $ reassessmentTrigger ->getTriggerTypeTranslations (),
151168 $ reassessmentTrigger ->getTriggerType () ?? ''
152169 );
@@ -157,7 +174,7 @@ public function getTriggerTypes(ReassessmentTrigger $reassessmentTrigger): array
157174 */
158175 public function getDescriptions (ReassessmentTrigger $ reassessmentTrigger ): array
159176 {
160- return $ this ->getEditableTranslations (
177+ return $ this ->resolveTranslations (
161178 $ reassessmentTrigger ->getDescriptionTranslations (),
162179 $ reassessmentTrigger ->getDescription ()
163180 );
@@ -167,7 +184,7 @@ public function getDisplayMonitoringApproach(
167184 ReassessmentTrigger $ reassessmentTrigger ,
168185 ?string $ languageCode = null
169186 ): string {
170- return $ this ->resolveDisplayValue (
187+ return $ this ->resolveTranslation (
171188 $ reassessmentTrigger ->getMonitoringApproachTranslations (),
172189 $ reassessmentTrigger ->getMonitoringApproach () ?? '' ,
173190 $ languageCode
@@ -179,66 +196,12 @@ public function getDisplayMonitoringApproach(
179196 */
180197 public function getMonitoringApproaches (ReassessmentTrigger $ reassessmentTrigger ): array
181198 {
182- return $ this ->getEditableTranslations (
199+ return $ this ->resolveTranslations (
183200 $ reassessmentTrigger ->getMonitoringApproachTranslations (),
184201 $ reassessmentTrigger ->getMonitoringApproach () ?? ''
185202 );
186203 }
187204
188- /**
189- * @param array<string, string> $translations
190- */
191- private function resolveDisplayValue (array $ translations , string $ fallbackValue , ?string $ languageCode = null ): string
192- {
193- $ languageCode ??= $ this ->getCurrentLanguageCode ();
194- if (isset ($ translations [$ languageCode ]) && $ translations [$ languageCode ] !== '' ) {
195- return $ translations [$ languageCode ];
196- }
197-
198- $ defaultLanguageCode = $ this ->configService ->getLanguageCodes ()[
199- $ this ->configService ->getConfigOption ('defaultLanguageIndex ' , 1 )
200- ] ?? null ;
201- if ($ defaultLanguageCode !== null && isset ($ translations [$ defaultLanguageCode ])) {
202- return $ translations [$ defaultLanguageCode ];
203- }
204-
205- foreach ($ translations as $ translation ) {
206- if ($ translation !== '' ) {
207- return $ translation ;
208- }
209- }
210-
211- return $ fallbackValue ;
212- }
213-
214- /**
215- * @param array<string, string> $translations
216- * @return array<string, string>
217- */
218- private function getEditableTranslations (array $ translations , string $ fallbackValue ): array
219- {
220- if ($ translations !== []) {
221- return $ translations ;
222- }
223-
224- $ fallbackValue = trim ($ fallbackValue );
225- if ($ fallbackValue === '' ) {
226- return [];
227- }
228-
229- return [
230- $ this ->getCurrentLanguageCode () => $ fallbackValue ,
231- ];
232- }
233-
234- private function getCurrentLanguageCode (): string
235- {
236- return $ this ->configService ->getLanguageCodes ()[$ this ->connectedUser ->getLanguage ()]
237- ?? $ this ->configService ->getLanguageCodes ()[$ this ->configService
238- ->getConfigOption ('defaultLanguageIndex ' , 1 )]
239- ?? 'en ' ;
240- }
241-
242205 private function applyCreatePosition (ReassessmentTrigger $ reassessmentTrigger , array $ data ): void
243206 {
244207 $ position = isset ($ data ['position ' ]) ? (int )$ data ['position ' ] : 0 ;
@@ -250,13 +213,7 @@ private function applyCreatePosition(ReassessmentTrigger $reassessmentTrigger, a
250213 return ;
251214 }
252215
253- $ this ->reassessmentTriggerTable ->incrementPositions (
254- $ position ,
255- -1 ,
256- 1 ,
257- [],
258- $ this ->connectedUser ->getEmail ()
259- );
216+ $ this ->reassessmentTriggerTable ->incrementPositions ($ position , -1 , 1 , [], $ this ->connectedUser ->getEmail ());
260217 $ reassessmentTrigger ->setPosition ($ position );
261218 }
262219
@@ -267,21 +224,11 @@ private function applyUpdatedPosition(ReassessmentTrigger $reassessmentTrigger,
267224 $ newPosition = max (1 , min ($ newPosition , $ maxPosition ));
268225
269226 if ($ newPosition < $ oldPosition ) {
270- $ this ->reassessmentTriggerTable ->incrementPositions (
271- $ newPosition ,
272- $ oldPosition - 1 ,
273- 1 ,
274- [],
275- $ this ->connectedUser ->getEmail ()
276- );
227+ $ this ->reassessmentTriggerTable
228+ ->incrementPositions ($ newPosition , $ oldPosition - 1 , 1 , [], $ this ->connectedUser ->getEmail ());
277229 } elseif ($ newPosition > $ oldPosition ) {
278- $ this ->reassessmentTriggerTable ->incrementPositions (
279- $ oldPosition + 1 ,
280- $ newPosition ,
281- -1 ,
282- [],
283- $ this ->connectedUser ->getEmail ()
284- );
230+ $ this ->reassessmentTriggerTable
231+ ->incrementPositions ($ oldPosition + 1 , $ newPosition , -1 , [], $ this ->connectedUser ->getEmail ());
285232 }
286233
287234 $ reassessmentTrigger ->setPosition ($ newPosition );
0 commit comments