src/Controller/Admin/ProductPageController.php line 175

Open in your IDE?
  1. <?php
  2. namespace EADPlataforma\Controller\Admin;
  3. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use EADPlataforma\Entity\Product;
  7. use EADPlataforma\Entity\ProductOffer;
  8. use EADPlataforma\Entity\ProductTeam;
  9. use EADPlataforma\Entity\ProductPage;
  10. use EADPlataforma\Entity\User;
  11. use EADPlataforma\Entity\Library;
  12. use EADPlataforma\Enum\ProductEnum;
  13. use EADPlataforma\Enum\ProductOfferEnum;
  14. use EADPlataforma\Enum\LibraryEnum;
  15. use EADPlataforma\Enum\ProductPageEnum;
  16. use EADPlataforma\Enum\TrashEnum;
  17. use EADPlataforma\Enum\ErrorEnum;
  18. /**
  19.  * @Route(
  20.  *      path          = "/admin/product/page",
  21.  *      schemes         = {"http|https"}
  22.  * )
  23.  * @Cache(
  24.  *      maxage          = "0",
  25.  *      smaxage         = "0",
  26.  *      expires         = "now",
  27.  *      public          = false
  28.  * )
  29.  */
  30. class ProductPageController extends AbstractController {
  31.     public function getEntityClass(){
  32.         return ProductPage::class;
  33.     }
  34.     /**
  35.      * @Route(
  36.      *      path          = "/list/paginate",
  37.      *      methods       = {"GET"},
  38.      * )
  39.      */
  40.     public function getProductPagePaginate(Request $request) {
  41.         $permission $this->userPermissionUtil->getPermission(
  42.             "product""product_page""see"
  43.         );
  44.         if($this->userPermissionUtil->isLow($permission)){
  45.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  46.         }
  47.         $this->requestUtil->setRequest($request)->setData();
  48.         $columns = [
  49.             "pp.id",
  50.             "pp.status",
  51.             "pp.name",
  52.             "pp.type",
  53.             "pp.default",
  54.             "p.id AS productId",
  55.             "p.type AS productType",
  56.             "ud.name AS userDelete"
  57.         ];
  58.         $productClass Product::class;
  59.         $userClass User::class;
  60.         $joins = [
  61.             "{$productClass} AS p" => "p.id = pp.product ",
  62.             "{$userClass} AS ud" => ["LEFT""ud.id = pp.userDelete"]
  63.         ];
  64.         $status $this->requestUtil->getField('status');
  65.         $productId = (int)$this->requestUtil->getField('product');
  66.         
  67.         $orderParam $this->requestUtil->getField('order');
  68.         $searchText $this->requestUtil->getField('searchText');
  69.         $limit $this->requestUtil->getField('limit');
  70.         $offset $this->requestUtil->getField('offset');
  71.         $filter = [];
  72.         $filterDelete $this->requestUtil->getDeletedParam();
  73.         if(!empty($productId)){
  74.             $filter["pp.product"] = $productId;
  75.             if($this->userPermissionUtil->isMiddle($permission)){
  76.                 $product $this->em->getRepository(Product::class)->findOneBy([
  77.                     "id" => $productId,
  78.                     "deleted" => ProductPageEnum::ITEM_NO_DELETED
  79.                 ]);
  80.                 if($product){
  81.                     $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  82.                         $product
  83.                         $this->user
  84.                     );
  85.                     $filter[ProductPageEnum::YES] = ( 
  86.                         $isInTeam ProductPageEnum::YES ProductPageEnum::NO 
  87.                     );
  88.                 }
  89.             }
  90.         }
  91.         if(!is_null($status)){
  92.             $filter["pp.status"] = $status;
  93.         }
  94.         $order = ["pp.id" => "ASC"];
  95.         if(!empty($orderParam)){
  96.             $order json_decode($orderParamtrue);
  97.         }
  98.         $data $this->repository->paginate(
  99.             "pp"
  100.             $searchText
  101.             $columns
  102.             $joins
  103.             $filter
  104.             $order
  105.             $limit
  106.             $offset
  107.             $filterDelete
  108.         );
  109.         $productOfferRepository $this->em->getRepository(ProductOffer::class);
  110.         foreach ($data["rows"] as $key => $item) {
  111.             $item = (object)$item;
  112.             
  113.             $item->inUse $productOfferRepository->count([
  114.                 "deleted" => ProductOfferEnum::ITEM_NO_DELETED,
  115.                 "productPage" => $item->id
  116.             ]);
  117.             $data["rows"][$key] = $item;
  118.         }
  119.         return $this->eadResponse($data);
  120.     }
  121.     /**
  122.      * @Route(
  123.      *      path          = "/list/all",
  124.      *      methods       = {"GET"}
  125.      * )
  126.      */
  127.     public function getAllProductPage(Request $request) {
  128.         
  129.         $this->requestUtil->setRequest($request)->setData();
  130.         $productId = (int)$this->requestUtil->getField('product');
  131.         $productPages $this->repository->findBy([
  132.             "product" => $productId,
  133.             "status" => ProductPageEnum::PUBLISHED,
  134.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  135.         ]);
  136.         $pages = [];
  137.         foreach ($productPages as $key => $productPage) {
  138.             $pages[] = $productPage->toReturn();
  139.         }
  140.         return $this->eadResponse($pages);
  141.     }
  142.     /**
  143.      * @Route(
  144.      *      path          = "/detail/{id}",
  145.      *      methods       = {"GET"},
  146.      *      requirements  = {"id": "\d+"}
  147.      * )
  148.      */
  149.     public function getProductPage(Request $request) {
  150.         $permission $this->userPermissionUtil->getPermission(
  151.             "product""product_page""see"
  152.         );
  153.         
  154.         if($this->userPermissionUtil->isLow($permission)){
  155.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  156.         }
  157.         $this->requestUtil->setRequest($request)->setData();
  158.         $productPageId $request->get('id');
  159.         $productPage $this->repository->findOneBy([
  160.             "id" => $productPageId,
  161.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  162.         ]);
  163.         if(!$productPage){
  164.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  165.         }
  166.         $product $productPage->getProduct();
  167.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  168.             $product
  169.             $this->user
  170.         );
  171.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  172.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  173.         }
  174.         $data $productPage->toReturn();
  175.         $data['inUse'] = $this->em->getRepository(ProductOffer::class)->count([
  176.             "deleted" => ProductOfferEnum::ITEM_NO_DELETED,
  177.             "productPage" => $productPage->getId()
  178.         ]);
  179.         return $this->eadResponse($data);
  180.     }
  181.     /**
  182.      * @Route(
  183.      *      path          = "/register",
  184.      *      methods       = {"POST"},
  185.      * )
  186.      */
  187.     public function registerProductPage(Request $request) {
  188.         $permission $this->userPermissionUtil->getPermission(
  189.             "product""product_page""create"
  190.         );
  191.         
  192.         if($this->userPermissionUtil->isLow($permission)){
  193.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  194.         }
  195.         $this->requestUtil->setRequest($request)->setData();
  196.         $productPage = new ProductPage();
  197.         $productId = (int)$this->requestUtil->getField('product');
  198.         $product $this->em->getRepository(Product::class)->findOneBy([
  199.             "id" => $productId,
  200.             "deleted" => ProductEnum::ITEM_NO_DELETED
  201.         ]);
  202.         if($product){
  203.             $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  204.                 $product
  205.                 $this->user
  206.             );
  207.             if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  208.                 return $this->eadResponse(nullErrorEnum::PERMISSION);
  209.             }
  210.             $productPage->setProduct($product);
  211.         }
  212.         $filePhoto $this->requestUtil->getFile('photo');
  213.         $filePhotoStand $this->requestUtil->getFile('photoStand');
  214.         $filePhotoExpand $this->requestUtil->getFile('photoExpand');
  215.         $fileCover $this->requestUtil->getFile('cover');
  216.         if($this->requestUtil->issetField('status')){
  217.             $productPage->setStatus((int)$this->requestUtil->getField('status'));
  218.         }
  219.         if($this->requestUtil->issetField('type')){
  220.             $productPage->setType((int)$this->requestUtil->getField('type'));
  221.         }
  222.         if($this->requestUtil->issetField('name')){
  223.             $productPage->setName($this->requestUtil->getField('name'));
  224.         }
  225.         if($this->requestUtil->issetField('title')){
  226.             $productPage->setTitle($this->requestUtil->getField('title'));
  227.         }
  228.         if($this->requestUtil->issetField('description')){
  229.             $productPage->setDescription($this->requestUtil->getField('description'));
  230.         }
  231.         if($this->requestUtil->issetField('about')){
  232.             $productPage->setAbout($this->requestUtil->getField('about'));
  233.         }
  234.         if($this->requestUtil->issetField('overview')){
  235.             $productPage->setOverview($this->requestUtil->getField('overview'));
  236.         }
  237.         if($this->requestUtil->issetField('target')){
  238.             $productPage->setTarget($this->requestUtil->getField('target'));
  239.         }
  240.         if($this->requestUtil->issetField('aboutCertificate')){
  241.             $productPage->setAboutCertificate($this->requestUtil->getField('aboutCertificate'));
  242.         }
  243.         if($this->requestUtil->issetField('video')){
  244.             $productPage->setVideo(
  245.                 $this->stringUtil->video($this->requestUtil->getField('video'))
  246.             );
  247.         }
  248.         if($this->requestUtil->issetField('library')){
  249.             $libraryRepository $this->em->getRepository(Library::class);
  250.             $libraryId = (int)$this->requestUtil->getField('library');
  251.             
  252.             if(!empty($libraryId)){
  253.                 $library $libraryRepository->findOneBy([
  254.                     "id" => $libraryId,
  255.                     "deleted" => LibraryEnum::ITEM_NO_DELETED
  256.                 ]);
  257.                 if($library){
  258.                     $productPage->setVideo(null);
  259.                     $productPage->setLibrary($library);
  260.                 }
  261.             }else{
  262.                 $productPage->setLibrary(null);
  263.             }
  264.         }else{
  265.             $productPage->setLibrary(null);
  266.         }
  267.         if($this->requestUtil->issetField('autoplay')){
  268.             $productPage->setAutoplay((int)$this->requestUtil->getField('autoplay'));
  269.         }
  270.         if($this->requestUtil->issetField('externalPage')){
  271.             $productPage->setExternalPage((int)$this->requestUtil->getField('externalPage'));
  272.         }
  273.         if($this->requestUtil->issetField('externalPageLink')){
  274.             $productPage->setExternalPageLink($this->requestUtil->getField('externalPageLink'));
  275.         }
  276.         if($this->requestUtil->issetField('pageColorText')){
  277.             $productPage->setPageColorText($this->requestUtil->getField('pageColorText'));
  278.         }
  279.         if($this->requestUtil->issetField('backgroundColor')){
  280.             $productPage->setBackgroundColor($this->requestUtil->getField('backgroundColor'));
  281.         }
  282.         if($this->requestUtil->issetField('showModuleCoupon')){
  283.             $productPage->setShowModuleCoupon($this->requestUtil->getField('showModuleCoupon'));
  284.         }
  285.         if($this->requestUtil->issetField('showModuleTestimonials')){
  286.             $productPage->setShowModuleTestimonials($this->requestUtil->getField('showModuleTestimonials'));
  287.         }
  288.         if($this->requestUtil->issetField('showModuleDataBilling')){
  289.             $productPage->setShowModuleDataBilling($this->requestUtil->getField('showModuleDataBilling'));
  290.         }
  291.         if($this->requestUtil->issetField('showModuleOptionForeign')){
  292.             $productPage->setShowModuleOptionForeign($this->requestUtil->getField('showModuleOptionForeign'));
  293.         }
  294.         if($this->requestUtil->issetField('showShortageControlTime')){
  295.             $productPage->setShowShortageControlTime($this->requestUtil->getField('showShortageControlTime'));
  296.         }
  297.         if($this->requestUtil->issetField('showShortageControlVisualization')){
  298.             $productPage->setShowShortageControlVisualization($this->requestUtil->getField('showShortageControlVisualization'));
  299.         }
  300.         if($this->requestUtil->issetField('showShortageControlBuyers')){
  301.             $productPage->setShowShortageControlBuyers($this->requestUtil->getField('showShortageControlBuyers'));
  302.         }
  303.         if($this->requestUtil->issetField('showShortageControlVacancies')){
  304.             $productPage->setShowShortageControlVacancies($this->requestUtil->getField('showShortageControlVacancies'));
  305.         }
  306.         if($this->requestUtil->issetField('allowExternalConclusion')){
  307.             $productPage->setAllowExternalConclusion($this->requestUtil->getField('allowExternalConclusion'));
  308.         }
  309.         
  310.         if($this->requestUtil->issetField('externalConclusionLink')){
  311.             $productPage->setExternalConclusionLink($this->requestUtil->getField('externalConclusionLink'));
  312.         }
  313.         if($this->requestUtil->issetField('showModuleHeader')){
  314.             $productPage->setShowModuleHeader($this->requestUtil->getField('showModuleHeader'));
  315.         }
  316.         if($this->requestUtil->issetField('showModuleContracts')){
  317.             $productPage->setShowModuleContracts($this->requestUtil->getField('showModuleContracts'));
  318.         }
  319.         if($this->requestUtil->issetField('shortageTimeNumber')){
  320.             $productPage->setShortageTimeNumber($this->requestUtil->getField('shortageTimeNumber'));
  321.         }
  322.         if($this->requestUtil->issetField('shortageVisualizationNumber')){
  323.             $productPage->setShortageVisualizationNumber((int)$this->requestUtil->getField('shortageVisualizationNumber'));
  324.         }
  325.         if($this->requestUtil->issetField('shortageBuyersNumber')){
  326.             $productPage->setShortageBuyersNumber((int)$this->requestUtil->getField('shortageBuyersNumber'));
  327.         }
  328.         if($this->requestUtil->issetField('shortageVacanciesNumber')){
  329.             $productPage->setShortageVacanciesNumber((int)$this->requestUtil->getField('shortageVacanciesNumber'));
  330.         }
  331.         $errors $this->validateEntity($productPage);
  332.         if($errors){
  333.             return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  334.         }
  335.         if($filePhoto){
  336.             $filePhoto $this->fileService->setFile($filePhoto);
  337.             if($filePhoto){
  338.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_PHOTO);
  339.                 $productPage->setPhoto($this->fileService->getFileName());
  340.             }
  341.         }
  342.         if($filePhotoStand){
  343.             $filePhotoStand $this->fileService->setFile($filePhotoStand);
  344.             if($filePhotoStand){
  345.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_PHOTO);
  346.                 $productPage->setPhotoStand($this->fileService->getFileName());
  347.             }
  348.         }
  349.         if($filePhotoExpand){
  350.             $filePhotoExpand $this->fileService->setFile($filePhotoExpand);
  351.             if($filePhotoExpand){
  352.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_PHOTO);
  353.                 $productPage->setPhotoExpand($this->fileService->getFileName());
  354.             }
  355.         }
  356.         if($fileCover){
  357.             $fileCover $this->fileService->setFile($fileCover);
  358.             if($fileCover){
  359.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_COVER);
  360.                 $productPage->setCover($this->fileService->getFileName());
  361.             }
  362.         }
  363.         if($productPage->getDefault() == ProductPageEnum::YES){
  364.             $productPage->setStatus(ProductPageEnum::PUBLISHED);
  365.             $this->repository->removeDefault($productPage);
  366.         }
  367.         $this->em->persist($productPage);
  368.         $this->em->flush();
  369.         $data $productPage->toReturn();
  370.         $this->userLogService->logInsert("product_page"$productPage->getId(), $data);
  371.         return $this->eadResponse($data);
  372.     }
  373.     /**
  374.      * @Route(
  375.      *      path          = "/edit/{id}",
  376.      *      methods       = {"POST"},
  377.      *      requirements  = { "id" = "\d+" }
  378.      * )
  379.      */
  380.     public function editProductPage(Request $request) {
  381.         $permission $this->userPermissionUtil->getPermission(
  382.             "product"
  383.             "product_page"
  384.             "edit"
  385.         );
  386.         
  387.         if($this->userPermissionUtil->isLow($permission)){
  388.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  389.         }
  390.         $this->requestUtil->setRequest($request)->setData();
  391.         $productPageId $request->get('id');
  392.         $productPage $this->repository->findOneBy([
  393.             "id" => $productPageId,
  394.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  395.         ]);
  396.         if (!$productPage) {
  397.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  398.         }
  399.         $product $productPage->getProduct();
  400.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  401.             $product,
  402.             $this->user
  403.         );
  404.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  405.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  406.         }
  407.         $filePhoto $this->requestUtil->getFile('photo');
  408.         $filePhotoStand $this->requestUtil->getFile('photoStand');
  409.         $filePhotoExpand $this->requestUtil->getFile('photoExpand');
  410.         $fileCover $this->requestUtil->getFile('cover');
  411.         if($this->requestUtil->issetField('status')){
  412.             $productPage->setStatus((int)$this->requestUtil->getField('status'));
  413.         }
  414.         if($this->requestUtil->issetField('type')){
  415.             $productPage->setType((int)$this->requestUtil->getField('type'));
  416.         }
  417.         if($this->requestUtil->issetField('name')){
  418.             $productPage->setName($this->requestUtil->getField('name'));
  419.         }
  420.         if($this->requestUtil->issetField('title')){
  421.             $productPage->setTitle($this->requestUtil->getField('title'));
  422.         }
  423.         //print_r($this->requestUtil->getField('description'));exit;
  424.         if($this->requestUtil->issetField('description')){
  425.             $productPage->setDescription($this->requestUtil->getField('description'));
  426.         }
  427.         if($this->requestUtil->issetField('about')){
  428.             $productPage->setAbout($this->requestUtil->getField('about'));
  429.         }
  430.         if($this->requestUtil->issetField('overview')){
  431.             $productPage->setOverview($this->requestUtil->getField('overview'));
  432.         }
  433.         if($this->requestUtil->issetField('target')){
  434.             $productPage->setTarget($this->requestUtil->getField('target'));
  435.         }
  436.         if($this->requestUtil->issetField('aboutCertificate')){
  437.             $productPage->setAboutCertificate(
  438.                 $this->requestUtil->getField('aboutCertificate')
  439.             );
  440.         }
  441.         if($this->requestUtil->issetField('video')){
  442.             $productPage->setVideo(
  443.                 $this->stringUtil->video($this->requestUtil->getField('video'))
  444.             );
  445.         }
  446.         if($this->requestUtil->issetField('library')){
  447.             $libraryRepository $this->em->getRepository(Library::class);
  448.             $libraryId = (int)$this->requestUtil->getField('library');
  449.             
  450.             if(!empty($libraryId)){
  451.                 $library $libraryRepository->findOneBy([
  452.                     "id" => $libraryId,
  453.                     "deleted" => LibraryEnum::ITEM_NO_DELETED
  454.                 ]);
  455.                 if($library){
  456.                     $productPage->setVideo(null);
  457.                     $productPage->setLibrary($library);
  458.                 }
  459.             }else{
  460.                 $productPage->setLibrary(null);
  461.             }
  462.         }else{
  463.             $productPage->setLibrary(null);
  464.         }
  465.         if($this->requestUtil->issetField('autoplay')){
  466.             $productPage->setAutoplay((int)$this->requestUtil->getField('autoplay'));
  467.         }
  468.         if($this->requestUtil->issetField('externalPage')){
  469.             $productPage->setExternalPage((int)$this->requestUtil->getField('externalPage'));
  470.         }
  471.         if($this->requestUtil->issetField('externalPageLink')){
  472.             $productPage->setExternalPageLink(
  473.                 $this->requestUtil->getField('externalPageLink')
  474.             );
  475.         }
  476.         if($this->requestUtil->issetField('pageColorText')){
  477.             $productPage->setPageColorText($this->requestUtil->getField('pageColorText'));
  478.         }
  479.         if($this->requestUtil->issetField('backgroundColor')){
  480.             $productPage->setBackgroundColor(
  481.                 $this->requestUtil->getField('backgroundColor')
  482.             );
  483.         }
  484.         if($this->requestUtil->issetField('showModuleCoupon')){
  485.             $productPage->setShowModuleCoupon($this->requestUtil->getField('showModuleCoupon'));
  486.         }
  487.         if($this->requestUtil->issetField('showModuleTestimonials')){
  488.             $productPage->setShowModuleTestimonials($this->requestUtil->getField('showModuleTestimonials'));
  489.         }
  490.         if($this->requestUtil->issetField('showModuleDataBilling')){
  491.             $productPage->setShowModuleDataBilling($this->requestUtil->getField('showModuleDataBilling'));
  492.         }
  493.         if($this->requestUtil->issetField('showModuleOptionForeign')){
  494.             $productPage->setShowModuleOptionForeign($this->requestUtil->getField('showModuleOptionForeign'));
  495.         }
  496.         if($this->requestUtil->issetField('showShortageControlTime')){
  497.             $productPage->setShowShortageControlTime($this->requestUtil->getField('showShortageControlTime'));
  498.         }
  499.         if($this->requestUtil->issetField('showShortageControlVisualization')){
  500.             $productPage->setShowShortageControlVisualization($this->requestUtil->getField('showShortageControlVisualization'));
  501.         }
  502.         if($this->requestUtil->issetField('showShortageControlBuyers')){
  503.             $productPage->setShowShortageControlBuyers($this->requestUtil->getField('showShortageControlBuyers'));
  504.         }
  505.         
  506.         if($this->requestUtil->issetField('showShortageControlVacancies')){
  507.             $productPage->setShowShortageControlVacancies($this->requestUtil->getField('showShortageControlVacancies'));
  508.         }
  509.         if($this->requestUtil->issetField('allowExternalConclusion')){
  510.             $productPage->setAllowExternalConclusion($this->requestUtil->getField('allowExternalConclusion'));
  511.         }
  512.         
  513.         if($this->requestUtil->issetField('externalConclusionLink')){
  514.             $productPage->setExternalConclusionLink($this->requestUtil->getField('externalConclusionLink'));
  515.         }
  516.         if($this->requestUtil->issetField('showModuleHeader')){
  517.             $productPage->setShowModuleHeader($this->requestUtil->getField('showModuleHeader'));
  518.         }
  519.         if($this->requestUtil->issetField('showModuleContracts')){
  520.             $productPage->setShowModuleContracts($this->requestUtil->getField('showModuleContracts'));
  521.         }
  522.         if($this->requestUtil->issetField('shortageTimeNumber')){
  523.             $productPage->setShortageTimeNumber($this->requestUtil->getField('shortageTimeNumber'));
  524.         }
  525.         
  526.         if($this->requestUtil->issetField('shortageVisualizationNumber')){
  527.             $productPage->setShortageVisualizationNumber((int)$this->requestUtil->getField('shortageVisualizationNumber'));
  528.         }
  529.         if($this->requestUtil->issetField('shortageBuyersNumber')){
  530.             $productPage->setShortageBuyersNumber((int)$this->requestUtil->getField('shortageBuyersNumber'));
  531.         }
  532.         if($this->requestUtil->issetField('shortageVacanciesNumber')){
  533.             $productPage->setShortageVacanciesNumber((int)$this->requestUtil->getField('shortageVacanciesNumber'));
  534.         }
  535.         $errors $this->validateEntity($productPage);
  536.         if($errors){
  537.             return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  538.         }
  539.         
  540.         if($filePhoto){
  541.             if($productPage->getPhoto()){
  542.                 $pathComplete $this->fileService->getFilePathComplete(
  543.                     $productPage->getPhoto(), 
  544.                     ProductPageEnum::PATH_PRODUCT_PHOTO
  545.                 );
  546.                 $this->fileService->setFile($pathComplete);
  547.                 $this->fileService->deleteFile();
  548.                 $productPage->setPhoto(null);
  549.             }
  550.             $filePhoto $this->fileService->setFile($filePhoto);
  551.             if($filePhoto){
  552.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_PHOTO);
  553.                 $productPage->setPhoto($this->fileService->getFileName());
  554.             }
  555.         }
  556.         if($filePhotoStand){
  557.             if($productPage->getPhotoStand()){
  558.                 $pathComplete $this->fileService->getFilePathComplete(
  559.                     $productPage->getPhotoStand(), 
  560.                     ProductPageEnum::PATH_PRODUCT_PHOTO
  561.                 );
  562.                 $this->fileService->setFile($pathComplete);
  563.                 $this->fileService->deleteFile();
  564.                 $productPage->setPhotoStand(null);
  565.             }
  566.             $filePhotoStand $this->fileService->setFile($filePhotoStand);
  567.             if($filePhotoStand){
  568.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_PHOTO);
  569.                 $productPage->setPhotoStand($this->fileService->getFileName());
  570.             }
  571.         }
  572.         if($filePhotoExpand){
  573.             if($productPage->getPhotoExpand()){
  574.                 $pathComplete $this->fileService->getFilePathComplete(
  575.                     $productPage->getPhotoExpand(), 
  576.                     ProductPageEnum::PATH_PRODUCT_PHOTO
  577.                 );
  578.                 $this->fileService->setFile($pathComplete);
  579.                 $this->fileService->deleteFile();
  580.                 $productPage->setPhotoExpand(null);
  581.             }
  582.             $filePhotoExpand $this->fileService->setFile($filePhotoExpand);
  583.             if($filePhotoExpand){
  584.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_PHOTO);
  585.                 $productPage->setPhotoExpand($this->fileService->getFileName());
  586.             }
  587.         }
  588.         if($fileCover){
  589.             if($productPage->getCover()){
  590.                 $pathComplete $this->fileService->getFilePathComplete(
  591.                     $productPage->getCover(), 
  592.                     ProductPageEnum::PATH_PRODUCT_COVER
  593.                 );
  594.                 $this->fileService->setFile($pathComplete);
  595.                 $this->fileService->deleteFile();
  596.                 $productPage->setCover(null);
  597.             }
  598.             $fileCover $this->fileService->setFile($fileCover);
  599.             if($fileCover){
  600.                 $this->fileService->moveFile(ProductEnum::PATH_PRODUCT_COVER);
  601.                 $productPage->setCover($this->fileService->getFileName());
  602.             }
  603.         }
  604.         if($productPage->getDefault() == ProductPageEnum::YES){
  605.             $productPage->setStatus(ProductPageEnum::PUBLISHED);
  606.             
  607.             $product->setDescription($productPage->getDescription());
  608.             $this->repository->removeDefault($productPage);
  609.         }
  610.         $this->em->flush();
  611.         $data $productPage->toReturn();
  612.         $this->userLogService->logUpdate("product_page"$productPage->getId(), $data);
  613.         return $this->eadResponse($data);
  614.     }
  615.     /**
  616.      * @Route(
  617.      *      path          = "/edit/many/status",
  618.      *      methods       = {"PUT"}
  619.      * )
  620.      */
  621.     public function editManyStatusProductPage(Request $request) {
  622.         $permission $this->userPermissionUtil->getPermission(
  623.             "product"
  624.             "product_page"
  625.             "edit"
  626.         );
  627.         
  628.         if($this->userPermissionUtil->isLow($permission)){
  629.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  630.         }
  631.         $this->requestUtil->setRequest($request)->setData();
  632.         $productPageId $this->requestUtil->getField('productPages');
  633.         if(empty($productPageId)){
  634.             return $this->eadResponse(nullErrorEnum::ACTION_INVALID);
  635.         };
  636.         $productPageId json_decode($productPageId);
  637.         foreach ($productPageId as $key => $id) {
  638.             $productPage $this->repository->findOneBy([
  639.                 "id" => $id,
  640.                 "deleted" => ProductPageEnum::ITEM_NO_DELETED
  641.             ]);
  642.         
  643.             if($productPage) {
  644.                 $product $productPage->getProduct();
  645.                 $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam($product$this->user);
  646.                 if($isInTeam && $this->userPermissionUtil->isMiddle($permission) ||
  647.                     $this->userPermissionUtil->isHigh($permission)){
  648.                     if($this->requestUtil->issetField('status')){
  649.                         $productPage->setStatus((int)$this->requestUtil->getField('status'));
  650.                     }
  651.                     $errors $this->validateEntity($productPage);
  652.                     if(!$errors){
  653.                         $this->em->flush();
  654.                     
  655.                         $data $productPage->toReturn();
  656.                         $this->userLogService->logUpdate(
  657.                             "product_page"
  658.                             $productPage->getId(), 
  659.                             $data
  660.                         );
  661.                     }
  662.                 }
  663.             }
  664.         }
  665.         return $this->eadResponse([ "message" => "Success" ]);
  666.     }
  667.     /**
  668.      * @Route(
  669.      *      path          = "/change/default/{id}",
  670.      *      methods       = {"PUT"},
  671.      *      requirements  = { "id" = "\d+" }
  672.      * )
  673.      */
  674.     public function setDefaultProductPage(Request $request) {
  675.         $permission $this->userPermissionUtil->getPermission(
  676.             "product"
  677.             "product_page"
  678.             "edit"
  679.         );
  680.         
  681.         if($this->userPermissionUtil->isLow($permission)){
  682.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  683.         }
  684.         $this->requestUtil->setRequest($request)->setData();
  685.         $productPageId $request->get('id');
  686.         $productPage $this->repository->findOneBy([
  687.             "id" => $productPageId,
  688.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  689.         ]);
  690.         if (!$productPage) {
  691.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  692.         }
  693.         $product $productPage->getProduct();
  694.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  695.             $product,
  696.             $this->user
  697.         );
  698.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  699.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  700.         }
  701.         $productPage->setStatus(ProductPageEnum::PUBLISHED);
  702.         $productPage->setDefault(ProductPageEnum::YES);
  703.         $product->setDescription($productPage->getDescription());
  704.         $errors $this->validateEntity($productPage);
  705.         if($errors){
  706.             return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  707.         }
  708.         
  709.         if($productPage->getDefault() == ProductPageEnum::YES){
  710.             $this->repository->removeDefault($productPage);
  711.         }
  712.         $this->em->flush();
  713.         $data $productPage->toReturn();
  714.         $this->userLogService->logUpdate("product_page"$productPage->getId(), $data);
  715.         return $this->eadResponse($data);
  716.     }
  717.     /**
  718.      * @Route(
  719.      *      path          = "/copy/{id}",
  720.      *      methods       = {"COPY"},
  721.      *      requirements  = { "id" = "\d+" }
  722.      * )
  723.      */
  724.     public function copyProductPage(Request $request) {
  725.         $permission $this->userPermissionUtil->getPermission(
  726.             "product"
  727.             "product_page"
  728.             "create"
  729.         );
  730.         if($this->userPermissionUtil->isLow($permission)){
  731.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  732.         }
  733.         $productPageId $request->get('id');
  734.         $productPage $this->repository->findOneBy([
  735.             "id" => $productPageId,
  736.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  737.         ]);
  738.         
  739.         if (!$productPage) {
  740.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  741.         }
  742.         $product $productPage->getProduct();
  743.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  744.             $product
  745.             $this->user
  746.         );
  747.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  748.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  749.         }
  750.         $newProductPage = clone $productPage;
  751.         $date date('Y-m-d-H-i-s');
  752.         $newProductPage->setTitle("{$newProductPage->getTitle()} - COPY ");
  753.         $newProductPage->setName("{$newProductPage->getName()} - COPY ");
  754.         $newProductPage->setStatus(ProductPageEnum::DRAFT);
  755.         $newProductPage->setDefault(ProductPageEnum::NO);
  756.         $errors $this->validateEntity($newProductPage);
  757.         if($errors){
  758.             return $this->eadResponse($errorsErrorEnum::FIELD_EMPTY);
  759.         }
  760.         
  761.         $fileService $this->generalService->getService('FileService');
  762.         if(!empty($newProductPage->getPhoto())){
  763.             $pathPhoto ProductPageEnum::PATH_PRODUCT_PHOTO;
  764.             $fileService->setFile("{$pathPhoto}/{$newProductPage->getPhoto()}");
  765.             $hashImg md5(rand() . time() . $product->getId());
  766.             $fileName "{$hashImg}.{$fileService->getFileExtension()}";
  767.             $copyFile "{$pathPhoto}/{$fileName}";
  768.             
  769.             $fileService->copyFile($copyFile);
  770.             $newProductPage->setPhoto($fileName);
  771.         }
  772.         if(!empty($newProductPage->getPhotoStand())){
  773.             $pathPhoto ProductPageEnum::PATH_PRODUCT_PHOTO;
  774.             $fileService->setFile("{$pathPhoto}/{$newProductPage->getPhotoStand()}");
  775.             $hashImg md5(rand() . time() . $product->getId());
  776.             $fileName "{$hashImg}.{$fileService->getFileExtension()}";
  777.             $copyFile "{$pathPhoto}/{$fileName}";
  778.             
  779.             $fileService->copyFile($copyFile);
  780.             $newProductPage->setPhotoStand($fileName);
  781.         }
  782.         if(!empty($newProductPage->getPhotoExpand())){
  783.             $pathPhoto ProductPageEnum::PATH_PRODUCT_PHOTO;
  784.             $fileService->setFile("{$pathPhoto}/{$newProductPage->getPhotoExpand()}");
  785.             $hashImg md5(rand() . time() . $product->getId());
  786.             $fileName "{$hashImg}.{$fileService->getFileExtension()}";
  787.             $copyFile "{$pathPhoto}/{$fileName}";
  788.             
  789.             $fileService->copyFile($copyFile);
  790.             $newProductPage->setPhotoExpand($fileName);
  791.         }
  792.         if(!empty($newProductPage->getCover())){
  793.             $pathCover ProductPageEnum::PATH_PRODUCT_COVER;
  794.             $fileService->setFile("{$pathCover}/{$newProductPage->getCover()}");
  795.             $hashImg md5(rand() . time() . $product->getId());
  796.             $fileName "{$hashImg}.{$fileService->getFileExtension()}";
  797.             $copyFile "{$pathCover}/{$fileName}";
  798.             
  799.             $fileService->copyFile($copyFile);
  800.             $newProductPage->setCover($fileName);
  801.         }
  802.         $this->em->persist($newProductPage);
  803.         $this->em->flush();
  804.         $data $newProductPage->toReturn();
  805.         $this->userLogService->logInsert("product_page"$newProductPage->getId(), $data);
  806.         return $this->eadResponse($data);
  807.     }
  808.     /**
  809.      * @Route(
  810.      *      path          = "/delete/cover/{id}",
  811.      *      methods       = {"DELETE"},
  812.      *      requirements  = { "id" = "\d+" }
  813.      * )
  814.      */
  815.     public function deleteProductPageCover(Request $request) {
  816.         $permission $this->userPermissionUtil->getPermission(
  817.             "product"
  818.             "product_page"
  819.             "edit"
  820.         );
  821.         if($this->userPermissionUtil->isLow($permission)){
  822.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  823.         }
  824.         $productPageId $request->get('id');
  825.         $productPage $this->repository->findOneBy([
  826.             "id" => $productPageId,
  827.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  828.         ]);
  829.         if (!$productPage) {
  830.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  831.         }
  832.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  833.             $productPage->getProduct(), 
  834.             $this->user
  835.         );
  836.         
  837.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  838.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  839.         }
  840.         
  841.         if($productPage->getCover()){
  842.             $pathComplete $this->fileService->getFilePathComplete(
  843.                 $productPage->getCover(), 
  844.                 ProductPageEnum::PATH_PRODUCT_COVER
  845.             );
  846.             $this->fileService->setFile($pathComplete);
  847.             $this->fileService->deleteFile();
  848.             $productPage->setCover(null);
  849.         }
  850.         $this->em->flush();
  851.         $data $productPage->toReturn();
  852.         $this->userLogService->logUpdate("product_page"$productPage->getId(), $data);
  853.         return $this->eadResponse($data);
  854.     }
  855.     /**
  856.      * @Route(
  857.      *      path          = "/delete/photo/{id}",
  858.      *      methods       = {"DELETE"},
  859.      *      requirements  = { "id" = "\d+" }
  860.      * )
  861.      */
  862.     public function deleteProductPhoto(Request $request) {
  863.         $permission $this->userPermissionUtil->getPermission(
  864.             "product"
  865.             "product_page"
  866.             "edit"
  867.         );
  868.         if($this->userPermissionUtil->isLow($permission)){
  869.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  870.         }
  871.         $productPageId $request->get('id');
  872.         $productPage $this->repository->findOneBy([
  873.             "id" => $productPageId,
  874.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  875.         ]);
  876.         if (!$productPage) {
  877.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  878.         }
  879.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  880.             $productPage->getProduct(), 
  881.             $this->user
  882.         );
  883.         
  884.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  885.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  886.         }
  887.         if($productPage->getPhoto()){
  888.             $pathComplete $this->fileService->getFilePathComplete(
  889.                 $productPage->getPhoto(), 
  890.                 ProductPageEnum::PATH_PRODUCT_PHOTO
  891.             );
  892.             $this->fileService->setFile($pathComplete);
  893.             $this->fileService->deleteFile();
  894.             $productPage->setPhoto(null);
  895.         }
  896.         $this->em->flush();
  897.         $data $productPage->toReturn();
  898.         $this->userLogService->logUpdate("product_page"$productPage->getId(), $data);
  899.         return $this->eadResponse($data);
  900.     }
  901.     /**
  902.      * @Route(
  903.      *      path          = "/delete/photo/stand/{id}",
  904.      *      methods       = {"DELETE"},
  905.      *      requirements  = { "id" = "\d+" }
  906.      * )
  907.      */
  908.     public function deleteProductPhotoStand(Request $request) {
  909.         $permission $this->userPermissionUtil->getPermission(
  910.             "product"
  911.             "product_page"
  912.             "edit"
  913.         );
  914.         if($this->userPermissionUtil->isLow($permission)){
  915.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  916.         }
  917.         $productPageId $request->get('id');
  918.         $productPage $this->repository->findOneBy([
  919.             "id" => $productPageId,
  920.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  921.         ]);
  922.         if (!$productPage) {
  923.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  924.         }
  925.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  926.             $productPage->getProduct(), 
  927.             $this->user
  928.         );
  929.         
  930.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  931.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  932.         }
  933.         if($productPage->getPhotoStand()){
  934.             $pathComplete $this->fileService->getFilePathComplete(
  935.                 $productPage->getPhotoStand(), 
  936.                 ProductPageEnum::PATH_PRODUCT_PHOTO
  937.             );
  938.             $this->fileService->setFile($pathComplete);
  939.             $this->fileService->deleteFile();
  940.             $productPage->setPhotoStand(null);
  941.         }
  942.         $this->em->flush();
  943.         $data $productPage->toReturn();
  944.         $this->userLogService->logUpdate("product_page"$productPage->getId(), $data);
  945.         return $this->eadResponse($data);
  946.     }
  947.     /**
  948.      * @Route(
  949.      *      path          = "/delete/photo/expand/{id}",
  950.      *      methods       = {"DELETE"},
  951.      *      requirements  = { "id" = "\d+" }
  952.      * )
  953.      */
  954.     public function deleteProductPhotoExpand(Request $request) {
  955.         $permission $this->userPermissionUtil->getPermission(
  956.             "product"
  957.             "product_page"
  958.             "edit"
  959.         );
  960.         if($this->userPermissionUtil->isLow($permission)){
  961.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  962.         }
  963.         $productPageId $request->get('id');
  964.         $productPage $this->repository->findOneBy([
  965.             "id" => $productPageId,
  966.             "deleted" => ProductPageEnum::ITEM_NO_DELETED
  967.         ]);
  968.         if (!$productPage) {
  969.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  970.         }
  971.         $isInTeam $this->em->getRepository(ProductTeam::class)->userExistInProductTeam(
  972.             $productPage->getProduct(), 
  973.             $this->user
  974.         );
  975.         
  976.         if(!$isInTeam && $this->userPermissionUtil->isMiddle($permission)){
  977.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  978.         }
  979.         if($productPage->getPhotoExpand()){
  980.             $pathComplete $this->fileService->getFilePathComplete(
  981.                 $productPage->getPhotoExpand(), 
  982.                 ProductPageEnum::PATH_PRODUCT_PHOTO
  983.             );
  984.             $this->fileService->setFile($pathComplete);
  985.             $this->fileService->deleteFile();
  986.             $productPage->setPhotoExpand(null);
  987.         }
  988.         $this->em->flush();
  989.         $data $productPage->toReturn();
  990.         $this->userLogService->logUpdate("product_page"$productPage->getId(), $data);
  991.         return $this->eadResponse($data);
  992.     }
  993.     /**
  994.      * @Route(
  995.      *      path          = "/restore/many",
  996.      *      methods       = {"PUT"}
  997.      * )
  998.      */
  999.     public function restoreMany(Request $request) {
  1000.         $permission $this->userPermissionUtil->getPermission("trash""restore");
  1001.         if($this->userPermissionUtil->isLow($permission)){
  1002.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  1003.         }
  1004.         $this->requestUtil->setRequest($request)->setData();
  1005.         $restoreItems = [];
  1006.         $all = (int)$this->requestUtil->getField('all');
  1007.         $itemsTrash json_decode($this->requestUtil->getField('itemIds'));
  1008.         if(empty($all) && empty($itemsTrash)){
  1009.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1010.         }
  1011.         if($all == TrashEnum::YES){
  1012.             $productPages $this->repository->findBy([
  1013.                 "deleted" => ProductPageEnum::ITEM_ON_TRASH
  1014.             ]);
  1015.             
  1016.             if (empty($productPages)) {
  1017.                 return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1018.             }
  1019.             foreach ($productPages as $key => $productPage) {
  1020.                 $this->repository->restore($productPage);
  1021.                 $restoreItems[] = $productPage->getId();
  1022.             }
  1023.         }else{
  1024.             foreach ($itemsTrash as $key => $productPageId) {
  1025.                 $productPage $this->repository->findOneBy([
  1026.                     "id" => $productPageId,
  1027.                 ]);
  1028.                 
  1029.                 if(!$productPage) {
  1030.                     return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1031.                 }
  1032.                 $this->repository->restore($productPage);
  1033.                 $restoreItems[] = $productPage->getId();
  1034.             }
  1035.         }
  1036.         $this->userLogService->logRestoreMany('product_page'null$restoreItems);
  1037.         $this->em->flush();
  1038.         return $this->eadResponse([ "restore" => ]);
  1039.     }
  1040.     /**
  1041.      * @Route(
  1042.      *      path          = "/restore/{productPageId}",
  1043.      *      methods       = {"PUT"},
  1044.      *      requirements  = { "productPageId" = "\d+" }
  1045.      * )
  1046.      */
  1047.     public function restore(Request $request) {
  1048.         $permission $this->userPermissionUtil->getPermission("trash""restore");
  1049.         if($this->userPermissionUtil->isLow($permission)){
  1050.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  1051.         }
  1052.         $this->requestUtil->setRequest($request)->setData();
  1053.         $productPageId $request->get('productPageId');
  1054.         $productPage $this->repository->findOneBy([
  1055.             "id" => $productPageId
  1056.         ]);
  1057.         if(!$productPage) {
  1058.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1059.         }
  1060.         $this->repository->restore($productPage);
  1061.         $this->em->flush();
  1062.         return $this->eadResponse([ "restore" => ]);
  1063.     }
  1064.     
  1065.     /**
  1066.      * @Route(
  1067.      *      path          = "/delete/many/{isTrash}",
  1068.      *      methods       = {"DELETE"},
  1069.      *      defaults      = { "isTrash" = 0 }
  1070.      * )
  1071.      */
  1072.     public function deleteMany(Request $request) {
  1073.         $permission $this->userPermissionUtil->getPermission(
  1074.             "product"
  1075.             "product_page"
  1076.             "delete"
  1077.         );
  1078.         $isTrash $request->get('isTrash');
  1079.         if($isTrash == ProductPageEnum::YES){
  1080.             $permission $this->userPermissionUtil->getPermission("trash""delete");
  1081.         }
  1082.         if($this->userPermissionUtil->isLow($permission)){
  1083.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  1084.         }
  1085.         
  1086.         $this->requestUtil->setRequest($request)->setData();
  1087.         $all = (int)$this->requestUtil->getField('all');
  1088.         $itemsTrash json_decode($this->requestUtil->getField('itemIds'));
  1089.         if(empty($all) && empty($itemsTrash)){
  1090.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1091.         }
  1092.         $deleteItems = [];
  1093.         if($all == TrashEnum::YES){
  1094.             $productPages $this->repository->findBy([]);
  1095.             
  1096.             foreach ($productPages as $key => $productPage) {
  1097.                 $deleteItems[] = $productPage->getId();
  1098.                 $this->repository->delete($productPage);
  1099.             }
  1100.         }else{
  1101.             foreach ($itemsTrash as $key => $productPageId) {
  1102.                 $productPage $this->repository->findOneBy([
  1103.                     "id" => $productPageId
  1104.                 ]);
  1105.                 
  1106.                 if(!$productPage) {
  1107.                     return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1108.                 }
  1109.                 
  1110.                 $deleteItems[] = $productPageId;
  1111.                 $this->repository->delete($productPage);
  1112.             }
  1113.         }
  1114.         $this->userLogService->logDeleteMany('product_page'null$deleteItems);
  1115.         $this->em->flush();
  1116.         return $this->eadResponse([ "delete" => ]);
  1117.     }
  1118.     /**
  1119.      * @Route(
  1120.      *      path          = "/delete/{productPageId}/{isTrash}",
  1121.      *      methods       = {"DELETE"},
  1122.      *      requirements  = { "productPageId" = "\d+" },
  1123.      *      defaults      = { "isTrash" = 0 }
  1124.      * )
  1125.      */
  1126.     public function deleteProductPage(Request $request) {
  1127.         $permission $this->userPermissionUtil->getPermission(
  1128.             "product"
  1129.             "product_page"
  1130.             "delete"
  1131.         );
  1132.         $isTrash $request->get('isTrash');
  1133.         if($isTrash == ProductPageEnum::YES){
  1134.             $permission $this->userPermissionUtil->getPermission("trash""delete");
  1135.         }
  1136.         if($this->userPermissionUtil->isLow($permission)){
  1137.             return $this->eadResponse(nullErrorEnum::PERMISSION);
  1138.         }
  1139.         $productPageId $request->get('productPageId');
  1140.         $productPage $this->repository->findOneBy([
  1141.             "id" => $productPageId
  1142.         ]);
  1143.         if (!$productPage) {
  1144.             return $this->eadResponse(nullErrorEnum::NOT_FOUND);
  1145.         }
  1146.         if ($productPage->getDefault() == ProductPageEnum::YES) {
  1147.             return $this->eadResponse(nullErrorEnum::ACTION_INVALID);
  1148.         }
  1149.         $offerNumber $this->em->getRepository(ProductOffer::class)->count([
  1150.             "deleted" => ProductOfferEnum::ITEM_NO_DELETED,
  1151.             "productPage" => $productPage->getId()
  1152.         ]);
  1153.         if($offerNumber 0) {
  1154.             return $this->eadResponse(nullErrorEnum::ACTION_INVALID);
  1155.         }
  1156.         $this->repository->delete($productPage);
  1157.         return $this->eadResponse([ "delete" => ]);
  1158.     }
  1159. }