src/EventSubscriber/EaVendorTenderSubscriber.php line 48

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\TenderTahapan;
  7. use App\Entity\VendorTender;
  8. use App\Entity\VendorTenderEvaluasi;
  9. use App\Repository\MasterDokumenPenawaranRepository;
  10. use App\Repository\MasterKualifikasiRepository;
  11. use App\Repository\TahapanTenderRepository;
  12. use App\Repository\TenderRepository;
  13. use App\Repository\TenderTahapanRepository;
  14. use App\Repository\VendorTenderEvaluasiRepository;
  15. use Doctrine\Persistence\ManagerRegistry;
  16. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  17. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  18. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  19. use Symfony\Bundle\SecurityBundle\Security;
  20. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  21. class EaVendorTenderSubscriber implements EventSubscriberInterface
  22. {
  23.     private ManagerRegistry $doctrine;
  24.     private VendorTenderEvaluasiRepository $vendorTenderEvaluasiRepository;
  25.     private Security $security;
  26.     public function __construct(
  27.         ManagerRegistry $doctrine,
  28.         VendorTenderEvaluasiRepository $vendorTenderEvaluasiRepository,
  29.         Security $security
  30.     ) {
  31.         $this->vendorTenderEvaluasiRepository $vendorTenderEvaluasiRepository;
  32.         $this->doctrine $doctrine;
  33.         $this->security $security;
  34.     }
  35.     public static function getSubscribedEvents(): array
  36.     {
  37.         return [
  38.             BeforeEntityUpdatedEvent::class => ['calculateUpdated'],
  39.             BeforeEntityPersistedEvent::class => ['caculatePersist']
  40.         ];
  41.     }
  42.     public function caculatePersist(BeforeEntityPersistedEvent $event)
  43.     {
  44.         $entity $event->getEntityInstance();
  45. //        dd($entity);
  46.         if (!($entity instanceof VendorTenderEvaluasi)) {
  47.             return;
  48.         }
  49.         $user $this->security->getUser();
  50.         $entity->setPokja($user);
  51.         $data $this->vendorTenderEvaluasiRepository->findBy(['vendorTender' => $entity->getVendorTender()]);
  52.         $tender $entity->getVendorTender()->getTender()->getTenderPokjas();
  53.         if ((count($data) + 1) <> count($tender)) {
  54.             return;
  55.         }
  56.         $skorHarga 0;
  57.         $skorKualifikasi 0;
  58.         $skorTeknis 0;
  59.         foreach ($data as $d) {
  60.             $skorHarga += $d->getSkorHarga();
  61.             $skorKualifikasi += $d->getSkorKualifikasi();
  62.             $skorTeknis += $d->getSkorTeknis();
  63.         }
  64.         $ent2 $entity->getVendorTender();
  65.         $ent2->setSkorTeknis($skorTeknis count($tender));
  66.         $ent2->setSkorKualifikasi($skorKualifikasi count($tender));
  67.         $ent2->setSkorHarga($skorHarga count($tender));
  68.         $skorAkhir = ($ent2->getSkorTeknis() + $ent2->getSkorKualifikasi() + $ent2->getSkorHarga()) / 3;
  69.         $ent2->setSkorAkhir($skorAkhir);
  70.         $ent2->setEvaluasiAdministrasi(true);
  71.         $ent2->setEvaulasiKualifikasi(true);
  72.         $ent2->setEvaluasiHarga(true);
  73.         $ent2->setPembuktianKualifikasi(true);
  74.         $manager $this->doctrine->getManager();
  75.         $manager->persist($ent2);
  76.     }
  77.     public function calculateUpdated(BeforeEntityUpdatedEvent $event)
  78.     {
  79.         $entity $event->getEntityInstance();
  80.         if (!($entity instanceof VendorTenderEvaluasi)) {
  81.             return;
  82.         }
  83.         $user $this->security->getUser();
  84.         $entity->setPokja($user);
  85.         $data $this->vendorTenderEvaluasiRepository->findBy(['vendorTender' => $entity->getVendorTender()]);
  86.         $tender $entity->getVendorTender()->getTender()->getTenderPokjas();
  87.         if (count($data) <> count($tender)) {
  88.             return;
  89.         }
  90.         $skorHarga 0;
  91.         $skorKualifikasi 0;
  92.         $skorTeknis 0;
  93.         foreach ($data as $d) {
  94.             $skorHarga += $d->getSkorHarga();
  95.             $skorKualifikasi += $d->getSkorKualifikasi();
  96.             $skorTeknis += $d->getSkorTeknis();
  97.         }
  98.         $ent2 $entity->getVendorTender();
  99.         $ent2->setSkorTeknis($skorTeknis count($tender));
  100.         $ent2->setSkorKualifikasi($skorKualifikasi count($tender));
  101.         $ent2->setSkorHarga($skorHarga count($tender));
  102.         $skorAkhir = ($ent2->getSkorTeknis() + $ent2->getSkorKualifikasi() + $ent2->getSkorHarga()) / 3;
  103.         $ent2->setSkorAkhir($skorAkhir);
  104.         $ent2->setEvaluasiAdministrasi(true);
  105.         $ent2->setEvaulasiKualifikasi(true);
  106.         $ent2->setEvaluasiHarga(true);
  107.         $ent2->setPembuktianKualifikasi(true);
  108.         $manager $this->doctrine->getManager();
  109.         $manager->persist($ent2);
  110.     }
  111. }