/**
  * Menggandakan jadwal
  *
  * @Route("/jadwal-kehadiran/duplicateschedule", name="jadwal_kehadiran_duplicate")
  * @Method("POST")
  * @Secure(roles="ROLE_ADMIN")
  */
 public function duplicateSchedule(Request $request)
 {
     $sekolah = $this->getSekolah();
     $em = $this->getDoctrine()->getManager();
     $form = $this->createForm('sisdik_salinjadwal', null, ['sekolahSrc' => $sekolah->getId()]);
     $querybuilder = $em->createQueryBuilder()->select('jadwalKehadiran')->from('LanggasSisdikBundle:JadwalKehadiran', 'jadwalKehadiran')->leftJoin('jadwalKehadiran.tahunAkademik', 'tahunAkademik')->leftJoin('jadwalKehadiran.kelas', 'kelas')->leftJoin('jadwalKehadiran.templatesms', 'templatesms')->where('jadwalKehadiran.sekolah = :sekolah')->setParameter('sekolah', $sekolah->getId());
     $form->submit($request);
     if ($form->isValid()) {
         $data = $form->getData();
         $requestUri = $data['requestUri'];
         // source
         $tahunAkademikSrc = $data['tahunAkademikSrc'];
         $kelasSrc = $data['kelasSrc'];
         $perulanganSrc = $data['perulanganSrc'];
         $mingguanHariKeSrc = $data['mingguanHariKeSrc'];
         $bulananHariKeSrc = $data['bulananHariKeSrc'];
         // target
         $tahunAkademik = $data['tahunAkademik'];
         $kelas = $data['kelas'];
         $perulangan = $data['perulangan'];
         $mingguanHariKe = $data['mingguanHariKe'];
         $bulananHariKe = $data['bulananHariKe'];
         if ($tahunAkademikSrc != '') {
             $querybuilder->andWhere('tahunAkademik.id = :tahunAkademik');
             $querybuilder->setParameter('tahunAkademik', $tahunAkademikSrc);
         }
         if ($kelasSrc != '') {
             $querybuilder->andWhere('kelas.id = :kelas');
             $querybuilder->setParameter('kelas', $kelasSrc);
         }
         if ($perulanganSrc != '') {
             $querybuilder->andWhere("(jadwalKehadiran.perulangan = :perulangan)");
             $querybuilder->setParameter('perulangan', $perulanganSrc);
         }
         if ($perulanganSrc == 'b-mingguan' && array_key_exists('mingguanHariKe', $data)) {
             $querybuilder->andWhere("(jadwalKehadiran.mingguanHariKe = :mingguanHariKe)");
             $querybuilder->setParameter('mingguanHariKe', $mingguanHariKeSrc);
         }
         if ($perulanganSrc == 'c-bulanan' && array_key_exists('bulananHariKe', $data)) {
             $querybuilder->andWhere("(jadwalKehadiran.bulananHariKe = :bulananHariKe)");
             $querybuilder->setParameter('bulananHariKe', $bulananHariKeSrc);
         }
         $results = $querybuilder->getQuery()->getResult();
         foreach ($results as $result) {
             $entity = new JadwalKehadiran();
             $entity->setSekolah($sekolah);
             $entity->setTahunAkademik($tahunAkademik);
             $entity->setKelas($kelas);
             $entity->setTemplatesms($result->getTemplatesms());
             $entity->setStatusKehadiran($result->getStatusKehadiran());
             $entity->setPerulangan($perulangan);
             if ($perulangan == 'b-mingguan') {
                 $entity->setMingguanHariKe($mingguanHariKe);
             }
             if ($perulangan == 'c-bulanan') {
                 $entity->setBulananHariKe($bulananHariKe);
             }
             $entity->setParamstatusDariJam($result->getParamstatusDariJam());
             $entity->setParamstatusHinggaJam($result->getParamstatusHinggaJam());
             $entity->setKirimSms($result->isKirimSms());
             $entity->setSmsJam($result->getSmsJam());
             $entity->setOtomatisTerhubungMesin($result->isOtomatisTerhubungMesin());
             $entity->setPermulaan($result->isPermulaan());
             $em->persist($entity);
         }
         $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('flash.presence.schedule.duplicate.success'));
         $em->flush();
     } else {
         $this->get('session')->getFlashBag()->add('error', $this->get('translator')->trans('flash.presence.schedule.duplicate.fail'));
     }
     return $this->redirect($requestUri);
 }