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