AnalyticController   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 27
c 2
b 0
f 0
dl 0
loc 49
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A downloadCSV() 0 5 1
A downloadHelgaMetrics() 0 5 1
A dashboard() 0 31 3
1
<?php
2
3
namespace App\Http\Controllers\Supervision;
4
5
use App\Http\Controllers\Controller;
6
use App\Event;
7
use App\Purchase;
8
use App\Project;
9
use App\Ticket;
10
11
class AnalyticController extends Controller
12
{
13
14
    public function dashboard()
15
    {
16
        $projects = Project::where('is_archived', 0)->get();
17
18
        $events = Event::whereIn('project_id', $projects->pluck('id'))->get();
19
        $totalEvents = $events->count();
20
21
        $totalSeats = 0;
22
        foreach ($events as $event) {
23
            $totalSeats += $event->seatMap->seats;
24
        }
25
        // Only fetch the purchase_ids for filtering the later query for relevant purchases
26
        $tickets = Ticket::whereIn('event_id', $events->pluck('id'))->pluck('purchase_id');
27
        $soldTickets = $tickets->count();
28
        $load = round(($soldTickets / $totalSeats) * 100, 0);
29
30
        // Prefilter the purchases on the filtered tickets
31
        $sales = Purchase::whereIn('id', $tickets)->where('state', 'paid')->get();
32
        $totalSales = $sales->count();
33
34
        $turnover = 0;
35
        foreach ($sales as $purchase) {
36
            $turnover += $purchase->total();
37
        }
38
39
        return view('supervision.dashboard', [
40
            'projects' => $projects,
41
            'totalEvents' => $totalEvents,
42
            'totalSales' => $totalSales,
43
            'turnover' => $turnover,
44
            'load' => $load,
45
        ]);
46
    }
47
48
    public function downloadCSV(Project $project)
49
    {
50
        return response()->streamDownload(function () use ($project) {
51
            echo view('csvs.tickets', ['events' => $project->events])->render();
52
        }, 'export.csv');
53
    }
54
55
    public function downloadHelgaMetrics(Project $project)
56
    {
57
        return response()->streamDownload(function() use ($project) {
58
            echo view('csvs.helga-metrics', ['data' => $project->getHelgaMetrics()])->render();
59
        }, 'helgaMetrics.csv');
60
    }
61
}
62