Merge branch '384-make-map-tile-server-configurable' of gitlab.com:jankstudio/resq into 394-warranty-expiration-sms-reminder

This commit is contained in:
Kendrick Chan 2020-05-01 14:05:57 +08:00
commit 434cedf206
4 changed files with 184 additions and 2 deletions

View file

@ -74,6 +74,7 @@ services:
$pass: "%env(RT_PASS)%"
$usage_type: "%env(RT_USAGE_TYPE)%"
$shortcode: "%env(RT_SHORTCODE)%"
$dr_url: ""
App\Service\MQTTClient:
arguments:

View file

@ -0,0 +1,41 @@
<?php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use App\Service\RisingTideGateway;
class TestSMSCommand extends Command
{
protected $gateway;
protected function configure()
{
$this->setName('sms:test')
->setDescription('Sends a test SMS message.')
->setHelp('Sends a test SMS message.')
->addArgument('destination', InputArgument::REQUIRED, 'Destination number to send to');
}
public function __construct(RisingTideGateway $gateway)
{
$this->gateway = $gateway;
parent::__construct();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$number = $input->getArgument('destination');
error_log('sending sms to ' . $number);
$msg = 'This is a test.';
$this->gateway->sendSMS($number, 'MOTOLITE', $msg);
return 0;
}
}

126
src/Entity/SMSMessage.php Normal file
View file

@ -0,0 +1,126 @@
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use DateTime;
/**
* @ORM\Entity
* @ORM\Table(name="sms_message")
*/
class SMSMessage
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="datetime")
*/
protected $date_create;
/**
* @ORM\Column(type="string", length=100)
*/
protected $source;
/**
* @ORM\Column(type="string", length=100)
*/
protected $source_alias;
/**
* @ORM\Column(type="string", length=100)
*/
protected $destination;
/**
* @ORM\Column(type="text")
*/
protected $message;
/**
* @ORM\Column(type="string", length=30)
*/
protected $status;
public function __construct()
{
$this->date_create = new DateTime();
$this->from = '';
$this->from_alias = '';
$this->to = '';
$this->message = '';
$this->status = 'created';
}
public function getID()
{
return $this->id;
}
public function getDateCreate()
{
return $this->date_create;
}
public function setFrom($from)
{
$this->source = $from;
return $this;
}
public function getFrom()
{
return $this->source;
}
public function setFromAlias($alias)
{
$this->source_alias = $alias;
return $this;
}
public function getFromAlias()
{
return $this->source_alias;
}
public function setTo($to)
{
$this->destination = $to;
return $this;
}
public function getTo()
{
return $this->destination;
}
public function setMessage($message)
{
$this->message = $message;
return $this;
}
public function getMessage()
{
return $this->message;
}
public function setStatus($status)
{
$this->status = $status;
return $this;
}
public function getStatus()
{
return $this->status;
}
}

View file

@ -4,6 +4,7 @@ namespace App\Service;
use Doctrine\ORM\EntityManagerInterface;
use DateTime;
use App\Entity\SMSMessage;
class RisingTideGateway
{
@ -17,14 +18,16 @@ class RisingTideGateway
protected $pass;
protected $usage_type;
protected $shortcode;
protected $dr_url;
public function __construct(EntityManagerInterface $em, $user, $pass, $usage_type, $shortcode)
public function __construct(EntityManagerInterface $em, $user, $pass, $usage_type, $shortcode, $dr_url)
{
$this->em = $em;
$this->user = $user;
$this->pass = $pass;
$this->usage_type = $usage_type;
$this->shortcode = $shortcode;
$this->dr_url = $dr_url;
}
public function sendSMS($mobile_num, $mask, $message)
@ -33,7 +36,18 @@ class RisingTideGateway
'Content-Type: application/vnd.net.wyrls.Document-v3+json'
];
$date = new DateTime();
$sms = new SMSMessage();
$sms->setFrom($this->shortcode)
->setFromAlias($mask)
->setTo($mobile_num)
->setMessage($message)
->setStatus('sent');
$this->em->persist($sms);
$this->em->flush();
$date = $sms->getDateCreate();
// $date = new DateTime();
$date_string = $date->format('Y-m-d') . 'T' . $date->format('H:m:s');
$data = [