update schema support

This commit is contained in:
Dennis Eichhorn 2023-03-25 22:29:48 +00:00
parent e5d7f887ec
commit 2cba0d945e
2 changed files with 25 additions and 9 deletions

View File

@ -18,10 +18,14 @@ use Modules\Billing\Models\Attribute\BillAttributeTypeMapper;
use Modules\Billing\Models\Bill; use Modules\Billing\Models\Bill;
use Modules\ClientManagement\Models\ClientMapper; use Modules\ClientManagement\Models\ClientMapper;
use Modules\ClientManagement\Models\NullClient; use Modules\ClientManagement\Models\NullClient;
use Modules\ItemManagement\Models\Item;
use Modules\ItemManagement\Models\ItemMapper; use Modules\ItemManagement\Models\ItemMapper;
use Modules\ItemManagement\Models\NullItem;
use Modules\Payment\Models\PaymentMapper; use Modules\Payment\Models\PaymentMapper;
use Modules\Payment\Models\PaymentStatus; use Modules\Payment\Models\PaymentStatus;
use phpOMS\Autoloader; use phpOMS\Autoloader;
use phpOMS\Localization\ISO4217CharEnum;
use phpOMS\Localization\ISO4217SymbolEnum;
use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
@ -54,26 +58,38 @@ final class ApiController extends Controller
*/ */
public function apiSchemaCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiSchemaCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
$schema = $this->buildSchema(new NullItem());
$response->header->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
$response->set($request->uri->__toString(), $schema);
}
public function buildSchema(Item $item) : array
{
$images = $item->getFilesByTypeName('shop_primary_image');
// @todo: implement https://schema.org/Product // @todo: implement https://schema.org/Product
$schema = [ $schema = [
'@context' => 'https://schema.org/', '@context' => 'https://schema.org/',
'@type' => 'Product', '@type' => 'Product',
'name' => '...', 'name' => $item->getL11n('name1')->description,
'description' => $item->getL11n('description_short')->description,
'image' => [ 'image' => [
], ],
'description' => '...',
'offers' => [ 'offers' => [
'@type' => 'Offer', '@type' => 'Offer',
'priceCurrency' => '...', 'priceCurrency' => ISO4217CharEnum::_EUR,
'price' => '...', 'price' => $item->salesPrice->getAmount(),
'availability' => '...', 'availability' => 'http://schema.org/InStock',
], ],
'isVariantOf' => '...', //'isVariantOf' => '...',
]; ];
$response->header->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true); foreach ($images as $image) {
$response->set($request->uri->__toString(), $schema); $schema['image'][] = $image->getPath();
}
return $schema;
} }
/** /**

0
Theme/Backend/Lang/en.lang.php Normal file → Executable file
View File