resq/src/Controller/SMSController.php

71 lines
1.8 KiB
PHP

<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use App\Entity\SMSMessage;
use DateTime;
class SMSController extends Controller
{
public function deliveryReceipt(Request $req, EntityManagerInterface $em)
{
$content = $req->getContent();
error_log($content);
$data = json_decode($content, true);
error_log(print_r($data, true));
// data has id?
if (!isset($data['message_id']))
{
error_log('SMSDR: no id sent');
$resp = new Response();
$resp->setStatusCode(400);
return $resp;
}
// check structure
if (!isset($data['delivered']) ||
!isset($data['reason_code']) ||
!isset($data['reason_description'])
)
{
error_log('SMSDR: bad data structure');
$resp = new Response();
$resp->setStatusCode(400);
return $resp;
}
// find sms
$sms = $em->getRepository(SMSMessage::class)->find($data['message_id']);
if ($sms == null)
{
error_log('SMSDR: no sms found');
$resp = new Response();
$resp->setStatusCode(202);
return $resp;
}
$sms->setReasonCode($data['reason_code']);
if ($data['delivered'])
$sms->setStatus('delivered');
else
$sms->setStatus('not_delivered');
$em->flush();
$resp = new Response();
$resp->setStatusCode(202);
return $resp;
}
}