71 lines
1.8 KiB
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;
|
|
}
|
|
}
|