Skip to content

Commit 312f315

Browse files
committed
Default Account Addresses
1 parent daa2459 commit 312f315

File tree

6 files changed

+94
-4
lines changed

6 files changed

+94
-4
lines changed

config/container.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@
5454
$container->add(\App\Controller\Account\AccountController::class)
5555
->addArgument(\League\Plates\Engine::class)
5656
->addArgument(\App\Service\Authentication\AccountService::class)
57-
->addArgument(\App\Validation\Authentication\ChangePasswordValidation::class);
57+
->addArgument(\App\Validation\Authentication\ChangePasswordValidation::class)
58+
->addArgument(\App\Service\Authentication\AccountAddressService::class);
5859

5960
$container->add(\App\Controller\Account\SecurityController::class)
6061
->addArgument(\League\Plates\Engine::class)

src/App/Controller/Account/AccountController.php

+31-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use App\DTO\Account\ChangePasswordDTO;
66
use App\Http\HtmlResponse;
77
use App\Model\Authentication\Account;
8+
use App\Service\Authentication\AccountAddressService;
89
use App\Service\Authentication\AccountService;
910
use App\Validation\Authentication\ChangePasswordValidation;
1011
use League\Plates\Engine;
@@ -17,7 +18,8 @@
1718
public function __construct(
1819
private Engine $template,
1920
private AccountService $accountService,
20-
private ChangePasswordValidation $changePasswordValidation
21+
private ChangePasswordValidation $changePasswordValidation,
22+
private AccountAddressService $accountAddressService
2123
)
2224
{
2325
}
@@ -36,10 +38,13 @@ public function load(ServerRequestInterface $request): ResponseInterface
3638
}
3739
}
3840

41+
$accountAddresses = $this->accountAddressService->findAllAddressesByAccountId($account->getId());
42+
3943
return new HtmlResponse($this->template->render(
4044
'account/account',
4145
[
42-
'accountData' => $accountData
46+
'accountData' => $accountData,
47+
'addressList' => $accountAddresses
4348
]
4449
));
4550
}
@@ -81,6 +86,30 @@ public function update(Account $account): ?array
8186
$updateAccount->setSurname($_POST['accountUserLastname']);
8287
$updateAccount->setEmail($_POST['accountUserEmail']);
8388

89+
$updateAccount->setDefaultShippingAddress(null);
90+
if(!empty($_POST['accountUserDefaultShippingAddress']))
91+
{
92+
if($this->accountAddressService->findAddressByIdAndAccount(
93+
(int)$_POST['accountUserDefaultShippingAddress'],
94+
$updateAccount->getId()
95+
) !== NULL)
96+
{
97+
$updateAccount->setDefaultShippingAddress((int)$_POST['accountUserDefaultShippingAddress']);
98+
}
99+
}
100+
101+
$updateAccount->setDefaultInvoiceAddress(null);
102+
if(!empty($_POST['accountUserDefaultInvoiceAddress']))
103+
{
104+
if($this->accountAddressService->findAddressByIdAndAccount(
105+
(int)$_POST['accountUserDefaultInvoiceAddress'],
106+
$updateAccount->getId()
107+
) !== NULL)
108+
{
109+
$updateAccount->setDefaultInvoiceAddress((int)$_POST['accountUserDefaultInvoiceAddress']);
110+
}
111+
}
112+
84113
if ($this->accountService->updateAccount($updateAccount)) {
85114
return $this->accountService->findAccountById($account->getId());
86115
}

src/App/Model/Authentication/Account.php

+22
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ class Account
2323
private bool $admin;
2424
private bool $sendMailUnknownLogin;
2525
private bool $createdByOrganisation;
26+
private ?int $defaultShippingAddress;
27+
private ?int $defaultInvoiceAddress;
2628

2729
public function getId(): int
2830
{
@@ -184,4 +186,24 @@ public function setCreatedByOrganisation(bool $createdByOrganisation): void
184186
$this->createdByOrganisation = $createdByOrganisation;
185187
}
186188

