src/Admin/Controller/ClientAdminController.php line 17

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Admin\Controller;
  4. use App\Entity\AdmUser;
  5. use App\Entity\Client;
  6. use App\Entity\Type\JobTitleType;
  7. use App\Repository\ClientRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Sonata\AdminBundle\Controller\CRUDController;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. class ClientAdminController extends CRUDController
  14. {
  15.     private ClientRepository $clientRepository;
  16.     private EntityManagerInterface $entityManager;
  17.     public function __constructClientRepository $clientRepositoryEntityManagerInterface $entityManager)
  18.     {
  19.         $this->clientRepository $clientRepository;
  20.         $this->entityManager $entityManager;
  21.     }
  22.     public function SigningContractAction(Request $request): Response
  23.     {
  24.         /** @var Client $client */
  25.         $client $this->clientRepository->find($request->get('id'));
  26.         $client->setDateSigningContract(new \DateTime());
  27.         $this->entityManager->flush();
  28.         return $this->renderWithExtraParams('admin/Document/contract.html.twig'$this->normalizeDocumentData($client));
  29.     }
  30.     public function ShowContractAction(Request $request): Response
  31.     {
  32.         /** @var Client $client */
  33.         $client $this->clientRepository->find($request->get('id'));
  34.         $client->setDateSigningContract(new \DateTime());
  35.         return $this->renderWithExtraParams('admin/Document/contract.html.twig'$this->normalizeDocumentData($client));
  36.     }
  37.     ///TODO в отдельный нормалайзер, есть дубль
  38.     private function normalizeDocumentData(Client $client): array
  39.     {
  40.         /** @var AdmUser $amin */
  41.         $amin $this->getUser();
  42.         if ($amin->getLastname() === 'Петриков') {
  43.             $lastName 'Петрикова';
  44.         } else {
  45.             $lastName $amin->getLastname();
  46.         }
  47.         return [
  48.             'contract' => [
  49.                 'number' => $client->getUserNumber(),
  50.                 'dateSigningContract' => $client->getDateSigningContract()->format('d.m.Y'),
  51.             ],
  52.             'client' => [
  53.                 'fio' => $client->getFio(),
  54.                 'dateOfBirth' => $client->getDateOfBirth() ? $client->getDateOfBirth()->format('d.m.Y') : null,
  55.                 'phone' => $client->getPhone()
  56.             ],
  57.             'passport' => [
  58.                 'number' => $client->getPassportNumber(),
  59.                 'id' => $client->getPassportId(),
  60.                 'issueDate' => $client->getPassportIssueDate()->format('d.m.Y'),
  61.                 'passportIssuingAuthority' => $client->getPassportIssuingAuthority(),
  62.                 'registrationAddress' => $client->getRegistrationAddress()
  63.             ],
  64.             'admin' => [
  65.                 'fioFull' => $lastName ' ' $amin->getFirstname(). ' ' $amin->getMiddleName(),
  66.                 'fioSmall' => mb_substr($amin->getFirstname(), 01). '.' .  mb_substr($amin->getMiddleName(), 1) . '. ' $amin->getLastname()  ,
  67.                 'jobTitle' => JobTitleType::RU_VALUES[$amin->getJobTitleType()],
  68.                 'jobTitleInFace' => JobTitleType::RU_VALUES_IN_FACE[$amin->getJobTitleType()],
  69.                 'acting' => sprintf(JobTitleType::ACTING[$amin->getJobTitleType()],$amin->getProxyNumber(), $amin->getProxyDate() ? $amin->getProxyDate()->format('d.m.Y') : '' ),
  70.             ]
  71.         ];
  72.     }
  73.     /** @param $object Client */
  74.     protected function redirectTo($object)
  75.     {
  76.         $request $this->getRequest();
  77.         if (null !== $request->get('btn_create_and_write')) {
  78.             return $this->redirectToRoute('admin_app_client_signing_contract', ['id' => $object->getId() ]);
  79.         }
  80.         parent::redirectTo($object);
  81.     }
  82.     private function getSelectedTab(Request $request): array
  83.     {
  84.         return array_filter(['_tab' => $request->request->get('_tab')]);
  85.     }
  86. }