1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
<?php
class WithdrawalAccessRepository implements WithdrawalAccessRepositoryInterface
{
private $factory;
private $reader;
public function __construct(WithdrawalFactory $factory, WithdrawalReaderInterface $reader)
{
$this->factory = $factory;
$this->reader = $reader;
}
public function getAll()
{
$rawData = $this->reader->getAll();
$collection = $this->factory->createCollection();
foreach($rawData as $data)
{
$withdrawal = $this->factory->createEntity();
$withdrawal->setWithdrawalId(new IdType($data['id']));
$withdrawal->setWithdrawalDate(new DateTime($data['date']));
$withdrawal->setWithdrawalContent(new StringType($data['content']));
$withdrawal->setDateCreated(new DateTime($data['dateCreated']));
$withdrawal->setCreatedByAdmin(new BoolType($data['createdByAdmin']));
$withdrawal->setWithdrawalOrder($this->_createOrder($data['order']));
$collection->addItem($withdrawal);
}
return $collection;
}
public function getById(IdType $withdrawalId)
{
$data = $this->reader->getById($withdrawalId);
$withdrawal = $this->factory->createEntity();
$withdrawal->setWithdrawalId($withdrawalId);
$withdrawal->setWithdrawalDate(new DateTime($data['date']));
$withdrawal->setWithdrawalContent(new StringType($data['content']));
$withdrawal->setDateCreated(new DateTime($data['dateCreated']));
$withdrawal->setCreatedByAdmin(new BoolType($data['createdByAdmin']));
$withdrawal->setWithdrawalOrder($this->_createOrder($data['order']));
return $withdrawal;
}
private function _createOrder(array $dataSet)
{
return $this->factory->createOrder(new IntType($dataSet['orderId']), new IntType($dataSet['customerId']),
new StringType($dataSet['gender']), new StringType($dataSet['firstName']),
new StringType($dataSet['lastName']), new StringType($dataSet['address']),
new IntType($dataSet['postCode']), new StringType($dataSet['city']),
new StringType($dataSet['country']), new StringType($dataSet['email']),
new DateTime($dataSet['orderDate']), new DateTime($dataSet['deliveryDate']));
}
}