/**
  * @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;
 }