Completed
Push — master ( eed8c4...bd454a )
by WEBEWEB
02:23
created

UserParser::parseLine()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 35

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 35
c 0
b 0
f 0
rs 9.36
cc 1
nc 1
nop 1
1
<?php
2
3
/*
4
 * This file is part of the core-library package.
5
 *
6
 * (c) 2018 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Library\Core\ThirdParty\SkiData\Parser;
13
14
use WBW\Library\Core\Argument\BooleanHelper;
15
use WBW\Library\Core\Argument\IntegerHelper;
16
use WBW\Library\Core\Exception\Argument\IntegerArgumentException;
17
use WBW\Library\Core\ThirdParty\SkiData\Exception\TooLongDataException;
18
use WBW\Library\Core\ThirdParty\SkiData\Model\User;
19
20
/**
21
 * User parser.
22
 *
23
 * @author webeweb <https://github.com/webeweb/>
24
 * @package WBW\Library\Core\ThirdParty\SkiData\Parser
25
 */
26
class UserParser extends AbstractParser {
27
28
    /**
29
     * Constructor.
30
     */
31
    public function __construct() {
32
        parent::__construct();
33
    }
34
35
    /**
36
     * Parse a user entity.
37
     *
38
     * @param User $entity The user.
39
     * @return string Returns the parsed user.
40
     * @throws TooLongDataException Throws a too long data exception if a data is too long.
41
     */
42
    public function parseEntity(User $entity) {
43
44
        $output = [
45
            $this->encodeInteger($entity->getUserNumber(), 9),
46
            $this->encodeInteger($entity->getCustomerNumber(), 9),
47
            $this->encodeString($entity->getTitle(), 10),
48
            $this->encodeString($entity->getSurname(), 25),
49
            $this->encodeString($entity->getFirstname(), 25),
50
            $this->encodeDate($entity->getDateBirth()),
51
            $this->encodeString($entity->getParkingSpace(), 5),
52
            $this->encodeString($entity->getRemarks(), 50),
53
            $this->encodeDateTime($entity->getDatetimeLastModification()),
54
            $this->encodeBoolean($entity->getDeletedRecord()),
55
            $this->encodeString($entity->getIdentificationNumber(), 20),
56
            $this->encodeBoolean($entity->getCheckLicensePlate()),
57
            $this->encodeBoolean($entity->getPassageLicensePlatePermitted()),
58
            $this->encodeBoolean($entity->getExcessTimesCreditCard()),
59
            $this->encodeString($entity->getCreditCardNumber(), 20),
60
            $this->encodeDate($entity->getExpiryDate()),
61
            $this->encodeString($entity->getRemarks2(), 50),
62
            $this->encodeString($entity->getRemarks3(), 50),
63
            $this->encodeString($entity->getDivision(), 50),
64
            $this->encodeString($entity->getEmail(), 120),
65
            $this->encodeBoolean($entity->getGroupCounting()),
66
            $this->encodeInteger($entity->getETicketTypeP(), 1),
67
            $this->encodeString($entity->getETicketEmailTelephone(), 120),
68
            $this->encodeInteger($entity->getETicketAuthentication(), 1),
69
            $this->encodeInteger($entity->getETicketServiceTyp(), 1),
70
            $this->encodeInteger($entity->getETicketServiceArt(), 1),
71
        ];
72
73
        return implode(";", $output);
74
    }
75
76
    /**
77
     * Parse a line.
78
     *
79
     * @param string $line The line.
80
     * @return User Returns a user.
81
     * @throws IntegerArgumentException Throws an integer argument exception.
82
     */
83
    public function parseLine($line) {
84
85
        $data = explode(";", $line);
86
        $i    = -1;
87
88
        $model = new User();
89
        $model->setUserNumber(IntegerHelper::parseString($data[++$i]));
90
        $model->setCustomerNumber(IntegerHelper::parseString($data[++$i]));
91
        $model->setTitle($this->decodeString($data[++$i]));
92
        $model->setSurname($this->decodeString($data[++$i]));
93
        $model->setFirstname($this->decodeString($data[++$i]));
94
        $model->setDateBirth($this->decodeDate($data[++$i]));
95
        $model->setParkingSpace($this->decodeString($data[++$i]));
96
        $model->setRemarks($this->decodeString($data[++$i]));
97
        $model->setDatetimeLastModification($this->decodeDateTime($data[++$i]));
98
        $model->setDeletedRecord(BooleanHelper::parseString($data[++$i]));
99
        $model->setIdentificationNumber($this->decodeString($data[++$i]));
100
        $model->setCheckLicensePlate(BooleanHelper::parseString($data[++$i]));
101
        $model->setPassageLicensePlatePermitted(BooleanHelper::parseString($data[++$i]));
102
        $model->setExcessTimesCreditCard(BooleanHelper::parseString($data[++$i]));
103
        $model->setCreditCardNumber($this->decodeString($data[++$i]));
104
        $model->setExpiryDate($this->decodeDate($data[++$i]));
105
        $model->setRemarks2($this->decodeString($data[++$i]));
106
        $model->setRemarks3($this->decodeString($data[++$i]));
107
        $model->setDivision($this->decodeString($data[++$i]));
108
        $model->setEmail($this->decodeString($data[++$i]));
109
        $model->setGroupCounting(BooleanHelper::parseString($data[++$i]));
110
        $model->setETicketTypeP(IntegerHelper::parseString($data[++$i]));
111
        $model->setETicketEmailTelephone($this->decodeString($data[++$i]));
112
        $model->setETicketAuthentication(IntegerHelper::parseString($data[++$i]));
113
        $model->setETicketServiceTyp(IntegerHelper::parseString($data[++$i]));
114
        $model->setETicketServiceArt(IntegerHelper::parseString($data[++$i]));
115
116
        return $model;
117
    }
118
}
119