<?php
namespace App\Controller\Bo;
use App\Entity\ClaimingRequest;
use App\Entity\Collaborator;
use App\Service\ClubHandler;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/bo/claiming-request', name: 'bo_claiming_request_')]
class ClaimingRequestController extends AbstractController
{
public function __construct(
private readonly EntityManagerInterface $em,
private readonly ClubHandler $clubHandler
) {
}
#[Route('/{id}/change-status', name: 'change_status')]
public function changeStatus(ClaimingRequest $claimingRequest, Request $request): Response
{
$company = $claimingRequest->getCompany();
$status = $request->get('status', ClaimingRequest::STATUS_NEW);
$ownerCollaborator = $this->em->getRepository(Collaborator::class)->findOneBy([
'user' => $claimingRequest->getClaimer(),
'company' => $company,
]);
if ($status === ClaimingRequest::STATUS_VALIDATED) {
if (!$ownerCollaborator) {
$ownerCollaborator = new Collaborator();
$ownerCollaborator->setUser($claimingRequest->getClaimer());
$ownerCollaborator->setCompany($company);
}
$ownerCollaborator->setOwner(true);
$this->em->persist($ownerCollaborator);
} elseif ($ownerCollaborator) {
$ownerCollaborator->setOwner(false);
$this->em->persist($ownerCollaborator);
}
$claimingRequest->setStatus($status);
$this->em->persist($claimingRequest);
$company->setUpdatedAt(new DateTime());
$this->em->persist($company);
$this->em->flush();
return $this->redirectToRoute('bo_company_ownership', ['id' => $claimingRequest->getCompany()->getId()], Response::HTTP_SEE_OTHER);
}
}