src/Controller/UserProjectController.php line 22
<?phpnamespace App\Controller;use App\Entity\BillingHistory;use App\Entity\UserProject;use App\Form\UserProjectFormType;use Doctrine\ORM\EntityManagerInterface;use Doctrine\Persistence\ManagerRegistry;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\Security\Http\Attribute\IsGranted;#[IsGranted('ROLE_USER')]class UserProjectController extends AbstractController{public function __construct(private readonly ManagerRegistry $doctrine) {}#[Route('/user/projects', name: 'app_user_projects')]public function index(): Response{$userProjects = $this->getUser()->getUserProjects();$total = [];foreach ($userProjects as $project) {$totalCount = 0;$billingHistories = $this->doctrine->getRepository(BillingHistory::class)->findByUserProject($project);foreach ($billingHistories as $billing) {if ($billing->getSignBillingService() == "-") {$totalCount += $billing->getPrice();}}$total[$project->getId()] = $totalCount;}// todo total balance//$this->getUser()->getBillingHistories();return $this->render('user_project/index.html.twig', ['userProjects' => $userProjects,'total' => $total,]);}#[Route('user/projects/create', name: 'app_user_project_create')]public function create(Request $request, EntityManagerInterface $entityManager): Response{$userProject = new UserProject();$form = $this->createForm(UserProjectFormType::class, $userProject);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$userProject->setUser($this->getUser());$userProject->setIsMain(false);$entityManager->persist($userProject);$entityManager->flush();return $this->redirectToRoute('app_user_projects');}return $this->render('user_project/form.html.twig', ['form' => $form->createView(),'userProject' => $userProject,'createAction' => true]);}#[Route('/user/projects/{userProject}', name: 'app_user_project_edit')]public function edit(Request $request, UserProject $userProject, EntityManagerInterface $entityManager): Response{if ($userProject->getUser() !== $this->getUser()) {throw $this->createAccessDeniedException('Нет доступа');}$form = $this->createForm(UserProjectFormType::class, $userProject);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$entityManager->flush();return $this->redirectToRoute('app_user_projects');}$billingHistories = $this->doctrine->getRepository(BillingHistory::class)->findByUserProject($userProject);return $this->render('user_project/form.html.twig', ['form' => $form->createView(),'userProject' => $userProject,'createAction' => false,'billingHistories' => $billingHistories]);}#[Route('/user/projects/remove/{userProject}', name: 'app_user_project_remove')]public function remove(UserProject $userProject, EntityManagerInterface $entityManager): Response{if ($userProject->getUser() !== $this->getUser()) {throw $this->createAccessDeniedException('Нет доступа');}if ($userProject->isMain() === true) {throw $this->createAccessDeniedException('Нельзя удалить проект по умолчанию');}$entityManager->remove($userProject);$entityManager->flush();return $this->redirectToRoute('app_user_projects');}}