/** * E-Mail-Benachrichtigungen überfälliger Anträge verschicken */ public function actionEmail() { /** @var Antrag[] $abgelaufen */ $abgelaufen = []; /** @var Antrag[] $verlaengert */ $verlaengert = []; $abgelaufenStr = $verlaengertStr = ''; /** @var Antrag[] $antraege */ $antraege = Antrag::getAbgelaufene(); foreach ($antraege as $antrag) { $abgelaufen[] = $antrag; if ($abgelaufenStr == '') { $abgelaufenStr = "Die Bearbeitungsfrist folgender Anträge ist abgelaufen:\n\n"; } $abgelaufenStr .= "- " . str_replace("\n", "", $antrag->titel) . "\n"; $abgelaufenStr .= " https://www.muenchen-transparent.de/antraege/" . $antrag->ris_id . "\n"; $abgelaufenStr .= " Status: " . $antrag->status . "\n"; $abgelaufenStr .= " Gestellt am: " . $antrag->gestellt_am . "\n"; $abgelaufenStr .= " Ursprüngliche Frist: " . $antrag->bearbeitungsfrist . "\n"; if ($antrag->fristverlaengerung) { $abgelaufenStr .= " Fristverlängerung: " . $antrag->fristverlaengerung . "\n"; } $abgelaufenStr .= "\n"; } $verlaengertSql = 'fristverlaengerung IS NOT NULL AND fristverlaengerung_benachrichtigung IS NULL'; $verlaengertSql .= ' AND status != "erledigt"'; /** @var Antrag[] $antraege */ $antraege = Antrag::find()->where($verlaengertSql)->all(); foreach ($antraege as $antrag) { $verlaengert[] = $antrag; if ($verlaengertStr == '') { $verlaengertStr = "Die Bearbeitungsfrist folgender Anträge wurde verlängert:\n\n"; } $verlaengertStr .= "- " . str_replace("\n", "", $antrag->titel) . "\n"; $verlaengertStr .= " https://www.muenchen-transparent.de/antraege/" . $antrag->ris_id . "\n"; $verlaengertStr .= " Status: " . $antrag->status . "\n"; $verlaengertStr .= " Gestellt am: " . HtmlTools::formatDate($antrag->gestellt_am) . "\n"; $verlaengertStr .= " Ursprüngliche Frist: " . HtmlTools::formatDate($antrag->bearbeitungsfrist) . "\n"; $verlaengertStr .= " Neue (verlängerte) Frist: " . HtmlTools::formatDate($antrag->fristverlaengerung) . "\n\n"; } if (count($abgelaufen) == 0 && count($verlaengert) == 0) { return; } $mail = "Hallo,\n\n" . $abgelaufenStr . $verlaengertStr; $mail .= "\n\nMit freundlichen Grüßen,\n Der nette grüne Stadtrats-Roboter"; foreach (\Yii::$app->params['mailTo'] as $mailTo) { Mailgun::sendWithLog($mailTo, 'Verspätungsalarm: Stadtrats-Anträge', $mail); } echo $mail; // @TODO foreach ($abgelaufen as $antrag) { $antrag->bearbeitungsfrist_benachrichtigung = date('Y-m-d H:i:s'); $antrag->save(); } foreach ($verlaengert as $antrag) { $antrag->fristverlaengerung_benachrichtigung = date('Y-m-d H:i:s'); $antrag->save(); } }
/** * @param array $antragData */ private function importDatarow($antragData) { if ($antragData['status'] == 'Sitzungsvorlage') { return; } /** @var Antrag $antrag */ $antrag = Antrag::findOne(['ris_id' => $antragData['id']]); if (!$antrag) { $antrag = new Antrag(); $antrag->ris_id = $antragData['id']; $antrag->notiz = ''; } else { if ($antrag->status != $antragData['status']) { $antrag->notiz = date("d.m.Y.") . ": Status: " . $antrag->status . " -> " . $antragData['status'] . "\n" . trim($antrag->notiz); } if ($antrag->bearbeitungsfrist != $antragData['bearbeitungsfrist']) { $antrag->notiz = date("d.m.Y.") . ": Bearbeitungsfrist: " . HtmlTools::formatDate($antrag->bearbeitungsfrist) . " -> " . HtmlTools::formatDate($antragData['bearbeitungsfrist']) . "\n" . trim($antrag->notiz); $antrag->bearbeitungsfrist_benachrichtigung = null; } if ($antrag->fristverlaengerung != $antragData['fristverlaengerung']) { $antrag->notiz = date("d.m.Y.") . ": Fristverlängerung: " . HtmlTools::formatDate($antragData['fristverlaengerung']) . "\n" . trim($antrag->notiz); $antrag->fristverlaengerung_benachrichtigung = null; } if ($antrag->gestellt_am != $antragData['gestellt_am']) { $antrag->notiz = date("d.m.Y.") . ": Gestellt am: " . HtmlTools::formatDate($antrag->gestellt_am) . " -> " . HtmlTools::formatDate($antragData['gestellt_am']) . "\n" . trim($antrag->notiz); } } $antrag->titel = mb_substr($antragData['betreff'], 0, 200); $antrag->typ = $antragData['typ']; $antrag->antrags_nr = $antragData['antrags_nr']; $antrag->gestellt_am = $antragData['gestellt_am']; $antrag->bearbeitungsfrist = $antragData['bearbeitungsfrist']; $antrag->fristverlaengerung = $antragData['fristverlaengerung']; $antrag->status = $antragData['status']; $antrag->erledigt_am = $antragData['erledigt_am']; if ($antrag->status == $antrag->status_override) { $antrag->status_override = ''; } $antrag->save(); foreach ($antrag->stadtraetinnen as $stadtraetin) { $antrag->unlink('stadtraetinnen', $stadtraetin, true); } foreach ($antrag->initiatorinnen as $initiatorin) { $antrag->unlink('initiatorinnen', $initiatorin, true); } foreach ($antragData['stadtraetInnen'] as $stadtraetInData) { $ris_id = $stadtraetInData['id'] > 0 ? $stadtraetInData['id'] : 0; $stadtraetin = Stadtraetin::findOne(['ris_id' => $ris_id]); if (!$stadtraetin) { $stadtraetin = new Stadtraetin(); $stadtraetin->ris_id = $stadtraetInData['id']; $stadtraetin->name = $stadtraetInData['name']; $stadtraetin->save(); } try { $antrag->link('stadtraetinnen', $stadtraetin); } catch (\Exception $e) { } } foreach ($antragData['initiatorInnen'] as $initiatorInData) { $ris_id = $initiatorInData['id'] > 0 ? $initiatorInData['id'] : 0; $initiatorin = Stadtraetin::findOne(['ris_id' => $ris_id]); if (!$initiatorin) { $initiatorin = new Stadtraetin(); $initiatorin->ris_id = $initiatorInData['id']; $initiatorin->name = $initiatorInData['name']; $initiatorin->save(); } try { $antrag->link('initiatorinnen', $initiatorin); } catch (\Exception $e) { } } foreach ($antragData['dokumente'] as $dokumentData) { $dokument = Dokument::findOne(['dokument_id' => $dokumentData['id']]); if (!$dokument) { $dokument = new Dokument(); $dokument->dokument_id = $dokumentData['id']; } $dokument->antrag_id = $antrag->id; $dokument->titel = $dokumentData['titel']; $dokument->datum = $dokumentData['datum']; $dokument->url = $dokumentData['pdf']; $dokument->save(); } }
/** * return string */ public function actionDelantrag() { \Yii::$app->response->format = \yii\web\Response::FORMAT_RAW; \Yii::$app->response->headers->add('Content-Type', 'application/json'); /** @var Antrag $antrag */ $antrag = Antrag::findOne($_POST['antrag_id']); foreach ($antrag->stadtraetinnen as $stadtraetin) { $antrag->unlink('stadtraetinnen', $stadtraetin, true); } foreach ($antrag->tags as $tag) { $antrag->unlink('tags', $tag, true); } if ($antrag->delete()) { return json_encode(['success' => 1]); } else { return json_encode(['error' => $antrag->getErrors()]); } }
if ($antrag->fristverlaengerung) { ?> <br> <dt class="verlaengert">Verlängert:</dt> <dd><?php echo Antrag::formatDate($antrag->fristverlaengerung); ?> </dd> <?php } if ($antrag->erledigt_am) { ?> <br> <dt class="verlaengert">Erledigt:</dt> <dd><?php echo Antrag::formatDate($antrag->erledigt_am); ?> </dd> <?php } ?> </dl> </div> <div class="dokumentStatusCol col-md-2"> <div class="status"> <label class="abgeschlossen_override"> <span>Abgeschlossen</span> <input type="checkbox" name="abgeschlossen" <?php if ($antrag->istErledigt()) { echo 'checked'; }
/** * @return Antrag[] */ public static function getAbgelaufene() { $sql = 'bearbeitungsfrist <= CURRENT_DATE() ' . 'AND (fristverlaengerung IS NULL OR fristverlaengerung <= CURRENT_DATE()) ' . 'AND NOT ((status_override = "" AND status = "erledigt") OR status_override = "erledigt") ' . 'AND bearbeitungsfrist_benachrichtigung IS NULL'; return Antrag::find()->where($sql)->all(); }