/**
  * 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';
}
Example #5
0
 /**
  * @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();
 }