src/EventSubscriber/EaTenderSubscriber.php line 112

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Tender;
  4. use App\Entity\TenderDokumenPenawaran;
  5. use App\Entity\TenderKualifikasi;
  6. use App\Entity\TenderPokja;
  7. use App\Entity\TenderTahapan;
  8. use App\Repository\MasterDokumenPenawaranRepository;
  9. use App\Repository\MasterKualifikasiRepository;
  10. use App\Repository\TahapanTenderRepository;
  11. use App\Repository\TenderRepository;
  12. use App\Repository\TenderTahapanRepository;
  13. use Doctrine\Persistence\ManagerRegistry;
  14. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  15. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. class EaTenderSubscriber implements EventSubscriberInterface
  18. {
  19.     private TahapanTenderRepository $tahapanTenderRepository;
  20.     private TenderTahapanRepository $tenderTahapanRepository;
  21.     private MasterKualifikasiRepository $masterKualifikasiRepository;
  22.     private MasterDokumenPenawaranRepository $masterDokumenPenawaranRepository;
  23.     private ManagerRegistry $doctrine;
  24.     public function __construct(
  25.         TahapanTenderRepository $tahapanTenderRepository,
  26.         TenderTahapanRepository $tenderTahapanRepository,
  27.         MasterKualifikasiRepository $masterKualifikasiRepository,
  28.         MasterDokumenPenawaranRepository $masterDokumenPenawaranRepository,
  29.         ManagerRegistry $doctrine
  30.     ) {
  31.         $this->tahapanTenderRepository $tahapanTenderRepository;
  32.         $this->tenderTahapanRepository $tenderTahapanRepository;
  33.         $this->masterKualifikasiRepository $masterKualifikasiRepository;
  34.         $this->masterDokumenPenawaranRepository $masterDokumenPenawaranRepository;
  35.         $this->doctrine $doctrine;
  36.     }
  37.     public static function getSubscribedEvents(): array
  38.     {
  39.         return [
  40.             BeforeEntityPersistedEvent::class => ['addTahapanTender'],
  41.             BeforeEntityUpdatedEvent::class => ['groupPokja'],
  42.         ];
  43.     }
  44.     public function addTahapanTender(BeforeEntityPersistedEvent $event)
  45.     {
  46.         $entity $event->getEntityInstance();
  47.         if (!($entity instanceof Tender)) {
  48.             return;
  49.         }
  50.         $tahapan $this->tahapanTenderRepository->findBy(['kategori' => $entity->getKategoriTahapan()]);
  51.         $kualifikasi $this->masterKualifikasiRepository->findAll();
  52.         $penawaran $this->masterDokumenPenawaranRepository->findAll();
  53.         $entityManager $this->doctrine->getManager();
  54.         foreach ($tahapan as $t) {
  55.             $tenderTahapan = new TenderTahapan();
  56.             $tenderTahapan->setTender($entity);
  57.             $tenderTahapan->setTahapan($t);
  58.             $tenderTahapan->setBerubah(false);
  59.             $entityManager->persist($tenderTahapan);
  60.             $entity->addTahapan($tenderTahapan);
  61.         }
  62.         foreach ($kualifikasi as $k) {
  63.             $tenderKualifiksai = new TenderKualifikasi();
  64.             $tenderKualifiksai->setTender($entity);
  65.             $tenderKualifiksai->setKualifikasi($k);
  66.             $entityManager->persist($tenderKualifiksai);
  67.             $entity->addKualifikasi($tenderKualifiksai);
  68.         }
  69.         foreach ($penawaran as $p) {
  70.             $tenderPenawaran = new TenderDokumenPenawaran();
  71.             $tenderPenawaran->setTender($entity);
  72.             $tenderPenawaran->setDokumenPenawaran($p);
  73.             $entityManager->persist($tenderPenawaran);
  74.             $entity->addDokumenPenawaran($tenderPenawaran);
  75.         }
  76.         if ($entity->getGroupPokja()) {
  77.             foreach ($entity->getGroupPokja()->getUsers() as $user) {
  78.                 $tenderPokja = new TenderPokja();
  79.                 $tenderPokja->setTender($entity);
  80.                 $tenderPokja->setUser($user);
  81.                 $entityManager->persist($tenderPokja);
  82.             }
  83.         }
  84.     }
  85.     public function groupPokja(BeforeEntityUpdatedEvent $event)
  86.     {
  87.         $entity $event->getEntityInstance();
  88.         if (!($entity instanceof Tender)) {
  89.             return;
  90.         }
  91.         $entityManager $this->doctrine->getManager();
  92.         if ($entity->getGroupPokja()) {
  93.             foreach ($entity->getGroupPokja()->getUsers() as $u) {
  94.                 $tenderPokja = new TenderPokja();
  95.                 $tenderPokja->setTender($entity);
  96.                 $tenderPokja->setUser($u);
  97.                 $entityManager->persist($tenderPokja);
  98.             }
  99.         }
  100.     }
  101. }