This commit is contained in:
Thomas 2025-01-17 09:14:00 +01:00
parent 348e65b831
commit af4f6d07be
15 changed files with 52 additions and 20 deletions

View File

@ -8,6 +8,7 @@ use OpenApi\Attributes\JsonContent;
use OpenApi\Attributes\RequestBody; use OpenApi\Attributes\RequestBody;
use OpenApi\Attributes\Response; use OpenApi\Attributes\Response;
use OpenApi\Attributes\Tag; use OpenApi\Attributes\Tag;
use PSC\Shop\EntityBundle\Entity\Contact as PSCContact;
use Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input; use Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input;
use Plugin\Custom\PSC\CollectLayouter\Model\Setting; use Plugin\Custom\PSC\CollectLayouter\Model\Setting;
use PSC\Shop\ContactBundle\Model\Role; use PSC\Shop\ContactBundle\Model\Role;
@ -25,34 +26,63 @@ use Symfony\Component\Serializer\SerializerInterface;
class SaveContact extends AbstractController class SaveContact extends AbstractController
{ {
public function __construct(readonly private \Plugin\Custom\PSC\CollectLayouter\Helper\SaveContact $saveContactHelper, public function __construct(
private EntityManagerInterface $entityManager, readonly private \Plugin\Custom\PSC\CollectLayouter\Helper\SaveContact $saveContactHelper,
private DocumentManager $documentManager, private EntityManagerInterface $entityManager,
private SerializerInterface $serializer, private DocumentManager $documentManager,
private Contact $contactTransformer, private SerializerInterface $serializer,
private RequestStack $requestStack, private Contact $contactTransformer,
private Shop $shopService) private RequestStack $requestStack,
{ private Shop $shopService
) {
} }
#[Route(path: '/savecontact/{uuid}', methods: ['PUT'])] #[Route(path: '/savecontact/{uuid}', methods: ['PUT'])]
#[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')] #[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')]
#[Tag('Plugin/Custom/PSC/CollectLayouter')] #[Tag('Plugin/Custom/PSC/CollectLayouter')]
#[RequestBody(description: 'content',content: new JsonContent(ref: Input::class))] #[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))]
#[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))] #[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))]
public function save(Input $data, string $uuid): JsonResponse { public function save(Input $data, string $uuid): JsonResponse
{
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]);
$setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config')?? '{}', Setting::class, 'json'); $setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json');
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
if($this->getUser()) { if ($this->getUser()) {
$this->contactTransformer->fromDb($contact, $this->getUser()); $this->contactTransformer->fromDb($contact, $this->getUser());
} }
if($contact->getUuid() != "") { if ($contact->getUuid() != "") {
$this->saveContactHelper->setSetting($setting);
$this->saveContactHelper->setContact($contact);
$this->saveContactHelper->setData($data);
$this->saveContactHelper->saveData();
}
return $this->json(['success' => true]);
}
#[Route(path: '/savecontactcollect/{uuid}/{contactuuid}', methods: ['PUT'])]
#[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')]
#[Tag('Plugin/Custom/PSC/CollectLayouter')]
#[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))]
#[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))]
public function saveCollect(Input $data, string $uuid, string $contactuuid): JsonResponse
{
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]);
$setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json');
$contactEntity = $this->entityManager->getRepository(PSCContact::class)->findOneBy(['uuid' => $contactuuid]);
$contact = new \PSC\Shop\ContactBundle\Model\Contact();
$this->contactTransformer->fromDb($contact, $contactEntity);
if ($contact->getUuid() != "") {
$this->saveContactHelper->setSetting($setting); $this->saveContactHelper->setSetting($setting);
$this->saveContactHelper->setContact($contact); $this->saveContactHelper->setContact($contact);
$this->saveContactHelper->setData($data); $this->saveContactHelper->setData($data);
@ -65,14 +95,15 @@ class SaveContact extends AbstractController
#[Route(path: '/savenewcontact/{uuid}', methods: ['PUT'])] #[Route(path: '/savenewcontact/{uuid}', methods: ['PUT'])]
#[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')] #[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')]
#[Tag('Plugin/Custom/PSC/CollectLayouter')] #[Tag('Plugin/Custom/PSC/CollectLayouter')]
#[RequestBody(description: 'content',content: new JsonContent(ref: Input::class))] #[RequestBody(description: 'content', content: new JsonContent(ref: Input::class))]
#[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))] #[Response(response: 200, description: 'save config in session', content: new JsonContent(type: 'bool'))]
public function saveNew(Input $data, string $uuid): JsonResponse { public function saveNew(Input $data, string $uuid): JsonResponse
{
$product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]); $product = $this->entityManager->getRepository(Product::class)->findOneBy(['uuid' => $uuid]);
$productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]); $productDoc = $this->documentManager->getRepository(\PSC\Shop\EntityBundle\Document\Product::class)->findOneBy(['uid' => $product->getUID()]);
$setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config')?? '{}', Setting::class, 'json'); $setting = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json');
$contact = new \PSC\Shop\ContactBundle\Model\Contact(); $contact = new \PSC\Shop\ContactBundle\Model\Contact();
$shop = new \PSC\Component\ApiBundle\Model\Shop(); $shop = new \PSC\Component\ApiBundle\Model\Shop();
@ -92,4 +123,5 @@ class SaveContact extends AbstractController
return $this->json(['success' => true]); return $this->json(['success' => true]);
} }
} }

View File

@ -88,7 +88,7 @@ class DesignerController extends AbstractController
$token = null; $token = null;
if ($contactUuid) { if ($contactUuid) {
$user = $contactRepository->findOneBy(['uuid' => $contactUuid]); $user = $contactRepository->findOneBy(['uuid' => $contactUuid]);
$token = $JWTTokenManager->create($user); $token = $JWTTokenManager->create($this->getUser());
} }
/** @var Setting $settings */ /** @var Setting $settings */
$settings = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json'); $settings = $this->serializer->deserialize($productDoc->getPluginSettingModule('collectlayouter', 'config') ?? '{}', Setting::class, 'json');

View File

@ -121,7 +121,7 @@
$('.loadingScreen').removeClass('hidden'); $('.loadingScreen').removeClass('hidden');
$.ajax({ $.ajax({
method: 'PUT', method: 'PUT',
url: '/apps/api/plugin/custom/psc/collectlayouter/{% if mode == 3 %}savenewcontact{% else %}savecontact{% endif %}/' + productUUId, url: '/apps/api/plugin/custom/psc/collectlayouter/{% if mode == 3 %}savenewcontact{% else %}savecontactcollect{% endif %}/' + productUUId + (contactUuid? '/' + contactUuid:''),
contentType: "application/json", contentType: "application/json",
data: JSON.stringify({ data: JSON.stringify({
contactUuid: contactUuid, contactUuid: contactUuid,
@ -213,7 +213,7 @@
$('#customerForm').html(''); $('#customerForm').html('');
$.ajax({ $.ajax({
url: "/apps/api/plugin/custom/psc/collectlayouter/{% if mode == 3 %}newform{% else %}form{% endif %}/" + productUUId, url: "/apps/api/plugin/custom/psc/collectlayouter/{% if mode == 3 %}newform{% else %}form{% endif %}/" + productUUId + (contactUuid? '/' + contactUuid:''),
contentType: "application/json", contentType: "application/json",
headers: { headers: {
"Authorization": "Bearer {{ jwt }}" "Authorization": "Bearer {{ jwt }}"