mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
90 lines
2.8 KiB
PHP
90 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Settings\ControllersLogic;
|
|
|
|
|
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
use App\Classes\Modules\Accounts\DataTransferObjects\KeyValuePairObject;
|
|
use App\Classes\Modules\ServiceTypes\Standards\Rules\CanUpdateServiceType;
|
|
use App\Classes\Modules\Settings\Services\CreatesKeyValuePair;
|
|
use App\Classes\Modules\Settings\Services\UpdatesKeyValuePair;
|
|
use App\Http\Resources\LockResource;
|
|
use App\Models\KeyValuePair;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class UpdateLockLogic extends AbstractControllerLogic
|
|
{
|
|
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function notification():array {
|
|
return [
|
|
'title' => 'Updated Lock Status',
|
|
'message' => 'You have successfully updated the Lock status'
|
|
];
|
|
}
|
|
|
|
// /** @var CanUpdateServiceType */
|
|
// private $canUpdateServiceType;
|
|
|
|
/** @var CreatesKeyValuePair */
|
|
private $createsKeyValuePair;
|
|
|
|
/** @var UpdatesKeyValuePair */
|
|
private $updatesKeyValuePair;
|
|
|
|
/**
|
|
* UpdateLockLogic constructor.
|
|
* @param CanUpdateServiceType $canUpdateServiceType
|
|
* @param CreatesKeyValuePair $createsKeyValuePair
|
|
* @param UpdatesKeyValuePair $updatesKeyValuePair
|
|
*/
|
|
public function __construct(CanUpdateServiceType $canUpdateServiceType, CreatesKeyValuePair $createsKeyValuePair, UpdatesKeyValuePair $updatesKeyValuePair)
|
|
{
|
|
// $this->canUpdateServiceType = $canUpdateServiceType;
|
|
$this->createsKeyValuePair = $createsKeyValuePair;
|
|
$this->updatesKeyValuePair = $updatesKeyValuePair;
|
|
}
|
|
|
|
/**
|
|
* @param Request $request
|
|
* @return JsonResponse
|
|
* @throws \App\Classes\Exceptions\AccessForbiddenException
|
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
* @throws \App\Classes\Exceptions\RequestValidationException
|
|
*/
|
|
public function logic(Request $request) : JsonResponse
|
|
{
|
|
// cief todo: 110 - CanUpdateLock
|
|
|
|
$key = $request->input('key');
|
|
$kvp = KeyValuePair::whereNull('owner_type')
|
|
->whereNull('owner_id')
|
|
->where('key', $key)
|
|
->first();
|
|
$value = ($kvp->value === "1") ? "0" : "1";
|
|
$this->updateOrCreateKeyValuePair($key, $value);
|
|
return $this->resourceResponse(new LockResource($kvp));
|
|
|
|
}
|
|
|
|
private function updateOrCreateKeyValuePair($key, $value)
|
|
{
|
|
$keyValuePairObject = new KeyValuePairObject($key, $value);
|
|
$kvp = KeyValuePair::whereNull('owner_type')
|
|
->whereNull('owner_id')
|
|
->where('key', $key)
|
|
->first();
|
|
|
|
if ($kvp) {
|
|
$this->updatesKeyValuePair->execute($kvp, $keyValuePairObject);
|
|
} else {
|
|
$this->createsKeyValuePair->execute(null, $keyValuePairObject);
|
|
}
|
|
}
|
|
|
|
}
|