getUserMerchantContainer()->getRepositoryQuery(); } public function createEntity(string $entityFqcn) { return $this->getUserMerchantContainer()->getFactory()->createBase($this->getMerchantCurrent()); } public function createIndexRepositoryQuery( SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters ): RepositoryQueryInterface { $repositoryQuery = parent::createIndexRepositoryQuery($searchDto, $entityDto, $fields, $filters); $repositoryQuery->filterIsCreditActive(); return $repositoryQuery; } public function overrideEntitiesActions(?EntityCollection $entities, string $pageName): void { $context = $this->get(AdminContextProvider::class)->getContext(); $adminUrlGenerator = $this->get(AdminUrlGenerator::class); $creditControllerFqcn = $context->getCrudControllers()->findCrudFqcnByEntityFqcn( $this->get(EntityManagerInterface::class)->getEntityName(CreditHistoryInterface::class) ); if ($entities) { foreach ($entities as $entity) { foreach ($entity->getActions() as $action) { if ($action->getName() == 'credit_history') { $url = $adminUrlGenerator ->setController($creditControllerFqcn) ->set('userMerchantId', $entity->getInstance()->getId()) ->generateUrl(); $action->setLinkUrl($url); } } } } } public function configureActions(Actions $actions): Actions { $actions = parent::configureActions($actions); $creditAction = Action::new('credit_history', false, 'fa fa-cash-register') ->linkToCrudAction('credit_history') ->setHtmlAttributes( array( 'data-toggle' => 'tooltip', 'title' => $this->get(TranslatorAdmin::class)->transAction('credit'), ) ) ->setCssClass('btn btn-sm btn-success'); $actions->add(Crud::PAGE_INDEX, $creditAction); $actions->disable( ActionDefinition::EDIT, ActionDefinition::DUPLICATE, ActionDefinition::DELETE, ActionDefinition::DUPLICATE_TO_OTHER_MERCHANT ); return $actions; } public function configureFields(string $pageName): iterable { return $this->getUserMerchantContainer()->getFieldDefinition()->getFields($pageName); } public function configureFilters(Filters $filters): Filters { return $filters ->add(BooleanFilter::new('active')); } public function new(AdminContext $context): Response { $entityManager = $this->get(EntityManagerInterface::class); $merchantResolver = $this->get(MerchantResolver::class); $userMerchant = $this->get(UserMerchantContainer::class) ->getFactory() ->create($merchantResolver->getCurrent()); $form = $this->createForm( UserMerchantActiveCreditFormType::class, $userMerchant, array( 'merchant' => $this->getMerchantCurrent() ) ); $form->handleRequest($context->getRequest()); if ($form->isSubmitted() && $form->isValid()) { $user = $form->get('user')->getData(); $userMerchant = $merchantResolver->getUserMerchant($user); $userMerchant->setCreditActive(true); $entityManager->update($userMerchant); $entityManager->flush(); $this->addFlashTranslator('success', 'creditActive'); return $this->redirect($this->generateEaUrl(CreditHistoryAdminController::class, ActionDefinition::INDEX, null, array( 'userMerchantId'=> $userMerchant->getId() ))); } return $this->render( '@LcCaracole/admin/user/new_usermerchant.html.twig', [ 'form' => $form->createView(), ] ); } // public function edit(AdminContext $context): Response // { // $entityManager = $this->get(EntityManagerInterface::class); // // $userMerchant = $context->getEntity()->getInstance(); // // $form = $this->createForm(UserMerchantFormType::class, $userMerchant); // // $form->handleRequest($context->getRequest()); // // if ($form->isSubmitted() && $form->isValid()) { // $userMerchant = $form->getData(); // // $userMerchant->getUser()->setEmail($form->get('email')->getData()); // $userMerchant->getUser()->setLastName($form->get('lastname')->getData()); // $userMerchant->getUser()->setFirstname($form->get('firstname')->getData()); // // $entityManager->update($userMerchant); // $entityManager->update($userMerchant->getUser()); // $entityManager->flush(); // $this->addFlashTranslator('success', 'updated'); // $url = $this->get(AdminUrlGenerator::class)->setAction(ActionDefinition::INDEX)->generateUrl(); // // return $this->redirect($url); // } else { // $form->get('email')->setData($userMerchant->getUser()->getEmail()); // $form->get('lastname')->setData($userMerchant->getUser()->getLastname()); // $form->get('firstname')->setData($userMerchant->getUser()->getFirstname()); // } // // return $this->render( // '@LcCaracole/admin/user/edit_usermerchant.html.twig', // [ // 'form' => $form->createView(), // ] // ); // } // public function credit(AdminContext $context, AdminUrlGenerator $adminUrlGenerator): Response // { // $event = new BeforeCrudActionEvent($context); // $this->get('event_dispatcher')->dispatch($event); // if ($event->isPropagationStopped()) { // return $event->getResponse(); // } // // if (!$this->isGranted( // Permission::EA_EXECUTE_ACTION, // ['action' => ActionDefinition::DETAIL, 'entity' => $context->getEntity()] // )) { // throw new ForbiddenActionException($context); // } // if (!$context->getEntity()->isAccessible()) { // throw new InsufficientEntityPermissionException($context); // } // // $options['action'] = $adminUrlGenerator // ->setController($context->getCrud()->getControllerFqcn()) // ->setAction('add_credit') // ->setEntityId($context->getEntity()->getInstance()->getId()) // ->set('userMerchant', 'niche') // ->generateUrl(); // $addCreditHistoryForm = $this->createForm(CreditHistoryFormType::class, null, $options)->createView(); // // // return $this->render( // '@LcCaracole/admin/credit/credit_detail.html.twig', // [ // 'pageName' => Crud::PAGE_DETAIL, // 'entity' => $context->getEntity(), // 'batch_actions' => array(), // 'entities' => array(), // 'filters' => array(), // 'paginator' => array(), // 'add_credit_history_form' => $addCreditHistoryForm, // ] // ); // } }