From f67cbd5f3e5c78e5307c4fa0047538101d054462 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 17 Jan 2025 10:16:13 +0100 Subject: [PATCH] Fixes --- .../PSC/Shop/ContactBundle/Api/Refresh.php | 4 +- .../Custom/PSC/CollectLayouter/Api/Save.php | 153 ++++++++++++++++++ .../views/frontend/designer/collect.html.twig | 2 +- 3 files changed, 156 insertions(+), 3 deletions(-) diff --git a/src/new/src/PSC/Shop/ContactBundle/Api/Refresh.php b/src/new/src/PSC/Shop/ContactBundle/Api/Refresh.php index 3a35e258c..e880d8b28 100755 --- a/src/new/src/PSC/Shop/ContactBundle/Api/Refresh.php +++ b/src/new/src/PSC/Shop/ContactBundle/Api/Refresh.php @@ -1,6 +1,6 @@ token = $jwtManager->create($this->getUser()); - + $output->email = $this->getUser()->getEmail(); return $this->json($output); } } diff --git a/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/Save.php b/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/Save.php index 2623b84d1..8e6c5a9ac 100755 --- a/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/Save.php +++ b/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/Save.php @@ -8,6 +8,7 @@ use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\RequestBody; use OpenApi\Attributes\Response; use OpenApi\Attributes\Tag; +use PSC\Shop\EntityBundle\Entity\Contact as PSCContact; use PSC\Shop\MediaBundle\Service\MediaManager; use Plugin\Custom\PSC\CollectLayouter\Dto\Save\Input; use Plugin\Custom\PSC\CollectLayouter\Model\ElementBinding; @@ -40,6 +41,158 @@ class Save extends AbstractController ) { } + #[Route(path: '/savecollect/{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 + { + + $basketField1 = ""; + $basketField2 = ""; + $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); + $this->saveFilesHelper->setSetting($setting); + $this->saveFilesHelper->setContact($contact); + $this->saveFilesHelper->setData($data); + + $this->saveFilesHelper->storeFiles(); + + if ($contact->getUuid() != "") { + $this->saveContactHelper->setSetting($setting); + $this->saveContactHelper->setContact($contact); + $this->saveContactHelper->setData($data); + $this->saveContactHelper->saveData(); + } + + $formData = []; + + /** + * @var Element $element +*/ + foreach ($setting->getCustomerForm() as $element) { + $value = match($element->getBinding()) { + ElementBinding::none => $element->getDefaultForTypePreview(), + ElementBinding::StreetHouseNumber => ['street' => $contact->getLayouterData()->getStreet() ?? $element->getDefault1(), 'houseNumber' => $contact->getLayouterData()->getHouseNumber() ?? $element->getDefault2()], + ElementBinding::ZipCity => ['zip' => $contact->getLayouterData()->getZip() ?? $element->getDefault1(), 'city' => $contact->getLayouterData()->getCity() ?? $element->getDefault2()], + ElementBinding::Firstname => $contact->getLayouterData()->getFirstname() ?? $element->getDefault1(), + ElementBinding::Lastname => $contact->getLayouterData()->getLastname() ?? $element->getDefault1(), + ElementBinding::Mobile => [ + 'areacode' => $contact->getLayouterData()->getMobileAreaCode() ?? $element->getDefault1(), + 'prefix' => $contact->getLayouterData()->getMobilePrefix() ?? $element->getDefault2(), + 'number' => $contact->getLayouterData()->getMobile() ?? $element->getDefault3(), + 'appendix' => $contact->getLayouterData()->getMobileAppendix() ?? $element->getDefault4()], + ElementBinding::Fax => [ + 'areacode' => $contact->getLayouterData()->getFaxAreaCode() ?? $element->getDefault1(), + 'prefix' => $contact->getLayouterData()->getFaxPrefix() ?? $element->getDefault2(), + 'number' => $contact->getLayouterData()->getFax() ?? $element->getDefault3(), + 'appendix' => $contact->getLayouterData()->getFaxAppendix() ?? $element->getDefault4()], + ElementBinding::UsernameLogin => $contact->getEmail() ?? $element->getDefault1(), + ElementBinding::Company => $contact->getLayouterData()->getCompany() ?? $element->getDefault1(), + ElementBinding::Company2 => $contact->getLayouterData()->getCompany2() ?? $element->getDefault1(), + ElementBinding::Title => $contact->getLayouterData()->getTitle() ?? $element->getDefault1(), + ElementBinding::Position => $contact->getLayouterData()->getPosition() ?? $element->getDefault1(), + ElementBinding::Function => $contact->getLayouterData()->getFunction() ?? $element->getDefault1(), + ElementBinding::UserCountry => $contact->getCountryCode() ?? $element->getDefault1(), + ElementBinding::Fon => [ + 'areacode' => $contact->getLayouterData()->getPhoneAreaCode() ?? $element->getDefault1(), + 'prefix' => $contact->getLayouterData()->getPhonePrefix() ?? $element->getDefault2(), + 'number' => $contact->getLayouterData()->getPhone() ?? $element->getDefault3(), + 'appendix' => $contact->getLayouterData()->getPhoneAppendix() ?? $element->getDefault4()], + ElementBinding::Abteilung => $contact->getLayouterData()->getAbteilung() ?? $element->getDefault1(), + ElementBinding::Custom1 => $contact->getCustom1() ?? $element->getDefault1(), + ElementBinding::Custom2 => $contact->getCustom2() ?? $element->getDefault1(), + ElementBinding::Custom3 => $contact->getCustom3() ?? $element->getDefault1(), + ElementBinding::Custom4 => $contact->getCustom4() ?? $element->getDefault1(), + ElementBinding::Custom5 => $contact->getCustom5() ?? $element->getDefault1(), + ElementBinding::Custom6 => $contact->getCustom6() ?? $element->getDefault1(), + ElementBinding::Custom7 => $contact->getCustom7() ?? $element->getDefault1(), + ElementBinding::Custom8 => $contact->getCustom8() ?? $element->getDefault1(), + ElementBinding::Custom9 => $contact->getCustom9() ?? $element->getDefault1(), + ElementBinding::Custom10 => $contact->getCustom10() ?? $element->getDefault1(), + ElementBinding::Custom11 => $contact->getCustom11() ?? $element->getDefault1(), + ElementBinding::Custom12 => $contact->getCustom12() ?? $element->getDefault1(), + ElementBinding::Custom13 => $contact->getCustom13() ?? $element->getDefault1(), + ElementBinding::Custom14 => $contact->getCustom14() ?? $element->getDefault1(), + ElementBinding::Custom15 => $contact->getCustom15() ?? $element->getDefault1(), + ElementBinding::Custom16 => $contact->getCustom16() ?? $element->getDefault1(), + ElementBinding::Custom17 => $contact->getCustom17() ?? $element->getDefault1(), + ElementBinding::Custom18 => $contact->getCustom18() ?? $element->getDefault1(), + ElementBinding::Custom19 => $contact->getCustom19() ?? $element->getDefault1(), + ElementBinding::Custom20 => $contact->getCustom20() ?? $element->getDefault1(), + ElementBinding::Custom21 => $contact->getCustom21() ?? $element->getDefault1(), + ElementBinding::Custom22 => $contact->getCustom22() ?? $element->getDefault1(), + ElementBinding::Custom23 => $contact->getCustom23() ?? $element->getDefault1(), + ElementBinding::Custom24 => $contact->getCustom24() ?? $element->getDefault1(), + ElementBinding::LayouterMail => $contact->getLayouterData()->getEmail() ?? $element->getDefault1(), + ElementBinding::LayouterCountryName => $contact->getLayouterData()->getCountryName() ?? $element->getDefault1(), + ElementBinding::LayouterCountryCode => $contact->getLayouterData()->getCountryCode() ?? $element->getDefault1(), + ElementBinding::Birthday => $contact->getLayouterData()->getBirthday() ?? $element->getDefault1(), + ElementBinding::Homepages => $contact->getLayouterData()->getHomepage() ?? $element->getDefault1(), + ElementBinding::Salutation => $contact->getLayouterData()->getSalutation() ?? $element->getDefault1(), + ElementBinding::UstId => $contact->getLayouterData()->getUstid() ?? $element->getDefault1(), + ElementBinding::KSt => $contact->getLayouterData()->getKst() ?? $element->getDefault1(), + ElementBinding::State => $contact->getLayouterData()->getState() ?? $element->getDefault1(), + ElementBinding::District => $contact->getLayouterData()->getDistrict() ?? $element->getDefault1(), + ElementBinding::Image1 => $contact->getLayouterData()->getImage1() ?? $element->getDefault1(), + ElementBinding::Image2 => $contact->getLayouterData()->getImage2() ?? $element->getDefault1(), + }; + + if ($elm = $data->getElement($element, $contact)) { + if ($element->getType() == ElementType::Image && $elm['value'] != "") { + $media = $this->mediaManager->getModelByUuid($elm['value']); + $elmMedia = $media->getVariant($element->getImage()->aspectRatio); + $formData[$element->getId()] = ['value' => $elmMedia, 'enable' => (bool)$elm['enable']]; + } else { + $formData[$element->getId()] = ['value' => $elm['value'], 'enable' => (bool)$elm['enable']]; + } + } else { + $formData[$element->getId()] = ['value' => $value, 'enable' => $element->getOptional() ? $element->getOptionalDefault() : true]; + } + + } + + if ($setting->getBasketField1Format() != "") { + $twigBF1 = $this->twig->createTemplate($setting->getBasketField1Format()); + $basketField1 = $twigBF1->render(['form' => $formData]); + } + if ($setting->getBasketField2Format() != "") { + $twigBF2 = $this->twig->createTemplate($setting->getBasketField2Format()); + $basketField2 = $twigBF2->render(['form' => $formData]); + } + + + $layoutDesignData = new Layoutdesigndata(); + $layoutDesignData->setUuid($data->getLayouterUuid()); + $layoutDesignData->setArticleUuid($data->getProductUuid()); + $layoutDesignData->setDesign(['data' => $data->getData(), 'contactUuid' => $data->getContactUuid(), 'pdf' => $this->saveFilesHelper->getPdfFile(), 'previews' => $this->saveFilesHelper->getImages()]); + + $this->entityManager->persist($layoutDesignData); + $this->entityManager->flush(); + + $layouterSession = $this->entityManager->getRepository(LayouterSession::class)->findOneBy(['uuid' => $data->getLayouterUuid()]); + + $layouterDesignDataDoc = new \PSC\Shop\EntityBundle\Document\LayouterSession(); + $layouterDesignDataDoc->setUid((string)$layouterSession->getUID()); + $layouterDesignDataDoc->setKst($basketField2); + $layouterDesignDataDoc->setRef($basketField1); + + $this->documentManager->persist($layouterDesignDataDoc); + $this->documentManager->flush(); + + if ($data->isSek()) { + $this->requestStack->getSession()->getFlashBag()->add('success', 'Produkt in den Warenkorb gelegt'); + } + + return $this->json(['success' => true, 'basketField1' => $basketField1, 'basketField2' => $basketField2]); + } + #[Route(path: '/save/{uuid}', methods: ['PUT'])] #[ParamConverter('data', class: Input::class, converter: 'psc_rest.request_body')] #[Tag('Plugin/Custom/PSC/CollectLayouter')] diff --git a/src/new/var/plugins/Custom/PSC/CollectLayouter/Resources/views/frontend/designer/collect.html.twig b/src/new/var/plugins/Custom/PSC/CollectLayouter/Resources/views/frontend/designer/collect.html.twig index 5a9d407b7..022676b45 100755 --- a/src/new/var/plugins/Custom/PSC/CollectLayouter/Resources/views/frontend/designer/collect.html.twig +++ b/src/new/var/plugins/Custom/PSC/CollectLayouter/Resources/views/frontend/designer/collect.html.twig @@ -171,7 +171,7 @@ $.ajax({ method: 'PUT', - url: '/apps/api/plugin/custom/psc/collectlayouter/save/' + productUUId, + url: '/apps/api/plugin/custom/psc/collectlayouter/savecollect/' + productUUId + (contactUuid? '/' + contactUuid:''), contentType: "application/json", data: JSON.stringify({ sek: true,