Files
shopPRO/autoload/admin/Controllers/IntegrationsController.php
Jacek Pyziak d824ba3909 Integrations DI refactor, remove Sellasist/Baselinker, fix product-edit encoding (0.263)
- New: Domain\Integrations\IntegrationsRepository + admin\Controllers\IntegrationsController (DI)
- Cleanup: removed all Sellasist and Baselinker integrations from entire project
- Fix: product-edit.php Polish characters (UTF-8/CP1250 double-encoding)
- Update: factory\Integrations as facade (Apilo + ShopPRO only)
- Tests: 212 tests, 577 assertions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 21:59:26 +01:00

173 lines
6.0 KiB
PHP

<?php
namespace admin\Controllers;
use Domain\Integrations\IntegrationsRepository;
class IntegrationsController
{
private IntegrationsRepository $repository;
public function __construct( IntegrationsRepository $repository )
{
$this->repository = $repository;
}
// ── Apilo settings ──────────────────────────────────────────
public function apilo_settings(): string
{
return \Tpl::view( 'integrations/apilo-settings', [
'settings' => $this->repository->getSettings( 'apilo' ),
] );
}
public function apilo_settings_save(): void
{
$response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania ustawień wystąpił błąd. Proszę spróbować ponownie.' ];
$fieldId = \S::get( 'field_id' );
$value = \S::get( 'value' );
if ( $this->repository->saveSetting( 'apilo', $fieldId, $value ) )
$response = [ 'status' => 'ok', 'msg' => 'Ustawienia zostały zapisane.', 'value' => $value ];
echo json_encode( $response );
exit;
}
public function apilo_authorization(): void
{
$response = [ 'status' => 'error', 'msg' => 'Podczas autoryzacji wystąpił błąd. Proszę spróbować ponownie.' ];
$settings = $this->repository->getSettings( 'apilo' );
if ( $this->repository->apiloAuthorize( $settings['client-id'], $settings['client-secret'], $settings['authorization-code'] ) )
$response = [ 'status' => 'ok', 'msg' => 'Autoryzacja przebiegła pomyślnie.' ];
echo json_encode( $response );
exit;
}
// ── Apilo data fetch ────────────────────────────────────────
public function get_platform_list(): void
{
if ( $this->repository->apiloFetchList( 'platform' ) )
\S::alert( 'Lista platform została pobrana.' );
else
\S::alert( 'Brak wyników.' );
header( 'Location: /admin/integrations/apilo_settings/' );
exit;
}
public function get_status_types_list(): void
{
if ( $this->repository->apiloFetchList( 'status' ) )
\S::alert( 'Lista statusów została pobrana.' );
else
\S::alert( 'Brak wyników.' );
header( 'Location: /admin/integrations/apilo_settings/' );
exit;
}
public function get_carrier_account_list(): void
{
if ( $this->repository->apiloFetchList( 'carrier' ) )
\S::alert( 'Lista kont przewoźników została pobrana.' );
else
\S::alert( 'Brak wyników.' );
header( 'Location: /admin/integrations/apilo_settings/' );
exit;
}
public function get_payment_types_list(): void
{
if ( $this->repository->apiloFetchList( 'payment' ) )
\S::alert( 'Lista metod płatności została pobrana.' );
else
\S::alert( 'Brak wyników.' );
header( 'Location: /admin/integrations/apilo_settings/' );
exit;
}
// ── Apilo product operations ────────────────────────────────
public function apilo_create_product(): void
{
$productId = (int) \S::get( 'product_id' );
$result = $this->repository->apiloCreateProduct( $productId );
\S::alert( $result['message'] );
header( 'Location: /admin/shop_product/view_list/' );
exit;
}
public function apilo_product_search(): void
{
$productId = (int) \S::get( 'product_id' );
$sku = $this->repository->getProductSku( $productId );
if ( !$sku ) {
echo json_encode( [ 'status' => 'error', 'msg' => 'Podany produkt nie posiada kodu SKU.' ] );
exit;
}
echo json_encode( $this->repository->apiloProductSearch( $sku ) );
exit;
}
public function apilo_product_select_save(): void
{
if ( $this->repository->linkProduct( (int) \S::get( 'product_id' ), \S::get( 'apilo_product_id' ), \S::get( 'apilo_product_name' ) ) )
echo json_encode( [ 'status' => 'ok' ] );
else
echo json_encode( [ 'status' => 'error', 'msg' => 'Podczas zapisywania produktu wystąpił błąd. Proszę spróbować ponownie.' ] );
exit;
}
public function apilo_product_select_delete(): void
{
if ( $this->repository->unlinkProduct( (int) \S::get( 'product_id' ) ) )
echo json_encode( [ 'status' => 'ok' ] );
else
echo json_encode( [ 'status' => 'error', 'msg' => 'Podczas usuwania produktu wystąpił błąd. Proszę spróbować ponownie.' ] );
exit;
}
// ── ShopPRO settings ────────────────────────────────────────
public function shoppro_settings(): string
{
return \Tpl::view( 'integrations/shoppro-settings', [
'settings' => $this->repository->getSettings( 'shoppro' ),
] );
}
public function shoppro_settings_save(): void
{
$response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania ustawień wystąpił błąd. Proszę spróbować ponownie.' ];
$fieldId = \S::get( 'field_id' );
$value = \S::get( 'value' );
if ( $this->repository->saveSetting( 'shoppro', $fieldId, $value ) )
$response = [ 'status' => 'ok', 'msg' => 'Ustawienia zostały zapisane.', 'value' => $value ];
echo json_encode( $response );
exit;
}
// ── ShopPRO product import ──────────────────────────────────
public function shoppro_product_import(): void
{
$productId = (int) \S::get( 'product_id' );
$result = $this->repository->shopproImportProduct( $productId );
\S::alert( $result['message'] );
header( 'Location: /admin/shop_product/view_list/' );
exit;
}
}