189+
public function getDefaultShippingAddress(): ?int
190+
{
191+
return $this->defaultShippingAddress;
192+
}
193+
194+
public function setDefaultShippingAddress(?int $defaultShippingAddress): void
195+
{
196+
$this->defaultShippingAddress = $defaultShippingAddress;
197+
}
198+
199+
public function getDefaultInvoiceAddress(): ?int
200+
{
201+
return $this->defaultInvoiceAddress;
202+
}
203+
204+
public function setDefaultInvoiceAddress(?int $defaultInvoiceAddress): void
205+
{
206+
$this->defaultInvoiceAddress = $defaultInvoiceAddress;
207+
}
208+
187209
}

src/App/Table/Authentication/AccountTable.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ public function updateAccountInformation(Account $account): string|int|bool
4747
'business' => $account->getBusiness(),
4848
'active' => $account->isActive() ? 1 : 0,
4949
'isSupport' => $account->isSupport() ? 1 : 0,
50-
'isAdmin' => $account->isAdmin() ? 1 : 0
50+
'isAdmin' => $account->isAdmin() ? 1 : 0,
51+
'defaultShippingAddress' => $account->getDefaultShippingAddress(),
52+
'defaultInvoiceAddress' => $account->getDefaultInvoiceAddress()
5153
];
5254

5355
return $this->query->update($this->getTableName())->where('id', $account->getId())->set($value)->execute();

template/account/account.php

+34
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,40 @@
5050
</label>
5151
<input type="email" class="form-control" id="accountUserEmail" name="accountUserEmail" value="<?= $this->e($accountData['email']) ?>">
5252
</div>
53+
<div class="col-6 mb-3">
54+
<label for="accountUserDefaultShippingAddress" class="form-label">
55+
<?= $this->e($this->translate('account-settings-general-default-shipping-address')) ?>
56+
</label>
57+
<select id="accountUserDefaultShippingAddress" name="accountUserDefaultShippingAddress" class="form-select">
58+
<option value=""></option>
59+
<?php foreach ($addressList as $address): ?>
60+
<option value="<?= $address->getId() ?>"
61+
<?= $address->getId() == $accountData['defaultShippingAddress'] ? 'selected' : '' ?>>
62+
<b><?= $address->getFirstname() ?> <?= $address->getLastname() ?></b>:
63+
<?= $address->getStreet() ?> <?= $address->getHouseNumber() ?>,
64+
<?= $address->getZipCode() ?> <?= $address->getCity() ?>,
65+
<?= $address->getCountry() ?>
66+
</option>
67+
<?php endforeach; ?>
68+
</select>
69+
</div>
70+
<div class="col-6 mb-3">
71+
<label for="accountUserDefaultInvoiceAddress" class="form-label">
72+
<?= $this->e($this->translate('account-settings-general-default-invoice-address')) ?>
73+
</label>
74+
<select id="accountUserDefaultInvoiceAddress" name="accountUserDefaultInvoiceAddress" class="form-select">
75+
<option value=""></option>
76+
<?php foreach ($addressList as $address): ?>
77+
<option value="<?= $address->getId() ?>"
78+
<?= $address->getId() == $accountData['defaultInvoiceAddress'] ? 'selected' : '' ?>>
79+
<b><?= $address->getFirstname() ?> <?= $address->getLastname() ?></b>:
80+
<?= $address->getStreet() ?> <?= $address->getHouseNumber() ?>,
81+
<?= $address->getZipCode() ?> <?= $address->getCity() ?>,
82+
<?= $address->getCountry() ?>
83+
</option>
84+
<?php endforeach; ?>
85+
</select>
86+
</div>
5387

5488
<div class="col-3">
5589
<button type="button" class="btn btn-secondary w-100" data-bs-toggle="modal" data-bs-target="#accountSettingsChangePasswordModal">

translations/de.json

+2
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@
176176
"account-settings-general-firstname": "Vorname",
177177
"account-settings-general-lastname": "Nachname",
178178
"account-settings-general-email": "E-Mail Adresse",
179+
"account-settings-general-default-shipping-address": "Standard Lieferadresse",
180+
"account-settings-general-default-invoice-address": "Standard Rechnungsadresse",
179181
"account-settings-change-password-modal-title": "Passwort ändern",
180182
"account-settings-change-password-button": "Passwort ändern",
181183
"account-settings-change-password-old-password": "Altes Passwort",

0 commit comments

Comments
 (0)