<?php

namespace app\controllers;

use Yii;
use yii\db\Query;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\web\Response;
use yii\filters\VerbFilter;
use yii\helpers\FileHelper;

class FunzioniController extends Controller
{
	
	#ADEGUAMENTO EMAIL DATI BIA
	public function actionF1()
    {
		
		$PteliteUsersData = \app\models\PteliteUsersData::find()
		->all();
		foreach($PteliteUsersData as $PteliteUserData){
			
			$User = \app\models\User::find()
			->where(["name" => $PteliteUserData->surname." ".$PteliteUserData->name])
			->one();
			
			if($User){
				$PteliteUserData->id_user = $User->id;
				$PteliteUserData->email = $User->email;
				$PteliteUserData->save(false);
			}
			
			if(!$User){
				//echo $PteliteUserData->surname." ".$PteliteUserData->name;
				//echo "<br>";
			}

		}
		
	}
	
	#DIVISIONE NOME E COGNOME DELLA LISTA UTENTI
	public function actionF2()
    {
		
		$Users = \app\models\User::find()
		->where(["role" => 2])
		->all();
		foreach($Users as $User){
			
			$userArray = explode(" ",$User->name);

			$User->name = $userArray[1];
			$User->surname = $userArray[0];
			$User->save(false);

		}
		
	}
	
	# INSERIMENTO UTENTI DA FILE CSV
	public function actionF3()
    {
		
		$User = new \app\models\User();
		$User->username = "info@ptelite.it";
		$User->email = "info@ptelite.it";
		$User->status = 10;
		$User->role = 1;
		$User->google_auth_code = "";
		$User->name = "Luciano";
		$User->surname = "Paluzzi";							 
		$User->language = 222;
		$User->country = 106;
		$User->account_id = "ID-".rand(10000000,99999999);
		$User->setPassword("PTLT2023");
		$User->generateAuthKey();
		$User->save(false);
		
		
		exit;
		
		$User = new \app\models\User();
		$User->username = "develop@libero.it";
		$User->email = "develop@libero.it";
		$User->status = 10;
		$User->role = 1;
		$User->google_auth_code = "";
		$User->name = "develop";
		$User->surname = "develop";							 
		$User->language = 222;
		$User->country = 106;
		$User->account_id = "ID-".rand(10000000,99999999);
		$User->setPassword("8L=:]/yD");
		$User->generateAuthKey();
		$User->save(false);
		
		
		exit;
			
		$filename = "Export - PT ELITE CUSTOMER BASE - 19_04_2023.csv";
		
		$file = fopen("uploads/".$filename, "r");
		$count = 0;
		while (($data = fgetcsv($file, 1000, ";")) !== FALSE) {
			
			if(!\app\models\User::find()->where(["email" => $data[10]])->one()){
				$User = new \app\models\User();
				$User->username = $data[10];
				$User->email = $data[10];
				$User->status = 10;
				$User->role = 2;
				$User->google_auth_code = "";
				$User->name = $data[2];
				$User->surname = $data[1];							 
				$User->language = 222;
				$User->country = 106;
				$User->account_id = "ID-".rand(10000000,99999999);
				$User->setPassword("PtelitE");
				$User->generateAuthKey();
				$User->save(false);
			}
			
			$CrmSettings = \app\models\CrmSettings::find()->where(["setting_key" => "remainings"])->one();
			$CrmSettings->settings_value1 = $count++;
			$CrmSettings->save(false);
			
		}
		
	}
	
	# NUOVO UTENTE
	public function actionF4()
    {
		
		$User = new \app\models\User();
		$User->username = "info@ptelite.it";
		$User->email = "info@ptelite.it";
		$User->status = 10;
		$User->role = 2;
		$User->google_auth_code = "";
		$User->name = "Luciano";
		$User->surname = "Paluzzi";							 
		$User->language = 222;
		$User->country = 106;
		$User->account_id = "ID-".rand(10000000,99999999);
		$User->setPassword("Ptlttl_2023");
		$User->generateAuthKey();
		$User->save(false);
				
	}
	
