sms-store/src/App/Service/SmsStoreService.php

60 lines
1.2 KiB
PHP
Raw Normal View History

2017-09-03 17:51:59 +02:00
<?php
namespace App\Service;
use App\Entity\Sms;
use App\Entity\User;
use Doctrine\ORM\EntityManager;
class SmsStoreService
{
/**
* @var EntityManager
*/
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function storeSms(string $hashKey, int $direction, array $requestData): bool
{
$user = $this->ensureUserExists($hashKey);
$sms = new Sms();
$sms->setDirection($direction)
->setContactName($requestData['contactName'])
->setContactNumber($requestData['contactNumber'])
2017-09-03 19:41:29 +02:00
->setOccuredAt(new \DateTime($requestData['when']))
2017-09-03 17:51:59 +02:00
->setOwner($user)
->setText($requestData['text']);
$this->em->persist($sms);
$this->em->flush();
return true;
}
/**
* @param string $hashKey
* @return User
*/
private function ensureUserExists(string $hashKey): User
{
/** @var User $user */
$user = $this->em->getRepository(User::class)->findOneBy([
'hashKey' => $hashKey
]);
if($user === null) {
$user = new User();
2017-09-03 19:41:29 +02:00
$user->setHashKey($hashKey)->setName("Unknown");
2017-09-03 17:51:59 +02:00
$this->em->persist($user);
$this->em->flush();
}
return $user;
}
}