Completed
Push — master ( 5eb386...0ffa73 )
by Martin
07:20
created

DashboardController   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 31
c 0
b 0
f 0
dl 0
loc 45
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A downloadOverview() 0 20 2
A dashboard() 0 20 3
1
<?php
2
3
namespace App\Http\Controllers\BoxOffice;
4
5
use App\Http\Controllers\Controller;
6
use App\Event;
7
use Spipu\Html2Pdf\Html2Pdf;
8
use Spipu\Html2Pdf\Exception\Html2PdfException;
9
use App\Purchase;
10
use Illuminate\Http\Request;
11
12
class DashboardController extends Controller
13
{
14
    public function dashboard()
15
    {
16
        $upcomingEvents = Event::where('end_date', '>', new \DateTime())->orderBy('start_date', 'ASC')->get();
17
        $openEvents = Event::where('end_date', '>', new \DateTime())->get();
18
        $mySales = Purchase::where('vendor_id', auth()->user()->id)->where('state', 'paid')->get();
19
        $totalSales = $mySales->count();
20
        $allSales = Purchase::where('state', 'paid')->count();
21
        $marketShare = round($totalSales * 100 / ($allSales > 0 ? $allSales : 1)); // Prevent a division by zero
22
23
        $myTurnOver = 0;
24
        foreach ($mySales as $purchase) {
25
            $myTurnOver += $purchase->total();
26
        }
27
28
        return view('boxoffice.dashboard', [
29
            'upcomingEvents' => $upcomingEvents,
30
            'openEvents' => $openEvents,
31
            'marketShare' => $marketShare,
32
            'totalSales' => $totalSales,
33
            'myTurnOver' => $myTurnOver
34
        ]);
35
    }
36
37
    public function downloadOverview(Event $event)
38
    {
39
        $tickets = $event->tickets()->orderBy('id', 'ASC')->get();
40
41
        try {
42
            $html2pdf = new HTML2PDF('P', 'A4', 'de', true, 'UTF-8', [20, 20, 20, 20]);
43
            $html2pdf->pdf->SetDisplayMode('fullpage');
44
            $html2pdf->pdf->SetAuthor(config('app.name'));
45
            $html2pdf->pdf->SetTitle('Ticket Overview');
46
47
            $content = view('pdfs.event', [
48
                'event' => $event,
49
                'tickets' => $tickets
50
            ])->render();
51
            $html2pdf->writeHTML($content);
52
53
            $html2pdf->output('overview-event-' . $event->id . '.pdf');
54
        } catch (Html2PdfException $exc) {
55
            $html2pdf->clean();
56
            return redirect()->route('boxoffice.dashboard')->with('state', $exc);
57
        }
58
    }
59
}
60