Passed
Push — master ( 82f4a5...a09b17 )
by Martin
17:51
created

TicketsController   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
A download() 0 21 3
A showTicket() 0 3 1
A showPurchase() 0 6 1
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Purchase;
6
use App\Ticket;
7
use App\User;
8
use Spipu\Html2Pdf\Html2Pdf;
9
use Spipu\Html2Pdf\Exception\Html2PdfException;
10
use Illuminate\Support\Facades\Log;
11
12
class TicketsController extends Controller
13
{
14
    protected $soldStates = ['paid', 'free', 'reserved'];
15
16
    /**
17
     * Show an overview of the given purchase
18
     */
19
    public function showPurchase(Purchase $purchase)
20
    {
21
        $mollie = User::firstWhere('email', '[email protected]');
22
        return view('ticketshop.purchase-success', [
23
            'purchase' => $purchase,
24
            'mollie'   => $mollie->id
25
        ]);
26
    }
27
28
    /**
29
     * Provide a purchase's tickets as a pdf download
30
     */
31
    public function download(Purchase $purchase)
32
    {
33
        if (!in_array($purchase->state, $this->soldStates)) {
34
            Log::warning('Someone tried to access unpaid tickets of purchase#' . $purchase->id);
35
            return redirect()->route('ts.events')->with('state', 'Error - Purchase has not been paid yet.');
36
        }
37
38
        try {
39
            $html2pdf = new HTML2PDF('P', 'A4', 'de', true, 'UTF-8', 0);
40
            $html2pdf->pdf->SetDisplayMode('fullpage');
41
            $html2pdf->pdf->SetAuthor(config('app.name'));
42
            $html2pdf->pdf->SetTitle('Purchase #' . $purchase->id);
43
44
            // Generate pdf-content by passing the tickets to the view
45
            $content = view('pdfs.ticket-v2', ['tickets' => $purchase->tickets])->render();
46
            $html2pdf->writeHTML($content);
47
48
            $html2pdf->output('tickets-' . $purchase->id . '.pdf');
49
        } catch (Html2PdfException $e) {
50
            $html2pdf->clean();
51
            return redirect()->route('ticket.purchase', ['purchase' => $purchase])->with('state', $e->getMessage());
52
        }
53
    }
54
55
    /**
56
     * Displays a page showing if a ticket is valid or already invalidated.
57
     */
58
    public function showTicket(Ticket $ticket)
59
    {
60
        return view('ticketshop.ticket', ['ticket' => $ticket]);
61
    }
62
}
63