Completed
Push — master ( aa36ec...9b8ce8 )
by Bram
02:54
created

CheckInForm::doCheckIn()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 24
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 8.9713
c 0
b 0
f 0
cc 3
eloc 19
nc 3
nop 2
1
<?php
2
/**
3
 * CheckInForm.php
4
 *
5
 * @author Bram de Leeuw
6
 * Date: 07/04/17
7
 */
8
9
namespace Broarm\EventTickets;
10
11
use FieldList;
12
use Form;
13
use FormAction;
14
use RequiredFields;
15
use TextField;
16
17
class CheckInForm extends Form
18
{
19
    public function __construct($controller, $name = 'CheckInForm')
20
    {
21
        $fields = FieldList::create(
22
            TextField::create('TicketCode', _t('CheckInForm.TICKET_CODE', 'Ticket code'))
23
        );
24
25
        $actions = FieldList::create(
26
            FormAction::create('doCheckIn', _t('CheckInForm.CHECK_IN', 'Check in'))
27
        );
28
29
        $required = new RequiredFields(array('TicketCode'));
30
31
        parent::__construct($controller, $name, $fields, $actions, $required);
32
    }
33
34
    /**
35
     * Do the check in, if all checks pass return a success
36
     *
37
     * @param             $data
38
     * @param CheckInForm $form
39
     *
40
     * @return bool
41
     */
42
    public function doCheckIn($data, CheckInForm $form)
43
    {
44
        /** @var CheckInController $controller */
45
        $controller = $form->getController();
46
        $validator = CheckInValidator::create();
47
        $result = $validator->validate($data['TicketCode']);
48
        switch ($result['Code']) {
49
            default:
50
                $form->sessionMessage($result['Message'], strtolower($result['Type']), false);
51
                $controller->redirect($controller->Link());
52
                return false;
53
            case CheckInValidator::MESSAGE_CHECK_OUT_SUCCESS:
54
                $validator->getAttendee()->CheckedIn = false;
55
                break;
56
            case CheckInValidator::MESSAGE_CHECK_IN_SUCCESS:
57
                $validator->getAttendee()->CheckedIn = true;
58
                break;
59
        }
60
61
        $validator->getAttendee()->write();
62
        $form->sessionMessage($result['Message'], strtolower($result['Type']), false);
63
        $controller->redirect($controller->Link());
64
        return true;
65
    }
66
67
}