	# API
	public function actionF5()
    {
		
		
		#----------------------- APP TOKEN -----------------------#
		$serverUrl = 'http://iyes.inforyou.it';
		$url = $serverUrl . '/v1/token/e2a1d759-f1cc-4170-b7ca-fbb3478763a7';
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$response = curl_exec($ch);
		if (curl_errno($ch)) {
			echo 'Errore nella richiesta cURL: ' . curl_error($ch);
		}
		curl_close($ch);

		if ($response) {
			// La risposta è in formato JSON
			$data = json_decode($response, true);
			if ($data) {
				$appToken =  $data["Item"];
			} else {
				echo 'Errore nella decodifica della risposta JSON';
			}
		} else {
			echo 'Nessuna risposta dalla API';
		}
		#----------------------- APP TOKEN -----------------------#

		//echo $appToken;
		
		#----------------------- AUTH TOKEN -----------------------#
		$serverUrl = "http://37.183.160.48:65432";
		$url = $serverUrl . '/v1/security/authenticate';
		$queryString = http_build_query([
			'login' => 'rinaldo.piccolomini',
			'password' => 'Wa9325dD',
			'companyID' => 2,
		]);
		$url .= '?' . $queryString;
		$options = [
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_HTTPHEADER => [
				'AppToken: ' . $appToken,
			],
		];
		$curl = curl_init();
		curl_setopt_array($curl, $options);
		$response = curl_exec($curl);
		if (curl_errno($curl)) {
			echo 'Errore nella chiamata cURL: ' . curl_error($curl);
		}
		curl_close($curl);
		$responseObject = json_decode($response);
		$authToken =  $responseObject->Item;
		#----------------------- AUTH TOKEN -----------------------#
		
		#----------------------- /v1/webuser/me -----------------------#
		$serverUrl = "http://37.183.160.48:65432";
		$url = $serverUrl . '/v1/webuser/me';
		$options = [
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_HTTPHEADER => [
				'AppToken: ' . $appToken,
				'AuthToken: ' . $authToken
			],
		];
		$curl = curl_init();
		curl_setopt_array($curl, $options);
		$response = curl_exec($curl);
		if (curl_errno($curl)) {
			echo 'Errore nella chiamata cURL: ' . curl_error($curl);
		}
		curl_close($curl);
		$responseObject = json_decode($response);
		var_dump($responseObject);
		#----------------------- /v1/webuser/me -----------------------#
		
		
		/*
		$serverUrl = "http://37.183.160.48:65432";
		$url = $serverUrl . '/v1/security/hello';
		$options = [
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_HTTPHEADER => [
				'AppToken: ' . $appToken,
			],
		];
		$curl = curl_init();
		curl_setopt_array($curl, $options);
		$response = curl_exec($curl);
		if (curl_errno($curl)) {
			echo 'Errore nella chiamata cURL: ' . curl_error($curl);
		}
		curl_close($curl);
		$responseObject = json_decode($response);
		var_dump($responseObject);
		*/
		
		exit;

		// Dati di autenticazione per l'endpoint
		$serverUrl = "http://37.183.160.48:65432";
		$login = "rinaldo.piccolomini";
		$password = "Wa9325dD";
		$companyID = '2';

		// URL per la chiamata cURL
		$url = $serverUrl . '/v1/security/authenticate';

		// Parametri per la QueryString
		$queryString = http_build_query([
			'login' => $login,
			'password' => $password,
			'companyID' => $companyID,
		]);

		// URL completo con QueryString
		$url .= '?' . $queryString;

		// Opzioni della chiamata cURL
		$options = [
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_HTTPHEADER => [
				'AppToken: ' . $appToken,
			],
		];

		// Inizializzazione della sessione cURL
		$curl = curl_init();

		// Imposta le opzioni per la sessione cURL
		curl_setopt_array($curl, $options);

		// Esegue la chiamata cURL e ottiene la risposta
		$response = curl_exec($curl);

		// Verifica eventuali errori nella chiamata cURL
		if (curl_errno($curl)) {
			echo 'Errore nella chiamata cURL: ' . curl_error($curl);
		}

		// Chiude la sessione cURL
		curl_close($curl);

		// Decodifica la risposta JSON
		$responseObject = json_decode($response);
		// Verifica se la risposta contiene un oggetto "Item" con il token di sicurezza
		if (isset($responseObject->Item)) {
			$securityToken = $responseObject->Item;
			echo 'Token di sicurezza: ' . $securityToken;
		} else {
			echo 'Errore durante l\'autenticazione.';
		}


		exit;
		
		// Dati della richiesta
		$serverUrl = 'http://37.183.160.48:65432/v1/waitinglist/position';
		$appToken = 'A30FB7C622CE437CD39BA3AF08DF76EEAB93DB6E4AB9273D159979F111596A251BD2351C6DECDFF10DD64F6547A74D72EA6DC342D6D80EC218FB7A2E0931828FCCF4213E1E7E07A890BDCAC8CD4BA419F6A36CCE892C48FAFD21BFE3020895BB2637BE065E5864B5F9893D2FA43245FBDD49487EA523AF18FCF54230B27B5AAF8077387F95871F642A96F7B229A3CFD41FD00491D07FEEB7C93F162519EF8F16';
		$authToken = 'il_tuo_auth_token';

		// Dati della richiesta JSON
		$waitingListPosition = array(
			'parametro1' => 'valore1', // Sostituisci con i dati richiesti dal server
			'parametro2' => 'valore2',
		);

		// Converti i dati in JSON
		$data = json_encode($waitingListPosition);

		// Inizializza cURL
		$ch = curl_init($serverUrl);

		// Imposta le opzioni della richiesta cURL
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
			'Content-Type: application/json',
			'AppToken: ' . $appToken,
			'AuthToken: ' . $authToken,
		));
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

		// Esegui la richiesta cURL e ottieni la risposta
		$response = curl_exec($ch);

		// Controlla se ci sono errori
		if (curl_errno($ch)) {
			echo 'Errore cURL: ' . curl_error($ch);
		}

		// Chiudi la sessione cURL
		curl_close($ch);

		// Decodifica la risposta JSON
		$position = json_decode($response, true);

		// La variabile $position conterrà il risultato dell'operazione
		echo "Posizione nella lista d'attesa: " . $position;
				
	}
	
}