sprintf('required|in:%s', implode(",", SummitLocationConstants::$valid_class_names)) ]; switch($data['class_name']){ case SummitVenue::ClassName: { return array_merge($base_rules, SummitVenueValidationRulesFactory::build($data, $update)); } break; case SummitAirport::ClassName: { return array_merge($base_rules, SummitAirportValidationRulesFactory::build($data, $update)); } break; case SummitHotel::ClassName: { return array_merge($base_rules, SummitHotelValidationRulesFactory::build($data, $update)); } break; case SummitExternalLocation::ClassName: { return array_merge(SummitExternalLocationValidationRulesFactory::build($data, $update)); } case SummitVenueRoom::ClassName: { return array_merge(SummitVenueRoomValidationRulesFactory::build($data, $update)); } break; default:{ throw new ValidationException('invalid class_name param'); } break; } return []; } }