diff --git a/Admin/Installer.php b/Admin/Installer.php index 2714226..bb690de 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -104,7 +104,7 @@ final class Installer extends InstallerAbstract $request->header->account = 1; $request->setData('name', $attribute['name'] ?? ''); - $request->setData('title', \reset($attribute['l11n'])); + $request->setData('content', \reset($attribute['l11n'])); $request->setData('language', \array_keys($attribute['l11n'])[0] ?? 'en'); $request->setData('repeatable', $attribute['repeatable'] ?? false); $request->setData('internal', $attribute['internal'] ?? false); @@ -136,9 +136,9 @@ final class Installer extends InstallerAbstract $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', $l11n); + $request->setData('content', $l11n); $request->setData('language', $language); - $request->setData('type', $unitAttrType[$attribute['name']]['id']); + $request->setData('ref', $unitAttrType[$attribute['name']]['id']); $module->apiUnitAttributeTypeL11nCreate($request, $response); } @@ -181,7 +181,7 @@ final class Installer extends InstallerAbstract $request->setData('type', $unitAttrType[$attribute['name']]['id']); if (isset($value['l11n']) && !empty($value['l11n'])) { - $request->setData('title', \reset($value['l11n'])); + $request->setData('content', \reset($value['l11n'])); $request->setData('language', \array_keys($value['l11n'])[0] ?? 'en'); } @@ -209,9 +209,9 @@ final class Installer extends InstallerAbstract $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', $l11n); + $request->setData('content', $l11n); $request->setData('language', $language); - $request->setData('value', $attrValue['id']); + $request->setData('ref', $attrValue['id']); $module->apiUnitAttributeValueL11nCreate($request, $response); } @@ -246,7 +246,7 @@ final class Installer extends InstallerAbstract $request->header->account = 1; $request->setData('name', $attribute['name'] ?? ''); - $request->setData('title', \reset($attribute['l11n'])); + $request->setData('content', \reset($attribute['l11n'])); $request->setData('language', \array_keys($attribute['l11n'])[0] ?? 'en'); $request->setData('repeatable', $attribute['repeatable'] ?? false); $request->setData('internal', $attribute['internal'] ?? false); @@ -278,9 +278,9 @@ final class Installer extends InstallerAbstract $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', $l11n); + $request->setData('content', $l11n); $request->setData('language', $language); - $request->setData('type', $addressAttrType[$attribute['name']]['id']); + $request->setData('ref', $addressAttrType[$attribute['name']]['id']); $module->apiAddressAttributeTypeL11nCreate($request, $response); } @@ -323,7 +323,7 @@ final class Installer extends InstallerAbstract $request->setData('type', $addressAttrType[$attribute['name']]['id']); if (isset($value['l11n']) && !empty($value['l11n'])) { - $request->setData('title', \reset($value['l11n'])); + $request->setData('content', \reset($value['l11n'])); $request->setData('language', \array_keys($value['l11n'])[0] ?? 'en'); } @@ -351,9 +351,9 @@ final class Installer extends InstallerAbstract $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', $l11n); + $request->setData('content', $l11n); $request->setData('language', $language); - $request->setData('value', $attrValue['id']); + $request->setData('ref', $attrValue['id']); $module->apiAddressAttributeValueL11nCreate($request, $response); } diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 501df01..b7a5c25 100755 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -185,7 +185,79 @@ return [ ], ], - '^.*/organization/find/unit(\?.*$|$)' => [ + '^.*/organization/unit/contact(\?.*|$)' => [ + [ + 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitContactCreate', + 'verb' => RouteVerb::PUT, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::UNIT, + ], + ], + [ + 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitContactUpdate', + 'verb' => RouteVerb::SET, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::UNIT, + ], + ], + [ + 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitContactDelete', + 'verb' => RouteVerb::DELETE, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::UNIT, + ], + ], + ], + + '^.*/organization/unit/address(\?.*|$)' => [ + [ + 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitAddressCreate', + 'verb' => RouteVerb::PUT, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::UNIT, + ], + ], + [ + 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitAddressUpdate', + 'verb' => RouteVerb::SET, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::UNIT, + ], + ], + [ + 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitAddressDelete', + 'verb' => RouteVerb::DELETE, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::UNIT, + ], + ], + ], + + '^.*/organization/unit/find(\?.*$|$)' => [ [ 'dest' => '\Modules\Organization\Controller\ApiController:apiUnitFind', 'verb' => RouteVerb::GET, @@ -198,7 +270,7 @@ return [ ], ], ], - '^.*/organization/find/department(\?.*$|$)' => [ + '^.*/organization/department/find(\?.*$|$)' => [ [ 'dest' => '\Modules\Organization\Controller\ApiController:apiDepartmentFind', 'verb' => RouteVerb::GET, @@ -211,7 +283,7 @@ return [ ], ], ], - '^.*/organization/find/position(\?.*$|$)' => [ + '^.*/organization/position/find(\?.*$|$)' => [ [ 'dest' => '\Modules\Organization\Controller\ApiController:apiPositionFind', 'verb' => RouteVerb::GET, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 1dec609..a3b81bf 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -17,9 +17,7 @@ namespace Modules\Organization\Controller; use Model\Setting; use Model\SettingMapper; use Modules\Admin\Models\AddressMapper; -use Modules\Admin\Models\Contact; use Modules\Admin\Models\ContactMapper; -use Modules\Admin\Models\ContactType; use Modules\Admin\Models\SettingsEnum as ModelsSettingsEnum; use Modules\Media\Models\PathSettings; use Modules\Organization\Models\Department; @@ -39,7 +37,6 @@ use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; -use phpOMS\Stdlib\Base\Address; use phpOMS\Stdlib\Base\NullAddress; use phpOMS\System\MimeType; use phpOMS\Utils\Parser\Markdown\Markdown; @@ -67,9 +64,9 @@ final class ApiController extends Controller { $val = []; if (($val['name'] = !$request->hasData('name')) - || ($val['parent'] = ( - $request->hasData('parent') - && !\is_numeric($request->getData('parent')) + || ($val['unit'] = ( + $request->hasData('unit') + && !\is_numeric($request->getData('unit')) )) || ($val['status'] = ( !$request->hasData('status') @@ -139,7 +136,7 @@ final class ApiController extends Controller $unit->descriptionRaw = $request->getDataString('description') ?? $unit->descriptionRaw; $unit->description = Markdown::parse($request->getDataString('description') ?? $unit->descriptionRaw); - $parent = $request->getDataInt('parent') ?? 0; + $parent = $request->getDataInt('unit') ?? 0; $unit->parent = $parent === 0 ? $unit->parent : new NullUnit($parent); $unit->status = Status::tryFromValue($request->getDataInt('status')) ?? $unit->status; @@ -314,10 +311,10 @@ final class ApiController extends Controller $unit->descriptionRaw = $request->getDataString('description') ?? ''; $unit->description = Markdown::parse($request->getDataString('description') ?? ''); - $unit->parent = new NullUnit((int) $request->getData('parent')); + $unit->parent = new NullUnit((int) $request->getData('unit')); $unit->status = Status::tryFromValue($request->getDataInt('status')) ?? Status::ACTIVE; - if ($request->hasData('address')) { + if ($request->hasData('address') || $request->hasData('legal')) { $request->setData('name', $request->getDataString('legal') ?? $request->getDataString('name'), true); $unit->mainAddress = $this->app->moduleManager->get('Admin', 'Api')->createAddressFromRequest($request); } @@ -325,6 +322,68 @@ final class ApiController extends Controller return $unit; } + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAddressCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + $address = $this->app->moduleManager->get('Admin', 'Api')->createAddressFromRequest($request); + $this->createModel($request->header->account, $address, AddressMapper::class, 'unit_address', $request->getOrigin()); + + $this->createModelRelation( + $request->header->account, + (int) $request->getData('unit'), + $address->id, + UnitMapper::class, 'address', '', $request->getOrigin() + ); + } + + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAddressUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + $this->app->moduleManager->get('Admin', 'Api')->apiAddressUpdate($request); + } + + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAddressDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + $this->app->moduleManager->get('Admin', 'Api')->apiAddressDelete($request); + } + /** * Routing end-point for application behavior. * @@ -382,9 +441,9 @@ final class ApiController extends Controller { $val = []; if (($val['name'] = !$request->hasData('name')) - || ($val['parent'] = ( - $request->hasData('parent') - && !\is_numeric($request->getData('parent')) + || ($val['position'] = ( + $request->hasData('position') + && !\is_numeric($request->getData('position')) )) || ($val['status'] = ( !$request->hasData('status') @@ -475,7 +534,7 @@ final class ApiController extends Controller $position->descriptionRaw = $request->getDataString('description') ?? $position->descriptionRaw; $position->description = Markdown::parse($request->getDataString('description') ?? $position->descriptionRaw); - $parent = (int) $request->getData('parent'); + $parent = (int) $request->getData('position'); $position->parent = empty($parent) ? $position->parent : new NullPosition($parent); $department = (int) $request->getData('department'); @@ -539,7 +598,7 @@ final class ApiController extends Controller $position->status = Status::tryFromValue($request->getDataInt('status')) ?? Status::ACTIVE; $position->descriptionRaw = $request->getDataString('description') ?? ''; $position->description = Markdown::parse($request->getDataString('description') ?? ''); - $position->parent = new NullPosition((int) $request->getData('parent')); + $position->parent = new NullPosition((int) $request->getData('position')); $position->department = new NullDepartment((int) $request->getData('department')); return $position; @@ -558,9 +617,9 @@ final class ApiController extends Controller { $val = []; if (($val['name'] = !$request->hasData('name')) - || ($val['parent'] = ( - $request->hasData('parent') - && !\is_numeric($request->getData('parent')) + || ($val['department'] = ( + $request->hasData('department') + && !\is_numeric($request->getData('department')) )) || ($val['unit'] = ( !\is_numeric($request->getData('unit')) @@ -629,7 +688,7 @@ final class ApiController extends Controller $department->descriptionRaw = $request->getDataString('description') ?? $department->descriptionRaw; $department->description = Markdown::parse($request->getDataString('description') ?? $department->descriptionRaw); - $parent = (int) $request->getData('parent'); + $parent = (int) $request->getData('department'); $department->parent = empty($parent) ? $department->parent : new NullDepartment($parent); $department->status = Status::tryFromValue($request->getDataInt('status')) ?? $department->status; @@ -713,7 +772,7 @@ final class ApiController extends Controller $department->name = (string) $request->getData('name'); $department->status = Status::tryFromValue($request->getDataInt('status')) ?? Status::ACTIVE; - $department->parent = new NullDepartment((int) $request->getData('parent')); + $department->parent = new NullDepartment((int) $request->getData('department')); $department->unit = new NullUnit($request->getDataInt('unit') ?? 1); $department->descriptionRaw = $request->getDataString('description') ?? ''; $department->description = Markdown::parse($request->getDataString('description') ?? ''); @@ -738,7 +797,7 @@ final class ApiController extends Controller { /** @var \Modules\Organization\Models\Unit[] $units */ $units = UnitMapper::getAll() - ->where('name', '%' . ($request->getDataString('search') ?? '') . '%', 'LIKE') + ->where('name', '%' . ($request->getDataString('unit') ?? '') . '%', 'LIKE') ->executeGetArray(); $response->header->set('Content-Type', MimeType::M_JSON, true); @@ -765,7 +824,7 @@ final class ApiController extends Controller { /** @var \Modules\Organization\Models\Department[] $departments */ $departments = DepartmentMapper::getAll() - ->where('name', '%' . ($request->getDataString('search') ?? '') . '%', 'LIKE') + ->where('name', '%' . ($request->getDataString('department') ?? '') . '%', 'LIKE') ->executeGetArray(); $response->header->set('Content-Type', MimeType::M_JSON, true); @@ -792,7 +851,7 @@ final class ApiController extends Controller { /** @var \Modules\Organization\Models\Position[] $positions */ $positions = PositionMapper::getAll() - ->where('name', '%' . ($request->getDataString('search') ?? '') . '%', 'LIKE') + ->where('name', '%' . ($request->getDataString('position') ?? '') . '%', 'LIKE') ->executeGetArray(); $response->header->set('Content-Type', MimeType::M_JSON, true); @@ -824,7 +883,7 @@ final class ApiController extends Controller return; } - $contact = $this->createUnitContactFromRequest($request); + $contact = $this->app->moduleManager->get('Admin', 'Api')->createContactFromRequest($request); $this->createModel($request->header->account, $contact, ContactMapper::class, 'unit_contact', $request->getOrigin()); $this->createModelRelation( @@ -837,6 +896,42 @@ final class ApiController extends Controller $this->createStandardCreateResponse($request, $response, $contact); } + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitContactUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + $this->app->moduleManager->get('Admin', 'Api')->apiContactUpdate($request); + } + + /** + * Routing end-point for application behavior. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitContactDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + $this->app->moduleManager->get('Admin', 'Api')->apiContactDelete($request); + } + /** * Validate contact element create request * @@ -858,24 +953,4 @@ final class ApiController extends Controller return []; } - - /** - * Method to create a account element from request. - * - * @param RequestAbstract $request Request - * - * @return Contact - * - * @since 1.0.0 - */ - public function createUnitContactFromRequest(RequestAbstract $request) : Contact - { - /** @var Contact $element */ - $element = new Contact(); - $element->type = ContactType::tryFromValue($request->getDataInt('type')) ?? ContactType::EMAIL; - $element->subtype = $request->getDataInt('subtype') ?? 0; - $element->content = $request->getDataString('content') ?? ''; - - return $element; - } } diff --git a/Theme/Backend/department-view.tpl.php b/Theme/Backend/department-view.tpl.php index 25fa8db..6a6b56f 100644 --- a/Theme/Backend/department-view.tpl.php +++ b/Theme/Backend/department-view.tpl.php @@ -39,12 +39,39 @@ echo $this->data['nav']->render(); ?>