freescout2ant/Services/Read/MitarbeiterWebserviceReadClient.php
Claude 6eb4e8dfc2
Add API selection between MitarbeiterWebservice and Customer Archives/Stocks
Introduces an "Archive API" setting that switches both reads and writes
between the legacy MitarbeiterWebservice API and the new Customer Archives
(write) + Stocks (read) APIs.

- New write strategy (ArchiveWriterInterface + factory): legacy header-based
  writer and a Customer Archives JSON writer (CreateArchiveRequestDto, files as
  base64 data URIs, one entry per attachment), backed by CustomerArchivesApiClient.
- New read strategy (CrmReadClientInterface + factory): legacy delegate and a
  StocksReadClient that normalizes Stocks responses (customers/names,
  communications, contracts, contract lines/states) to the legacy shape so the
  controller/frontend stay unchanged.
- Hybrid: customer lookup by e-mail stays on MitarbeiterWebservice because the
  Stocks API cannot search by e-mail.
- Settings: ameise_api + ameise_archive_is_public dropdowns, env-backed base
  URLs for both new APIs (test/live), German translations.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfJdbw4dRvJdcihTkKt69T
2026-06-25 13:23:16 +00:00

38 lines
905 B
PHP

<?php
namespace Modules\AmeiseModule\Services\Read;
use Modules\AmeiseModule\Services\CrmApiClient;
/**
* Legacy read strategy: delegates straight to the MitarbeiterWebservice client.
*/
class MitarbeiterWebserviceReadClient implements CrmReadClientInterface
{
private $apiClient;
public function __construct(CrmApiClient $apiClient)
{
$this->apiClient = $apiClient;
}
public function fetchUserByIdOrName($data)
{
return $this->apiClient->fetchUserByIdOrName($data);
}
public function fetchUserDetail($id, $endPoints)
{
return $this->apiClient->fetchUserDetail($id, $endPoints);
}
public function getContracts($customerId)
{
return $this->apiClient->getContracts($customerId);
}
public function getContactEndPoints($endPoints)
{
return $this->apiClient->getContactEndPoints($endPoints);
}
}