Skip to content

Commit 4e5c08c

Browse files
committed
Fix on extra question values factory
Signed-off-by: smarcet@gmail.com <smarcet@gmail.com> Change-Id: Idb62b38db0a01c59e41a34f43c82cf0807c0e238
1 parent bc8c388 commit 4e5c08c

5 files changed

Lines changed: 29 additions & 26 deletions

File tree

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<?php namespace App\Http\Controllers;
2+
use App\Http\ValidationRulesFactories\AbstractValidationRulesFactory;
3+
24
/**
35
* Copyright 2021 OpenStack Foundation
46
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,26 +19,23 @@
1719
* Class ExtraQuestionTypeValueValidationRulesFactory
1820
* @package App\Http\Controllers
1921
*/
20-
final class ExtraQuestionTypeValueValidationRulesFactory
22+
final class ExtraQuestionTypeValueValidationRulesFactory extends AbstractValidationRulesFactory
2123
{
22-
/**
23-
* @param array $data
24-
* @param bool $update
25-
* @return array
26-
*/
27-
public static function build(array $data, $update = false){
28-
29-
if($update){
30-
return [
31-
'label' => 'sometimes|string',
32-
'value' => 'sometimes|string|max:255',
33-
'order' => 'sometimes|integer|min:1'
34-
];
35-
}
3624

25+
public static function buildForAdd(array $payload = []): array
26+
{
3727
return [
3828
'label' => 'sometimes|string',
3929
'value' => 'required|string|max:255',
4030
];
4131
}
32+
33+
public static function buildForUpdate(array $payload = []): array
34+
{
35+
return [
36+
'label' => 'sometimes|string',
37+
'value' => 'sometimes|string|max:255',
38+
'order' => 'sometimes|integer|min:1'
39+
];
40+
}
4241
}

app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitOrderExtraQuestionTypeApiController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ public function addQuestionValue($summit_id, $question_id)
228228
return $this->processRequest(function () use ($summit_id, $question_id) {
229229
$summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id);
230230
if (is_null($summit)) return $this->error404();
231-
$payload = $this->getJsonPayload(ExtraQuestionTypeValueValidationRulesFactory::build(ExtraQuestionTypeValueValidationRulesFactory::build([])));
231+
$payload = $this->getJsonPayload(ExtraQuestionTypeValueValidationRulesFactory::buildForAdd());
232232

233233
$value = $this->service->addOrderExtraQuestionValue($summit, $question_id, $payload);
234234

@@ -256,7 +256,7 @@ public function updateQuestionValue($summit_id, $question_id, $value_id)
256256
$summit = SummitFinderStrategyFactory::build($this->getSummitRepository(), $this->getResourceServerContext())->find($summit_id);
257257
if (is_null($summit)) return $this->error404();
258258

259-
$payload = $this->getJsonPayload(ExtraQuestionTypeValueValidationRulesFactory::build(ExtraQuestionTypeValueValidationRulesFactory::build([], true)));
259+
$payload = $this->getJsonPayload(ExtraQuestionTypeValueValidationRulesFactory::buildForUpdate());
260260

261261
$value = $this->service->updateOrderExtraQuestionValue($summit, $question_id, $value_id, $payload);
262262

app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSelectionPlansApiController.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,7 +1197,7 @@ public function addExtraQuestionValue($summit_id, $question_id)
11971197

11981198
return $this->_add(
11991199
function ($payload) {
1200-
return ExtraQuestionTypeValueValidationRulesFactory::build($payload);
1200+
return ExtraQuestionTypeValueValidationRulesFactory::buildForAdd($payload);
12011201
},
12021202
function ($payload, $summit, $question_id) {
12031203
return $this->selection_plan_extra_questions_service->addExtraQuestionValue
@@ -1226,7 +1226,7 @@ public function addExtraQuestionValueBySelectionPlan($summit_id, $selection_plan
12261226

12271227
return $this->_add(
12281228
function ($payload) {
1229-
return ExtraQuestionTypeValueValidationRulesFactory::build($payload);
1229+
return ExtraQuestionTypeValueValidationRulesFactory::buildForAdd($payload);
12301230
},
12311231
function ($payload, $summit, $question_id) {
12321232
return $this->selection_plan_extra_questions_service->addExtraQuestionValue
@@ -1251,7 +1251,7 @@ public function updateExtraQuestionValue($summit_id, $question_id, $value_id)
12511251
$args = [$summit, intval($question_id)];
12521252

12531253
return $this->_update($value_id, function ($payload) {
1254-
return ExtraQuestionTypeValueValidationRulesFactory::build($payload, false);
1254+
return ExtraQuestionTypeValueValidationRulesFactory::buildForUpdate($payload);
12551255
},
12561256
function ($value_id, $payload, $summit, $question_id) {
12571257
return $this->selection_plan_extra_questions_service->updateExtraQuestionValue
@@ -1282,7 +1282,7 @@ public function updateExtraQuestionValueBySelectionPlan($summit_id, $selection_p
12821282
$args = [$summit, intval($question_id)];
12831283

12841284
return $this->_update($value_id, function ($payload) {
1285-
return ExtraQuestionTypeValueValidationRulesFactory::build($payload, false);
1285+
return ExtraQuestionTypeValueValidationRulesFactory::buildForUpdate($payload);
12861286
},
12871287
function ($value_id, $payload, $summit, $question_id) {
12881288
return $this->selection_plan_extra_questions_service->updateExtraQuestionValue

app/Models/Foundation/Main/ExtraQuestions/ExtraQuestionType.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,10 @@ public function getNiceValue(string $value):?string {
351351
$dict = json_decode($dict, true);
352352

353353
if(empty($dict)) {
354-
foreach ($this->values as $questionValue) {
354+
$criteria = Criteria::create();
355+
$criteria->orderBy(['order' => 'ASC']);
356+
357+
foreach ($this->values->matching($criteria) as $questionValue) {
355358
$dict[$questionValue->getId()] = $questionValue->getLabel();
356359
}
357360
// sore it for 600 secs
@@ -372,7 +375,9 @@ public function getNiceValue(string $value):?string {
372375
* @return ExtraQuestionTypeValue[]|ArrayCollection
373376
*/
374377
public function getValues(){
375-
return $this->values;
378+
$criteria = Criteria::create();
379+
$criteria->orderBy(['order' => 'ASC']);
380+
return $this->values->matching($criteria);
376381
}
377382

378383
const QuestionChoicesCharSeparator = ',';

app/Services/Model/Imp/ExtraQuestionTypeService.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,16 @@ protected function _updateOrderExtraQuestionValue(ExtraQuestionType $question, i
9090
$name = trim($payload['value']);
9191
$former_value = $question->getValueByName($name);
9292
if (!is_null($former_value) && $former_value->getId() != $value_id)
93-
throw new ValidationException("value already exists.");
93+
throw new ValidationException("Value already exists.");
9494
}
9595

9696
if(isset($payload['label'])) {
9797
$label = trim($payload['label']);
9898
$former_value = $question->getValueByLabel($label);
9999
if (!is_null($former_value) && $former_value->getId() != $value_id)
100-
throw new ValidationException("value already exists.");
100+
throw new ValidationException("Label already exists.");
101101
}
102102

103-
104103
if (isset($payload['order']) && intval($payload['order']) != $value->getOrder()) {
105104
// request to update order
106105
$question->recalculateValueOrder($value, intval($payload['order']) );

0 commit comments

Comments
 (0)