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']);
 }
Exemple #2
0
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $sekolah = $this->getSekolah();
     $builder->add('tahun', 'entity', ['class' => 'LanggasSisdikBundle:Tahun', 'label' => 'label.year.entry', 'multiple' => false, 'expanded' => false, 'property' => 'tahun', 'placeholder' => false, 'required' => true, 'query_builder' => function (EntityRepository $repository) use($sekolah) {
         $qb = $repository->createQueryBuilder('tahun')->where('tahun.sekolah = :sekolah')->orderBy('tahun.tahun', 'DESC')->setParameter('sekolah', $sekolah);
         return $qb;
     }, 'attr' => ['class' => 'small'], 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false, 'horizontal_input_wrapper_class' => 'col-sm-4 col-md-3 col-lg-2'])->add('penjurusan', 'entity', ['class' => 'LanggasSisdikBundle:Penjurusan', 'label' => 'label.placement.study', 'multiple' => false, 'expanded' => false, 'property' => 'optionLabel', 'placeholder' => 'label.semua.penjurusan.studi', 'required' => false, 'query_builder' => function (EntityRepository $repository) use($sekolah) {
         $qb = $repository->createQueryBuilder('penjurusan')->where('penjurusan.sekolah = :sekolah')->orderBy('penjurusan.root', 'ASC')->addOrderBy('penjurusan.lft', 'ASC')->setParameter('sekolah', $sekolah);
         return $qb;
     }, 'attr' => ['class' => 'xlarge'], 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false])->add('jenisbiaya', 'entity', ['class' => 'LanggasSisdikBundle:Jenisbiaya', 'label' => 'label.fee.type.entry', 'multiple' => false, 'expanded' => false, 'property' => 'nama', 'placeholder' => false, 'required' => true, 'query_builder' => function (EntityRepository $repository) use($sekolah) {
         $qb = $repository->createQueryBuilder('jenisbiaya')->where('jenisbiaya.sekolah = :sekolah')->orderBy('jenisbiaya.nama', 'ASC')->setParameter('sekolah', $sekolah);
         return $qb;
     }, 'attr' => ['class' => 'xlarge'], 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false])->add('nominal', 'money', ['currency' => 'IDR', 'required' => true, 'precision' => 0, 'grouping' => 3, 'attr' => ['class' => 'large'], 'horizontal_input_wrapper_class' => 'col-sm-6 col-md-5 col-lg-4'])->add('perulangan', 'choice', ['choices' => BiayaRutin::getDaftarPerulangan(), 'preferred_choices' => ['c-bulanan'], 'required' => true, 'multiple' => false, 'expanded' => false, 'attr' => ['class' => 'medium'], 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false])->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', 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false])->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', 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false])->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', 'read_only' => $options['mode'] == 'edit' ? true : false, 'disabled' => $options['mode'] == 'edit' ? true : false])->add('urutan', 'choice', ['choices' => $this->buildOrderChoices(), 'required' => true, 'multiple' => false, 'expanded' => false, 'attr' => ['class' => 'small'], 'horizontal_input_wrapper_class' => 'col-sm-3 col-md-2 col-lg-1']);
     if ($options['mode'] == 'edit') {
         $builder->add('nominalSebelumnya', 'hidden', ['required' => false, 'data' => $options['nominal']]);
     }
     if ($options['nominal'] !== null) {
         $builder->add('captcha', 'captcha', ['attr' => ['class' => 'medium', 'placeholder' => 'help.type.captcha', 'autocomplete' => 'off'], 'as_url' => true, 'reload' => true, 'help_block' => 'help.captcha.penjelasan.ubah.biaya', 'horizontal_input_wrapper_class' => 'col-sm-6 col-md-5 col-lg-4']);
     }
 }
 /**
  * @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()];
 }
 /**
  * @param InputInterface     $input
  * @param Sekolah            $sekolah
  * @param VendorSekolah      $vendorSekolah
  * @param LayananSmsPeriodik $layananSms
  * @param \DateTime          $waktuSekarang
  */
 private function kirimSms(InputInterface $input, Sekolah $sekolah, VendorSekolah $vendorSekolah, LayananSmsPeriodik $layananSms, \DateTime $waktuSekarang)
 {
     if (!$layananSms->getTemplatesms() instanceof Templatesms) {
         return 0;
     }
     $em = $this->getContainer()->get('doctrine')->getManager();
     $prosesSmsPeriodik = $em->getRepository('LanggasSisdikBundle:ProsesSmsPeriodik')->findOneBy(['sekolah' => $sekolah, 'layananSmsPeriodik' => $layananSms, 'tanggal' => $waktuSekarang]);
     if ($prosesSmsPeriodik instanceof ProsesSmsPeriodik) {
         if ($prosesSmsPeriodik->getBerhasilKirimSms() == true) {
             return 0;
         }
     }
     $smsKehadiran = 0;
     $daftarBulan = LayananSmsPeriodik::getDaftarNamaBulan();
     $daftarHari = LayananSmsPeriodik::getDaftarNamaHariSingkat();
     $daftarStatusKehadiran = JadwalKehadiran::getDaftarStatusKehadiran();
     /* @var $translator Translator */
     $translator = $this->getContainer()->get('translator');
     $translator->setLocale("id_ID");
     switch ($layananSms->getJenisLayanan()) {
         case 'zca-kehadiran-kepulangan-rekap-mingguan':
             $terkirim = false;
             $siswaHadir = [];
             $waktuSekarang->modify("-6 days");
             $dariTanggal = $waktuSekarang->format('Y-m-d');
             $dariTanggalFormatIndonesia = $waktuSekarang->format('d/m/Y');
             $waktuSekarang->modify("+6 days");
             $qbSiswaHadir = $em->createQueryBuilder()->select('DISTINCT(siswa.id)')->from('LanggasSisdikBundle:KehadiranSiswa', 'kehadiranSiswa')->leftJoin('kehadiranSiswa.siswa', 'siswa')->where('kehadiranSiswa.sekolah = :sekolah')->andWhere('kehadiranSiswa.tanggal BETWEEN :dariTanggal AND :hinggaTanggal')->setParameter('sekolah', $sekolah)->setParameter('dariTanggal', $dariTanggal)->setParameter('hinggaTanggal', $waktuSekarang->format('Y-m-d'));
             if ($layananSms->getTingkat() instanceof Tingkat) {
                 $qbSiswaHadir->leftJoin('kehadiranSiswa.kelas', 'kelas')->andWhere('kelas.tingkat = :tingkat')->setParameter('tingkat', $layananSms->getTingkat());
             }
             $dataSiswa = array_map('current', $qbSiswaHadir->getQuery()->getResult());
             if (count($dataSiswa) > 0) {
                 foreach ($dataSiswa as $value) {
                     if (!in_array($value, $siswaHadir)) {
                         $siswaHadir[] = $value;
                     }
                 }
             }
             if (count($siswaHadir) > 0) {
                 foreach ($siswaHadir as $idsiswa) {
                     $teksRekapitulasi = $layananSms->getTemplatesms()->getTeks();
                     $teksHadirPulang = '';
                     $qbKehadiranSiswa = $em->createQueryBuilder()->select('kehadiranSiswa')->from('LanggasSisdikBundle:KehadiranSiswa', 'kehadiranSiswa')->leftJoin('kehadiranSiswa.siswa', 'siswa')->where('kehadiranSiswa.sekolah = :sekolah')->andWhere('kehadiranSiswa.tanggal BETWEEN :dariTanggal AND :hinggaTanggal')->andWhere('kehadiranSiswa.siswa = :siswa')->setParameter('sekolah', $sekolah)->setParameter('dariTanggal', $dariTanggal)->setParameter('hinggaTanggal', $waktuSekarang->format('Y-m-d'))->setParameter('siswa', $idsiswa)->orderBy('kehadiranSiswa.tanggal', 'ASC');
                     $kehadiranSiswa = $qbKehadiranSiswa->getQuery()->getResult();
                     /* @var $kehadiran KehadiranSiswa */
                     foreach ($kehadiranSiswa as $kehadiran) {
                         $teksRekapitulasi = str_replace("%nama%", $kehadiran->getSiswa()->getNamaLengkap(), $teksRekapitulasi);
                         $teksRekapitulasi = str_replace("%nis%", $kehadiran->getSiswa()->getNomorInduk(), $teksRekapitulasi);
                         $teksRekapitulasi = str_replace("%kelas%", $kehadiran->getKelas()->getNama(), $teksRekapitulasi);
                         $teksRekapitulasi = str_replace("%dari%", $dariTanggalFormatIndonesia, $teksRekapitulasi);
                         $teksRekapitulasi = str_replace("%hingga%", $waktuSekarang->format('d/m/Y'), $teksRekapitulasi);
                         $stringHari = $translator->trans($daftarHari[$kehadiran->getTanggal()->format('N')]);
                         $stringStatusKehadiran = str_replace(' ', '', $translator->trans($daftarStatusKehadiran[$kehadiran->getStatusKehadiran()]));
                         if ($kehadiran->getStatusKehadiran() == 'a-hadir-tepat' || $kehadiran->getStatusKehadiran() == 'b-hadir-telat') {
                             $stringJamDatang = '*';
                             if ($kehadiran->getJam(false) != '') {
                                 $stringJamDatang = $kehadiran->getJam(false);
                             }
                             $kepulangan = $em->getRepository('LanggasSisdikBundle:KepulanganSiswa')->findOneBy(['kehadiranSiswa' => $kehadiran]);
                             $stringJamPulang = '*';
                             if ($kepulangan instanceof KepulanganSiswa) {
                                 if ($kehadiran->getJam(false) != '') {
                                     $stringJamPulang = $kepulangan->getJam(false);
                                 } else {
                                     $stringJamPulang = 'PTT';
                                 }
                             }
                             $teksHadirPulang .= $stringHari . ':' . $stringStatusKehadiran . ' ' . $stringJamDatang . '-' . $stringJamPulang . ', ';
                         } else {
                             $teksHadirPulang .= $stringHari . ':' . $stringStatusKehadiran . ', ';
                         }
                     }
                     $teksHadirPulang = preg_replace('/, $/', '', $teksHadirPulang);
                     $teksRekapitulasi = str_replace("%rekap-kehadiran-kepulangan%", $teksHadirPulang, $teksRekapitulasi);
                     if ($input->getOption('debug')) {
                         print "[debug]: " . $teksRekapitulasi . "\n";
                     }
                     $ortuWaliAktif = $em->getRepository('LanggasSisdikBundle:OrangtuaWali')->findOneBy(['siswa' => $idsiswa, 'aktif' => true]);
                     if ($ortuWaliAktif instanceof OrangtuaWali) {
                         $ponselOrtuWaliAktif = $ortuWaliAktif->getPonsel();
                         if ($ponselOrtuWaliAktif != "") {
                             $nomorponsel = preg_split("/[\\s,\\/]+/", $ponselOrtuWaliAktif);
                             foreach ($nomorponsel as $ponsel) {
                                 $messenger = $this->getContainer()->get('sisdik.messenger');
                                 if ($messenger instanceof Messenger) {
                                     if ($vendorSekolah->getJenis() == 'khusus') {
                                         $messenger->setUseVendor(true);
                                         $messenger->setVendorURL($vendorSekolah->getUrlPengirimPesan());
                                     }
                                     $messenger->setPhoneNumber($ponsel);
                                     $messenger->setMessage($teksRekapitulasi);
                                     if ($input->getOption('debug')) {
                                         $messenger->populateMessage();
                                         print "[debug]: " . $messenger->getMessageCommand() . "\n\n";
                                     } else {
                                         $messenger->sendMessage($sekolah);
                                     }
                                     $smsKehadiran++;
                                     $terkirim = true;
                                 }
                             }
                         }
                     }
                 }
                 if ($terkirim === true) {
                     if ($prosesSmsPeriodik instanceof ProsesSmsPeriodik) {
                         $prosesSmsPeriodik->setBerhasilKirimSms(true);
                     } else {
                         $prosesSmsPeriodik = new ProsesSmsPeriodik();
                         $prosesSmsPeriodik->setSekolah($sekolah);
                         $prosesSmsPeriodik->setLayananSmsPeriodik($layananSms);
                         $prosesSmsPeriodik->setTanggal($waktuSekarang);
                         $prosesSmsPeriodik->setBerhasilKirimSms(true);
                     }
                     if (!$input->getOption('debug')) {
                         $em->persist($prosesSmsPeriodik);
                         $em->flush();
                     }
                 }
             }
             break;
     }
     return $smsKehadiran;
 }