magento2-docker/app/code/Kai/Banner/Api/BannerRepository.php

178 lines
5.0 KiB
PHP
Executable File

<?php
namespace Kai\Banner\Api;
use Kai\Banner\Api\BannerRepositoryInterface;
/**
* @api
*/
class BannerRepository implements BannerRepositoryInterface
{
protected $kaiBannerModel;
protected $kaiBannerResourceModel;
protected $kaiBannerCollection;
function __construct(
\Kai\Banner\Model\KaiBanner $kaiBannerModel,
\Kai\Banner\Model\KaiBannerResourceModel $kaiBannerResourceModel,
\Kai\Banner\Model\KaiBannerCollection $kaiBannerCollection,
)
{
$this->kaiBannerModel = $kaiBannerModel;
$this->kaiBannerResourceModel = $kaiBannerResourceModel;
$this->kaiBannerCollection = $kaiBannerCollection;
$this->authorization();
}
private function authorization()
{
$headers = apache_request_headers();
$apiKey = \Kai\Banner\Api\Helper::API_KEY;
foreach ($headers as $key => $value) {
$key = strtolower($key);
if ('api_key' === $key && $value === $apiKey) {
return true;
}
}
header('HTTP/1.1 401 Unauthorized');
header('Accept: application/json');
header('Content-Type: application/json');
die(
json_encode(['message' => 'unauthorized'])
);
}
private function responseOk(array $data)
{
header('HTTP/1.1 200 Ok');
header('Accept: application/json');
header('Content-Type: application/json');
die(json_encode($data));
}
private function responseFail(array $data)
{
header('HTTP/1.1 400 Bad request');
header('Accept: application/json');
header('Content-Type: application/json');
die(json_encode($data));
}
private function responseMethodFail()
{
header('HTTP/1.1 400 bad request');
header('Accept: application/json');
header('Content-Type: application/json');
die(json_encode([
'status' => false,
'message' => 'Param ?method=... not exist!'
]));
}
public function getData()
{
$method = $_GET['method'] ?? null;
if ($method === 'show') {
$id = $_GET['id'] ?? 0;
return $this->responseOk([
'status' => true,
'data' => $this
->kaiBannerCollection
->getItemById($id)
->getData()
]);
}
if ($method === 'all') {
return $this->responseOk([
'status' => true,
'data' => $this
->kaiBannerCollection
->getData()
]);
}
if ($method === 'delete') {
$id = $_GET['id'] ?? 0;
$model = $this->kaiBannerModel->setId($id);
try {
$this->kaiBannerResourceModel->delete($model);
return $this->responseOk([
'status' => true,
]);
} catch (\Exception $ex) {
$this->kaiBannerResourceModel->rollBack();
return $this->responseFail([
'status' => false,
'message' => $ex->getMessage()
]);
}
}
return $this->responseMethodFail();
}
public function postData()
{
$method = $_GET['method'] ?? null;
parse_str(
string: file_get_contents('php://input'),
result: $payload
);
if ($method === 'create') {
$model = $this->kaiBannerModel;
try {
foreach ($payload as $key => $value) {
$model->setData($key, $value);
}
$this->kaiBannerResourceModel->save($model);
return $this->responseOk([
'status' => true,
'data' => $this
->kaiBannerCollection
->getItemById($model->getId())
->getData()
]);
} catch (\Exception $ex) {
return $this->responseFail([
'status' => false,
'message' => $ex->getMessage()
]);
}
}
if ($method === 'update') {
$id = $_GET['id'] ?? 0;
$model = $this->kaiBannerModel->setId($id);
try {
foreach ($payload as $key => $value) {
$model->setData($key, $value);
}
$this->kaiBannerResourceModel->save($model);
return $this->responseOk([
'status' => true,
'data' => $this
->kaiBannerCollection
->getItemById($model->getId())
->getData()
]);
} catch (\Exception $ex) {
return $this->responseFail([
'status' => false,
'message' => $ex->getMessage()
]);
}
}
return $this->responseMethodFail();
}
}