Skip to content

Commit 15eddab

Browse files
committed
And/Or Filters
* added new filter is_printable(boolean) for GET api/v1/summits/{id}/tickets GET api/v1/summits/{id}/tickets/csv Change-Id: I5e22d69825da450aea2b68e40bdb001d1425b539 And/Or filter * fixed order on where is applied the extra filters Change-Id: I66503dea1c703fb88d49ba4275c3ee45ab46ec7d And/Or filters * fixed attendee ticket ammount filter Change-Id: I8ebf0e43cf0f60a21a11b5b319607d33a8aa3149
1 parent c4c6001 commit 15eddab

3 files changed

Lines changed: 33 additions & 12 deletions

File tree

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use App\Models\Foundation\Summit\Registration\ISummitExternalRegistrationFeedType;
1717
use App\ModelSerializers\ISummitAttendeeTicketSerializerTypes;
1818
use App\ModelSerializers\SerializerUtils;
19+
use App\Rules\Boolean;
1920
use App\Services\Model\ISummitOrderService;
2021
use Illuminate\Http\Request as LaravelRequest;
2122
use Illuminate\Support\Facades\Request;
@@ -120,6 +121,7 @@ function () {
120121
'promo_code_tag_id' => ['=='],
121122
'promo_code_tag' => ['==', '@@', '=@'],
122123
'final_amount' => ['==', '<>', '>=', '>'],
124+
'is_printable' => ['=='],
123125
];
124126
},
125127
function () {
@@ -150,6 +152,7 @@ function () {
150152
'promo_code_tag_id' => 'sometimes|integer',
151153
'promo_code_tag' => 'sometimes|string',
152154
'final_amount' => 'sometimes|numeric',
155+
'is_printable' => ['sometimes', new Boolean()],
153156
];
154157
},
155158
function () {
@@ -258,6 +261,7 @@ function () {
258261
'promo_code_tag_id' => ['=='],
259262
'promo_code_description' => ['@@', '=@'],
260263
'final_amount' => ['==', '<>', '>=', '>'],
264+
'is_printable' => ['=='],
261265
];
262266
},
263267
function () {
@@ -288,6 +292,7 @@ function () {
288292
'promo_code_description' => 'sometimes|string',
289293
'promo_code_tag_id' => 'sometimes|integer',
290294
'final_amount' => 'sometimes|numeric',
295+
'is_printable' => ['sometimes', new Boolean()],
291296
];
292297
},
293298
function () {

app/Repositories/DoctrineRepository.php

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,12 @@ protected function getParametrizedAllByPage
151151

152152
$query = $this->applyExtraJoins($query, $filter);
153153

154-
$query = $this->applyExtraFilters($query);
155-
156154
if(!is_null($filter)){
157155
$filter->apply2Query($query, $this->getFilterMappings($filter));
158156
}
159157

158+
$query = $this->applyExtraFilters($query);
159+
160160
if(!is_null($order)){
161161
$order->apply2Query($query, $this->getOrderMappings($filter));
162162
}
@@ -199,20 +199,21 @@ public function getParametrizedAllIdsByPage(callable $fnQuery,PagingInfo $paging
199199

200200
$query = $this->applyExtraJoins($query, $filter);
201201

202-
$query = $this->applyExtraFilters($query);
202+
;
203203

204204
if(!is_null($filter)){
205205
$filter->apply2Query($query, $this->getFilterMappings($filter));
206206
}
207+
else if(!is_null($fnDefaultFilter)){
208+
$query = call_user_func($fnDefaultFilter, $query);
209+
}
210+
211+
$query = $this->applyExtraFilters($query);
207212

208213
if(!is_null($order)){
209214
$order->apply2Query($query, $this->getOrderMappings($filter));
210215
}
211216

212-
else if(!is_null($fnDefaultFilter)){
213-
$query = call_user_func($fnDefaultFilter, $query);
214-
}
215-
216217
$query = $query
217218
->setFirstResult($paging_info->getOffset())
218219
->setMaxResults($paging_info->getPerPage());
@@ -235,12 +236,12 @@ public function getAllByPage(PagingInfo $paging_info, Filter $filter = null, Ord
235236

236237
$query = $this->applyExtraJoins($query, $filter);
237238

238-
$query = $this->applyExtraFilters($query);
239-
240239
if(!is_null($filter)){
241240
$filter->apply2Query($query, $this->getFilterMappings($filter));
242241
}
243242

243+
$query = $this->applyExtraFilters($query);
244+
244245
if(!is_null($order)){
245246
$order->apply2Query($query, $this->getOrderMappings($filter));
246247
}
@@ -282,12 +283,12 @@ public function getAllIdsByPage(PagingInfo $paging_info, Filter $filter = null,
282283

283284
$query = $this->applyExtraJoins($query, $filter);
284285

285-
$query = $this->applyExtraFilters($query);
286-
287286
if(!is_null($filter)){
288287
$filter->apply2Query($query, $this->getFilterMappings($filter));
289288
}
290289

290+
$query = $this->applyExtraFilters($query);
291+
291292
if(!is_null($order)){
292293
$order->apply2Query($query, $this->getOrderMappings($filter));
293294
}

app/Repositories/Summit/DoctrineSummitAttendeeTicketRepository.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414

1515
use Doctrine\DBAL\LockMode;
1616
use Doctrine\ORM\QueryBuilder;
17+
use Google\Service\AccessContextManager\AccessLevel;
1718
use models\summit\IOrderConstants;
1819
use models\summit\ISummitAttendeeTicketRepository;
1920
use models\summit\ISummitRefundRequestConstants;
2021
use models\summit\Summit;
22+
use models\summit\SummitAccessLevelType;
2123
use models\summit\SummitAttendeeTicket;
2224
use App\Repositories\SilverStripeDoctrineRepository;
2325
use models\summit\SummitAttendeeTicketRefundRequest;
@@ -129,7 +131,20 @@ protected function getFilterMappings()
129131
]
130132
),
131133
'owner_status' => 'a.status',
132-
'final_amount' => new DoctrineHavingFilterMapping("", "e.id", "((e.raw_cost + SUM(COALESCE(ta.amount, 0))) - e.discount) :operator :value"),
134+
'final_amount' => "(e.raw_cost - e.discount) :operator :value)",
135+
'is_printable' =>
136+
new DoctrineSwitchFilterMapping([
137+
'1' => new DoctrineCaseFilterMapping(
138+
'true',
139+
sprintf("e.is_active = 1 and al.name = '%s'", SummitAccessLevelType::IN_PERSON),
140+
),
141+
'0' => new DoctrineCaseFilterMapping(
142+
'false',
143+
sprintf("not(e.is_active = 1 and al.name = '%s')", SummitAccessLevelType::IN_PERSON),
144+
),
145+
]
146+
),
147+
133148
];
134149
}
135150

0 commit comments

Comments
 (0)