mirror of
https://github.com/Karaka-Management/oms-Profile.git
synced 2026-02-08 03:48:41 +00:00
impl. profile contact elements and addresses
This commit is contained in:
parent
3b7a7d7c3f
commit
526236d8c7
|
|
@ -15,12 +15,18 @@ declare(strict_types=1);
|
|||
namespace Modules\Profile\Controller;
|
||||
|
||||
use Modules\Admin\Models\AccountMapper;
|
||||
use Modules\Media\Models\PathSettings;
|
||||
use Modules\Profile\Models\ContactElementMapper;
|
||||
use Modules\Profile\Models\Profile;
|
||||
use Modules\Profile\Models\ProfileMapper;
|
||||
use phpOMS\Message\Http\RequestStatusCode;
|
||||
use phpOMS\Message\NotificationLevel;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use Modules\Profile\Models\ContactElement;
|
||||
use phpOMS\Model\Message\FormValidation;
|
||||
use Modules\Admin\Models\Address;
|
||||
use Modules\Admin\Models\AddressMapper;
|
||||
|
||||
/**
|
||||
* Profile class.
|
||||
|
|
@ -154,8 +160,11 @@ final class ApiController extends Controller
|
|||
$request->getData('name') ?? '',
|
||||
$uploadedFiles,
|
||||
$request->getHeader()->getAccount(),
|
||||
'Modules/Media/Files',
|
||||
'/Accounts/' . $request->getHeader()->getAccount()
|
||||
'Modules/Media/Files/Accounts/' . $profile->getAccount()->getId() . ' ' . $profile->getAccount()->getName(),
|
||||
'/Accounts/' . $profile->getAccount()->getId() . ' ' . $profile->getAccount()->getName(),
|
||||
'',
|
||||
'',
|
||||
PathSettings::FILE_PATH
|
||||
);
|
||||
|
||||
$profile->setImage(\reset($uploaded));
|
||||
|
|
@ -163,4 +172,159 @@ final class ApiController extends Controller
|
|||
$this->updateModel($request->getHeader()->getAccount(), $old, $profile, ProfileMapper::class, 'profile', $request->getOrigin());
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Profile', 'Profile successfully updated', $profile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Routing end-point for application behaviour.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiContactElementCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateContactElementCreate($request))) {
|
||||
$response->set('contact_element_create', new FormValidation($val));
|
||||
$response->getHeader()->setStatusCode(RequestStatusCode::R_400);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var Profile $profile */
|
||||
$profile = (int) ($request->getData('profile') ?? ProfileMapper::getFor($request->getData('account'), 'account')->getId());
|
||||
|
||||
$contactElement = $this->createContactElementFromRequest($request);
|
||||
|
||||
$this->createModel($request->getHeader()->getAccount(), $contactElement, ContactElementMapper::class, 'profile-contactElement', $request->getOrigin());
|
||||
$this->createModelRelation($request->getHeader()->getAccount(), $profile, $contactElement->getId(), ProfileMapper::class, 'contactElements', '', $request->getOrigin());
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Contact Element', 'Contact element successfully created', $contactElement);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate contact element create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateContactElementCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['account'] = (empty($request->getData('account')) && empty($request->getData('profile'))))
|
||||
|| ($val['type'] = !\is_numeric($request->getData('type')))
|
||||
|| ($val['content'] = empty($request->getData('content')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create a contact element from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return ContactElement
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createContactElementFromRequest(RequestAbstract $request) : ContactElement
|
||||
{
|
||||
/** @var ContactElement $element */
|
||||
$element = new ContactElement();
|
||||
$element->setType((int) ($request->getData('type') ?? 0));
|
||||
$element->setSubtype((int) ($request->getData('subtype') ?? 0));
|
||||
$element->setContent((string) ($request->getData('content') ?? ''));
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Routing end-point for application behaviour.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiAddressCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateAddressCreate($request))) {
|
||||
$response->set('address_create', new FormValidation($val));
|
||||
$response->getHeader()->setStatusCode(RequestStatusCode::R_400);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var Profile $profile */
|
||||
$profile = (int) ($request->getData('profile') ?? ProfileMapper::getFor($request->getData('account'), 'account')->getId());
|
||||
|
||||
$address = $this->createAddressFromRequest($request);
|
||||
|
||||
$this->createModel($request->getHeader()->getAccount(), $address, AddressMapper::class, 'profile-address', $request->getOrigin());
|
||||
$this->createModelRelation($request->getHeader()->getAccount(), $profile, $address->getId(), ProfileMapper::class, 'location', '', $request->getOrigin());
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Address', 'Address successfully created', $address);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate contact element create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateAddressCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['account'] = (empty($request->getData('account')) && empty($request->getData('profile'))))
|
||||
|| ($val['type'] = !\is_numeric($request->getData('type')))
|
||||
|| ($val['country'] = empty($request->getData('country')))
|
||||
|| ($val['city'] = empty($request->getData('city')))
|
||||
|| ($val['address'] = empty($request->getData('address')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create a contact element from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return Address
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createAddressFromRequest(RequestAbstract $request) : Address
|
||||
{
|
||||
/** @var Address $element */
|
||||
$element = new Address();
|
||||
$element->setName((string) ($request->getData('name') ?? ''));
|
||||
$element->setAddition((string) ($request->getData('addition') ?? ''));
|
||||
$element->setPostal((string) ($request->getData('postal') ?? ''));
|
||||
$element->setCity((string) ($request->getData('city') ?? ''));
|
||||
$element->setAddress((string) ($request->getData('address') ?? ''));
|
||||
$element->setCountry((string) ($request->getData('country') ?? ''));
|
||||
$element->setState((string) ($request->getData('state') ?? ''));
|
||||
$element->setType((int) ($request->getData('type') ?? 0));
|
||||
|
||||
return $element;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,4 +87,15 @@ return ['Profile' => [
|
|||
'Volume' => 'Volume',
|
||||
'Weight' => 'Weight',
|
||||
'Zip' => 'Zip',
|
||||
'cType1' => 'Phone',
|
||||
'cType2' => 'Fax',
|
||||
'cType3' => 'Website',
|
||||
'cType4' => 'Email',
|
||||
'aType1' => 'Home',
|
||||
'aType2' => 'Business',
|
||||
'aType3' => 'Shipping',
|
||||
'aType4' => 'Billing',
|
||||
'aType5' => 'Work',
|
||||
'aType6' => 'Contract',
|
||||
'aType7' => 'Other',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
declare(strict_types=1);
|
||||
|
||||
use Modules\Media\Models\NullMedia;
|
||||
use phpOMS\Localization\ISO3166NameEnum;
|
||||
use phpOMS\Localization\ISO3166TwoEnum;
|
||||
use phpOMS\Uri\UriFactory;
|
||||
|
||||
/** @var \phpOMS\Views\View $this */
|
||||
|
|
@ -20,21 +22,6 @@ use phpOMS\Uri\UriFactory;
|
|||
$profile = $this->getData('account');
|
||||
$media = $this->getDatA('media') ?? [];
|
||||
|
||||
$countryCodes = \phpOMS\Localization\ISO3166TwoEnum::getConstants();
|
||||
$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants();
|
||||
$timezones = \phpOMS\Localization\TimeZoneEnumArray::getConstants();
|
||||
$timeformats = \phpOMS\Localization\ISO8601EnumArray::getConstants();
|
||||
$languages = \phpOMS\Localization\ISO639Enum::getConstants();
|
||||
$currencies = \phpOMS\Localization\ISO4217Enum::getConstants();
|
||||
$l11nDefinitions = \phpOMS\System\File\Local\Directory::list(__DIR__ . '/../../../../phpOMS/Localization/Defaults/Definitions');
|
||||
|
||||
$weights = \phpOMS\Utils\Converter\WeightType::getConstants();
|
||||
$speeds = \phpOMS\Utils\Converter\SpeedType::getConstants();
|
||||
$areas = \phpOMS\Utils\Converter\AreaType::getConstants();
|
||||
$lengths = \phpOMS\Utils\Converter\LengthType::getConstants();
|
||||
$volumes = \phpOMS\Utils\Converter\VolumeType::getConstants();
|
||||
$temperatures = \phpOMS\Utils\Converter\TemperatureType::getConstants();
|
||||
|
||||
$account = $profile->getAccount();
|
||||
$l11n = $account->getL11n();
|
||||
|
||||
|
|
@ -105,12 +92,20 @@ echo $this->getData('nav')->render();
|
|||
<tr>
|
||||
<th>
|
||||
<td>No address specified
|
||||
<?php endif; ?>
|
||||
<?php foreach ($locations as $location) : ?>
|
||||
<tr>
|
||||
<th class="vT">Private
|
||||
<td itemprop="address">SMALLSYS INC<br>795 E DRAGRAM<br>TUCSON AZ 85705<br>USA
|
||||
<?php endforeach; ?>
|
||||
<?php else: foreach($locations as $location) : ?>
|
||||
<tr>
|
||||
<th><?= $this->getHtml('aType' . $location->getType()); ?>
|
||||
<td>
|
||||
<tr>
|
||||
<th>
|
||||
<td><?= $this->printHtml($location->getAddress()); ?>
|
||||
<tr>
|
||||
<th>
|
||||
<td><?= $this->printHtml($location->getPostal() . ', ' . $location->getCity()); ?>
|
||||
<tr>
|
||||
<th>
|
||||
<td><?= $this->printHtml(ISO3166NameEnum::getByName(ISO3166TwoEnum::getName($location->getCountry()))); ?>
|
||||
<?php endforeach; endif; ?>
|
||||
<tr>
|
||||
<th><?= $this->getHtml('Contact'); ?>
|
||||
<td>
|
||||
|
|
@ -121,12 +116,11 @@ echo $this->getData('nav')->render();
|
|||
<tr>
|
||||
<th>
|
||||
<td>No contact specified
|
||||
<?php endif; ?>
|
||||
<?php foreach ($contacts as $location) : ?>
|
||||
<tr>
|
||||
<th>Private
|
||||
<td itemprop="telephone">+01 12345-4567
|
||||
<?php endforeach; ?>
|
||||
<?php else: foreach($contacts as $contact) : ?>
|
||||
<tr>
|
||||
<th><?= $this->getHtml('cType' . $contact->getType()); ?>
|
||||
<td><?= $contact->getContent(); ?>
|
||||
<?php endforeach; endif; ?>
|
||||
<tr>
|
||||
<th><?= $this->getHtml('Registered'); ?>
|
||||
<td><?= $this->printHtml($account->getCreatedAt()->format('Y-m-d')); ?>
|
||||
|
|
@ -155,7 +149,22 @@ echo $this->getData('nav')->render();
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($this->request->getHeader()->getAccount() === $account->getId()) : ?>
|
||||
<?php if ($this->request->getHeader()->getAccount() === $account->getId()) :
|
||||
$countryCodes = \phpOMS\Localization\ISO3166TwoEnum::getConstants();
|
||||
$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants();
|
||||
$timezones = \phpOMS\Localization\TimeZoneEnumArray::getConstants();
|
||||
$timeformats = \phpOMS\Localization\ISO8601EnumArray::getConstants();
|
||||
$languages = \phpOMS\Localization\ISO639Enum::getConstants();
|
||||
$currencies = \phpOMS\Localization\ISO4217Enum::getConstants();
|
||||
$l11nDefinitions = \phpOMS\System\File\Local\Directory::list(__DIR__ . '/../../../../phpOMS/Localization/Defaults/Definitions');
|
||||
|
||||
$weights = \phpOMS\Utils\Converter\WeightType::getConstants();
|
||||
$speeds = \phpOMS\Utils\Converter\SpeedType::getConstants();
|
||||
$areas = \phpOMS\Utils\Converter\AreaType::getConstants();
|
||||
$lengths = \phpOMS\Utils\Converter\LengthType::getConstants();
|
||||
$volumes = \phpOMS\Utils\Converter\VolumeType::getConstants();
|
||||
$temperatures = \phpOMS\Utils\Converter\TemperatureType::getConstants();
|
||||
?>
|
||||
<input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->getUri()->getFragment() === 'c-tab-2' ? ' checked' : ''; ?>>
|
||||
<div class="tab">
|
||||
<div class="row">
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user