src/Controller/SalesController.php line 32
<?phpnamespace App\Controller;use App\Entity\User;use App\Form\SalesFilterType;use App\Manager\SalesManager;use App\Manager\PeriodManager;use App\Model\SalesFilterModel;use App\Manager\HierarchyManager;use App\Repository\UserRepository;use App\Repository\OrderRepository;use App\Repository\PeriodRepository;use App\Service\Export\ExportService;use Doctrine\ORM\EntityManagerInterface;use App\Repository\CommissionRepository;use App\Repository\CreditTypeRepository;use App\Manager\IncentiveStatementManager;use App\Repository\EarningGroupRepository;use Knp\Component\Pager\PaginatorInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;#[Route('/sales', name: 'sales.')]class SalesController extends AbstractController{#[Route('/{user?}/{type?}', name: 'index')]public function credits(Request $request,SalesManager $salesManager,PaginatorInterface $paginator,PeriodRepository $periodRepository,EarningGroupRepository $earningGroupRepository,CreditTypeRepository $creditTypeRepository,HierarchyManager $hierarchyManager,UserRepository $userRepository,PeriodManager $periodManager,ExportService $exportService,User $user = null,$type = null): Response{if(!$user){$user = $this->getUser();}if(!$type){$type = 'orders';}if($type == 'residualCredits'){$type = 'credits';}if ($type == 'residualCommissions') {$type = 'commissions';}if(!in_array($type, ['credits', 'commissions', 'orders', 'manualPayments'])){throw new NotFoundHttpException();}$filters = new SalesFilterModel();$filters->type = $type;$filters->user = $user;if($request->query->get('period')){$period = $periodRepository->findOneByName($request->query->get('period'));$filters->period = $period;}if(!$filters->period){$filters->period = $periodManager->getCurrentPeriod();}if($request->query->get('group')){if($type == 'commissions'){// Special mapping for Residual Commission to Residual Commission Sales$groupName = $request->query->get('group');if ($groupName === 'Residual Commission Sales') {$groupName = 'Residual Commission';}$earningGroup = $earningGroupRepository->findOneByName($groupName);$filters->earningGroup = $earningGroup;}if($type == 'credits'){// Special mapping for Residual Commission to Residual Commission Sales$groupName = $request->query->get('group');if ($groupName === 'Residual Commission') {$groupName = 'Residual Commission Sales';}$creditType = $creditTypeRepository->findOneByName($groupName);$filters->creditType = $creditType;}}if($request->query->get('creditType')){$creditType = $creditTypeRepository->findOneByName($request->query->get('creditType'));$filters->creditType = $creditType;}$form = $this->createForm(SalesFilterType::class, $filters, ['method' => 'GET']);$form->handleRequest($request);$hierarchy = $userRepository->getOrganizationHierarchy($this->getUser(), $filters->period);if(!$user->isAdmin() && !$hierarchyManager->userInHierarchy($hierarchy, $filters->user->getId())){throw new AccessDeniedHttpException();}$query = $salesManager->filterSales($type, $filters);if($form->isSubmitted() && $form->isValid() && $form->get("export")->isClicked('filter')){$exportService->exportUserSales($type, $query->getResult());die();}$items = $paginator->paginate($query,$request->query->getInt('page', 1),100);return $this->render('sales/index.html.twig', ['form' => $form->createView(),'items' => $items,'filters' => $filters,'type' => $type,]);}}