Auth->setConfig('checkAuthIn', 'Controller.initialize'); //$this->Auth->allow('ftp'); } public function testmail() { $email = new Email(); $email ->emailFormat('html') ->from(['abschlusspruefung@schulen.bayern.de' => 'Abschlusspruefung']) ->to('asd.trinkl@schulen.bayern.de') ->subject('Teste E-Mail Verbindung') ->send('Das ist nur eine Testnachricht.'); $this->set('email',$email); } public function emailFoerder() { debug($this->request['?']); $filename = $this->request['?']['file']; $date = $this->request['?']['date']; //die; $options = [ 'length' => 0, 'delimiter' => ';', 'enclosure' => ' ', 'escape' => '\\', 'headers' => false, 'text' => false, 'excel_bom' => false, ]; $column_names = array('Regierung','SNR','Klasse','Diff','Klassengruppe','Klasse Bildungsgang','Anzahl','Schwerpunkte'); $column_alias = array('Regierung','SNR','Klasse','differenzierter Förderschwerpunkt der Klasse','Klassengruppe','Bildungsgang der Klassengruppe','Anzahl der Schüler','mit folgenden Förderschwerpunkten'); $filepath = '/var/www/html/asd-control/webroot/files/ap/'.$filename; $handle = fopen($filepath, "r"); //$i = 1; //$header = fgetcsv($handle, $options['length'], $options['delimiter']); $all = array(); while ($row = fgetcsv($handle, $options['length'], $options['delimiter'])) { //debug($row); $data = array(); $i=0; foreach ($column_names as $column_name) { $data[$column_name] = trim($row[$i]); $i++; } //debug($data); array_push($all,$data); } //debug($all);die; $regierungen = array(); foreach ($all as $line) { if(!in_array($line['Regierung'],$regierungen)) { array_push($regierungen,$line['Regierung']); } } debug($regierungen); foreach($regierungen as $regierung) { $$regierung = array(); foreach ($all as $line) { if ($line['Regierung'] == $regierung) { array_shift($line); array_push($$regierung,$line); } } //debug($$regierung); } $column = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN'); foreach($regierungen as $regierung) { $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $spreadsheet->getProperties()->setCreator('Wilfried Trinkl StMBW') ->setLastModifiedBy('Wilfried Trinkl') ->setTitle('Förderschwerpunkt') ->setSubject('ASD Wertelisten') ->setDescription('Wertelisten created by php') ->setKeywords('Förderschwerpunkt') ->setCategory('Auswertungen'); $size = 8; $rows = sizeof($$regierung); //debug($rows);die; for ($i=1;$i<8;$i++) { // debug($column[$i-1]); // debug($column_names[$i]); $spreadsheet->setActiveSheetIndex(0) ->setCellValue($column[$i-1] . '1', $column_alias[$i]); $spreadsheet->getActiveSheet()->getStyle($column[$i] . '1')->getFont()->setBold(true); } //die; $j=1; foreach ($$regierung as $line) { //debug($line);die; for ($i=0;$i<($size-1);$i++) { //debug($column[$i]); //debug($j); //debug($line[$column_names[$i+1]]); $spreadsheet->setActiveSheetIndex(0)->setCellValueExplicit($column[($i)] . ($j+1) , $line[$column_names[$i+1]], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); } $j++; } for ($i=0;$i<7;$i++) { $spreadsheet->setActiveSheetIndex(0)->getColumnDimension($column[$i])->setAutoSize(true); } $spreadsheet->getActiveSheet()->setAutoFilter( $spreadsheet->getActiveSheet() ->calculateWorksheetDimension() ); //debug($regierung); $to_mail = $regierung.'.41.ASD@schulen.bayern.de'; //debug($to_mail); //die; $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('/test/Report_'.$regierung.'.xlsx'); $email = new Email(); $email->viewVars(['date' => $date]); $email ->emailFormat('html') //->from(['asd.trinkl@schulen.bayern.de' => 'ASD Trinkl']) ->from(['asd@schulen.bayern.de' => 'ASD']) //->cc('asd.trinkl@schulen.bayern.de') ->to($to_mail) ->cc('asd.kraupner@schulen.bayern.de') //->to($mail->snr . '@schulen.bayern.de') //->cc('abschlusspruefung@schulen.bayern.de') ->template('foerder') ->subject('schulaufsichtliche Prüfung der Förderzentren – Auswertung ' . $regierung ) ->attachments('/test/Report_'.$regierung.'.xlsx') ->send(); } //die; debug($filename);die; } public function deleteall() { $this->Emails->connection()->transactional(function ($conn) { $sqls = $this->Emails->schema()->truncateSql($this->Emails->connection()); foreach ($sqls as $sql) { $this->Emails->connection()->execute($sql)->execute(); } }); } public function sendresult() { $this->loadModel('Offices'); $emails = $this->Emails->find('all', [ 'conditions' => ['sent' => 0] ]); foreach($emails as $mail) { $query = $this->Offices->find('all', [ 'conditions' => ['dst_schluessel' => $mail->snr] ]); //debug($mail->snr);die; $office = $query->first(); //debug($office->dst_name); //die; $email = new Email(); $email->viewVars(['content' => $mail->text]); $email ->emailFormat('html') ->from(['abschlusspruefung@schulen.bayern.de' => 'Abschlusspruefung']) //->to('asd.statistik@schulen.bayern.de') ->to($mail->snr . '@schulen.bayern.de') ->cc('abschlusspruefung@schulen.bayern.de') ->template('abschluss') ->subject($mail->subject . ' ' . $office->dst_name . ' - Übermittlung Abschlussprüfung Typ ' . $mail->examinationtype) ->send(); $mail['sent'] = 1; //$line = $this->Apimports->patchEntity($line, (array) $data); $result = $this->Emails->save($mail); //die; } //die; return $this->redirect(['controller' => 'Apresults', 'action' => 'export']); } public function create() { $query = $this->Emails->find('all',[ 'order' => ['lieferung DESC'] ]); $lastmail = $query->first(); if(!empty($lastmail)) { $lastsent = $lastmail->lieferung; } else { $lastsent = 0; } //debug($lastsent); $this->loadModel('Apimports'); $deliveries = $this->Apimports->find('all', [ 'conditions' => ["lieferung > $lastsent"], 'order' => 'lieferung ASC' ]); $deliveries->select(['lieferung']) ->distinct(['lieferung']); //debug($deliveries); foreach ($deliveries as $delivery) { //debug($delivery->lieferung); $items = $this->Apimports->find('all',[ 'conditions' => ['lieferung' => $delivery->lieferung ] ])->toArray(); $data = (object) []; $data->examinationtype = $items[0]['pruefungsart']; $data->snr = $items[0]['schule']; $data->createdate = $items[0]['erzeugungsdatum']; $data->date = Time::now(); $data->lieferung = $delivery->lieferung; $data->sent = 0; $data->subject = $items[0]['schule']; $data->text = '
Für die Schule ' . $items[0]['schule'] . ' wurden am ' . $items[0]['erzeugungsdatum']->i18nFormat('dd.MM.yyyy') . ' um ' . $items[0]['erzeugungsdatum']->i18nFormat('HH:mm') . ' Uhr folgende Ergebnisse übermittelt:
'; $data->text .= '| Anzahl | Schülerstatus |
|---|---|
| '. $item->anzahl . ' | ' . $item->schuelerstatus .' |
Bitte überprüfen Sie ob die Anzahl der Prüflinge, externen Prüfungsteilnehmer und insbesondere die der Nichtschüler plausibel ist.
'; $data->text .= 'Wenden Sie sich bitte umgehend an den ASV Support, falls Unstimmigkeiten auftreten sollten.
'; $data->text .= 'Ihr ASD-Team
'; //debug($data); $email = $this->Emails->newEntity(); $email = $this->Emails->patchEntity($email, (array) $data); $this->Emails->save($email); } //die; return $this->redirect(['action' => 'sendresult']); } public function import() { $options = [ 'length' => 0, 'delimiter' => '|', 'enclosure' => ' ', 'escape' => '\\', 'headers' => false, 'text' => false, 'excel_bom' => false, ]; $this->loadModel('Apimports'); // Tabelle leeren $this->Apimports->connection()->transactional(function ($conn) { $sqls = $this->Apimports->schema()->truncateSql($this->Apimports->connection()); foreach ($sqls as $sql) { $this->Apimports->connection()->execute($sql)->execute(); } }); $filepath = '/var/www/html/asd-control/webroot/files/ap/results.csv'; $handle = fopen($filepath, "r"); //$i = 1; //$header = fgetcsv($handle, $options['length'], $options['delimiter']); while ($row = fgetcsv($handle, $options['length'], $options['delimiter'])) { //debug($row); $data = (object) []; $data->schule = trim($row[0]); $data->pruefungsart = trim($row[1]); $data->anzahl = trim($row[2]); $data->schuelerstatus = trim($row[3]); $data->erzeugungsdatum = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', trim($row[4])))); $data->lieferung = trim($row[5]); $line = $this->Apimports->newEntity(); $line = $this->Apimports->patchEntity($line, (array) $data); //debug($line); $result = $this->Apimports->save($line); //debug($result); //$i++; } //die; return $this->redirect(['action' => 'create']); } /** * Index method * * @return \Cake\Network\Response|null */ public function index() { $this->paginate = [ 'contain' => ['Examinations'] ]; $emails = $this->paginate($this->Emails); $this->set(compact('emails')); $this->set('_serialize', ['emails']); } /** * View method * * @param string|null $id Email id. * @return \Cake\Network\Response|null * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function view($id = null) { $email = $this->Emails->get($id, [ 'contain' => ['Examinations'] ]); $this->set('email', $email); $this->set('_serialize', ['email']); } /** * Add method * * @return \Cake\Network\Response|null Redirects on successful add, renders view otherwise. */ public function add() { $email = $this->Emails->newEntity(); if ($this->request->is('post')) { $email = $this->Emails->patchEntity($email, $this->request->data); if ($this->Emails->save($email)) { $this->Flash->success(__('The email has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The email could not be saved. Please, try again.')); } $examinations = $this->Emails->Examinations->find('list', ['limit' => 200]); $this->set(compact('email', 'examinations')); $this->set('_serialize', ['email']); } /** * Edit method * * @param string|null $id Email id. * @return \Cake\Network\Response|null Redirects on successful edit, renders view otherwise. * @throws \Cake\Network\Exception\NotFoundException When record not found. */ public function edit($id = null) { $email = $this->Emails->get($id, [ 'contain' => [] ]); if ($this->request->is(['patch', 'post', 'put'])) { $email = $this->Emails->patchEntity($email, $this->request->data); if ($this->Emails->save($email)) { $this->Flash->success(__('The email has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The email could not be saved. Please, try again.')); } $examinations = $this->Emails->Examinations->find('list', ['limit' => 200]); $this->set(compact('email', 'examinations')); $this->set('_serialize', ['email']); } /** * Delete method * * @param string|null $id Email id. * @return \Cake\Network\Response|null Redirects to index. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function delete($id = null) { $this->request->allowMethod(['post', 'delete']); $email = $this->Emails->get($id); if ($this->Emails->delete($email)) { $this->Flash->success(__('The email has been deleted.')); } else { $this->Flash->error(__('The email could not be deleted. Please, try again.')); } return $this->redirect(['action' => 'index']); } }