src/Controller/MainController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Products;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use App\Entity\Settings;
  11. use Exception;
  12. use App\Entity\PointsSettings;
  13. use App\Entity\GeneralValuesSettings;
  14. class MainController extends AbstractController
  15. {
  16.     #[Route('/'name'app_main')]
  17.     public function index(): Response
  18.     {
  19.         return new Response("Hello world");
  20.     }
  21.     
  22.     #[Route('/table/UpdatePrice'name'app_updatePrice')]
  23.     public function updatePrice(ManagerRegistry $doctrineRequest $request): Response
  24.     {
  25.         if ($content $request->getContent()) {
  26.             $jsonBody json_decode($contenttrue);
  27.         }
  28.         $entityManager $doctrine->getManager();
  29.         $item $doctrine->getRepository(Products::class)->findOneBy(['id'=>$jsonBody['id']]);
  30.         $item->setPrice($jsonBody['price']);
  31.         $entityManager->flush();
  32.         return new JsonResponse(['success'=>true]);
  33.     }
  34.     #[Route('/table'name'app_table')]
  35.     public function table(ManagerRegistry $doctrine): Response
  36.     {
  37.         $productsArray = [];
  38.         // gathering settings from db
  39.         $isOriginal_value $doctrine->getRepository(GeneralValuesSettings::class)->findOneBy(['setting'=>'is_original'])->getValue();
  40.         $jest_wypiaskowana_value $doctrine->getRepository(GeneralValuesSettings::class)->findOneBy(['setting'=>'jest_wypiaskowana'])->getValue();
  41.         $item_condition_new $doctrine->getRepository(GeneralValuesSettings::class)->findOneBy(['setting'=>'item_condition_new'])->getValue();
  42.         $item_condition_new_defects $doctrine->getRepository(GeneralValuesSettings::class)->findOneBy(['setting'=>'item_condition_new_defects'])->getValue();
  43.         // gathering products from db
  44.         $db $doctrine->getRepository(Products::class)->findAll();
  45.         $points_settings $doctrine->getRepository(Settings::class)->findAllIndexed();
  46.         // dd($points_settings['A1']['value']);
  47.         foreach($db as $item){
  48.             // setting default values
  49.             $defectList "";
  50.             $sumaPunktow 0;
  51.             $basePrice $item->getEurocode()->getBasePrice();
  52.             $manufacturerTier $item->getManufacturer()->getTier();
  53.             $manufacturerPriceChange $manufacturerTier->getPriceChange();
  54.             $manufacturerPriceChangeOperation preg_replace('/[0-9]+/'''$manufacturerPriceChange);
  55.             $manufacturerPriceChangeNumber = (float) str_replace(['-''+'], ''$manufacturerPriceChange);
  56.             $manufacturerPriceChangeCalc = (($manufacturerPriceChangeNumber/100)*($basePrice/1));
  57.     
  58.             // state of product
  59.             // new - new
  60.             // new with defects - new_defects
  61.             // used - used
  62.             if($item->getState() == "new"){
  63.                 $stateValue = (($item_condition_new/100)*($basePrice/1)); 
  64.             } elseif($item->getState() == "new_defects"){
  65.                 $stateValue = (($item_condition_new_defects/100)*($basePrice/1)); 
  66.             } else {
  67.                 $stateValue 0;
  68.             }
  69.             if($item->getIsOriginal() == true){
  70.                 $isOriginalCalc 0;
  71.             } else {
  72.                 $isOriginalCalc = (($isOriginal_value/100)*($basePrice/1)); 
  73.             }
  74.             if($item->getJestWypiaskowana() == 1){
  75.                 $jestWypiaskowanaValue = (($jest_wypiaskowana_value/100)*($basePrice/1));
  76.             } else {
  77.                 $jestWypiaskowanaValue 0;
  78.             }
  79.             
  80.             if(!empty($item->getDamages())){
  81.                 foreach($item->getDamages() as $defects){
  82.                     $defectPlace array_key_first($defects);
  83.                     $sumaPunktow += $defects[$defectPlace]*$points_settings[$defectPlace]['value'];
  84.                     $defectList $defectList " " $defectPlace ": " $defects[$defectPlace];                        
  85.                     
  86.                 }
  87.                 
  88.             }
  89.             $discount $doctrine->getRepository(PointsSettings::class)->findOneBySomeField($sumaPunktow);
  90.             if($discount === NULL){
  91.                 $discount 0;
  92.             } else {
  93.                 $discount $discount->getDiscount();
  94.             }
  95.             
  96.             // main calc function
  97.             if($item->getIsOriginal() == false){
  98.                 // only if item is not original
  99.                 if($manufacturerPriceChangeOperation == "+"){
  100.                     $calc $basePrice-($basePrice*$discount) - $jestWypiaskowanaValue $isOriginalCalc $stateValue $manufacturerPriceChangeCalc;
  101.                 } else {
  102.                     $calc $basePrice-($basePrice*$discount) - $jestWypiaskowanaValue $isOriginalCalc $stateValue $manufacturerPriceChangeCalc;
  103.                 }
  104.             } else {
  105.                 $calc $basePrice-($basePrice*$discount) - $jestWypiaskowanaValue $isOriginalCalc $stateValue;
  106.             }
  107.             
  108.             
  109.             
  110.   
  111.             $productsArray[] = array(
  112.                 'ID'=>$item->getId(),
  113.                 'sku'=>$item->getSku(),
  114.                 'manufacturer'=>$item->getManufacturer()->getName(),
  115.                 'ManufacturerPenalty'=>$manufacturerPriceChangeOperation.$manufacturerPriceChangeNumber,
  116.                 'manufacturerTier'=>$manufacturerTier->getName(),
  117.                 'points'=>$sumaPunktow,
  118.                 'pointsValue'=>($basePrice*$discount),
  119.                 'eurocode'=>$item->getEurocode(),
  120.                 'state'=>$item->getState(),
  121.                 'isOriginal'=>$item->getIsOriginal(),
  122.                 'isOriginalValue'=>$isOriginalCalc,
  123.                 'jestWypiaskowana'=>$item->getJestWypiaskowana(),
  124.                 'jestWypiaskowanaValue'=>$jestWypiaskowanaValue,
  125.                 'basePrice'=>$basePrice,
  126.                 'buyPrice'=>$item->getBuyPrice(),
  127.                 'currentPrice'=>$item->getPrice(),
  128.                 'calculated_price'=>$calc,
  129.                 'defectsList'=>$defectList
  130.             );
  131.         }
  132.        
  133.         return $this->render('main/index.html.twig', [
  134.             'products' => $productsArray,
  135.         ]);
  136.     }
  137. }