update filter param for get promo codes

added type param

valid values

(
"ACCEPTED", "ALTERNATE",
"VIP","ATC","MEDIA ANALYST","SPONSOR"
)

Change-Id: I29069cf4cf6b523265e72f0595ca8abaaeecf69c
This commit is contained in:
Sebastian Marcet 2018-01-22 15:21:29 -03:00
parent 91358d8b72
commit bdd9e9b59c
4 changed files with 45 additions and 9 deletions

View File

@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use App\Models\Foundation\Summit\PromoCodes\PromoCodesValidClasses; use App\Models\Foundation\Summit\PromoCodes\PromoCodesConstants;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Request;
use models\exceptions\EntityNotFoundException; use models\exceptions\EntityNotFoundException;
@ -85,11 +85,26 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle
*/ */
private function validateClassName($filter_element){ private function validateClassName($filter_element){
if($filter_element instanceof FilterElement){ if($filter_element instanceof FilterElement){
return in_array($filter_element->getValue(), PromoCodesValidClasses::$valid_class_names); return in_array($filter_element->getValue(), PromoCodesConstants::$valid_class_names);
} }
$valid = true; $valid = true;
foreach($filter_element[0] as $elem){ foreach($filter_element[0] as $elem){
$valid = $valid && in_array($elem->getValue(), PromoCodesValidClasses::$valid_class_names); $valid = $valid && in_array($elem->getValue(), PromoCodesConstants::$valid_class_names);
}
return $valid;
}
/**
* @param $filter_element
* @return bool
*/
private function validateTypes($filter_element){
if($filter_element instanceof FilterElement){
return in_array($filter_element->getValue(), PromoCodesConstants::getValidTypes());
}
$valid = true;
foreach($filter_element[0] as $elem){
$valid = $valid && in_array($elem->getValue(), PromoCodesConstants::getValidTypes());
} }
return $valid; return $valid;
} }
@ -141,6 +156,7 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle
'speaker_email' => ['=@', '=='], 'speaker_email' => ['=@', '=='],
'sponsor' => ['=@', '=='], 'sponsor' => ['=@', '=='],
'class_name' => ['=='], 'class_name' => ['=='],
'type' => ['=='],
]); ]);
} }
@ -162,7 +178,17 @@ final class OAuth2SummitPromoCodesApiController extends OAuth2ProtectedControlle
sprintf sprintf
( (
"class_name filter has an invalid value ( valid values are %s", "class_name filter has an invalid value ( valid values are %s",
implode(", ", PromoCodesValidClasses::$valid_class_names) implode(", ", PromoCodesConstants::$valid_class_names)
)
);
}
if($filter->hasFilter("type") && !$this->validateTypes($filter->getFilter("type"))){
throw new ValidationException(
sprintf
(
"type filter has an invalid value ( valid values are %s",
implode(", ", PromoCodesConstants::getValidTypes())
) )
); );
} }

View File

@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use App\Models\Foundation\Summit\PromoCodes\PromoCodesValidClasses; use App\Models\Foundation\Summit\PromoCodes\PromoCodesConstants;
use models\exceptions\ValidationException; use models\exceptions\ValidationException;
use models\summit\MemberSummitRegistrationPromoCode; use models\summit\MemberSummitRegistrationPromoCode;
use models\summit\SpeakerSummitRegistrationPromoCode; use models\summit\SpeakerSummitRegistrationPromoCode;
@ -33,12 +33,12 @@ final class PromoCodesValidationRulesFactory
$class_name = trim($data['class_name']); $class_name = trim($data['class_name']);
if(!in_array($class_name, PromoCodesValidClasses::$valid_class_names)){ if(!in_array($class_name, PromoCodesConstants::$valid_class_names)){
throw new ValidationException( throw new ValidationException(
sprintf sprintf
( (
"class_name param has an invalid value ( valid values are %s", "class_name param has an invalid value ( valid values are %s",
implode(", ", PromoCodesValidClasses::$valid_class_names) implode(", ", PromoCodesConstants::$valid_class_names)
) )
); );
} }

View File

@ -14,16 +14,22 @@
use models\summit\MemberSummitRegistrationPromoCode; use models\summit\MemberSummitRegistrationPromoCode;
use models\summit\SpeakerSummitRegistrationPromoCode; use models\summit\SpeakerSummitRegistrationPromoCode;
use models\summit\SponsorSummitRegistrationPromoCode; use models\summit\SponsorSummitRegistrationPromoCode;
/** /**
* Class PromoCodesValidClasses * Class PromoCodesValidClasses
* @package App\Models\Foundation\Summit\PromoCodes * @package App\Models\Foundation\Summit\PromoCodes
*/ */
final class PromoCodesValidClasses final class PromoCodesConstants
{ {
public static $valid_class_names = [ public static $valid_class_names = [
SpeakerSummitRegistrationPromoCode::ClassName, SpeakerSummitRegistrationPromoCode::ClassName,
SponsorSummitRegistrationPromoCode::ClassName, SponsorSummitRegistrationPromoCode::ClassName,
MemberSummitRegistrationPromoCode::ClassName, MemberSummitRegistrationPromoCode::ClassName,
]; ];
/**
* @return array
*/
public static function getValidTypes(){
return array_merge(MemberSummitRegistrationPromoCode::$valid_type_values, SpeakerSummitRegistrationPromoCode::$valid_type_values);
}
} }

View File

@ -88,6 +88,10 @@ class DoctrineSummitRegistrationPromoCodeRepository
( (
"(sprr.email :operator ':value' OR spmm.email :operator ':value')" "(sprr.email :operator ':value' OR spmm.email :operator ':value')"
), ),
'type' => new DoctrineFilterMapping
(
"(mpc.type :operator ':value' OR spkpc.type :operator ':value')"
),
'class_name' => new DoctrineInstanceOfFilterMapping( 'class_name' => new DoctrineInstanceOfFilterMapping(
"pc", "pc",
[ [