Your IP : 18.191.83.45


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/voximplant/lib/controller/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/modules/voximplant/lib/controller/subscription.php

<?php

namespace Bitrix\Voximplant\Controller;

use Bitrix\Main\Engine\Controller;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Error;
use Bitrix\Main\Type\DateTime;
use Bitrix\Voximplant\Model\NumberTable;

class Subscription extends Controller
{
	public function getWithNumberAction($number)
	{
		$row = NumberTable::getRow([
			"select" => ["SUBSCRIPTION_ID"],
			"filter" => [
				"=NUMBER" => $number
			]
		]);

		if(!$row)
		{
			$this->errorCollection[] = new Error(Loc::getMessage("VOX_SUBSCRIPTION_NUMBER_NOT_FOUND"), "not_found");
			return null;
		}

		$subscriptionId = $row["SUBSCRIPTION_ID"];
		$numbers = [];

		$cursor = NumberTable::getList([
			"select" => ["NUMBER"],
			"filter" => ["=SUBSCRIPTION_ID" => $subscriptionId]
		]);
		while ($row = $cursor->fetch())
		{
			$numbers[] = $row["NUMBER"];
		}

		return [
			"subscriptionId" => $subscriptionId,
			"numbers" => $numbers
		];
	}

	public function enqueueDisconnectAction($subscriptionId)
	{
		$numbersInSubscription = NumberTable::getList([
			'filter' => [
				'=SUBSCRIPTION_ID' => $subscriptionId
			]
		])->fetchAll();

		if(count($numbersInSubscription) == 0)
		{
			$this->errorCollection[] = new Error(Loc::getMessage("VOX_SUBSCRIPTION_NUMBER_NOT_FOUND"), "not_found");
			return null;
		}

		$viHttp = new \CVoxImplantHttp();
		if(count($numbersInSubscription) == 1)
		{
			$number = $numbersInSubscription[0]['NUMBER'];
			$result = $viHttp->DeactivatePhoneNumber($number);
		}
		else
		{
			$result = $viHttp->DeactivateSubscription($subscriptionId);
		}

		if (!$result)
		{
			$this->errorCollection[] = new Error($viHttp->GetError()->msg);
			return null;
		}

		$date = new DateTime();
		$date->add('23 HOUR');

		foreach ($numbersInSubscription as $item)
		{
			NumberTable::update($item["ID"], [
				'TO_DELETE' => 'Y',
				'DATE_DELETE' => $date
			]);
		}

		return $result;
	}

	public function cancelDisconnectAction($number)
	{
		$row = NumberTable::getRow([
			'filter' => [
				'=NUMBER' => $number
			]
		]);

		if(!$row)
		{
			$this->errorCollection[] = new Error(Loc::getMessage("VOX_SUBSCRIPTION_NUMBER_NOT_FOUND"), "not_found");
			return null;
		}

		$subscriptionId = $row["SUBSCRIPTION_ID"];

		$viHttp = new \CVoxImplantHttp();
		$result = $viHttp->CancelDeactivateSubscription($subscriptionId);
		if (!$result)
		{
			$this->errorCollection[] = new Error($viHttp->GetError()->msg);
			return null;
		}

		$cursor = NumberTable::getList([
			'select' => ['ID'],
			'filter' => [
				'=SUBSCRIPTION_ID' => $subscriptionId
			]
		]);

		while ($row = $cursor->fetch())
		{
			NumberTable::update($row['ID'], [
				'TO_DELETE' => 'N',
				'DATE_DELETE' => null
			]);
		}
	}
}