<?php

class Agro_WhatsApp_Services_Wescctech implements Agro_WhatsApp_Services_Interface
{
    public function sendMedia(string $number, string $fileBase64, string $extension, string $fileName): stdClass
    {
		$url = AGROZAP_API_URL . "/chats/send-media";
		$data = [
			"number" => $number,
			"extension" => $extension,
			"fileName" => $fileName,
			"forceSend" => true,
			"verifyContact" => false,
			"base64" => $fileBase64,
			"delayInSeconds" => 10
		];

		return $this->doRequest($url, $data);
    }

	public function sendText(string $number, string $message): stdClass
	{
		$url = AGROZAP_API_URL . "/chats/send-text";
		$data = [
			"number" => $number,
			"forceSend" => true,
			"isWhisper" => false,
			"verifyContact" => false,
			"message" => $message,
		];

		return $this->doRequest($url, $data);
	}

	private function getHeaders(): array
	{
		return [
			"Content-Type: application/json",
			"access-token: " . AGROZAP_TOKEN
		];
	}

	private function doRequest(string $url, array $data): stdClass
	{
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_HTTPHEADER, $this->getHeaders());
		curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
		$response = curl_exec($ch);
		curl_close($ch);
		
		$response = json_decode($response);

		if (is_null($response)) {
			$response = (object) [
				"status" => "500",
				"msg" => "Internal Server Error.",
				"errorCode" => "internal"
			];
		}

        return $response;
	}
}
