Can get pending calls of a user

This commit is contained in:
Pierre HUBERT 2019-01-24 18:09:36 +01:00
parent 9d1371fd81
commit 8d004e80f5
2 changed files with 73 additions and 0 deletions

View File

@ -68,6 +68,22 @@ class CallsController {
} }
/**
* Get the next pending call
*
* @url POST /calls/nextPending
*/
public function GetNextPendingCall(){
user_login_required();
//Get the next pending call for the user
$call = components()->calls->getNextPendingForUser(userID, TRUE);
if(!$call->isValid())
return array("notice" => "No pending call.");
return self::CallInformationToAPI($call);
}
/** /**
* Turn a CallsConfig object into an API entry * Turn a CallsConfig object into an API entry

View File

@ -69,6 +69,63 @@ class CallsComponents {
return $info; return $info;
} }
/**
* Get information about a call
*
* @param $call_id Target call ID
* @param $load_members Specify whether members information should
* be loaded too or not
* @return CallInformation Matching call information object / invalid object
* in case of failure
*/
public function get(int $call_id, bool $load_members) : CallInformation {
$entry = db()->select(
self::CALLS_LIST_TABLE,
"WHERE id = ?",
array($call_id)
);
if(count($entry) == 0)
return new CallInformation();
$info = self::DBToCallInformation($entry[0]);
//Load call members if required
if($load_members && !$this->getMembers($info))
return new CallInformation();
return $info;
}
/**
* Get the next call for a user
*
* @param $userID Target user ID
* @param $load_members Specify whether information about members
* should be loaded or not
* @return CallInformation Information about the call / invalid object
* if none found
*/
public function getNextPendingForUser(int $userID, bool $load_members) : CallInformation {
//Get the ID of a call the user has not responded yet
$entries = db()->select(
self::CALLS_MEMBERS_TABLE,
"WHERE user_id = ? AND user_accepted = ?",
array($userID, CallMemberInformation::USER_UNKNOWN),
array("call_id")
);
//Check if the user has no pending call
if(count($entries) == 0)
return new CallInformation();
return $this->get($entries[0]["call_id"], $load_members);
}
/** /**
* Create a call for a conversation * Create a call for a conversation
* *