public function buildForm(FormBuilderInterface $builder, array $options) { $sekolah = $this->getSekolah(); $builder->addEventSubscriber(new SekolahSubscriber($sekolah)); $builder->add('sekolah', 'sisdik_entityhidden', ['required' => true, 'class' => 'LanggasSisdikBundle:Sekolah', 'data' => $sekolah->getId()])->add('jenisLayanan', 'choice', ['choices' => array_merge(PilihanLayananSms::getDaftarLayananPendaftaran(), PilihanLayananSms::getDaftarLayananBiayaSekaliBayar(), PilihanLayananSms::getDaftarLayananBiayaRutin()), 'required' => true, 'label' => 'label.layanansms.jenis'])->add('templatesms', 'entity', ['class' => 'LanggasSisdikBundle:Templatesms', 'label' => 'label.sms.template.entry', 'multiple' => false, 'expanded' => false, 'required' => true, 'property' => 'optionLabel', 'query_builder' => function (EntityRepository $repository) use($sekolah) { $qb = $repository->createQueryBuilder('templateSms')->where('templateSms.sekolah = :sekolah')->orderBy('templateSms.nama', 'ASC')->setParameter('sekolah', $sekolah); return $qb; }, 'attr' => ['class' => 'xlarge']]); }
public function buildForm(FormBuilderInterface $builder, array $options) { $sekolah = $this->getSekolah(); $builder->addEventSubscriber(new SekolahSubscriber($sekolah)); $builder->add('sekolah', 'sisdik_entityhidden', ['required' => true, 'class' => 'LanggasSisdikBundle:Sekolah', 'data' => $sekolah->getId()])->add('jenisLayanan', 'choice', ['choices' => array_merge(PilihanLayananSms::getDaftarLayananPeriodik()), 'required' => true, 'label' => 'label.layanansms.jenis'])->add('perulangan', 'choice', ['choices' => LayananSmsPeriodik::getDaftarPerulangan(), 'label' => 'label.perulangan', 'multiple' => false, 'expanded' => false, 'required' => true, 'attr' => ['class' => 'small']])->add('mingguanHariKe', 'choice', ['label' => 'label.day', 'choices' => JadwalKehadiran::getNamaHari(), 'multiple' => false, 'expanded' => false, 'required' => false, 'placeholder' => 'label.selectweekday', 'attr' => ['class' => 'medium'], 'help_block' => 'help.untuk.perulangan.mingguan'])->add('bulananHariKe', 'choice', ['label' => 'label.monthday', 'choices' => JadwalKehadiran::getAngkaHariSebulan(), 'multiple' => false, 'expanded' => false, 'required' => false, 'placeholder' => 'label.selectmonthday', 'attr' => ['class' => 'medium'], 'help_block' => 'help.untuk.perulangan.bulanan.atau.lebih.lama'])->add('bulanAwal', 'choice', ['label' => 'label.bulan.awal', 'choices' => LayananSmsPeriodik::getDaftarNamaBulan(), 'multiple' => false, 'expanded' => false, 'required' => false, 'placeholder' => 'label.pilih.bulan', 'attr' => ['class' => 'medium'], 'help_block' => 'help.untuk.perulangan.triwulan.atau.lebih.lama'])->add('smsJam', 'time', ['label' => 'label.kirim.sms.jam', 'required' => false, 'input' => 'string', 'widget' => 'single_text', 'with_seconds' => false, 'attr' => ['class' => 'mini']])->add('templatesms', 'entity', ['class' => 'LanggasSisdikBundle:Templatesms', 'label' => 'label.sms.template.entry', 'multiple' => false, 'expanded' => false, 'required' => true, 'property' => 'optionLabel', 'query_builder' => function (EntityRepository $repository) use($sekolah) { $qb = $repository->createQueryBuilder('templateSms')->where('templateSms.sekolah = :sekolah')->orderBy('templateSms.nama', 'ASC')->setParameter('sekolah', $sekolah); return $qb; }, 'attr' => ['class' => 'xlarge']])->add('tingkat', 'entity', ['class' => 'LanggasSisdikBundle:Tingkat', 'label' => 'label.tingkat', 'required' => false, 'property' => 'optionLabel', 'placeholder' => 'label.pilih.tingkat', 'query_builder' => function (EntityRepository $repository) use($sekolah) { $qb = $repository->createQueryBuilder('tingkat')->where('tingkat.sekolah = :sekolah')->orderBy('tingkat.urutan', 'ASC')->setParameter('sekolah', $sekolah); return $qb; }])->add('aktif', 'checkbox', ['label' => 'label.active', 'required' => false, 'label_render' => true, 'widget_checkbox_label' => 'widget', 'horizontal_input_wrapper_class' => 'col-sm-offset-4 col-sm-8 col-md-offset-4 col-md-7 col-lg-offset-3 col-lg-9']); }
/** * @Route("/{id}", name="layanan_smsperiodik_show") * @Method("GET") * @Template() */ public function showAction($id) { $this->setCurrentMenu(); $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('LanggasSisdikBundle:LayananSmsPeriodik')->find($id); if (!$entity) { throw $this->createNotFoundException('Entity LayananSmsPeriodik tak ditemukan.'); } if ($this->get('security.authorization_checker')->isGranted('view', $entity) === false) { throw new AccessDeniedException($this->get('translator')->trans('akses.ditolak')); } $deleteForm = $this->createDeleteForm($id); return ['entity' => $entity, 'delete_form' => $deleteForm->createView(), 'daftarJenisLayanan' => array_merge(PilihanLayananSms::getDaftarLayananPeriodik()), 'daftarPerulangan' => LayananSmsPeriodik::getDaftarPerulangan(), 'daftarBulan' => LayananSmsPeriodik::getDaftarNamaBulan(), 'daftarHari' => JadwalKehadiran::getNamaHari()]; }
/** * @Route("/{id}", name="layanansms_show") * @Method("GET") * @Template() */ public function showAction($id) { $this->setCurrentMenu(); $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('LanggasSisdikBundle:PilihanLayananSms')->find($id); if (!$entity) { throw $this->createNotFoundException('Entity PilihanLayananSms tak ditemukan.'); } $deleteForm = $this->createDeleteForm($id); return ['entity' => $entity, 'delete_form' => $deleteForm->createView(), 'daftarJenisLayanan' => array_merge(PilihanLayananSms::getDaftarLayananPendaftaran(), PilihanLayananSms::getDaftarLayananLaporan(), PilihanLayananSms::getDaftarLayananKehadiran(), PilihanLayananSms::getDaftarLayananKepulangan(), PilihanLayananSms::getDaftarLayananBiayaSekaliBayar(), PilihanLayananSms::getDaftarLayananBiayaRutin(), PilihanLayananSms::getDaftarLayananLain(), PilihanLayananSms::getDaftarLayananPeriodik())]; }
private function buildServiceChoices() { $choices = array_merge(['' => 'label.semua.layanan'], PilihanLayananSms::getDaftarLayananPendaftaran(), PilihanLayananSms::getDaftarLayananLaporan(), PilihanLayananSms::getDaftarLayananKehadiran(), PilihanLayananSms::getDaftarLayananKepulangan(), PilihanLayananSms::getDaftarLayananBiayaSekaliBayar(), PilihanLayananSms::getDaftarLayananBiayaRutin(), PilihanLayananSms::getDaftarLayananLain(), PilihanLayananSms::getDaftarLayananPeriodik()); return $choices; }
protected function execute(InputInterface $input, OutputInterface $output) { $smsTerproses = 0; /* @var $em EntityManager */ $em = $this->getContainer()->get('doctrine')->getManager(); $text = ''; $perulangan = LayananSmsPeriodik::getDaftarPerulangan(); $daftarLayananPeriodik = PilihanLayananSms::getDaftarLayananPeriodik(); $waktuSekarang = new \DateTime(); $mingguanHariKe = $waktuSekarang->format('N'); $bulananHariKe = $waktuSekarang->format('j'); $bulanSekarang = $waktuSekarang->format('n'); $semuaSekolah = $em->getRepository('LanggasSisdikBundle:Sekolah')->findAll(); foreach ($semuaSekolah as $sekolah) { if (!(is_object($sekolah) && $sekolah instanceof Sekolah)) { continue; } if (!$this->isLocked($sekolah->getNomorUrut())) { $vendorSekolah = $em->getRepository('LanggasSisdikBundle:VendorSekolah')->findOneBy(['sekolah' => $sekolah]); if (!$vendorSekolah instanceof VendorSekolah) { continue; } $pilihanLayananSms = $em->createQueryBuilder()->select('pilihanLayananSms')->from('LanggasSisdikBundle:PilihanLayananSms', 'pilihanLayananSms')->where('pilihanLayananSms.sekolah = :sekolah')->andWhere('pilihanLayananSms.jenisLayanan IN (?1)')->andWhere('pilihanLayananSms.status = :status')->setParameter('sekolah', $sekolah)->setParameter(1, array_keys($daftarLayananPeriodik))->setParameter('status', true)->getQuery()->getResult(); if (count($pilihanLayananSms) <= 0) { continue; } /* @var $pilihanLayanan PilihanLayananSms */ foreach ($pilihanLayananSms as $pilihanLayanan) { $layananSmsPeriodik = $em->getRepository('LanggasSisdikBundle:LayananSmsPeriodik')->findBy(['sekolah' => $sekolah, 'jenisLayanan' => $pilihanLayanan->getJenisLayanan(), 'aktif' => true]); if (count($layananSmsPeriodik) <= 0) { continue; } /* @var $layananSms LayananSmsPeriodik */ foreach ($layananSmsPeriodik as $layananSms) { $bulanAwal = $layananSms->getBulanAwal(); $timestampWaktuJadwal = strtotime(date('Y-m-d') . " " . $layananSms->getSmsJam()); $bedaWaktu = abs($waktuSekarang->getTimestamp() - $timestampWaktuJadwal); if ($input->getOption('paksa')) { $bedaWaktu = 0; $mingguanHariKe = 7; print "[paksa]: Memaksa beda waktu menjadi 0 dan hari menjadi 7 (minggu)\n"; } switch ($layananSms->getPerulangan()) { case 'a-harian': if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; case 'b-mingguan': if ($layananSms->getMingguanHariKe() != $mingguanHariKe) { continue; } if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; case 'c-bulanan': if ($layananSms->getBulananHariKe() != $bulananHariKe) { continue; } if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; case 'd-triwulan': if ($bulanAwal != $bulanSekarang || $bulanAwal + 3 != $bulanSekarang || $bulanAwal + 6 != $bulanSekarang || $bulanAwal + 9 != $bulanSekarang) { continue; } if ($layananSms->getBulananHariKe() != $bulananHariKe) { continue; } if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; case 'e-caturwulan': if ($bulanAwal != $bulanSekarang || $bulanAwal + 4 != $bulanSekarang || $bulanAwal + 8 != $bulanSekarang) { continue; } if ($layananSms->getBulananHariKe() != $bulananHariKe) { continue; } if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; case 'f-semester': if ($bulanAwal != $bulanSekarang || $bulanAwal + 6 != $bulanSekarang) { continue; } if ($layananSms->getBulananHariKe() != $bulananHariKe) { continue; } if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; case 'g-tahunan': if ($bulanAwal != $bulanSekarang) { continue; } if ($layananSms->getBulananHariKe() != $bulananHariKe) { continue; } if ($bedaWaktu <= self::BEDA_WAKTU_MAKS) { $smsTerproses = $this->kirimSms($input, $sekolah, $vendorSekolah, $layananSms, $waktuSekarang); } break; } } } if ($input->getOption('debug')) { $text .= "[debug]: SMS periodik terproses = {$smsTerproses}"; } if ($text != '') { $output->writeln($text); } } else { print "proses pengiriman pesan periodik sekolah " . $sekolah->getNama() . " telah dan sedang berjalan\n"; } } }