<?php
namespace controller;

use Psr\Container\ContainerInterface;
use \Model\NachrichtDAO;
use \Model\Message;
use Slim\Http\Response;
use Slim\Http\Request;
use
DataTables\Editor,
DataTables\Editor\Field,
DataTables\Editor\Format,
DataTables\Editor\Mjoin,
DataTables\Editor\Options,
DataTables\Editor\Upload,
DataTables\Editor\Validate,
DataTables\Editor\ValidateOptions;

class NachrichtenController
{
    public static function zeigeNachrichten(ContainerInterface $container, Response $response){
        
        $dbh = $container->get('databaseConnection')->getPDO();
        $nachrichten = NachrichtDAO::ladeNachrichten($dbh, $_SESSION['BENUTZER_ID'], $_SESSION['BEREICH_ID']);
        
        $container->get('view')->render($response, 'defaultSite.phtml', ['contentTemplate' => 'nachrichten.phtml', 'nachrichten' => $nachrichten]);
        
    }
    
    public static function updateNachricht(ContainerInterface $container, Request $request, Response $response){
        
        $dbh = $container->get('databaseConnection')->getPDO();
        
        $in = $request->getParams();
        $modifiedMessage = Message::createForUpdate($in['id'],$in['verweis'],$in['status'],$in['faellig']);
        $result = NachrichtDAO::updateNachricht($dbh, $modifiedMessage);
        
        $success = $result ? 'true' : 'false';
        
        $response->write( json_encode(array('info' => $success)) );
        
        
        // Lösung die zeigt, dass im Body korrektes Json steht
        // $data = array('info' => 'error', 'nachricht' => 'Vom Server!');
        // $responseNew = $response->withJson($data, 201);
        // $data = array('info' => 'error', 'nachricht' => $responseNew->getBody()->__toString());
        // $response->write( json_encode($data) );
        
        
        // Diese Lösung funktioniert nicht
        // $data = array('info' => 'error', 'nachricht' => 'Vom Server!');
        // $response = $response->withJson($data);
       
        
    }
    
    public static function nachrichtenData(){
        require  "../public/frameworks/Editor-1.7.2/php/DataTables.php";        
       
        return Editor::inst( $db, 'nachricht', 'id' )
        ->fields(
            Field::inst( 'nachricht.titel')
            ->validator( Validate::notEmpty( ValidateOptions::inst()
                ->message( 'Es ist ein Betreff notwendig' )
                ) ),
            Field::inst( 'nachricht.nachricht' )
            ->validator( Validate::notEmpty( ValidateOptions::inst()
                ->message( 'Es kann keine leere Nachricht versendet werden' )
                ) ),
            Field::inst( 'nachricht.verweis' ),
            Field::inst( 'nachricht.status' ),
            Field::inst( 'nachricht.faellig' ),
            Field::inst( 'nachricht.erstell_datum' ),
            Field::inst( 'empf.vorname' ),
            Field::inst( 'empf.nachname' ),
            Field::inst( 'send.vorname' ),
            Field::inst( 'send.nachname' ),
            Field::inst( 'sendBereich.bereichsname' ),
            Field::inst( 'empfBereich.bereichsname' ) 
          )
        ->leftJoin('benutzer as empf', 'empf.id', '=', 'nachricht.empfaenger_id')
        ->leftJoin('benutzer as send', 'send.id', '=', 'nachricht.sender_id')
        ->leftJoin('bereich as sendBereich', 'sendBereich.pk_id_bereich', '=', 'send.bereich_id')
        ->leftJoin('bereich as empfBereich', 'empfBereich.pk_id_bereich', '=', 'empf.bereich_id')
        ->process( $_POST)
        ->json(false);
        
        
    }
    
}

