mirror of
https://github.com/RaspbianFrance/raspisms.git
synced 2025-04-20 16:37:48 +02:00
Add callback for phone calls, not tested yet
This commit is contained in:
parent
52a0302dc2
commit
41c3b3b86e
13 changed files with 378 additions and 57 deletions
127
controllers/internals/Call.php
Normal file
127
controllers/internals/Call.php
Normal file
|
@ -0,0 +1,127 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of RaspiSMS.
|
||||
*
|
||||
* (c) Pierre-Lin Bonnemaison <plebwebsas@gmail.com>
|
||||
*
|
||||
* This source file is subject to the GPL-3.0 license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
namespace controllers\internals;
|
||||
|
||||
class Call extends StandardController
|
||||
{
|
||||
protected $model;
|
||||
|
||||
/**
|
||||
* Create a call.
|
||||
*
|
||||
* @param int $id_user : Id of the user
|
||||
* @param int $id_phone : Id of the phone that emitted (outbound) or received (inbound) the call
|
||||
* @param string $uid : Uid of the phone call
|
||||
* @param string $direction : Direction of the call, \models\Call::DIRECTION_INBOUND | \models\Call::DIRECTION_OUTBOUND
|
||||
* @param string $start : Date of the call beginning
|
||||
* @param ?string $end : Date of the call end
|
||||
* @param ?string $origin : Origin of the call or null if outbound
|
||||
* @param ?string $destination : Destination of the call or null if inbound
|
||||
*
|
||||
* @return mixed bool|int : false on error, new call id else
|
||||
*/
|
||||
public function create(int $id_user, int $id_phone, string $uid, string $direction, string $start, ?string $end = null, ?string $origin = null, ?string $destination = null)
|
||||
{
|
||||
$call = [
|
||||
'id_user' => $id_user,
|
||||
'id_phone' => $id_phone,
|
||||
'uid' => $uid,
|
||||
'start' => $start,
|
||||
'end' => $end,
|
||||
'direction' => $direction,
|
||||
'origin' => $origin,
|
||||
'destination' => $destination,
|
||||
];
|
||||
|
||||
if (!$origin && !$destination)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
switch ($direction)
|
||||
{
|
||||
case \models\Call::DIRECTION_OUTBOUND :
|
||||
if (null === $destination) { return false; }
|
||||
break;
|
||||
|
||||
case \models\Call::DIRECTION_INBOUND :
|
||||
if (null === $origin) { return false; }
|
||||
break;
|
||||
|
||||
default :
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!\controllers\internals\Tool::validate_date($start, 'Y-m-d H:i:s'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (null !== $end && !\controllers\internals\Tool::validate_date($end, 'Y-m-d H:i:s'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (null !== $end && new \DateTime($end) < new \DateTime($start))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->get_model()->insert($call);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* End a call
|
||||
*
|
||||
* @param int $id_user : Id of the user to end call for
|
||||
* @param int $id_phone : If of the phone to end call for
|
||||
* @param string $uid : Uid of the call to end
|
||||
* @param string $end : End date of the call, format Y-m-d H:i:s
|
||||
*
|
||||
* @return bool : False if cannot end phone call, true else
|
||||
*/
|
||||
public function end(int $id_user, int $id_phone, string $uid, string $end)
|
||||
{
|
||||
if (!\controllers\internals\Tool::validate_date($end, 'Y-m-d H:i:s'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$call = $this->get_model()->get_by_uid_and_phone_for_user($id_user, $id_phone, $uid);
|
||||
if (!$call)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (new \DateTime($end) < new \DateTime($call['start']))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$datas = [
|
||||
'end' => $end,
|
||||
];
|
||||
|
||||
return (bool) $this->get_model()->update_for_user($id_user, $call['id'], $datas);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the model for the Controller.
|
||||
*/
|
||||
protected function get_model(): \descartes\Model
|
||||
{
|
||||
$this->model = $this->model ?? new \models\Call($this->bdd);
|
||||
|
||||
return $this->model;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue