src/Controller/AppBundle/Controller/APIController.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Controller\AppBundle\Controller;
  3. use App\Controller\AppBundle\Connector\Awacs\AwacsCreateDocumentRequest;
  4. use App\Controller\AppBundle\Connector\Awacs\AwacsResponse;
  5. use App\Controller\AppBundle\Connector\Awacs\AwacsUpdateAPIRequest;
  6. use App\Controller\AppBundle\Connector\Awacs\AwacsUpdateRequest;
  7. use App\Controller\AppBundle\Connector\Awacs\AwacsViewRequest;
  8. use App\Controller\AppBundle\Connector\Awacs\Collection;
  9. use App\Controller\AppBundle\Connector\Awacs\FieldLabel;
  10. use App\Controller\AppBundle\Connector\Awacs\FieldPrimary;
  11. use App\Controller\AppBundle\Connector\Awacs\Filter;
  12. use App\Controller\AppBundle\Connector\FasterForward\FasterForwardHelper;
  13. use App\Controller\AppBundle\Connector\FasterForward\FasterForwardUpdateSchadeverzekeringRequest;
  14. use App\Controller\AppBundle\Connector\FasterForward\Helpers\FFManualInputOvervoerHelper;
  15. use App\Controller\AppBundle\Connector\VPI\VPIHelper;
  16. use App\Controller\AppBundle\Connector\VPI\VPIMapping;
  17. use App\Controller\AppBundle\Connector\VPI\VPIMappingNew;
  18. use App\Controller\AppBundle\Connector\VPI\VPIRequest;
  19. use App\Controller\AppBundle\Helpers\AccessHelper;
  20. use App\Controller\AppBundle\Interact\RelationSearch;
  21. use App\Entity\Slotvraag;
  22. use App\Repository\GIMCacheRepository;
  23. use Httpful\Http;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use App\Controller\AppBundle\Connector\RollsVehicleInformation\ConnectorVehicle;
  27. use App\Controller\AppBundle\Entity\PolisInformation;
  28. use App\Controller\AppBundle\Helpers\Admin\ConsultantHelper;
  29. use App\Controller\AppBundle\Helpers\ConsultantCompare\ProcessCar;
  30. use App\Controller\AppBundle\Helpers\FormValidator;
  31. use App\Controller\AppBundle\Helpers\TestHelper;
  32. use App\Controller\AppBundle\Interact\Compare\CartSessionHelper;
  33. use App\Controller\AppBundle\Interact\Compare\PolisResult;
  34. use App\Controller\AppBundle\Interact\Compare\RequestBuilderCar;
  35. use App\Controller\AppBundle\Interact\CreateRelation;
  36. use App\Controller\AppBundle\Interact\UserInformationANVA;
  37. use App\Entity\CartContainer;
  38. use App\Entity\User;
  39. use Doctrine\ORM\EntityManagerInterface;
  40. use Psr\Log\LoggerInterface;
  41. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  42. use Symfony\Component\HttpFoundation\Request;
  43. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  44. use Brick\VarExporter\VarExporter;
  45. class APIController extends AbstractController
  46. {
  47.     /**
  48.      * @Route("/shoot/{datasource}", name="shoot")
  49.      */
  50.     public function test2(EntityManagerInterface $emSessionInterface $session$datasourceRequest $request) {
  51.         if (!AccessHelper::ownIP($request->getClientIp())) {
  52.             return new JsonResponse(['access' => False]);
  53.         }
  54.         $entities json_decode($request->getContent());
  55.         $update = new AwacsUpdateAPIRequest($entities);
  56.         $response $update->sendAndRequest($datasource);
  57.         $request $response[1];
  58.         $response $response[0];
  59.         $keys = [];
  60.         $errorById = [];
  61.         if ($response->getErrors() === []) {
  62.             $output $response->xml()->RESULT->EXECUTE;
  63.             try {
  64.                 foreach ($response->xml()->RESULT->EXECUTE->children() as $name => $xml) {
  65.                     $keys[strtolower($name)][] = (string)$xml->PK;
  66.                 }
  67.             } catch (\Exception $e) {}
  68.         } else {
  69.             $volgnums = [];
  70.             $i 0;
  71.             try {
  72.                 foreach ($response->xml()->RESULT->RELATIES->RELATIE->PAKKETTEN->PAKKET as $pakket) {
  73.                     foreach ($pakket->POLISSEN->POLIS as $polis) {
  74.                         $volgnums[(string)$polis->TRANSACTION_VOLGNR] = $i;
  75.                         $i $i 1;
  76.                     }
  77.                 }
  78.             } catch (\Exception $e) {}
  79.             $i 0;
  80.             if (count($errorById) != 0) {
  81.                 foreach ($response->xml()->RESULT->EXECUTE->ERROR as $error) {
  82.                     $errorById[$volgnums[(string)$error->TRANSACTION_VOLGNR]] = $response->getErrors()[array_keys($response->getErrors())[$i]];
  83.                     $i $i 1;
  84.                 }
  85.             } else {
  86.                 foreach ($response->xml()->RESULT->EXECUTE->ERROR as $error) {
  87.                     $errorById[] = (string)$error->MESSAGE;
  88.                     $i $i 1;
  89.                 }
  90.             }
  91.         }
  92.         return new JsonResponse([
  93.             'hasErrors' => $response->getErrors() !== [],
  94.             'errors' => $response->getErrors(),
  95.             'request' => $request,
  96.             'keys' => $keys,
  97.             'errorsById' => $errorById,
  98.         ]);
  99.     }
  100.     /**
  101.      * @Route("/insertDocument/{datasource}", name="shootDocument")
  102.      */
  103.     public function apiCallDocument(EntityManagerInterface $emSessionInterface $session$datasourceRequest $request) {
  104.         if (!AccessHelper::ownIP($request->getClientIp())) {
  105.             return new JsonResponse(['access' => False]);
  106.         }
  107.         $entities json_decode($request->getContent());
  108.         $result '';
  109.         foreach ($entities->data as $key => $value) {
  110.             $result .= "$key$value\n"// Concatenate key-value pairs into the result string
  111.         }
  112.         # Get 16 till 20 position of entities['polisKey']
  113.         $polisKeySubset substr($entities->polisKey155);
  114.         # Get 21 position onwards
  115.         $polisKeySubset2 substr($entities->polisKey20);
  116.         $request = new AwacsCreateDocumentRequest($result'OvervoerVKGExtranetData.txt''OvervoerVKG Data ' $entities->data->{'Overzicht->Polisnummer'}, $entities->relatieKeytruefalsefalse$polisKeySubset$polisKeySubset2);
  117.         $response $request->sendAndRequest($datasource);
  118.         $request $response[1];
  119.         $response $response[0];
  120.         $keys = [];
  121.         $errorById = [];
  122.         if ($response->getErrors() === []) {
  123.             $output $response->xml()->RESULT->EXECUTE;
  124.             try {
  125.                 foreach ($response->xml()->RESULT->EXECUTE->children() as $name => $xml) {
  126.                     $keys[strtolower($name)][] = (string)$xml->PK;
  127.                 }
  128.             } catch (\Exception $e) {}
  129.         } else {
  130.             $volgnums = [];
  131.             $i 0;
  132.             try {
  133.                 foreach ($response->xml()->RESULT->RELATIES->RELATIE->PAKKETTEN->PAKKET as $pakket) {
  134.                     foreach ($pakket->POLISSEN->POLIS as $polis) {
  135.                         $volgnums[(string)$polis->TRANSACTION_VOLGNR] = $i;
  136.                         $i $i 1;
  137.                     }
  138.                 }
  139.             } catch (\Exception $e) {}
  140.             $i 0;
  141.             if (count($errorById) != 0) {
  142.                 foreach ($response->xml()->RESULT->EXECUTE->ERROR as $error) {
  143.                     $errorById[$volgnums[(string)$error->TRANSACTION_VOLGNR]] = $response->getErrors()[array_keys($response->getErrors())[$i]];
  144.                     $i $i 1;
  145.                 }
  146.             } else {
  147.                 foreach ($response->xml()->RESULT->EXECUTE->ERROR as $error) {
  148.                     $errorById[] = (string)$error->MESSAGE;
  149.                     $i $i 1;
  150.                 }
  151.             }
  152.         }
  153.         return new JsonResponse([
  154.             'hasErrors' => $response->getErrors() !== [],
  155.             'errors' => $response->getErrors(),
  156.             'request' => $request,
  157.             'keys' => $keys,
  158.             'errorsById' => $errorById,
  159.         ]);
  160.     }
  161.     /**
  162.      * @Route("/getPremie/{datasource}", name="getPremieAPI")
  163.      */
  164.     public function test3(EntityManagerInterface $emSessionInterface $session$datasourceRequest $request) {
  165.         if (!AccessHelper::ownIP($request->getClientIp())) {
  166.             return new JsonResponse(['access' => False]);
  167.         }
  168.         $key json_decode($request->getContent());
  169.         # Make length of key 25 by cutting of the right
  170.         $key substr($key025);
  171.         $prefix '';
  172.         // If key contains WACBES_
  173.         if (strpos($key'WACBES_') !== false) {
  174.             $prefix 'wacht';
  175.         }
  176.         $collection = new Collection($prefix 'polissen');
  177.         $collection->addField(FieldLabel::name('polis''incassobedrag'));
  178.         $collection->addField(FieldLabel::name('polis''acceptatie'));
  179.         $collection->addField(FieldLabel::name('polis''prolongatiekosten'));
  180.         $collection->addField(FieldLabel::name('polis''termijn'));
  181.         $collection->addFilter(new Filter(new FieldPrimary(), $key'='));
  182.         $request = new AwacsViewRequest($collection);
  183.         $res $request->send($datasource);
  184.         return new JsonResponse([
  185.             'incassobedrag' => $res->entities()[0]->field('incassobedrag')->value(),
  186.             'acceptatie' => $res->entities()[0]->field('acceptatie')->value(),
  187.             'prolongatiekosten' => $res->entities()[0]->field('prolongatiekosten')->value(),
  188.             'termijn' => $res->entities()[0]->field('termijn')->value()
  189.         ]);
  190.     }
  191.     /**
  192.      * @Route("/getDekkingen/{datasource}", name="getDekkingenAPI")
  193.      */
  194.     public function test6(EntityManagerInterface $emSessionInterface $session$datasourceRequest $request) {
  195.         if (!AccessHelper::ownIP($request->getClientIp())) {
  196.             return new JsonResponse(['access' => False]);
  197.         }
  198.         $key json_decode($request->getContent());
  199.         $key substr($key025);
  200.         $prefix '';
  201.         // If key contains WACBES_
  202.         if (strpos($key'WACBES_') !== false) {
  203.             $prefix 'wacht';
  204.         }
  205.         $collection = new Collection($prefix .'polissen');
  206.         $collection->addFilter(new Filter(new FieldPrimary(), $key'='));
  207.         $collectionDekkingen = new Collection($prefix .'dekkingen');
  208.         $collectionDekkingen->addField(new FieldPrimary());
  209.         $collection->addCollection($collectionDekkingen);
  210.         $request = new AwacsViewRequest($collection);
  211.         $res $request->send($datasource);
  212.         $dekkingIds = [];
  213.         foreach ($res->entities()[0]->collection($prefix .'dekkingen') as $dekking) {
  214.             $dekkingIds[] = $dekking->key;
  215.         }
  216.         return new JsonResponse([
  217.             'keys' => $dekkingIds,
  218.         ]);
  219.     }
  220.     /**
  221.      * @Route("/getPolisIds/{datasource}", name="getPolisIdsAPI")
  222.      */
  223.     public function test6547(EntityManagerInterface $emSessionInterface $session$datasourceRequest $request) {
  224.         if (!AccessHelper::ownIP($request->getClientIp())) {
  225.             return new JsonResponse(['access' => False]);
  226.         }
  227.         $key json_decode($request->getContent());
  228.         $key substr($key016);
  229. //        if (strpos($key, 'NAWBES_') !== false) {
  230. //            $key = str_replace('NAWBES_', '', $key);
  231. //        }
  232.         $collection = new Collection('relaties');
  233.         $collection->addFilter(new Filter(new FieldPrimary(), $key'='));
  234.         $collectionPakketten = new Collection('pakketten');
  235.         $collectionPakketten->addField(new FieldPrimary());
  236.         $collectionPolissen = new Collection('polissen');
  237.         $collectionPolissen->addField(new FieldPrimary());
  238.         $collectionPolissen->addField(FieldLabel::name('polis''wijzigingsreden'));
  239.         $collectionPolissen->addField(FieldLabel::name('polis''collectiviteit'));
  240.         $collectionPolissen->addField(FieldLabel::name('polis''polisnummer_oud'));
  241.         $collectionPolissen->addField(FieldLabel::name('polis''incassobedrag'));
  242.         $collectionPolissen->addField(FieldLabel::name('polis''termijn'));
  243.         $collectionPolissen->addField(FieldLabel::name('polis''wijzigingsreden'));
  244.         $collectionPolissen->addField(FieldLabel::name('polis''ingangsdatum'));
  245.         $collectionPolissen->addFilter(new Filter(new FieldLabel('10095'), '12''='));
  246.         $collectionPakketten->addCollection($collectionPolissen);
  247.         $collectionPolissen = new Collection('wachtpolissen');
  248.         $collectionPolissen->addField(new FieldPrimary());
  249.         $collectionPolissen->addField(FieldLabel::name('polis''wijzigingsreden'));
  250.         $collectionPolissen->addField(FieldLabel::name('polis''collectiviteit'));
  251.         $collectionPolissen->addField(FieldLabel::name('polis''polisnummer_oud'));
  252.         $collectionPolissen->addField(FieldLabel::name('polis''incassobedrag'));
  253.         $collectionPolissen->addField(FieldLabel::name('polis''termijn'));
  254.         $collectionPolissen->addField(FieldLabel::name('polis''wijzigingsreden'));
  255.         $collectionPolissen->addField(FieldLabel::name('polis''ingangsdatum'));
  256.         $collectionPolissen->addFilter(new Filter(new FieldLabel('10095'), '12''='));
  257.         $collectionPakketten->addCollection($collectionPolissen);
  258.         $collection->addCollection($collectionPakketten);
  259.         $request = new AwacsViewRequest($collection);
  260.         $res $request->send($datasource);
  261.         $result = [];
  262.         $resultWacht = [];
  263.         foreach ($res->entities()[0]->collection('pakketten') as $pakket) {
  264.             foreach ($pakket->collection('polissen') as $polis) {
  265.                 if ($polis->field('collectiviteit')->value() != '') {
  266.                     $resPolis = [];
  267.                     $resPolis['wijzigingsreden'] = $polis->field('wijzigingsreden')->value();
  268.                     $resPolis['collectiviteit'] = $polis->field('collectiviteit')->value();
  269.                     $resPolis['polisnummer_oud'] = $polis->field('polisnummer_oud')->value();
  270.                     $resPolis['incassobedrag'] = $polis->field('incassobedrag')->value();
  271.                     $resPolis['termijn'] = $polis->field('termijn')->value();
  272.                     $resPolis['wijzigingsreden'] = $polis->field('wijzigingsreden')->value();
  273.                     $resPolis['ingangsdatum'] = $polis->field('ingangsdatum')->value();
  274.                     $resPolis['pakketkey'] = $pakket->key();
  275.                     $resPolis['key'] = $polis->key();
  276.                     $result[] = $resPolis;
  277.                 }
  278.             }
  279.             foreach ($pakket->collection('wachtpolissen') as $polis) {
  280.                 if ($polis->field('collectiviteit')->value() != '') {
  281.                     $resPolis = [];
  282.                     $resPolis['wijzigingsreden'] = $polis->field('wijzigingsreden')->value();
  283.                     $resPolis['collectiviteit'] = $polis->field('collectiviteit')->value();
  284.                     $resPolis['polisnummer_oud'] = $polis->field('polisnummer_oud')->value();
  285.                     $resPolis['incassobedrag'] = $polis->field('incassobedrag')->value();
  286.                     $resPolis['termijn'] = $polis->field('termijn')->value();
  287.                     $resPolis['wijzigingsreden'] = $polis->field('wijzigingsreden')->value();
  288.                     $resPolis['ingangsdatum'] = $polis->field('ingangsdatum')->value();
  289.                     $resPolis['pakketkey'] = $pakket->key();
  290.                     $resPolis['key'] = $polis->key();
  291.                     $resultWacht[] = $resPolis;
  292.                 }
  293.             }
  294.         }
  295.         return new JsonResponse([
  296.             'keys' => $result,
  297.             'keysWacht' => $resultWacht,
  298.         ]);
  299.     }
  300.     /**
  301.      * @Route("/getDekkingenPremies/{datasource}", name="getDekkingenAndPremiesAPI")
  302.      */
  303.     public function test7(EntityManagerInterface $emSessionInterface $session$datasourceRequest $request) {
  304.         if (!AccessHelper::ownIP($request->getClientIp())) {
  305.             return new JsonResponse(['access' => False]);
  306.         }
  307.         $key json_decode($request->getContent());
  308.         $key substr($key025);
  309.         $prefix '';
  310.         // If key contains WACBES_
  311.         if (strpos($key'WACBES_') !== false) {
  312.             $prefix 'wacht';
  313.         }
  314.         $collection = new Collection($prefix .'polissen');
  315.         $collection->addFilter(new Filter(new FieldPrimary(), $key'='));
  316.         $collectionDekkingen = new Collection($prefix .'dekkingen');
  317.         $collectionDekkingen->addField(new FieldPrimary());
  318.         $collectionDekkingen->addField(new FieldLabel('*'));
  319.         $collection->addCollection($collectionDekkingen);
  320.         $request = new AwacsViewRequest($collection);
  321.         $res $request->send($datasource);
  322.         $dekkingIds = [];
  323.         foreach ($res->entities()[0]->collection($prefix .'dekkingen') as $dekking) {
  324.             $dekkingIds[$dekking->key] = [
  325.                 'incassobedrag' => floatval($dekking->field('incassobedrag')->value()),
  326.                 'code' => $dekking->field('dekking')->value(),
  327.                 'brutopremie' => floatval($dekking->field('bruto_premie_dekking')->value()),
  328.                 'toeslag_percentage_dekking' => floatval($dekking->field('toeslag_percentage_dekking')->value()),
  329.                 'toeslag_absoluut_dekking' => floatval($dekking->field('toeslag_absoluut_dekking')->value()),
  330.                 'verzekerdbedrag' => floatval($dekking->field('verzekerdbedrag')->value()),
  331.                 'provisiepercentage' => floatval($dekking->field('provisiepercentage')->value()),
  332.             ];
  333.         }
  334.         return new JsonResponse([
  335.             'keys' => $dekkingIds,
  336.         ]);
  337.     }
  338.     /**
  339.      * @Route("/shootElements", name="shootElements")
  340.      */
  341.     public function test4(EntityManagerInterface $emSessionInterface $sessionRequest $request) {
  342.         if (!AccessHelper::ownIP($request->getClientIp())) {
  343.             return new JsonResponse(['access' => False]);
  344.         }
  345.         $entities json_decode($request->getContent());
  346.         $list FFManualInputOvervoerHelper::processAPICall($entities);
  347.         return new JsonResponse([
  348.             $list
  349.         ]);
  350.     }
  351.     /**
  352.      * @Route("/api/elements", name="elements")
  353.      */
  354.     public function apiElements(EntityManagerInterface $emSessionInterface $sessionRequest $request) {
  355.         if (!AccessHelper::ownIP($request->getClientIp())) {
  356.             return new JsonResponse(['access' => False]);
  357.         }
  358.         $entities json_decode($request->getContent());
  359.         $request = new FasterForwardUpdateSchadeverzekeringRequest();
  360.         $request->path $entities->url;
  361.         $request->requestData json_decode(json_encode($entities->requestData), true);
  362.         $request->urlOnly json_decode(json_encode($entities->urlOnly), true);
  363.         switch (json_decode(json_encode($entities->method), true)) {
  364.             case 'POST':
  365.                 $request->method Http::POST;
  366.                 break;
  367.             case 'PUT':
  368.                 $request->method Http::PUT;
  369.                 break;
  370.             case 'DELETE':
  371.                 $request->method Http::DELETE;
  372.                 break;
  373.             case 'GET':
  374.                 $request->method Http::GET;
  375.                 break;
  376.             case 'PATCH':
  377.                 $request->method Http::PATCH;
  378.                 break;
  379.         }
  380.         $res $request->send();
  381.         $headers $res->headers;
  382.         $dossiernummer = -1;
  383.         if ($res->code == 201){
  384.             $exp explode('/'$headers['location']);
  385.             # get last of exp
  386.             $dossiernummer intval($exp[count($exp) - 1]);
  387.         }
  388.         return new JsonResponse([
  389.             'responseData' => $res->raw_body,
  390.             'responseCode' => $res->code,
  391.             'success' => $res->code == 201,
  392.             'nummer' => $dossiernummer
  393.         ]);
  394.     }
  395.     /**
  396.      * @Route("/api/elements/getdefaultids/{dossierId}", name="elementsGetDefaultIds")
  397.      */
  398.     public function apiElementsGetDefaultIds(EntityManagerInterface $emSessionInterface $sessionRequest $request$dossierId) {
  399.         if (!AccessHelper::ownIP($request->getClientIp())) {
  400.             return new JsonResponse(['access' => False]);
  401.         }
  402.         $relation =  FasterForwardHelper::getRelation($dossierId);
  403.         return new JsonResponse([
  404.             'persoonId' => $relation->id,
  405.             'adresId' => $relation->adres_id,
  406.         ]);
  407.     }
  408.     /**
  409.      * @Route("/api/elementsProduct", name="elementsProduct")
  410.      */
  411.     public function apiElementsProduct(EntityManagerInterface $emSessionInterface $sessionRequest $request) {
  412.         if (!AccessHelper::ownIP($request->getClientIp())) {
  413.             return new JsonResponse(['access' => False]);
  414.         }
  415.         $entities json_decode($request->getContent());
  416.         $request = new FasterForwardUpdateSchadeverzekeringRequest();
  417.         $request->path $entities->url;
  418.         $request->requestData json_decode(json_encode($entities->requestData), true);
  419.         $request->urlOnly json_decode(json_encode($entities->urlOnly), true);
  420.         switch (json_decode(json_encode($entities->method), true)) {
  421.             case 'POST':
  422.                 $request->method Http::POST;
  423.                 break;
  424.             case 'PUT':
  425.                 $request->method Http::PUT;
  426.                 break;
  427.             case 'DELETE':
  428.                 $request->method Http::DELETE;
  429.                 break;
  430.             case 'GET':
  431.                 $request->method Http::GET;
  432.                 break;
  433.             case 'PATCH':
  434.                 $request->method Http::PATCH;
  435.                 break;
  436.         }
  437.         $res $request->send();
  438.         $headers $res->headers;
  439.         $dossiernummer = -1;
  440.         if ($res->code == 201){
  441.             $exp explode('/'$headers['location']);
  442.             # get last of exp
  443.             $dossiernummer intval($exp[count($exp) - 1]);
  444.         }
  445.         return new JsonResponse([
  446.             'responseData' => $res->raw_body,
  447.             'responseCode' => $res->code,
  448.             'success' => $res->code == 201,
  449.             'nummer' => $dossiernummer
  450.         ]);
  451.     }
  452.     public function getRelation($relations$input) {
  453.         $matches = [];
  454.         foreach ($relations as $relation) {
  455.             if ($relation->field('email')->value() != '' && isset($input->{'email'}) && $input->{'email'} != '' && $input->{'email'} != '-') {
  456.                 if ($relation->field('email')->value() != $input->{'email'}) {
  457.                     continue;
  458.                 }
  459.             }
  460.             if ($relation->field('postcode')->value() != '' && isset($input->{'postcode'})&& $input->{'postcode'} != '-') {
  461.                 if ($relation->field('postcode')->value() != $input->{'postcode'}) {
  462.                     continue;
  463.                 }
  464.             }
  465.             if ($relation->field('iban')->value() != '' && isset($input->{'iban'}) && $input->{'iban'} != '-' && $input->{'iban'} != '') {
  466.                 if ($relation->field('iban')->value() != $input->{'iban'}) {
  467.                     continue;
  468.                 }
  469.             }
  470.             if ($relation->field('achternaam')->value() != '' && isset($input->{'achternaam'})&& $input->{'achternaam'} != '-' && $input->{'achternaam'} != '') {
  471.                 if (strtolower($relation->field('achternaam')->value()) != strtolower($input->{'achternaam'})) {
  472.                     continue;
  473.                 }
  474.             }
  475.             if ($relation->field('voorletters')->value() != '' && isset($input->{'voorletters'})&& $input->{'voorletters'} != '-' && $input->{'voorletters'} != '') {
  476.                 if (str_replace(' '''str_replace'.'''$relation->field('voorletters')->value())) != str_replace(' '''str_replace'.'''$input->voorletters))) {
  477.                     continue;
  478.                 }
  479.             }
  480.             if ($relation->field('geboortedatum')->value() != '') {
  481.                 $reformat \DateTime::createFromFormat('Ymd'$relation->field('geboortedatum')->value())->format('d-m-Y');
  482.                 if ($input->{'geboortedatum'} != '' && $reformat != $input->{'geboortedatum'}) {
  483.                     continue;
  484.                 }
  485.             }
  486.             $matches[] = $relation;
  487.         }
  488.         return $matches;
  489.     }
  490.     /**
  491.      * @Route("/api/findRelation/{datasource}", name="apiFindRelation")
  492.      */
  493.     public function test5(EntityManagerInterface $emSessionInterface $sessionRequest $request$datasource) {
  494.         if (!AccessHelper::ownIP($request->getClientIp())) {
  495.             return new JsonResponse(['access' => False]);
  496.         }
  497.         $entities json_decode($request->getContent());
  498.         $relations RelationSearch::byNAW([
  499.             'postcode' => $entities->{'postcode'},
  500.             'huisnummer' => $entities->{'huisnummer'}
  501.         ], $datasource);
  502.         $res $this->getRelation($relations$entities);
  503.         $output = [];
  504.         foreach ($res as $result) {
  505.             $wijziginsreden intval($result->field('wijzigingsreden')->value());
  506.             if (empty($wijziginsreden)) {
  507.                 $vervallen false;
  508.             } else {
  509.                 $vervallen = ($wijziginsreden >= 40 && $wijziginsreden 50);
  510.             }
  511.             if ($vervallen) {
  512.                 continue;
  513.             }
  514. //            $isHollandia = RelationSearch::byActiveHollandia($result->field('relatienummer')->value(), $datasource);
  515. //            if ($isHollandia) {
  516.             $output[] = [
  517.                 'relatienummer' => $result->field('relatienummer')->value(),
  518.                 'achternaam' => $result->field('achternaam')->value(),
  519.                 'agent' => $result->field('agent')->value(),
  520.             ];
  521. //            }
  522.         }
  523.         return new JsonResponse($output);
  524.     }
  525.     /**
  526.      * @Route("/api/findAbbo/{datasource}", name="apiFindAbonnement")
  527.      */
  528.     public function testPakketAbonnement(EntityManagerInterface $emSessionInterface $sessionRequest $request$datasource)
  529.     {
  530.         if (!AccessHelper::ownIP($request->getClientIp())) {
  531.             return new JsonResponse(['access' => False]);
  532.         }
  533.         $entities json_decode($request->getContent());
  534.         $poliskey $entities->{'key'};
  535.         $collection = new Collection('polissen');
  536.         foreach ($entities->{'fields'} as $field) {
  537.             $collection->addField(new FieldLabel($field));
  538.         }
  539.         $collection->addField(FieldLabel::name('polis''wijzigingsreden'));
  540.         $collection->addField(FieldLabel::name('polis''wijzigingsdatum'));
  541.         $collection->addField(new FieldPrimary());
  542.         $collectionDekkingen = new Collection('dekkingen');
  543.         $collectionDekkingen->addField(FieldLabel::name('dekking''dekking'));
  544.         $collectionDekkingen->addField(FieldLabel::name('dekking''toeslag_percentage_dekking'));
  545.         $collectionDekkingen->addField(FieldLabel::name('dekking''toeslag_absoluut_dekking'));
  546.         $collectionDekkingen->addField(FieldLabel::name('dekking''toeslag_absoluut_dekking'));
  547.         $collectionDekkingen->addField(FieldLabel::name('dekking''incassobedrag'));
  548.         $collection->addCollection($collectionDekkingen);
  549.         $collection
  550.             ->addFilter(new Filter(FieldLabel::name('polis''polisnummer'), $poliskey))
  551.             ->addFilter(new Filter(FieldLabel::name('polis''maatschappij'), 'V201'));
  552.         $request = new AwacsViewRequest($collection);
  553.         $request->setDisplayOption('display');
  554.         if (isset($datasource)) {
  555.             $response $request->send($datasource);
  556.         } else {
  557.             $response $request->send();
  558.         }
  559.         $ret = [];
  560.         $i 0;
  561.         foreach ($response->entities() as $entity) {
  562.             $ret[$i]['fields'] = [];
  563.             $ret[$i]['dekkingen'] = [];
  564.             foreach ($entity->fields as $field => $value) {
  565.                 $ret[$i]['fields'][$field] = $value->value();
  566.             }
  567.             foreach ($entity->collection('dekkingen') as $fieldS => $entity) {
  568.                 $ret[$i]['dekkingen'][$fieldS] = [];
  569.                 foreach ($entity->fields as $field => $value) {
  570.                     $ret[$i]['dekkingen'][$fieldS][$field] = $value->value();
  571.                 }
  572.                 $ret[$i]['key'] = $entity->key();
  573.                 $i $i 1;
  574.             }
  575.             return new JsonResponse($ret);
  576.         }
  577.     }
  578.     /**
  579.      * @Route("/api/findPolis/{datasource}", name="apiFindPolis")
  580.      */
  581.     public function test8(EntityManagerInterface $emSessionInterface $sessionRequest $request$datasource) {
  582.         if (!AccessHelper::ownIP($request->getClientIp())) {
  583.             return new JsonResponse(['access' => False]);
  584.         }
  585.         $entities json_decode($request->getContent());
  586.         $poliskey $entities->{'key'};
  587.         $collection = new Collection('polissen');
  588.         foreach ($entities->{'fields'} as $field) {
  589.             $collection->addField(new FieldLabel($field));
  590.         }
  591.         $collection
  592.             ->addFilter(new Filter(new FieldPrimary(), $poliskey'='));
  593.         $request = new AwacsViewRequest($collection);
  594.         $request->setDisplayOption('display');
  595.         if (isset($datasource)) {
  596.             $response $request->send($datasource);
  597.         } else {
  598.             $response $request->send();
  599.         }
  600.         $ret = [];
  601.         foreach ($response->entities()[0]->fields as $field => $value) {
  602.             $ret[$field] = $value->value();
  603.         }
  604.         return new JsonResponse($ret);
  605.         return new JsonResponse($output);
  606.     }
  607.     /**
  608.      * @Route("/api/findAgendas/{datasource}", name="apiFindAgendas")
  609.      */
  610.     public function test24(EntityManagerInterface $emSessionInterface $sessionRequest $request$datasource) {
  611.         if (!AccessHelper::ownIP($request->getClientIp())) {
  612.             return new JsonResponse(['access' => False]);
  613.         }
  614.         $entities json_decode($request->getContent());
  615.         $poliskey $entities->{'key'};
  616.         $collectionAgenda = new Collection('agendaas');
  617.         $collectionAgenda->addField(new FieldLabel('*'));
  618.         $collectionAgenda
  619.             ->addFilter(new Filter(new FieldPrimary(), 'AGENDA_P'$poliskey "*"'='));
  620.         $request = new AwacsViewRequest($collectionAgenda);
  621.         $request->setDisplayOption('display');
  622.         if (isset($datasource)) {
  623.             $response $request->send($datasource);
  624.         } else {
  625.             $response $request->send();
  626.         }
  627.         $out = [];
  628.         foreach ($response->entities() as $entity) {
  629.             $ret = [];
  630.             foreach ($entity->fields as $field => $value) {
  631.                 $ret[$field] = $value->value();
  632.             }
  633.             $ret['pk'] = $response->entities()[0]->key();
  634.             $out[] = $ret;
  635.         }
  636.         return new JsonResponse($out);
  637.         return new JsonResponse($output);
  638.     }
  639.     public function responseToJson(AwacsResponse $response) {
  640.         $polis $response->entities()[0];
  641.         $output = [
  642.             'fields' => [],
  643.             'dekkingen' => [],
  644.         ];
  645.         foreach ($polis->fields as $field => $value) {
  646.             $output['fields'][$field] = $value->value();
  647.         }
  648.         foreach ($polis->collection('dekkingen') as $field => $dekking) {
  649.             $res = [];
  650.             foreach ($dekking->fields as $fieldD => $value) {
  651.                 $res[$fieldD] = $value->value();
  652.             }
  653.             $output['dekkingen'][$dekking->field('dekking')->value()] = $res;
  654.         }
  655.         return $output;
  656.     }
  657.     /**
  658.      * @Route("/api/fieldsSjabloon/{datasource}", name="apiFieldsSjabloon")
  659.      */
  660.     public function test9(EntityManagerInterface $emSessionInterface $sessionRequest $request$datasource) {
  661.         if (!AccessHelper::ownIP($request->getClientIp())) {
  662.             return new JsonResponse(['access' => False]);
  663.         }
  664.         $entities json_decode($request->getContent());
  665.         $poliskey $entities->{'key'};
  666.         $productId $entities->{'productId'};
  667.         $contextId $entities->{'contextId'};
  668.         $functieId $entities->{'functieId'};
  669.         $maatschappij $entities->{'maatschappij'};
  670.         $projdir $this->getParameter('kernel.project_dir');
  671.         switch ($maatschappij) {
  672.             case 'V059':
  673.                 $maatschappij 'asr';
  674.                 break;
  675.             case 'N200':
  676.                 $maatschappij 'nn';
  677.                 break;
  678.         }
  679.         $data VPIRequest::templateEmpty(''$productId$contextId$functieId'geefSjabloon');
  680.         $result VPIRequest::sendRequestVPI($data$maatschappij$projdirtrue);
  681.         $collection = new Collection('polissen');
  682.         $collection->addField(new FieldLabel('*'));
  683.         $collectionDekkingen = new Collection('dekkingen');
  684.         $collectionDekkingen->addField(new FieldLabel('*'));
  685.         $collection->addCollection($collectionDekkingen);
  686.         $collection
  687.             ->addFilter(new Filter(new FieldPrimary(), $poliskey'='));
  688.         $request = new AwacsViewRequest($collection);
  689.         $request->setDisplayOption('display');
  690.         if (isset($datasource)) {
  691.             $response $request->send($datasource);
  692.         } else {
  693.             $response $request->send();
  694.         }
  695.         return new JsonResponse([
  696.             'sjabloon' => $result,
  697.             'polisinfo' => self::responseToJson($response),
  698.         ]);
  699.     }
  700.     /**
  701.      * @Route("/api/vpiAcceptatie", name="apiVPIAcceptatie")
  702.      */
  703.     public function test10(EntityManagerInterface $emSessionInterface $sessionRequest $request) {
  704.         if (!AccessHelper::ownIP($request->getClientIp())) {
  705.             return new JsonResponse(['access' => False]);
  706.         }
  707.         $entities json_decode($request->getContent());
  708.         $poliskey $entities->{'key'};
  709.         $productId $entities->{'productId'};
  710.         $contextId $entities->{'contextId'};
  711.         $functieId $entities->{'functieId'};
  712.         $maatschappij $entities->{'maatschappij'};
  713.         $data $entities->{'requestData'};
  714.         $projdir $this->getParameter('kernel.project_dir');
  715.         switch ($maatschappij) {
  716.             case 'V059':
  717.                 $maatschappij 'asr';
  718.                 break;
  719.             case 'N200':
  720.                 $maatschappij 'nn';
  721.                 break;
  722.         }
  723.         $data VPIRequest::templateEmpty($data$productId$contextId$functieId'doeFunctie');
  724.         $result VPIRequest::sendRequestVPI($data$maatschappij$projdir);
  725.         return new JsonResponse($result);
  726.     }
  727.     /**
  728.      * @Route("/api/vpi/auto", name="apiVPIAuto")
  729.      */
  730.     public function apiVPIAuto(EntityManagerInterface $emSessionInterface $sessionRequest $request) {
  731.         if (!AccessHelper::ownIP($request->getClientIp())) {
  732.             return new JsonResponse(['access' => False]);
  733.         }
  734.         if ($request->getMethod() === 'OPTIONS') {
  735.             $response = new JsonResponse();
  736.             $response->headers->set('Access-Control-Allow-Origin''https://chat.pivotwise.nl');
  737.             $response->headers->set('Access-Control-Allow-Methods''POST, GET, OPTIONS');
  738.             $response->headers->set('Access-Control-Allow-Headers''Content-Type');
  739.             return $response;
  740.         }
  741.         $premiebepalendeGegevens json_decode($request->getContent());
  742.         $process = new ProcessCar();
  743.         $process->svj $premiebepalendeGegevens->schadevrijeJaren;
  744.         $process->geboortedatum $premiebepalendeGegevens->geboortedatum;
  745.         $process->postcode $premiebepalendeGegevens->postcode;
  746.         $process->huisnummer $premiebepalendeGegevens->huisnummer;
  747.         $process->toevoeging '';
  748.         $process->relatieGeboortedatum $premiebepalendeGegevens->geboortedatum;
  749.         $process->relatiePostcode $premiebepalendeGegevens->postcode;
  750.         $process->relatieHuisnummer $premiebepalendeGegevens->huisnummer;
  751.         $process->relatieToevoeging '';
  752.         $process->dekking $premiebepalendeGegevens->dekking;
  753.         $process->termijn 'maand';
  754.         $process->kenteken $premiebepalendeGegevens->kenteken;
  755.         $process->mutationIngangsdatum = new \DateTime();
  756.         $process->ingangsdatum = new \DateTime();
  757.         $projdir $this->getParameter('kernel.project_dir');
  758.         $productId 'VPI_NN_PersP2024ExclBM';
  759.         $maatschappij VPIMappingNew::getMaatschappijByProductId($productId);
  760.         $dummyTemplate VPIRequest::template(''$productId$processfalse);
  761.         $gimCache VPIRequest::getSjabloonStdClass($em$projdir$maatschappij$productId$dummyTemplate['doeFunctieVraag']['procesInfo']['functie']['contextId'], $dummyTemplate['doeFunctieVraag']['procesInfo']['functie']['functieId']);
  762.         $data VPIMapping::transform($process$productId, ['vc'], $gimCachenull);
  763.         if ($data === false) {
  764.             return false;
  765.         }
  766.         $responseBin = new \stdClass();
  767.         $response VPIRequest::sendVPI($projdir$data$maatschappij$productId$process$responseBin);
  768.         if ($response !== null) {
  769.             $policies VPIHelper::parsePolis($response$productId'Autoverzekering'$data$process$responseBin, ['vc']);
  770.             if ($policies !== null) {
  771.                 foreach ($policies as $policy) {
  772.                     $process->results[] = $policy;
  773.                 }
  774.             }
  775.         }
  776.         $res = new JsonResponse($process->results);
  777.         $res->headers->set('Access-Control-Allow-Origin''https://chat.pivotwise.nl');
  778.         $res->headers->set('Access-Control-Allow-Methods''POST, GET, OPTIONS');
  779.         $res->headers->set('Access-Control-Allow-Headers''Content-Type');
  780.         // Add your data to the response if necessary, e.g., $response->setData([...]);
  781.         return $res;
  782.     }
  783. }