src/Controller/EasyAdmin/Wildberries/WildberriesWarehouseProductStockCrudController.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Controller\EasyAdmin\Wildberries;
  3. use App\Entity\Wildberries\WildberriesWarehouseProductStock;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  5. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  6. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  7. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  8. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\Field;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
  13. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  14. class WildberriesWarehouseProductStockCrudController extends AbstractCrudController
  15. {
  16.     private UrlGeneratorInterface $urlGenerator;
  17.     public function __construct(UrlGeneratorInterface $urlGenerator)
  18.     {
  19.         $this->urlGenerator $urlGenerator;
  20.     }
  21.     public static function getEntityFqcn(): string
  22.     {
  23.         return WildberriesWarehouseProductStock::class;
  24.     }
  25.     public function configureCrud(Crud $crud): Crud
  26.     {
  27.         return $crud
  28.             ->setSearchFields(['id''stock''product.article''product.barcode''warehouse.name'])
  29.             ->setDefaultSort(['id' => 'DESC'])
  30.             ->setPaginatorPageSize(50)
  31.             ->setPaginatorUseOutputWalkers(true)
  32.             ->setPaginatorFetchJoinCollection(true)
  33.             ->setEntityLabelInSingular('Остатки товара на складах')
  34.             ->setEntityLabelInPlural('Остатки товара на складах');
  35.     }
  36.     public function configureActions(Actions $actions): Actions
  37.     {
  38.         $wbProductRestock Action::new('wbWarehouseProductRestock''Обновить остатки')
  39.             ->linkToUrl(function (WildberriesWarehouseProductStock $wbWarehouseProductStock): string {
  40.                 return $this->urlGenerator->generate(
  41.                     'wb_product_restock',
  42.                     ['id' => $wbWarehouseProductStock->getId()],
  43.                     UrlGeneratorInterface::ABSOLUTE_PATH
  44.                 );
  45.             });
  46.         $wbProductCastock Action::new('wbWarehouseProductCastock''Пересчитать остатки')
  47.             ->linkToUrl(function (WildberriesWarehouseProductStock $wbWarehouseProductStock): string {
  48.                 return $this->urlGenerator->generate(
  49.                     'wb_product_castock',
  50.                     ['id' => $wbWarehouseProductStock->getId()],
  51.                     UrlGeneratorInterface::ABSOLUTE_PATH
  52.                 );
  53.             });
  54.         return $actions
  55.             ->add(Crud::PAGE_INDEX$wbProductRestock)
  56.             ->add(Crud::PAGE_INDEX$wbProductCastock)
  57.             ->add(Crud::PAGE_INDEXAction::DETAIL)
  58.             ->add(Crud::PAGE_EDITAction::INDEX)
  59.             ->disable('new''delete');
  60.     }
  61.     public function configureFields(string $pageName): iterable
  62.     {
  63.         $disabled Field::new('disabled''Отключен');
  64.         $product AssociationField::new('product''Продукт');
  65.         $warehouse AssociationField::new('warehouse''Склад');
  66.         $stock IntegerField::new('stock''Количество товара в наличии');
  67.         $stockWriteTm DateTimeField::new('stockWriteTm''Время последней отправки остатков');
  68.         $stockWriteError TextareaField::new('stockWriteError''Ошибки изменения остатков');
  69.         $stockHistory Field::new('stockHistory''Расчет остатков');
  70.         $warehouseClient TextareaField::new('warehouse.client''Клиент');
  71.         $productBarcode TextareaField::new('product.barcode''Штрихкод');
  72.         $productArticle TextareaField::new('product.article''Артикул');
  73.         if (Crud::PAGE_INDEX === $pageName) {
  74.             return [$warehouseClient$product$productBarcode$productArticle$warehouse$stock$disabled];
  75.         } elseif (Crud::PAGE_DETAIL === $pageName) {
  76.             return [$product$warehouse$stock$stockWriteTm$stockWriteError$stockHistory];
  77.         } elseif (Crud::PAGE_NEW === $pageName) {
  78.             return [$disabled];
  79.         } elseif (Crud::PAGE_EDIT === $pageName) {
  80.             return [$disabled];
  81.         }
  82.     }
  83. }