<?php

    require __DIR__ . '/../vendor/autoload.php';
    require_once( __DIR__ . '/../vendor/phpmailer/class.phpmailer.php');
    require_once( __DIR__ . '/../vendor/phpmailer/PHPMailerAutoload.php');

//    Logger::configure('../log4php.xml');
//    $logger = Logger::getLogger("main");

    $sms_in_log=fopen("../log/incoming_sms.csv", "a");

//    fwrite($sms_in_log,date("Y-m-d H:i:s")."|".$_POST['msg_src']."|".$_POST['msg_text']."\n");

//    Log whole request
//    (new DumpHTTPRequestToFile)->execute('../log/incoming_sms.csv');

    if(isset($_POST['msg_src']) && isset($_POST['msg_text'])) {
//        $logger->debug("Received sms_text: " . $_POST['sms_text'] . " from: +" . $_POST['sms_from']);
        $values = explode("&", $_POST['msg_text']);

	fwrite($sms_in_log,date("Y-m-d H:i:s")."|".$_POST['msg_src']."|".$_POST['msg_text']."\n");

	$smsText = $_POST['msg_text'];

        $type = $values[0];
        $nfcID = $values[1];
        $simID = $values[2];
        $partnerID = $values[3];
        $brand = $values[4];
        $model = $values[5];
        $phoneNo = "+4".$_POST['msg_src'];

//	sendEmail($logger, 'root@epa1.vig.pl', 'assistance@vigekspert.pl', 'EPAS SMS z numeru ' . $phoneNo, 'Tekst SMS: ' . $smsText);

        $url = "http://10.12.141.33/epa-main-web/";

        switch ($type) {
            case "asapro":
                $url = "http://10.12.141.36/asap-server-web/";
                break;
            case "asaprotest":
                $url = "http://10.12.141.40/asap-server-web/";
                break;
            default:
		$url = "http://10.12.141.33/epa-main-web/";
        }

    	$regSMS = true;

	if($type != "asapro" && $type != "asaprotest") {
    	    $regSMS = false;
    	    $url .= "sms?";
    	    $url .= "msisdn=%2B" . $phoneNo;
    	    $url .= "&smstext=" . urlencode($smsText);

	} else {

	    $url .= "registration?";
    	    $url .= "nfc=" . $nfcID;
    	    $url .= "&phone=" . $phoneNo;
    	    $url .= "&sim=" . $simID;
    	    $url .= "&partner=" . "0";
    	    $url .= "&brand=" . urlencode($brand);
    	    $url .= "&model=" . urlencode($model);
    	    
	}
//	$logger->debug("URL: " . $url);

	$result = file_get_contents($url);

	if ($regSMS == false) {
            $result1 = file_get_contents(str_replace("10.12.141.33","10.12.141.40",$url));
        }

        if ($result === false && $regSMS) {
            echo 'Error while sending data to server';
        } else {
            echo 'OK';
        }
    } else {
        echo 'Missing param sms_from or sms_text';
    }

    fclose($sms_in_log);

    function sendEmail($logger, $from, $to, $subject, $body) {

        try {
            $mail = new PHPMailer;

            $mail->isSMTP();                                      // Set mailer to use SMTP
            $mail->SMTPDebug = 0;
            $mail->Host = '10.0.10.93';                        // Specify main and backup SMTP servers
//            $mail->SMTPSecure = 'tls';
            $mail->Port = 25;
            $mail->CharSet = 'UTF-8';
//            $mail->SMTPOptions = array(
//                'ssl' => array(
//                    'verify_peer' => false,
//                    'verify_peer_name' => false,
//                    'allow_self_signed' => true
//                )
//            );
//            $mail->SMTPAuth = true;                               // Enable SMTP authentication
//            $mail->Username = 'jboss@eago.cz';                  // SMTP username
//            $mail->Password = 'jboss';                           // SMTP password

            $mail->setFrom($from);
            $mail->addAddress($to);                             // Add a recipient

            $mail->isHTML(false);                                  // Set email format to HTML

            $mail->Subject = $subject;
            $mail->Body    = $body;

            if(!$mail->send()) {
//                echo 'Message could not be sent.';
//                echo 'Mailer Error: ' . $mail->ErrorInfo;
//                $logger->debug("Message could not be sent with error: " . $mail->ErrorInfo);
            } else {
//                echo 'Message has been sent';
//                $logger->debug("Email has been sent to " . $to);
            }
        } catch (phpmailerException $e) {
            var_dump($e);
            $this->smtp->quit();
        }
    }


    class DumpHTTPRequestToFile {
    public function execute($targetFile) {
        $data = sprintf(
            "%s %s %s\n\nHTTP headers:\n",
            $_SERVER['REQUEST_METHOD'],
            $_SERVER['REQUEST_URI'],
            $_SERVER['SERVER_PROTOCOL']
        );

        foreach ($this->getHeaderList() as $name => $value) {
            $data .= $name . ': ' . $value . "\n";
        }

        $data .= "\nRequest body:\n";

        file_put_contents(
            $targetFile,
            $data . file_get_contents('php://input') . "\n"
        );

        echo("Done!\n\n");
    }

    private function getHeaderList() {
        $headerList = [];
        foreach ($_SERVER as $name => $value) {
            if (preg_match('/^HTTP_/',$name)) {
                // convert HTTP_HEADER_NAME to Header-Name
                $name = strtr(substr($name,5),'_',' ');
                $name = ucwords(strtolower($name));
                $name = strtr($name,' ','-');

                // add to list
                $headerList[$name] = $value;
            }
        }

        return $headerList;
    }
}
?>