-
Notifications
You must be signed in to change notification settings - Fork 195
/
Copy pathCampaignsData.php
48 lines (42 loc) · 1.12 KB
/
CampaignsData.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
namespace Give\Tracking\TrackingData;
use Give\Campaigns\Models\Campaign;
use Give\Framework\Database\DB;
use Give\Tracking\Contracts\TrackData;
use Give\Tracking\Repositories\TrackEvents;
/**
* @unreleased
*/
class CampaignsData implements TrackData
{
/**
* @var TrackEvents
*/
protected $trackEvents;
/**
* DonationFormsData constructor.
*
* @param TrackEvents $trackEvents
*/
public function __construct(TrackEvents $trackEvents)
{
$this->trackEvents = $trackEvents;
}
/**
* @inheritdoc
*/
public function get()
{
$query = Campaign::query()
->select('count(forms.form_id) as formCount')
->leftJoin('give_campaign_forms', 'campaigns.id', 'forms.campaign_id', 'forms')
->groupBy('campaigns.id');
return array_map(function($campaign) {
return [
'campaign_id' => $campaign->id,
'campaign_status' => $campaign->status,
'campaign_form_count' => $campaign->formCount,
];
}, DB::get_results($query->getSQL()));
}
}