Skip to content

Commit d10e25d

Browse files
committed
fix: query for owner email
Signed-off-by: smarcet@gmail.com <smarcet@gmail.com> Change-Id: Icae8de8f9640066f510d88539dd828357614ba83
1 parent 3d01339 commit d10e25d

3 files changed

Lines changed: 61 additions & 1 deletion

File tree

app/Http/Utils/Filters/Filter.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,13 @@ public function getFiltersKeyValues()
187187
// OR
188188
foreach ($filter as $e) {
189189
if ($e instanceof FilterElement) {
190-
if (!isset($res[$e->getField()])) $res[$e->getField()] = [];
190+
if (!isset($res[$e->getField()])){
191+
$res[$e->getField()] = [];
192+
}
193+
$former_filter_value = $res[$e->getField()];
194+
if(!is_array($former_filter_value)){
195+
$res[$e->getField()] = [$former_filter_value];
196+
}
191197
$res[$e->getField()][] = $e->getValue();
192198
}
193199
}

app/Repositories/Summit/DoctrineSummitRegistrationPromoCodeRepository.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,14 @@ public function getIdsBySummit
337337
Filter::buildConcatStringFields(["owr2.FirstName", "owr2.Surname"]),
338338
"owr2.FirstName :operator :value",
339339
"owr2.Surname :operator :value",
340+
Filter::buildConcatStringFields(["mpc.FirstName", "mpc.LastName"]),
341+
Filter::buildConcatStringFields(["mdc.FirstName", "mdc.LastName"]),
340342
],
341343
'owner_email' => [
342344
Filter::buildEmailField('owr.Email'),
343345
Filter::buildEmailField('owr2.Email'),
346+
Filter::buildEmailField('mpc.Email'),
347+
Filter::buildEmailField('mdc.Email'),
344348
],
345349
'speaker' => [
346350
Filter::buildConcatStringFields(["ps3.FirstName", "ps3.LastName"]),

tests/FilterParserTest.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
use App\Http\Utils\Filters\DoctrineInFilterMapping;
1717
use App\Http\Utils\Filters\DoctrineNotInFilterMapping;
18+
use App\Models\Foundation\Summit\PromoCodes\PromoCodesConstants;
19+
use App\Rules\Boolean;
1820
use Doctrine\ORM\Query\Expr\Join;
1921
use models\summit\Presentation;
2022
use models\summit\PresentationType;
@@ -755,4 +757,52 @@ public function testFilterRegistrationInvitations(){
755757
$this->assertEquals("SELECT DISTINCT e FROM models\summit\SummitRegistrationInvitation e WHERE ( ( e.hash is not null ) ) AND e.id NOT IN ( :value_1 ) AND e.id IN ( :value_2 )", $dql);
756758
$res = $query->getQuery()->getResult();
757759
}
760+
761+
public function testDuplicateCriteria(){
762+
$filter = FilterParser::parse([
763+
'owner_email==cespin+174@gmail.com',
764+
'code=@cespin+174@gmail.com,creator=@cespin+174@gmail.com,creator_email=@cespin+174@gmail.com,owner=@cespin+174@gmail.com,owner_email=@cespin+174@gmail.com,speaker=@cespin+174@gmail.com,speaker_email=@cespin+174@gmail.com,sponsor_company_name=@cespin+174@gmail.com'
765+
],
766+
[
767+
'code' => ['@@', '=@', '=='],
768+
'description' => ['@@', '=@'],
769+
'notes' => ['@@', '=@'],
770+
'creator' => ['@@', '=@', '=='],
771+
'creator_email' => ['@@', '=@', '=='],
772+
'owner' => ['@@', '=@', '=='],
773+
'owner_email' => ['@@', '=@', '=='],
774+
'speaker' => ['@@', '=@', '=='],
775+
'speaker_email' => ['@@', '=@', '=='],
776+
'class_name' => ['=='],
777+
'type' => ['=='],
778+
'tag' => ['@@','=@', '=='],
779+
'tag_id' => ['=='],
780+
'sponsor_company_name' => ['@@', '=@', '=='],
781+
'sponsor_id' => ['=='],
782+
'contact_email' => ['@@', '=@', '=='],
783+
'tier_name' => ['@@', '=@', '=='],
784+
'email_sent' => ['=='],
785+
]);
786+
787+
$filter->validate([
788+
'class_name' => sprintf('sometimes|required|in:%s', implode(',', PromoCodesConstants::$valid_class_names)),
789+
'code' => 'sometimes|string',
790+
'description' => 'sometimes|string',
791+
'notes' => 'sometimes|string',
792+
'creator' => 'sometimes|string',
793+
'creator_email' => 'sometimes|string',
794+
'owner' => 'sometimes|string',
795+
'owner_email' => 'sometimes|string',
796+
'speaker' => 'sometimes|string',
797+
'speaker_email' => 'sometimes|string',
798+
'type' => sprintf('sometimes|in:%s', implode(',', PromoCodesConstants::getValidTypes())),
799+
'tag' => 'sometimes|required|string',
800+
'tag_id' => 'sometimes|integer',
801+
'sponsor_company_name' => 'sometimes|string',
802+
'contact_email' => 'sometimes|string',
803+
'sponsor_id' => 'sometimes|integer',
804+
'tier_name' => 'sometimes|string',
805+
'email_sent' => ['sometimes', new Boolean()],
806+
]);
807+
}
758808
}

0 commit comments

Comments
 (0)