/** * @param $countryID * @return array * @throws \CPS_Exception * @throws \Exception * @throws null */ public function getOnlineUsers($countryID) { $query = CPS_Term($countryID, 'country'); $list = array('id' => 'yes', "x" => 'yes', "y" => 'yes', "about" => "yes", "email" => "yes"); try { $documents = $this->cpsSimple->search($query, NULL, NULL, $list); } catch (\Exception $e) { return -2; } $results = []; foreach ($documents as $id => $document) { $tempResult = []; $tempResult["x"] = $document->x->__toString(); $tempResult["y"] = $document->y->__toString(); $tempResult["description"] = $document->about->__toString(); $tempResult["calls_count"] = 0; $tempResult["receive_calls_count"] = 0; $tempResult["rate"] = 0; $tempResult["minutes_spoken"] = 0; if (isset($document->conversations->conversation)) { //-----------------------------SUM CONVERSATION OUTGOING---------------- $count = 0; foreach ($document->conversations->conversation as $conversation) { if ($conversation->is_incoming == 0) { $tempResult["calls_count"]++; $tempResult["rate"] += $conversation->rate; } $tempResult["minutes_spoken"] += $conversation->duration; $count++; } //-----------------------------SUM CONVERSATION INCOMMING---------------- $tempResult["receive_calls_count"] = $count - $tempResult["calls_count"]; //-----------------------------AVG OF RATE CONVERSATION ---------------- if ($count > 0) { $tempResult["rate"] = $tempResult["rate"] / $count; } } $tempResult["countries_to"] = ["IR"]; //TODO make it more general $tempResult["languages"] = Converter::XML2Array($document->languages)["languages"]; $results[] = $tempResult; } return $results; }