<?php
namespace app\controllers;

use yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\data\Pagination;
use yii\db\Query;

class AppController extends Controller
{
    
	public function init()
    {
        parent::init();
        // Imposta la lingua dell'applicazione su 'en-US'
        Yii::$app->language = 'it';
    }

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout'],
                'rules' => [
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

	//Registrazione
	public function actionF1()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$email = Yii::$app->request->post('email');
		$password = Yii::$app->request->post('password');
		$password_confirm = Yii::$app->request->post('password_confirm');
		$check1 = Yii::$app->request->post('check1');
		$check2 = Yii::$app->request->post('check2');
		
		if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Please enter a valid email').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		if (!\app\models\User::findByUsername($email)) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'User not found').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		if(!$password || !$password_confirm){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Please enter the two passwords').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		if($password != $password_confirm){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'The two passwords do not match').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		/*
		if (strlen($password) < 8) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			La password deve essere lunga almeno 8 caratteri
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		} elseif (strlen($password) > 20) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			La password deve essere lunga almeno non più di 20 caratteri
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		} elseif (!preg_match('/[A-Z]/', $password)) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			La password deve contenere almeno una lettera MAIUSCOLA
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		} elseif (!preg_match('/[a-z]/', $password)) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			La password deve contenere almeno una lettera MINUSCOLA
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		} elseif (!preg_match('/\d/', $password)) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			La password deve contenere almeno un NUMERO
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		} elseif (!preg_match('/[^a-zA-Z\d]/', $password)) {
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			La password deve contenere almeno un CARATTERE SPECIALE
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		*/
		
		if(!isset($check1)){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Accept the general terms and conditions of the Service').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		if(!isset($check2)){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Accept the data processing authorization').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		$one_time_password = rand(10000, 99999);
		
		$User = \app\models\User::findByUsername($email);
		$User->one_time_password = $one_time_password;
		$User->save(false);
		
		Yii::$app->mailer->compose('layouts/one_time_password',["User" => $User,"one_time_password" => $one_time_password])
		->setFrom([Yii::$app->params['senderEmail']=>Yii::$app->name])
		->setTo($User->email)
		->setSubject(Yii::t('app', 'One time password',["n" => 1]))
		->send();
		
		$modal = '
		<h1 class="text-center mt-4"><i class="fa fa-3x fa-check-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
		<h1 class="text-center mt-3 font-700 color-white">'.Yii::t('app', 'Perfect!').'</h1>
		<p class="boxed-text-l color-white opacity-70">
		'.Yii::t('app', 'Are you ready to enter the PT Elite world?').'
		</p>
		';
		
		$data = [
            'error' => 0,
            'text' => $modal
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;

	}
	
	//Login
	public function actionF2()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$username = Yii::$app->request->post('username');
		$password = Yii::$app->request->post('password');
		$token = Yii::$app->security->generateRandomString();
		
		######## BLOCCO API TEAM SYSTEM ########
		$AppToken = "401FAA05F47B5B960FE752A9FDCC81CE1EE67782651B163BC8E58790054C3E691BD2351C6DECDFF10DD64F6547A74D72EA6DC342D6D80EC218FB7A2E0931828F39F5A48EC94441229402E3B5AC068489BDB1D0B851A0C6CF323814AD348A7C331CCADD319675F4620741600D8F425B5A1B92F5A4B785BD161FA23555D080B24F2E309B682214C8C1B4638DD0286A2F424AF74F8398455BFD0F61FDA5AEF4547E";
		
		$companyID = 2;
		
		//Chiamata api TeamSystem per ottenere l'AuthToken
		$AuthToken = \app\models\Functions::M2($username,$password,$companyID,$AppToken);
		//Se non ottengo l'AuthToken l'utente non è presente nella banca dati TeamSystem
		if($AuthToken == 0){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Wrong credentials').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">'.Yii::t('app', 'Try again').'</a>
			';
			
			//Log
			\app\models\Functions::M6(0,Yii::$app->controller->id."/".Yii::$app->controller->action->id,"L'utente {$username} ha effettuato il login ma le credenziali non sono state trovate nel database di TeamSystem");
			
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		//Ottenuto l'AuthToken, interrogo TeamSystem per ottenere i dati dell'utente
		$TeamSystemUser = \app\models\Functions::M3($AppToken,$AuthToken);
		
		//Controllo se l'utente esiste nella banca dati PT Elite
		$User = \app\models\User::find()->where(["email" => $TeamSystemUser["Email"]])->one();


		//Se l'utente E' PRESENTE nella banca dati PT Elite aggiorno la username e password
		if($User){
			$User->username = $username;
			$User->setPassword($password);
			$User->access_token = $token;
			$User->AuthToken = $AuthToken;
			$User->save(false);
		}
		//Se l'utente NON E' PRESENTE nella banca dati PT Elite lo inserisco
		if(!$User){
			$User = new \app\models\User();
			$User->username = $TeamSystemUser["WebLogin"];
			$User->email = $TeamSystemUser["Email"];
			$User->status = 10;
			$User->role = 3; // Solo per integrazioni inforyou
			$User->id_group = 7; // Solo per integrazioni inforyou
			$User->id_user_type = 1;
			$User->google_auth_code = "";
			$User->name = $TeamSystemUser["FirstName"];
			$User->surname = $TeamSystemUser["LastName"];				 
			$User->language = 222;
			$User->country = 106;
			$User->account_id = "ID-".rand(10000000,99999999);
			$User->setPassword($password);
			$User->generateAuthKey();
			$User->credits = 0;
			$User->access_token = $token;
			$User->AuthToken = $AuthToken;
			$User->save(false);
		}
		######## BLOCCO API TEAM SYSTEM ########
		
		$User = \app\models\User::findByUsername($username);
		if ($User && $User->validatePassword($password)) {
			
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-check-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 font-700 color-white">Perfetto</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Soon you will enter the world of PT Elite').'
			</p>
			';
			
			//Log
			\app\models\Functions::M6(0,Yii::$app->controller->id."/".Yii::$app->controller->action->id,"L'utente {$username} ha effettuato il login");
			Yii::error($token);
			$data = [
				'error' => 0,
				'text' => $modal,
				'token' => $token
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
		} else {
			
			# Se l'utente è attivo
			if($User){
			
				$modal = '
				<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
				<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
				<p class="boxed-text-l color-white opacity-70">
				'.Yii::t('app', 'Wrong credentials').'
				</p>
				<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">'.Yii::t('app', 'Try again').'</a>
				';
				
				$data = [
					'error' => 1,
					'text' => $modal
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				exit;
			
			} 

			# Se l'utente NON è attivo
			if(!$User){
				
				$modal = '
				<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
				<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
				<p class="boxed-text-l color-white opacity-70">
				'.Yii::t('app', 'User deactive message').'
				</p>
				<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">'.Yii::t('app', 'Close').'</a>
				';
				
				$data = [
					'error' => 1,
					'text' => $modal
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				exit;
				
			}
			
		}
		
	}
	
	//Verifica One Time Password
	public function actionF3()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$email = Yii::$app->request->post('email');
		$password = Yii::$app->request->post('password');
		$v1 = Yii::$app->request->post('v1');
		$v2 = Yii::$app->request->post('v2');
		$v3 = Yii::$app->request->post('v3');
		$v4 = Yii::$app->request->post('v4');
		$v5 = Yii::$app->request->post('v5');
		
		if($v1 == '' || $v2 == '' || $v3 == '' || $v4 == '' || $v5 == ''){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			Inserire tutte le 5 cifre
			'.Yii::t('app', 'Enter all 5 digits').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		$User = \app\models\User::findByUsername($email);
		$one_time_password = $v1.$v2.$v3.$v4.$v5;
		
		if($User->one_time_password != $one_time_password){
			$modal = '
			<h1 class="text-center mt-4"><i class="fa fa-3x fa-times-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
			<h1 class="text-center mt-3 text-uppercase color-white font-700">Wooops!</h1>
			<p class="boxed-text-l color-white opacity-70">
			'.Yii::t('app', 'Enter all 5 digits').'
			</p>
			<a href="#" class="close-menu btn btn-m btn-center-l button-s shadow-l rounded-s text-uppercase font-600 bg-white color-black close_modal_warning">Ok</a>
			';
			
			
			$data = [
				'error' => 1,
				'text' => $modal
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		$token = Yii::$app->security->generateRandomString();
		//$User->password_hash = Yii::$app->security->generatePasswordHash($password);
		$User->access_token = $token;
		$User->one_time_password = null;
		$User->save();
		
		$modal = '
		<h1 class="text-center mt-4"><i class="fa fa-3x fa-check-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
		<h1 class="text-center mt-3 font-700 color-white">Perfetto!</h1>
		<p class="boxed-text-l color-white opacity-70">
		'.Yii::t('app', 'You are ready to enter the PT Elite world').'
		</p>
		';
		
		$data = [
            'error' => 0,
            'text' => $modal,
			'token' => $token
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Reinvio della One time password
	public function actionF4()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$email = Yii::$app->request->post('email');
	
		$one_time_password = rand(10000, 99999);
		
		$User = \app\models\User::findByUsername($email);
		$User->one_time_password = $one_time_password;
		$User->save(false);
		
		Yii::$app->mailer->compose('layouts/one_time_password',["User" => $User,"one_time_password" => $one_time_password])
		->setFrom([Yii::$app->params['senderEmail']=>Yii::$app->name])
		->setTo($User->email)
		->setSubject(Yii::t('app', 'One time password',["n" => 1]))
		->send();
		
		//Log
			\app\models\Functions::M6(0,Yii::$app->controller->id."/".Yii::$app->controller->action->id,"Reinvio codice OneTimePassword a {$email}");
		
		$modal = '
		<h1 class="text-center mt-4"><i class="fa fa-3x fa-check-circle scale-box color-white shadow-xl rounded-circle"></i></h1>
		<h1 class="text-center mt-3 font-700 color-white">'.Yii::t('app', 'Perfect!').'</h1>
		<p class="boxed-text-l color-white opacity-70">
		'.Yii::t('app', 'We have sent you a new code').'
		</p>
		';
		
		$data = [
            'error' => 0,
            'text' => $modal
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Eventi del giorno
	public function actionF5()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$giorni = ["","LUN","MAR","MER","GIO","VEN","SAB","DOM"];
		$dataFormattata = Yii::$app->request->post('dataFormattata');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		/*
		$AppToken = \app\models\Functions::M9();
		$AuthToken = $User->AuthToken;
		//Aggiorno abbonamento
		$TeamSystemMyStatus = \app\models\Functions::M5($AppToken,$AuthToken);
		if($TeamSystemMyStatus != 0){
			\app\models\Functions::M8($User,$TeamSystemMyStatus['Contents'][2]['Contents'][0]['Text']);  //Aggiorno lo stato dell'abbonamento dell'utente
			if(!$User->subscription_sessions){
				if(isset($TeamSystemMyStatus['Contents'][4])){
					\app\models\Functions::M10($User,$TeamSystemMyStatus['Contents'][4]['Contents'][0]['Text']);  //Aggiorno le sedute residue solo la prima volta e solo se l'utente ha l'abbonamento OPEN1
				}
			}
		}
		//#Aggiorno lo stato dell'abbonamento dell'utente
		*/
		
		$text = '';
		
		if(!$User){
		$text = '
			<i class="fa fa-check me-3"></i>'.Yii::t('app', 'Session expired').'
			';
		
			$data = [
				'error' => 1,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		date_default_timezone_set('Europe/Rome'); // Sostituisci con la tua timezone
		setlocale(LC_TIME, 'it_IT');
		$oggi = new \DateTime();
		$intervallo_giornaliero = new \DateInterval('P1D');
		$fine_intervallo = clone $oggi;
		$fine_intervallo->add(new \DateInterval('P30D'));
		$intervallo_date = new \DatePeriod($oggi, $intervallo_giornaliero, $fine_intervallo);
		
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_user" => $User->id])->all();
		$currentTime = time();
		//Ottengo tutti gli id degli appuntamenti dell'utente
		$id_appointment_array = array_map(function($appointmentUser) {
			return $appointmentUser->id_appointment;
		}, $PteliteAppointmentsUsers);
		$appointmentsFuturiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		$appointmentsPassatiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['<', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		
		/*
		$text .= '
			<div class="card card-style bg-11 mt-4 rounded-s" data-card-height="160" style="background-image: url(\'https://studioauriti.it/appkit-ptelite/images/ptelite/sfondo-11.jpg\')">
            <div class="card-bottom ps-3 pb-3">
                <h1 class="font-17 color-white mb-n3">Attività</h1>
                <h4 class="font-13 color-white mb-4 opacity-50">Totali di sintesi</h4>
                <div class="d-flex">
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsFuturiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">In corso</h4>
                    </div>
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsPassatiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">Completati</h4>
                    </div>
                    <div class="ms-auto text-end pe-3">
                        <h5 class="color-white">'.number_format($User->credits,2,",",".").'</h5>
                        <h4 class="color-white font-13 opacity-60">Crediti</h4>
                    </div>
                </div>
            </div>
            <div class="card-overlay bg-black opacity-50 rounded-s"></div>
        </div>
		';
		*/
		
		$text .= '
		<div class="card card-style bg-11 mt-4 rounded-s" style="background-image: url(\'https://studioauriti.it/appkit-ptelite/images/ptelite/sfondo-11.jpg\');height:160px;">
            <div class="card-bottom ps-3 pb-3">
				<h1 class="font-17 color-white mb-n3">'.Yii::t('app', "Activities",["n" => 1]).'</h1>
                <h4 class="font-13 color-white mb-4 opacity-50">'.Yii::t('app', "Summary totals",['n' => 1]).'</h4>
               <div class="d-flex">
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsFuturiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "In progress",["n" => 1]).'</h4>
                    </div>
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsPassatiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "Completed",["n" => 1]).'</h4>
                    </div>
                    <div class="ms-auto text-end pe-3">
                        <h5 class="color-white">'.number_format($User->credits,2,",",".").'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "Fidelity Point",["n" => 2]).'</h4>
                    </div>
                </div>
            </div>
			<div class="card-overlay bg-black opacity-50 rounded-s"></div>
        </div>
	';
		
		//$PteliteAppointments = \app\models\PteliteAppointments::find()->where(["appointment_date_start" => $dataFormattata])->orderBy(["appointment_datetime_int_start" => SORT_ASC])->all();
		$PteliteAppointments = \app\models\PteliteAppointments::find()
		->where(["appointment_date_start" => $dataFormattata])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->groupBy("id_attivita")
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->all();
		
		if(!$PteliteAppointments){
			$text .= '
			<div class="content mb-0 mt-0 text-center">
				<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png">
				<span>'.Yii::t('app', "No activities today",["n" => 1]).'</span>
			</div>
			';
		}
		
		if($PteliteAppointments){
			
			$text .= '<div class="content mb-0 mt-0">';
			$text .= '<h4 class="font-700">'.Yii::t('app', "Activity of the day",["n" => 2]).'</h4>';
			
			/*
			$text .= '
			<div class="splide appointments-slider slider-no-dots" id="appointments-slider">
				<div class="card card-style pb-0 mb-2 pt-3 ps-2">
					<div class="splide__track">
						<div class="splide__list">
			';	
				*/
			
			foreach($PteliteAppointments as $PteliteAppointment){
				
				$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
				->where(["appointment_date_start" => $dataFormattata])
				->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
				->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
				->orderBy(["appointment_datetime_int_start" => SORT_ASC])
				->all();
		
					$text .= '<div class="splide__slide pe-0 ps-0">';
					$text .= $this->renderPartial('events_5', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari]);
					$text .= '</div>';
			}
			
			/*
			$text .= '
					</div>
				</div>
			</div>
		</div>
		';
		*/
		
			$text .= '</div>';
		
		}
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Modal dettaglio evento
	public function actionF6()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		// Calcolo crediti
		$appointment_datetime_start = new \DateTime($PteliteAppointment->appointment_datetime_start);
		$now = new \DateTime();
		$differenza = $now->diff($appointment_datetime_start);
		
		$giorni = $differenza->days;
		$ore = $differenza->h;
		$minuti = $differenza->i;
		$secondi = $differenza->s;
		
		$minuti_totali_mancanti = $differenza->days * 24 * 60 + $differenza->h * 60 + $differenza->i;
		$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->andWhere([">=","minutes",$minuti_totali_mancanti])->orderBy(['minutes' => SORT_ASC])->one();
		$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->orderBy(['minutes' => SORT_DESC])->one();
		$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		//# Calcolo crediti
		
		$text = '';
		
		if ($User->status != 10) {
			$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto</h1></div>-->
				<div class="content mb-0 mt-3">
					<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div class="divider mt-3 mb-2"></div>
					<div class="content mb-0 mx-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
								<span class="font-16"><center>'.Yii::t('app', "User deactive message",["n" => 1]).'</center></span>
							</div>
							<div class="col-12">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
							</div>
						</div>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
		}
		
		//Controllo se l'abbonamento è scaduto
		$subscription_end = $User->subscription_end;
		$subscription_end = new \DateTime(date("Y-m-d",$subscription_end));
		$data_attuale = new \DateTime();
		//Controllo se l'abbonamento è scaduto
		if ($subscription_end < $data_attuale) {
			$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto</h1></div>-->
				<div class="content mb-0 mt-3">
					<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div>
						<strong class="color-theme font-20 d-block mb-n2 mt-2">'.$PteliteAppointment->activity_rel->name.'</strong>
						<span class="font-11 color-theme d-block pt-2"><i class="fa-solid fa-calendar-days pe-2 color-highlight"></i>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
						<span class="font-11 color-theme d-block pb-2"><i class="fa fa-map-marker pe-2 color-highlight"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<div class="clearfix"></div>
						<span class="badge bg-highlight font-16 mb-2"><i class="fa fa-hourglass-half pe-2"></i>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").' all\'evento</span><br>
						<span class="badge bg-highlight font-16"><i class="fa-solid fa-wallet pe-2"></i>'.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).' '.Yii::t('app', "Requested",["n" => 2]).'</span>
					</div>
					<div class="divider mt-3 mb-2"></div>
					<div class="content mb-0 mx-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
								<span class="font-16"><center>'.Yii::t('app', "Expired membership",["n" => 1]).'</center></span>
							</div>
							<div class="col-12">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
							</div>
						</div>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
		}
		
		//Controllo sedute disponibili se l'utente ha l'abbonamento OPEN1
		if($User->subscription_type == "OPEN1"){
			if($User->subscription_sessions == 0){
				$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto3</h1></div>-->
				<div class="content mb-0 mt-3">
					<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div>
						<span class="color-highlight font-300 d-block text-uppercase font-10 pt-3">'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
						<strong class="color-theme font-20 d-block mt-n2 mb-n2">'.$PteliteAppointment->activity_rel->name.'</strong>
						<span class="font-11 color-theme opacity-30 d-block pb-2 pt-2"><i class="fa fa-map-marker pe-2"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<div class="clearfix"></div>
						
						
						<span class="badge bg-highlight font-16 mb-2"><i class="fa fa-hourglass-half pe-2"></i>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").' all\'evento</span><br>
						<span class="badge bg-highlight font-16"><i class="fa-solid fa-wallet pe-2"></i>'.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).' '.Yii::t('app', "Requested",["n" => 2]).'</span>
					</div>
					<div class="divider mt-3 mb-2"></div>
					<div class="content mb-0 mx-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
								<span class="font-16"><center>'.Yii::t('app', "You don\'t have any more sessions available",["n" => 1]).'</center></span>
							</div>
							<div class="col-12">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
							</div>
						</div>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
			}
		}
		
		//Controllo prenotazioni settimanali se l'utente ha l'abbonamento diverso da OPEN1
		if($User->subscription_type != "OPEN1"){
			
			$data_dt = $PteliteAppointment->appointment_date_start;
			// Converti la data in un timestamp Unix
			$timestamp = strtotime($data_dt);
			// Calcola il giorno della settimana (1 = Lunedì, 7 = Domenica)
			$giorno_settimana = date('N', $timestamp);
			// Se la data di riferimento è già lunedì, la lasciamo invariata
			if ($giorno_settimana == 1) {
				$data_lunedì_precedente = strtotime($data_dt);
			} else {
				// Altrimenti, calcola la data del lunedì precedente
				$data_lunedì_precedente = strtotime(date('Y-m-d', strtotime('last monday', $timestamp)));
			}
			
			$date_settimana = array();
			$date_settimana[] = date("Y-m-d", $data_lunedì_precedente);

			// Aggiungi le successive 6 date all'array
			for ($i = 1; $i <= 6; $i++) {
				$date_settimana[] = date("Y-m-d", strtotime("+$i day", $data_lunedì_precedente));
			}
			
			$PteliteAppointmentsUsersCount = \app\models\PteliteAppointmentsUsers::find()
			->joinWith('appointment_rel')
			->where(["ptelite_appointments_users.id_user" => $User->id])
			->andWhere(['IN', "ptelite_appointments.appointment_date_start", $date_settimana])
			->count();
			
			preg_match('/(\d+)/', $User->subscription_type, $matches);
			$numero = isset($matches[1]) ? $matches[1] : '';
			if($PteliteAppointmentsUsersCount >= $numero){
				$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto4</h1></div>-->
				<div class="content mb-0 mt-3">
					<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div>
						<strong class="color-theme font-20 d-block mb-n2 mt-2">'.$PteliteAppointment->activity_rel->name.'</strong>
						<span class="font-11 color-theme d-block pt-2"><i class="fa-solid fa-calendar-days pe-2 color-highlight"></i>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
						<span class="font-11 color-theme d-block pb-2"><i class="fa fa-map-marker pe-2 color-highlight"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<div class="clearfix"></div>
						<span class="badge bg-highlight font-16 mb-2"><i class="fa fa-hourglass-half pe-2"></i>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").' all\'evento</span><br>
						<span class="badge bg-highlight font-16"><i class="fa-solid fa-wallet pe-2"></i>'.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).' '.Yii::t('app', "Requested",["n" => 2]).'</span>
					</div>
					<div class="divider mt-3 mb-2"></div>
					<div class="content mb-0 mx-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
								<span class="font-14"><center>'.Yii::t('app', "You have exceeded your booking limit this week",["n" => 1]).'</center></span>
							</div>
							<div class="col-12">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
							</div>
						</div>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
			}
			
		}
		
		//Se l'utente non ha crediti sufficienti per prenotare
		if($credits > $User->credits){
			$text .= '	
			<!--<div class="menu-title text-center"><h1>Evento scelto5</h1></div>-->
			<div class="content mb-0 mt-3">
				<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
				<div>
						<strong class="color-theme font-20 d-block mb-n2 mt-2">'.$PteliteAppointment->activity_rel->name.'</strong>
						<span class="font-11 color-theme d-block pt-2"><i class="fa-solid fa-calendar-days pe-2 color-highlight"></i>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
						<span class="font-11 color-theme d-block pb-2"><i class="fa fa-map-marker pe-2 color-highlight"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<div class="clearfix"></div>
						<span class="badge bg-highlight font-16 mb-2"><i class="fa fa-hourglass-half pe-2"></i>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").' '.Yii::t('app', "to start",["n" => 1]).'</span><br>
						<span class="badge bg-highlight font-16"><i class="fa-solid fa-wallet pe-2"></i>'.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).' '.Yii::t('app', "Requested",["n" => 2]).'</span>
					</div>
				<div class="divider mt-3 mb-2"></div>
				<div class="content mb-0 mx-0">
					<div class="row mb-0">
						<div class="col-12 mb-2">
							<span class="font-16"><center>'.Yii::t('app', "Insufficients fidelity points to book event",["n" => 1]).'</center></span>
						</div>
						<div class="col-12">
							<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
						</div>
					</div>
				</div>
			</div>
			';
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		}
		
		//Se l'utente è già prenotato per l'evento
		if(\app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $PteliteAppointment->id])->andWhere(["id_user" => $User->id])->one()){
			$text .= '	
			<div class="menu-title text-center"><h1>'.$PteliteAppointment->service_rel->name.'</h1></div>
			<div class="content mb-0 mt-3">
				<div class="card card-style mx-0 bg-19 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
				<div>
						<strong class="color-theme font-20 d-block mb-n2 mt-2">'.$PteliteAppointment->activity_rel->name.'</strong>
						<span class="font-11 color-theme d-block pt-2"><i class="fa-solid fa-calendar-days pe-2 color-highlight"></i>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
						<span class="font-11 color-theme d-block pb-2"><i class="fa fa-map-marker pe-2 color-highlight"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<div class="clearfix"></div>
						<span class="badge bg-highlight font-16 mb-2"><i class="fa fa-hourglass-half pe-2"></i>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").' all\'evento</span><br>
						<span class="badge bg-highlight font-16"><i class="fa-solid fa-wallet pe-2"></i>'.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).' '.Yii::t('app', "Requested",["n" => 2]).'</span>
					</div>
				<div class="content mb-0 mx-0">
					 <div class="row mb-0">
						<div class="col-12 mb-2 text-center">
							<h3>'.Yii::t('app', "You have already booked this activity!",["n" => 1]).'</h3>
						</div>
					 </div>
					<div class="row mb-0">
						<div class="col-6">
							<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 actionF15" data-id="'.$PteliteAppointment->id.'">'.Yii::t('app', "Move",["n" => 1]).'</a>
						</div>
						 <!--
						 <div class="col-4">
							<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 actionF14" data-id="'.$PteliteAppointment->id.'">'.Yii::t('app', "Cancel",["n" => 1]).'</a>
						</div>
						-->
						<div class="col-6">
							<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
						</div>
					</div>
				</div>
			</div>
			';
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		}
		
		//Se l'utente non è  prenotato per l'evento
		if(!\app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $PteliteAppointment->id])->andWhere(["id_user" => $User->id])->one()){
			
			$text .= '
				<div class="menu-title text-center pt-4"><i class="fa-solid fa-clock fa-2x"></i><h3>Prenota appuntamento</h3></div>
				<span class="font-14 color-theme d-block pt-2 text-center"><i class="fa-solid fa-calendar-days pe-2 color-highlight"></i>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
				<div class="content mb-0 mt-3">
					<div class="divider mt-3 mb-0"></div>
					<div class="content mb-0 mx-0 mt-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
			';
			
			
				$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto4</h1></div>-->
				<div class="content mb-0 mt-3 text-center">
					<div class="card card-style mx-auto mb-0 text-center" data-card-height="50" style="height:200px;width:200px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div>
						<span class="font-14 color-theme d-block pb-2 mt-3"><i class="fa fa-map-marker pe-2 color-highlight"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<strong class="color-theme font-20 d-block mb-2">'.$PteliteAppointment->activity_rel->name.'</strong>
						
						<span class="font-13 color-theme d-block lh-1 mt-3 mb-3">'.$PteliteAppointment->activity_rel->description.'</span>
						
						
						<div class="clearfix"></div>
						<span class="font-16 mb-2"><i class="fa fa-hourglass-half color-highlight"></i></span>
						<span class="font-14 color-theme"><strong>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").'</strong> all\'evento</span><br>
						<span class="font-16"><i class="fa-solid fa-wallet color-highlight"></i></span>
						<span class="font-14 color-theme"><strong>'.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).'</span>
					</div>
				</div>
				';
			
				$text .= '
					</div>
					<div class="divider mt-3 mb-2"></div>
						<div class="row mt-3 mx-auto">
							<div class="col-6">
								<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 actionF8" data-id="'.$PteliteAppointment->id.'">'.Yii::t('app', "Book Now",["n" => 1]).'</a>
							</div>
							<div class="col-6">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Cancel",["n" => 1]).'</a>
							</div>
						</div>
					</div>
				</div>
			</div>
				';
			
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		}
		
	}
	
	//Calendario
	public function actionF7()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$giorni = ["","LUN","MAR","MER","GIO","VEN","SAB","DOM"];
		$dataFormattata = Yii::$app->request->post('dataFormattata');
		$time = Yii::$app->request->post('time');
		$available = Yii::$app->request->post('available');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		$text = '';
		
		if(!$User){
		$text = '
			<i class="fa fa-check me-3"></i>'.Yii::t('app', "Session expired",["n" => 1]).'
			';
		
			$data = [
				'error' => 1,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		date_default_timezone_set('Europe/Rome'); // Sostituisci con la tua timezone
		setlocale(LC_TIME, 'it_IT');
		$oggi = new \DateTime();
		$attuale = new \DateTime($dataFormattata);
		$intervallo_giornaliero = new \DateInterval('P1D');
		$fine_intervallo = clone $oggi;
		$fine_intervallo->add(new \DateInterval('P30D'));
		$intervallo_date = new \DatePeriod($oggi, $intervallo_giornaliero, $fine_intervallo);
		$currentTime = time();
		
		$PteliteTimeSlots = \app\models\PteliteTimeSlots::find()->all();
		
		
		
		$text .= '
		<div class="card card-style">
			<div class="splide story-slider slider-no-dots pt-4" id="story-slider">
				<div class="splide__track">
					<div class="splide__list">
		';
						
						$slide = 0;
						foreach ($intervallo_date as $data) {
						$text .= '
						<div class="splide__slide text-center pe-2 ps-2 actionF7" data-date="'.$data->format('Y-m-d').'" data-time="0" data-slide="'.$slide++.'">
							<h5 class="font-14 font-500">'.$giorni[$data->format('N')].'</h5>
							<h5 class="font-22 font-500"><strong>'.$data->format('d').'</strong></h5>
							<h5 class="font-14 font-500">'.$data->format('M').'</h5>
						';
						
						if($data->format('Y-m-d') == $attuale->format('Y-m-d')){
							$text .= '<hr class="bg-primary border border-2 border-primary">';
						}
						
						$text .= '
						</div>
						';
						}
			
		$text .= '
					</div>
				</div>
			</div>
		';
		
		if($time == 0){
			//$PteliteAppointments = \app\models\PteliteAppointments::find()->where(["appointment_date_start" => $attuale->format('Y-m-d')])->orderBy(["appointment_datetime_int_start" => SORT_ASC])->all();
			
			$PteliteAppointments = \app\models\PteliteAppointments::find()
			->where(["appointment_date_start" => $attuale->format('Y-m-d')])
			->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
			->groupBy("id_attivita")
			->orderBy(["appointment_datetime_int_start" => SORT_ASC])
			->all();
		
		} else {
			//$PteliteAppointments = \app\models\PteliteAppointments::find()->where(["appointment_date_start" => $attuale->format('Y-m-d')])->andWhere(["appointment_time_start" => $time])->orderBy(["appointment_datetime_int_start" => SORT_ASC])->all();
			
			$PteliteAppointments = \app\models\PteliteAppointments::find()
			->where(["appointment_date_start" => $attuale->format('Y-m-d')])
			->andWhere(["appointment_time_start" => $time])
			->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
			->groupBy("id_attivita")
			->orderBy(["appointment_datetime_int_start" => SORT_ASC])
			->all();
			
		}
		
		/*
		$text .= '
		<div class="splide orari-slider slider-no-dots pt-1" id="orari-slider">
			<div class="splide__track">
				<div class="splide__list">
		';
		
		
		foreach($PteliteAppointments as $PteliteAppointment){
			
			$text .= '
						<div class="splide__slide text-center pe-1 ps-1">
							<a href="#" class="btn btn-xs btn-full mb-3 rounded-xs text-uppercase font-600 shadow-s bg-highlight actionF7" data-date="'.$attuale->format('Y-m-d').'" data-time="'.substr($PteliteAppointment->appointment_time_start,0,-3).'">'.date("H:i",$PteliteAppointment->appointment_datetime_int_start).'</a>
						</div>
			';

		}
		*/
		
		/*
		if($available == 0){
			foreach($PteliteTimeSlots as $PteliteTimeSlot){
				
				$text .= '
							<div class="splide__slide text-center pe-2 ps-2">
								<a href="#" class="btn btn-xs btn-full mb-3 rounded-xs text-uppercase font-600 shadow-s '.(\app\models\PteliteAppointments::find()->where(["appointment_date_start" => $attuale->format('Y-m-d')])->andWhere(["appointment_time_start" => $PteliteTimeSlot->name])->one()?"bg-highlight":"bg-gray-dark").' actionF7" data-date="'.$attuale->format('Y-m-d').'" data-time="'.$PteliteTimeSlot->name.'">'.$PteliteTimeSlot->name.'</a>
							</div>
				';

			}
		}
		if($available == 1){
			foreach($PteliteAppointments as $PteliteAppointment){
				
				$text .= '
							<div class="splide__slide text-center pe-2 ps-2">
								<a href="#" class="btn btn-xs btn-full mb-3 rounded-xs text-uppercase font-600 shadow-s bg-highlight actionF7" data-date="'.$attuale->format('Y-m-d').'" data-time="'.substr($PteliteAppointment->appointment_time_start,0,-3).'">'.substr($PteliteAppointment->appointment_time_start,0,-3).'</a>
							</div>
				';

			}
		}
		*/
		
		/*
		$text .= '
				</div>
			</div>
		</div>
		';
		*/
		
		
		if($PteliteAppointments){
			
			/*
			$text .= '
			<div class="content mb-0 mt-0">
					<div class="mb-2">
						<div class="d-flex">
							<div class="pt-2">
								<h5 data-toggle-theme data-activate="actionF9Switch" class="font-600 font-14">Mostra soltanto orari disponibili</h5>
							</div>
							<div class="ms-auto me-4 pe-2 mt-n1">
								<div class="custom-control ios-switch scale-switch">
									<input data-toggle-theme type="checkbox" class="ios-input" id="actionF9Switch" data-date="'.$attuale->format('Y-m-d').'" '.($available==0?"":"checked").'>
									<label class="custom-control-label" for="actionF9Switch"></label>
								</div>
							</div>
						</div>
					</div>

				</div>
			';
			*/
		
			$text .= '<div class="content mb-0 mt-0">
					<h6 class="font-700">Activities of '.$attuale->format('d-m-Y').'</h6>';
			
			foreach($PteliteAppointments as $PteliteAppointment){
				
				//if($PteliteAppointment->id_appointments_booking_type == 1){ // Appuntamento diretto
					$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
					->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
					->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
					->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
					->orderBy(["appointment_datetime_int_start" => SORT_ASC])
					->all();

					$text .= '<div class="splide__slide pe-0 ps-0">';
					$text .= $this->renderPartial('events_5', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari]);
					$text .= '</div>';
				//}
				
				/*
				if($PteliteAppointment->id_appointments_booking_type == 2){ // Appuntamento indiretto
					$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
					->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
					->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
					->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
					->orderBy(["appointment_datetime_int_start" => SORT_ASC])
					->all();

					$text .= '<div class="splide__slide pe-0 ps-0">';
					$text .= $this->renderPartial('events_8', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari]);
					$text .= '</div>';
				}
				*/
				
			}
			
			/*
			foreach($PteliteAppointments as $PteliteAppointment){
					$text .= $this->renderPartial('events_1', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User]);
			}
			*/
			
		}
		
		if(!$PteliteAppointments){
			$text .= '
			<div class="content mb-0 mt-0 text-center">
					<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png">
					<span>'.Yii::t('app', "No activities on this date",["n" => 1]).'</span>
			';
		}
			
		$text .= '	
		</div>
		';
		
		
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Prenota
	public function actionF8()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		
			
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		
		// Appuntamento selezionato
		$appointment_time_start = date("H:i", $PteliteAppointment->appointment_datetime_int_start); //Orario di inizio in formato 00:00
		$appointment_time_finish = date("H:i", $PteliteAppointment->appointment_datetime_int_finish); //Orario di fine in formato 00:00
		$capacity = $PteliteAppointment->capacity;
		$usersCount = \app\models\Functions::M1($PteliteAppointment);
		
		// Appuntamento precedente
		$ora_prima_timestamp = strtotime('-30 minutes', strtotime($appointment_time_start));
		$prima = date('H:i', $ora_prima_timestamp); // Ottenere l'orario precedente di mezz'ora
		$PteliteAppointmentBefore = \app\models\PteliteAppointments::find()->where(["id_training_rooms" => $PteliteAppointment->id_training_rooms])->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])->andWhere(["appointment_date_start" => $PteliteAppointment->appointment_date_start])->andWhere(["appointment_time_start" => $prima])->one();
		$capacityBefore = $PteliteAppointmentBefore?$PteliteAppointmentBefore->capacity:0;
		$usersCountBefore = $PteliteAppointmentBefore?\app\models\Functions::M1($PteliteAppointmentBefore):0;
		
		// Appuntamento successivo
		$ora_dopo_timestamp = strtotime('+30 minutes', strtotime($appointment_time_start));
		$dopo = date('H:i', $ora_dopo_timestamp); // Ottenere l'orario successivo di mezz'ora
		$PteliteAppointmentAfter = \app\models\PteliteAppointments::find()->where(["id_training_rooms" => $PteliteAppointment->id_training_rooms])->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])->andWhere(["appointment_date_start" => $PteliteAppointment->appointment_date_start])->andWhere(["appointment_time_start" => $dopo])->one();
		$capacityAfter = $PteliteAppointmentAfter?$PteliteAppointmentAfter->capacity:0;
		$usersCountAfter = $PteliteAppointmentAfter?\app\models\Functions::M1($PteliteAppointmentAfter):0;
		
		$usersCountTotal = $usersCount + $usersCountBefore + $usersCountAfter; //Totale partecipanti presenti agli appuntamenti che si sovrappongono
		
		//Controllo abbonamento
		//$AppToken = \app\models\Functions::M9();
		//$AuthToken = $User->AuthToken;
		//$TeamSystemMyStatus = \app\models\Functions::M5($AppToken,$AuthToken);
		//\app\models\Functions::M8($User,$TeamSystemMyStatus['Contents'][2]['Contents'][0]['Text']); //Aggiorno lo stato dell'abbonamento dell'utente
			
			$subscription_end = $User->subscription_end;
			$subscription_end = new \DateTime(date("Y-m-d",$subscription_end));
			$data_attuale = new \DateTime();
			//Controllo se l'abbonamento è scaduto
			if ($subscription_end < $data_attuale) {
				$text = '
					<i class="fa fa-check me-3"></i>'.Yii::t('app', "Your subscription expired on",["n" => 1]).' '.date("d-m-Y",$User->subscription_end).'
					';
				
					$data = [
						'error' => 1,
						'text' => $text
					];
					\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
					return $data;
					exit;
			}
			//Se l'abbonamento è di tipo OPEN1, controllo se l'utente ha ancora sedute a disposizione
			if($User->subscription_type == "OPEN1"){
				
				if($User->subscription_sessions == 0){
					$text = '
					<i class="fa fa-check me-3"></i>'.Yii::t('app', "You don\'t have any more sessions available",["n" => 1]).'
					';
				
					$data = [
						'error' => 1,
						'text' => $text
					];
					\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
					return $data;
					exit;
				}
				
			}
			if($User->subscription_type != "OPEN1"){
				
				$data_dt = $PteliteAppointment->appointment_date_start;
				// Converti la data in un timestamp Unix
				$timestamp = strtotime($data_dt);
				// Calcola il giorno della settimana (1 = Lunedì, 7 = Domenica)
				$giorno_settimana = date('N', $timestamp);
				// Se la data di riferimento è già lunedì, la lasciamo invariata
				if ($giorno_settimana == 1) {
					$data_lunedì_precedente = strtotime($data_dt);
				} else {
					// Altrimenti, calcola la data del lunedì precedente
					$data_lunedì_precedente = strtotime(date('Y-m-d', strtotime('last monday', $timestamp)));
				}
				
				$date_settimana = array();
				$date_settimana[] = date("Y-m-d", $data_lunedì_precedente);

				// Aggiungi le successive 6 date all'array
				for ($i = 1; $i <= 6; $i++) {
					$date_settimana[] = date("Y-m-d", strtotime("+$i day", $data_lunedì_precedente));
				}
				
				$PteliteAppointmentsUsersCount = \app\models\PteliteAppointmentsUsers::find()
				->joinWith('appointment_rel')
				->where(["ptelite_appointments_users.id_user" => $User->id])
				->andWhere(['IN', "ptelite_appointments.appointment_date_start", $date_settimana])
				->count();
				
				preg_match('/(\d+)/', $User->subscription_type, $matches);
				$numero = isset($matches[1]) ? $matches[1] : '';
				if($PteliteAppointmentsUsersCount >= $numero){
					$text = '
					<i class="fa fa-check me-3"></i>'.Yii::t('app', "Your subscription will not allow you to make any more reservations this week",["n" => 1]).'
					';
				
					$data = [
						'error' => 1,
						'text' => $text
					];
					\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
					return $data;
					exit;
				}
				
			}
		//#Controllo abbonamento
		
		//Controllo partecipanti appuntamento selezionato
		if($PteliteAppointment->capacity == \app\models\Functions::M1($PteliteAppointment)){
				$text = '
				<i class="fa fa-check me-3"></i>'.Yii::t('app', "The event has already reached the maximum number of participants",["n" => 1]).'
				';
			
				$data = [
					'error' => 1,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				exit;
		}
		
		// Controllo sul raggiungimento soglia tra gli appuntamenti che si sovrappongono
		$capacityMax = max($capacity, $capacityBefore, $capacityAfter); // Capacità maggiore tra i tre eventi
		
		if($usersCountTotal == $capacityMax){
			$text = '
			<i class="fa fa-check me-3"></i>'.Yii::t('app', "It is no longer possible to make reservations for this event",["n" => 1]).'
			';
		
			$data = [
				'error' => 1,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		
		$emails = unserialize($PteliteAppointment->id_users);
		
		// Calcolo crediti
		$appointment_datetime_start = new \DateTime($PteliteAppointment->appointment_datetime_start);
		$now = new \DateTime();
		$differenza = $now->diff($appointment_datetime_start);
		//$minuti_totali_mancanti = ($differenza->days * 24 * 60) + ($differenza->h * 60) + $differenza->i;
		$minuti_totali_mancanti = $differenza->days * 24 * 60 + $differenza->h * 60 + $differenza->i;
		$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->andWhere([">=","minutes",$minuti_totali_mancanti])->orderBy(['minutes' => SORT_ASC])->one();
		$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->orderBy(['minutes' => SORT_DESC])->one();
		$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		//# Calcolo crediti
		
		//Controllo se l'utente ha crediti sufficenti per prenotarsi, anche se esiste già il controllo sulla modal di dettaglio dell'evento. Se l'utente è già prenotato infatti non compare il pulsante "Prenota"
		if($credits > $User->credits){
				$text = '
				<i class="fa fa-check me-3"></i>'.Yii::t('app', "You do not have enough Fidelity Points to reserve for this event",["n" => 1]).'
				';
			
				$data = [
					'error' => 1,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				exit;
		}
		
		//Controllo se l'utente è già prenotato per questo evento, anche se esiste già il controllo sulla modal di dettaglio dell'evento. Se l'utente è già prenotato infatti non compare il pulsante "Prenota"
		if(in_array($User->email,$emails)){
			$text = '
				<i class="fa-regular fa-circle-check me-3">'.Yii::t('app', "Already booked",["n" => 1]).'
				';
			
				$data = [
					'error' => 1,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				exit;
		}
		
		array_push($emails, $User->username);
		
		$PteliteAppointment->id_users = serialize($emails);
		$PteliteAppointment->save(false);
		
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $PteliteAppointment->id])->andWhere(["id_user" => $User->id])->one() ?? new \app\models\PteliteAppointmentsUsers();
		$PteliteAppointmentsUsers->id_appointment = $PteliteAppointment->id;
		$PteliteAppointmentsUsers->id_user = $User->id;
		$PteliteAppointmentsUsers->save(false);
		
		//Scalo i crediti
		$User->credits = $User->credits-$credits;
		$User->subscription_sessions -= 1;
		$User->save(false);
		
		$PteliteCreditsMovements = new \app\models\PteliteCreditsMovements();
		$PteliteCreditsMovements->id_user = $User->id;
		$PteliteCreditsMovements->id_user_get = $User->id;
		$PteliteCreditsMovements->id_credit_type = 1;
		$PteliteCreditsMovements->id_action = 2;
		$PteliteCreditsMovements->info = "L'utente si è prenotato per l'evento id=".$id." quando mancavano ".$differenza->i." minuti";
		$PteliteCreditsMovements->info_user = $PteliteAppointment->service_rel->name." del ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start)." ore ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
		$PteliteCreditsMovements->credits = $credits;
		//$PteliteCreditsMovements->euro_credits = $credits*\app\models\PteliteSettings::find()->where(["name" => "settingF35"])->one()->value;
		$PteliteCreditsMovements->euro_credits = $credits;
		$PteliteCreditsMovements->created_at_int = strtotime(date("Y-m-d H:i:s"));
		$PteliteCreditsMovements->save(false);
		
		#Notifica
		$PteliteNotifications = new \app\models\PteliteNotifications();
		$PteliteNotifications->id_notification_type = 1;
		$PteliteNotifications->notification = "L'utente si è prenotato per l'attività ".$PteliteAppointment->service_rel->name." del ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start)." ore ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
		$PteliteNotifications->id_sender  = $User->id;
		$PteliteNotifications->id_receiver = 125;
		$PteliteNotifications->notification_read = 0;
		$PteliteNotifications->created_at_int = strtotime(date("Y-m-d H:i:s"));
		$PteliteNotifications->save(false);
		
		$data = [
            'error' => 0,
            'text' => '<i class="fa-regular fa-circle-check me-3"></i>'.Yii::t('app', "Reservation has been made",["n" => 1])
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
	
	}
	
	public function actionF9()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteServices = \app\models\PteliteServices::find()->where(["id_category" => 0])->all();
		Yii::error($token);
		$text = '';
		
		if(!$User){
		$text = '
			<i class="fa fa-check me-3"></i>'.Yii::t('app', "Session  expired",["n" => 1]).'
			';
		
			$data = [
				'error' => 2,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		$text .= '
		<div class="content mt-0 mb-0">
            <div class="d-flex">
                <div class="align-self-center">
                    <h1 class="mb-0 font-18">'.Yii::t('app', "Choose a service",["n" => 1]).'</h1>
                </div>
                <!--<div class="ms-auto align-self-center">
                    <a href="#" class="float-end font-12 font-400">'.Yii::t('app', "Show all",["n" => 1]).'</a>
                </div>-->
            </div>
        </div>
					
		<div class="splide services-slider visible-slider slider-no-arrows slider-no-dots ps-2 mb-4" id="services-slider">
            <div class="splide__track">
                <div class="splide__list">
		';
         
		 foreach($PteliteServices as $PteliteService){
		$text .= '
					<div class="splide__slide servicesCalendarPage" data-id="'.$PteliteService->id.'">
                        <div class="card m-2 card-style rounded-s">
                            <img src="https://tmachine.it/web/images/services/'.$PteliteService->image.'" class="img-fluid">
                            <div class="p-2 bg-theme border-top border-5 shadow-xs" style="border-color:'.$PteliteService->color.' !important;">
                                <h4 class="font-14 line-height-s pb-1">'.$PteliteService->name.'</h4>
                            </div>
                        </div>
                    </div>
		';
		 }

         $text .= '          
                </div>
            </div>
        </div>
		';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	public function actionF10()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$id = Yii::$app->request->post('id');
		$PteliteService = \app\models\PteliteServices::findOne($id);
		$PteliteServices = \app\models\PteliteServices::find()->where(["id_category" => 0])->andWhere(["!=","id",$id])->all();
		$currentTime = time();
		
		Yii::error($token);
		
		/*
		$appointmentsPassati = \app\models\PteliteAppointments::find()
		->where(["id_service" => $PteliteService->id])
		->andWhere(['<', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_DESC])
		->all();
		*/
		
		$appointmentsFuturi = \app\models\PteliteAppointments::find()
		->where(["id_service" => $PteliteService->id])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->groupBy("appointment_date_start")
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->all();
		
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_user" => $User->id])->all();
		$currentTime = time();
		//Ottengo tutti gli id degli appuntamenti dell'utente
		$id_appointment_array = array_map(function($appointmentUser) {
			return $appointmentUser->id_appointment;
		}, $PteliteAppointmentsUsers);
		$appointmentsFuturiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		$appointmentsPassatiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['<', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		
		$text = '';
		
		if(!$User){
		$text = '
			<i class="fa fa-check me-3"></i>'.Yii::t('app', "Session expired",["n" => 1]).'';
		
			$data = [
				'error' => 2,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		$text .= '
		<div class="card card-style bg-11 mt-4 rounded-s" style="background-image: url(\'https://studioauriti.it/appkit-ptelite/images/ptelite/sfondo-11.jpg\');height:160px;">
            <div class="card-bottom ps-3 pb-3">
				<h1 class="font-17 color-white mb-n3">'.Yii::t('app', "Activities",["n" => 2]).'</h1>
                <h4 class="font-13 color-white mb-4 opacity-50">'.Yii::t('app', "Summary totals",["n" => 2]).'</h4>
               <div class="d-flex">
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsFuturiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "In progress",["n" => 2]).'</h4>
                    </div>
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsPassatiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "Completed",["n" => 2]).'</h4>
                    </div>
                    <div class="ms-auto text-end pe-3">
                        <h5 class="color-white">'.number_format($User->credits,2,",",".").'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "Fidelity Point",["n" => 2]).'</h4>
                    </div>
                </div>
            </div>
			<div class="card-overlay bg-black opacity-50 rounded-s"></div>
        </div>
	';
	
		$text .= '
		
		<div class="content mb-2 mt-0">
			<h4 class="font-700">'.$PteliteService->name.'</h4>
			<div class="divider mt-1 mb-2"></div>
			<span class="font-12 color-theme d-block lh-1 mt-2 mb-3" style="text-align: justify;">'.$PteliteService->description.'</span>
	';
	
	if($appointmentsFuturi){
	//$text .= '
	//		<span class="font-600 pt-2">'.Yii::t('app', "Available session",["n" => 2]).'</span>
	//';
	}
	
	$text .= '
		</div>
		';
			
			
			
			if($appointmentsFuturi){
				$text .= '<div class="content mb-0 mt-0">';
				
				foreach($appointmentsFuturi as $PteliteAppointment){
				
				$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
				->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
				->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
				->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
				->orderBy(["appointment_datetime_int_start" => SORT_ASC])
				->all();
		
					$text .= '<div class="splide__slide pe-0 ps-0">';
					$text .= $this->renderPartial('events_7', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari]);
					$text .= '</div>';
			}
				
				//foreach($appointmentsFuturi as $PteliteAppointment){
						//$text .= $this->renderPartial('events_2', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User]);
				//}
			
				$text .= '</div>';
			}
			if(!$appointmentsFuturi){
				$text .= '
					<div class="rounded-s mb-3 card card-style text-center">
						<div class="border border-2 rounded-s shadow-xs">
							<div class="content mb-0">
								<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png">
								<span>'.Yii::t('app', "No hours available",["n" => 2]).'</span>
							</div>
						</div>
					</div>
				
				

			';
			}
			
			
			
			$text .= '
		<div class="content mt-3 mb-0">
            <div class="d-flex">
                <div class="align-self-center">
                    <h1 class="mb-0 font-18">'.Yii::t('app', "Other activities",["n" => 2]).'</h1>
                </div>
                <!--<div class="ms-auto align-self-center">
                    <a href="#" class="float-end font-12 font-400">'.Yii::t('app', "Show all",["n" => 2]).'</a>
                </div>-->
            </div>
        </div>
					
		<div class="splide services-slider visible-slider slider-no-arrows slider-no-dots ps-2 mb-4" id="services-slider">
            <div class="splide__track">
                <div class="splide__list">
		';
         
		 foreach($PteliteServices as $PteliteService){
		$text .= '
					<div class="splide__slide servicesCalendarPage" data-id="'.$PteliteService->id.'">
                        <div class="card m-2 card-style rounded-s">
                            <img src="https://tmachine.it/web/images/services/'.$PteliteService->image.'" class="img-fluid">
                            <div class="p-2 bg-theme border-top border-2 border-blue-dark shadow-xs">
                                <h4 class="font-14 line-height-s pb-1">'.$PteliteService->name.'</h4>
                            </div>
                        </div>
                    </div>
		';
		 }

         $text .= '          
                </div>
            </div>
        </div>
		';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
	
	}
	
	//Footer
	public function actionF11()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_user" => $User->id])->all();
		$currentTime = time();
		
		//Ottengo tutti gli id degli appuntamenti dell'utente
		$id_appointment_array = array_map(function($appointmentUser) {
			return $appointmentUser->id_appointment;
		}, $PteliteAppointmentsUsers);

		$appointmentsFuturiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		
		
		$text = '';
		
		$text .= '
			<a href="#" class="'.($page=="appointmentsPage"?"active-nav":"").' appointmentsPage"><i class="fa-solid fa-calendar fa-2x"></i><span></span><em class="badge bg-highlight">'.$appointmentsFuturiCount.'</em></a>
			<a href="#" class="'.($page=="calendarPage"?"active-nav":"").' calendarPage"><i class="fa-solid fa-calendar-plus fa-2x"></i></a>
			<a href="#" class="'.($page=="dashboardPage"?"active-nav":"").' circle-nav dashboardPage"><i class="fa fa-home fa-2x"></i></a>
			<a href="#" class="'.($page=="requestsPage"?"active-nav":"").' requestsPage"><i class="fa-solid fa-comment-dots fa-2x"></i></a>
			<a href="#" class="'.($page=="walletPage"?"active-nav":"").' walletPage"><i class="fa fa-wallet fa-2x"></i></a>
		';
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
	
	}
	
	//Appuntamenti utenti
	public function actionF12()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$type = Yii::$app->request->post('type');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_user" => $User->id])->all();
		$currentTime = time();
		
		//Ottengo tutti gli id degli appuntamenti dell'utente
		$id_appointment_array = array_map(function($appointmentUser) {
			return $appointmentUser->id_appointment;
		}, $PteliteAppointmentsUsers);

		$appointmentsFuturi = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->all();
		$appointmentsFuturiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		
		$appointmentsPassati = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['<', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->all();
		$appointmentsPassatiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['<', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		
		$text = '';
		
		$text .= '
			<div class="card card-style bg-11 mt-4 rounded-s" style="background-image: url(\'https://studioauriti.it/appkit-ptelite/images/ptelite/sfondo-11.jpg\');height:160px;">
            <div class="card-bottom ps-3 pb-3">
                <h1 class="font-17 color-white mb-n3">'.Yii::t('app', "Activities",["n" => 2]).'</h1>
                <h4 class="font-13 color-white mb-4 opacity-50">'.Yii::t('app', "Summary totals",["n" => 2]).'</h4>
                <div class="d-flex">
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsFuturiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "In progress",["n" => 2]).'</h4>
                    </div>
                    <div class="pe-3">
                        <h5 class="color-white">'.$appointmentsPassatiCount.'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "Completed",["n" => 2]).'</h4>
                    </div>
                    <div class="ms-auto text-end pe-3">
                        <h5 class="color-white">'.number_format($User->credits,2,",",".").'</h5>
                        <h4 class="color-white font-13 opacity-60">'.Yii::t('app', "Fidelity Point",["n" => 2]).'</h4>
                    </div>
                </div>
            </div>
            <div class="card-overlay bg-black opacity-50 rounded-s"></div>
        </div>
		';
		
		/*
		$text .= '
			<div class="card card-style bg-theme px-3">
				<div class="calendar"></div>
			</div>
		'; 
		*/

		/*
		$text .= '
		<div class="card card-style bg-theme pb-0">
            <div class="content" id="tab-group-2">
                <div class="tab-controls tabs-small tabs-rounded" data-highlight="bg-blue-dark">
                    <a class="'.($type==1?"bg-highlight":"bg-gray-light").'" href="#" data-bs-toggle="collapsed" data-bs-target="#tab-1" onclick="getAppointments(1)">In corso</a>
                    <a class="'.($type==2?"bg-highlight":"bg-gray-light").'" href="#" data-bs-toggle="collapse" data-bs-target="#tab-2" onclick="getAppointments(2)">Completati</a>
                </div>
                <div class="clearfix mb-3"></div>
                <div data-bs-parent="#tab-group-2" class="collapse '.($type==1?"show":"").'" id="tab-1">
		';
      
					if($appointmentsFuturi){
							$text .= '<div class="content mb-0 mt-0">';
							$text .= $this->renderPartial('events_2', ['appointmentsFuturi' => $appointmentsFuturi, 'User' => $User]);
							$text .= '</div>';
						}
						if(!$appointmentsFuturi){
							$text .= '
							<div class="content mb-0 mt-0 text-center">
								<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png">
								<span>Nessun appuntamento disponibile</span>
							</div>
						';
						}
        
		$text .= '
			</div>
                <div data-bs-parent="#tab-group-2" class="collapse '.($type==2?"show":"").'" id="tab-2">
		';
                   
				   if($appointmentsPassati){
							$text .= '<div class="content mb-0 mt-0">';
							$text .= $this->renderPartial('events_3', ['appointmentsFuturi' => $appointmentsPassati, 'User' => $User]);
							$text .= '</div>';
						}
						if(!$appointmentsPassati){
							$text .= '
							<div class="content mb-0 mt-0 text-center">
								<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png">
								<span>Nessun appuntamento disponibile</span>
							</div>
						';
						}
						
		$text .= '
                </div>
            </div>    
        </div>
		';
		*/
	
		
		
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
	
	}
	
	//Profilo
	public function actionF13()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		//$AppToken = "3F591878A1BCBF6BAF677A21FC0396FC37C40AF122B92EE318D7FA3CDB874F0E1BD2351C6DECDFF10DD64F6547A74D72EA6DC342D6D80EC218FB7A2E0931828F41304FCC8A1AB9346776A381C3CFB388198C1DF39D44EA101B8E2DA1E2CD80305A4BB4E5AF3AD2B77489A9BF6E0E9FD78B4D524646C7585C028D41F4DE3C4C9D0054EBDB6AF9E7FCF9B77653B09821697239AD81CC2BD26A1FAD9F5096EA21F6";
		$AppToken = \app\models\Functions::M9();
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$AuthToken = $User->AuthToken;
		//Ottenuto l'AuthToken, interrogo TeamSystem per ottenere i dati dell'utente
		$TeamSystemUser = \app\models\Functions::M3($AppToken,$AuthToken);

		$PteliteUsersData_bia_finale = \app\models\PteliteUsersData::find()->where(["id_user" => $User->id])->orderBy(["exam_date" => SORT_DESC])->one();
		
		
		//Aggiorno abbonamento
		$TeamSystemMyStatus = \app\models\Functions::M5($AppToken,$AuthToken);
		if($TeamSystemMyStatus != 0){
			\app\models\Functions::M8($User,$TeamSystemMyStatus['Contents'][2]['Contents'][0]['Text']);  //Aggiorno lo stato dell'abbonamento dell'utente
			if(!$User->subscription_sessions){
				if(isset($TeamSystemMyStatus['Contents'][4])){
					\app\models\Functions::M10($User,$TeamSystemMyStatus['Contents'][4]['Contents'][0]['Text']);  //Aggiorno le sedute residue solo la prima volta e solo se l'utente ha l'abbonamento OPEN1
				}
			}
		}
		//#Aggiorno lo stato dell'abbonamento dell'utente
		
		
		//Ritorna I dati base dell’utente loggato sotto forma di oggetto JSON
		//$TeamSystemMe = \app\models\Functions::M5($AppToken,$AuthToken);
		
		/*
		$jsonData = json_encode(array(
			"Item" => array(
				"IDUtente" => $TeamSystemUser["UserID"]
			)
		));
		*/
		//Ritorna il i dati sullo stato dell'utente
		//$TeamSystemMyStatus = \app\models\Functions::M5($AppToken,$AuthToken);
		
		//Estrapola dalla stringa che ritorna Teamsystem riguardo l'abbonamento, la tipologia e le date di inizio e fine e le memorizza nella tabella user
		if($TeamSystemMyStatus != 0){
			\app\models\Functions::M8($User,$TeamSystemMyStatus['Contents'][2]['Contents'][0]['Text']);
		}
		
		Yii::error($TeamSystemMyStatus);
		
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4 mb-2">
            
            <div class="d-flex content mb-0">
                <!-- left side of profile -->
                <div class="flex-grow-1">
                    <h2>'.($TeamSystemUser?$TeamSystemUser["FirstName"].' '.$TeamSystemUser["LastName"]:$User->name." ".$User->surname).'<i class="fa fa-check-circle color-highlight font-18 mt-2 ms-3"></i></h2>
                    <strong class="color-theme font-12">'.($TeamSystemUser?$TeamSystemUser["Email"]:$User->email).'</strong>
					<p class="font-12 mt-2 mb-0">
						<strong class="color-theme pe-2"><i class="fa-solid fa-mars color-highlight"></i></strong>'.($TeamSystemUser?$TeamSystemUser["Gender"]:"nd").'
						<strong class="color-theme ps-3 pe-2"><i class="fa-solid fa-calendar-days color-highlight"></i></strong>'.($TeamSystemUser?date("d-m-Y", strtotime($TeamSystemUser["BirthDate"])):"nd").'
					</p>
					<!--
					<p class="font-12">
						<strong class="color-theme pe-2"><i class="fa-solid fa-weight-hanging color-highlight"></i></strong>76Kg
						<strong class="color-theme ps-3 pe-2"><i class="fa-solid fa-up-down color-highlight"></i></strong>1.78m
					</p>
					-->
                </div>
                <!-- right side of profile. increase image width to increase column size-->
		';
			
			if($User->avatar){
                $text .= '	<img src="https://tmachine.it/web/images/users/'.$User->avatar.'" width="80" height="80" class="rounded-circle mt-3 shadow-xl">';
			}
			if(!$User->avatar){
                $text .= '	<img src="https://tmachine.it/web/images/no-user.png" width="80" height="80" class="rounded-circle mt-3 shadow-xl">';
			}
            
		$text .= '	
			</div>
									            
            <div class="divider mt-4 mb-0"></div>

        </div>
	';
	
	if($TeamSystemMyStatus == 0){
	$text .= '
		<div class="card card-style mb-2">
			<div class="content mt-0 mb-4">
				<div class="list-custom-large check-visited">
					<a href="javascript:;" class="profiloPage">
						<i class="fa fa-wave-square font-14 bg-highlight color-white rounded-sm shadow-xl"></i>
							<span>'.Yii::t('app', "Certificate expiration date",["n" => 2]).'</span>
							<strong class="color-theme" style="color:#898989 !important;">'.Yii::t('app', "No certificate available",["n" => 2]).'</strong>
					</a>
				</div>
			</div>
		</div>
	';
	}
	
	if($TeamSystemMyStatus != 0){
	$text .= '
		<div class="card card-style mb-2">
			<div class="content mt-0 mb-4">
				<div class="list-custom-large check-visited">
					<a href="javascript:;" class="profiloPage">
						<i class="fa fa-wave-square font-14 bg-highlight color-white rounded-sm shadow-xl"></i>
							<span>'.Yii::t('app', "Certificate",["n" => 2]).'</span>
							<strong class="color-theme" style="color:#898989 !important;">'.$TeamSystemMyStatus['Contents'][1]['Contents'][0]['Text'].'</strong>
					</a>
				</div>
			</div>
		</div>
	';
	}
		
	$text .= '
		<div class="card card-style mb-2">
			<div class="content mt-0 mb-4">
				<div class="list-custom-large check-visited">
					<a href="javascript:;" class="profiloPage">
						<i class="fa fa-chart-line font-14 bg-highlight color-white rounded-sm shadow-xl"></i>
							<span>'.Yii::t('app', "Last profiling date",["n" => 2]).'</span>
							<strong class="color-theme" style="color:#898989 !important;">'.($PteliteUsersData_bia_finale?date("d-m-Y",strtotime($PteliteUsersData_bia_finale->exam_date)):"nd").'</strong>
					</a>
				</div>
			</div>
		</div>
	';

	$text .= '
		<div class="card card-style mb-2">
			<div class="content mt-0 mb-0">
				<div class="list-group list-custom-large check-visited">
					<a href="javascript:;" class="walletPage">
						<i class="fa fa-wallet font-14 bg-highlight color-white rounded-sm shadow-xl"></i>
							<span>'.Yii::t('app', "Fidelity Point",["n" => 2]).'</span>
							<strong class="color-theme" style="color:#898989 !important;">'.number_format($User->credits,2,",",".").'</strong>
							<i class="fa fa-angle-right"></i>
					</a>
				</div>
			</div>
		</div>
		';
		
		$abbonamento = $TeamSystemMyStatus?substr($TeamSystemMyStatus['Contents'][2]['Contents'][0]["Text"],0,1):"n.d.";
		
		$text .= '
		<div class="card card-style mb-2">
			<div class="content mt-0 mb-4">
				<div class="list-custom-large check-visited">
					<a href="javascript:;" class="profiloPage">
						<i class="fa fa-id-badge font-14 bg-highlight color-white rounded-sm shadow-xl"></i>
							<span>'.Yii::t('app', "Selected solution",["n" => 2]).': 
		';					
							
		if(is_numeric($abbonamento)){
			$text .= Yii::t('app', "Membership",["n" => 2]);
		} else {
			$text .= Yii::t('app', "Session",["n" => 2]);
		}			
					
		$text .= '</span>';
		
		$text .= '<strong class="color-theme" style="color:#898989 !important;font-size:8px;">'.($TeamSystemMyStatus?str_replace("PT ELITE - ","",$TeamSystemMyStatus['Contents'][2]['Contents'][0]["Text"]):"n.d.").'</strong>';
		
		$text .= 
						'
					</a>
				</div>
			</div>
		</div>
	';
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Cancellazione all'evento da parte dell'utente
	public function actionF14()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		$emails = unserialize($PteliteAppointment->id_users);
		//Elimino l'utente dall'array degli utenti prenotati per l'evento
		if (in_array($User->username, $emails)) {
			$indice = array_search($User->username, $emails);
			unset($emails[$indice]);
		}
		
		$PteliteAppointment->id_users = serialize($emails);
		$PteliteAppointment->save(false);
		
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $PteliteAppointment->id])->andWhere(["id_user" => $User->id])->one();
		if($PteliteAppointmentsUsers){
			$PteliteAppointmentsUsers->delete();
		}
		
		//Scalo i crediti
		//$User->credits = $User->credits-$credits;
		//$User->save(false);
		
		$data = [
            'error' => 0,
            'text' => '<i class="fa-regular fa-circle-check me-3"></i>'.Yii::t('app', "Event successfully deleted",["n" => 2])
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Modal per lo spostamento di un appuntamento
	public function actionF15()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		$giorni = ["","LUN","MAR","MER","GIO","VEN","SAB","DOM"];
		$dataFormattata = Yii::$app->request->post('dataFormattata');
		$time = Yii::$app->request->post('time');
		
		date_default_timezone_set('Europe/Rome'); // Sostituisci con la tua timezone
		setlocale(LC_TIME, 'it_IT');
		$oggi = new \DateTime();
		$attuale = new \DateTime($dataFormattata);
		$intervallo_giornaliero = new \DateInterval('P1D');
		$fine_intervallo = clone $oggi;
		$fine_intervallo->add(new \DateInterval('P30D'));
		$intervallo_date = new \DatePeriod($oggi, $intervallo_giornaliero, $fine_intervallo);
		
		$text = '';
		
		
		$text .= '
		<div class="card card-style mt-3">
		<div class="splide calendar-move-slider slider-no-dots pt-4" id="calendar-move-slider">
				<div class="splide__track">
					<div class="splide__list">
		';
						
						$slide = 0;
						foreach ($intervallo_date as $data) {
						$text .= '
						<div class="splide__slide text-center pe-2 ps-2 actionF15Day" data-date="'.$data->format('Y-m-d').'" data-time="0" data-id="'.$id.'" data-slide="'.$slide++.'">
							<h5 class="font-14 font-500">'.$giorni[$data->format('N')].'</h5>
							<h5 class="font-22 font-500"><strong>'.$data->format('d').'</strong></h5>
							<h5 class="font-14 font-500">'.$data->format('M').'</h5>
						';
						
						if($data->format('Y-m-d') == $attuale->format('Y-m-d')){
							$text .= '<hr class="bg-primary border border-2 border-primary">';
						}
						
						$text .= '
						</div>
						';
						}
			
		$text .= '
					</div>
				</div>
			</div>
		';
		
		$PteliteAppointments = \app\models\PteliteAppointments::find()
		->where(["appointment_date_start" => $attuale->format('Y-m-d')])
		->andWhere(["id_service" => $PteliteAppointment->id_service])
		->andWhere(["!=","id",$PteliteAppointment->id])
		->orderBy(["appointment_time_start" => SORT_ASC])
		->all();
		
		$text .= '
			<div class="row mb-0 ps-3 pe-3">
				
		';
		
		if($PteliteAppointments){
			$text .= '
			<div class="row mb-1 ps-3 pe-3 text-center">
				<div class="col-12 pe-1 ps-1">
					<div class="card card-style mx-0 bg-19 mb-0" data-card-height="150" style="height:150px;"><img src="https://tmachine.it/web/images/services/'.$PteliteAppointment->service_rel->image.'"></div>
					<h5>Orari disponibili '.$PteliteAppointment->service_rel->name.'</h5>
				</div>
			</div>';
			foreach($PteliteAppointments as $PteliteApp){
				$text .= '
				<div class="col-3 pe-1 ps-1">
				<a href="#" class="btn btn-xs btn-full mb-3 rounded-xs text-uppercase font-700 shadow-s  '.($PteliteApp->users_count_rel==$PteliteApp->capacity?"bg-gray-dark":"bg-blue-dark actionF16").'" data-id="'.$PteliteApp->id.'" data-now-id="'.$PteliteAppointment->id.'">'.substr($PteliteApp->appointment_time_start,0,-3).'</a>
				</div>
						';
			}
		}
		
		if(!$PteliteAppointments){
			$text .= '
			<div class="content mb-0 mt-0 text-center">
					<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png">
					<span>'.Yii::t('app', "There are no activities on this date",["n" => 2]).'</span>
			</div>
			';
		}
					
		$text .= '
				
			</div>
		';
		
		$text .= '	
			
				<div class="content mb-0 mt-0">
					<div class="row mb-3">
						<div class="col-12 mb-1" id="actionF16Div"></div>
						<div class="col-12 mt-1">
							<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
						</div>
					</div>
				</div>
				
			</div>
			';
		
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		
	}
	
	//Ritorna il pulsante per confermare lo spostamento dell'evento
	public function actionF16()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id'); //Id dell'evento che l'utente ha scelto 
		$nowId = Yii::$app->request->post('nowId'); //Id dell'evento che l'utente vuole spostare, alla quale non vuole più partecipare
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$PteliteAppointmentNow = \app\models\PteliteAppointments::findOne($nowId);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		// Calcolo crediti
		$appointment_datetime_startNow = new \DateTime($PteliteAppointmentNow->appointment_datetime_start);
		$nowNow = new \DateTime();
		$differenzaNow = $nowNow->diff($appointment_datetime_startNow);
		
		$appointment_datetime_start = new \DateTime($PteliteAppointment->appointment_datetime_start);
		$now = new \DateTime();
		$differenza = $now->diff($appointment_datetime_start);
		
		//$giorni = $differenza->days;
		//$ore = $differenza->h;
		//$minuti = $differenza->i;
		//$secondi = $differenza->s;
		
		//$minuti_totali_mancantiNow = ($differenzaNow->days * 24 * 60) + ($differenzaNow->h * 60) + $differenzaNow->i;
		//$minuti_totali_mancanti = ($differenza->days * 24 * 60) + ($differenza->h * 60) + $differenza->i;
		$minuti_totali_mancantiNow = $differenzaNow->days * 24 * 60 + $differenzaNow->h * 60 + $differenzaNow->i;
		$minuti_totali_mancanti = $differenza->days * 24 * 60 + $differenza->h * 60 + $differenza->i;
		
		if($minuti_totali_mancantiNow <= 1440){
			$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->andWhere([">=","minutes",$minuti_totali_mancantiNow])->orderBy(['minutes' => SORT_ASC])->one();
			$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->orderBy(['minutes' => SORT_DESC])->one();
			$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		}
		if($minuti_totali_mancantiNow > 1440){
			$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 2])->andWhere([">=","minutes",$minuti_totali_mancanti])->orderBy(['minutes' => SORT_ASC])->one();
			$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 2])->orderBy(['minutes' => SORT_DESC])->one();
			$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		}
		//# Calcolo crediti
		
		$text = '';
		
		$text .= '<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 mt-3 actionF17" data-id="'.$PteliteAppointment->id.'" data-now-id="'.$nowId.'">Conferma ('.Yii::t('app', "Fidelity Point",["n" => 2]).' richiesti:'.number_format($credits,1,",",".").')</a>';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
			
	}
	
	//Spostamento evento
	public function actionF17()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id'); //Id dell'evento che l'utente ha scelto 
		$nowId = Yii::$app->request->post('nowId'); //Id dell'evento che l'utente vuole spostare, alla quale non vuole più partecipare
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$PteliteAppointmentNow = \app\models\PteliteAppointments::findOne($nowId);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		// Calcolo crediti
		$appointment_datetime_startNow = new \DateTime($PteliteAppointmentNow->appointment_datetime_start);
		$nowNow = new \DateTime();
		$differenzaNow = $nowNow->diff($appointment_datetime_startNow);
		
		$appointment_datetime_start = new \DateTime($PteliteAppointment->appointment_datetime_start);
		$now = new \DateTime();
		$differenza = $now->diff($appointment_datetime_start);
		
		//$giorni = $differenza->days;
		//$ore = $differenza->h;
		//$minuti = $differenza->i;
		//$secondi = $differenza->s;
		
		//$minuti_totali_mancantiNow = ($differenzaNow->days * 24 * 60) + ($differenzaNow->h * 60) + $differenzaNow->i;
		//$minuti_totali_mancanti = ($differenza->days * 24 * 60) + ($differenza->h * 60) + $differenza->i;
		$minuti_totali_mancantiNow = $differenzaNow->days * 24 * 60 + $differenzaNow->h * 60 + $differenzaNow->i;
		$minuti_totali_mancanti = $differenza->days * 24 * 60 + $differenza->h * 60 + $differenza->i;
		
		if($minuti_totali_mancantiNow <= 1440){
			$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->andWhere([">=","minutes",$minuti_totali_mancantiNow])->orderBy(['minutes' => SORT_ASC])->one();
			$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->orderBy(['minutes' => SORT_DESC])->one();
			$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		}
		if($minuti_totali_mancantiNow > 1440){
			$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 2])->andWhere([">=","minutes",$minuti_totali_mancanti])->orderBy(['minutes' => SORT_ASC])->one();
			$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 2])->orderBy(['minutes' => SORT_DESC])->one();
			$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		}
		//# Calcolo crediti
		
		$text = '';
		
		if($User->credits<$credits){
			$text = '<i class="fa fa-check me-3"></i>'.Yii::t('app', "You do not have enough Fidelity Points",["n" => 2]).'';
			$data = [
				'error' => 1,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		if($PteliteAppointment->users_count_rel==$PteliteAppointment->capacity){
			$text = '<i class="fa fa-check me-3"></i>'.Yii::t('app', "Event is fully booked",["n" => 2]).'';
			$data = [
				'error' => 1,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			exit;
		}
		
		//Eliminazione appuntamento utente nella tabella "ptelite_appointments_users"
		$PteliteAppointmentsUsersNow = \app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $nowId])->andWhere(["id_user" => $User->id])->one();
		if ($PteliteAppointmentsUsersNow) {
			$PteliteAppointmentsUsersNow->delete();
		}
		
		#Aggiornamento utenti nella tabella "ptelite_appointments"
		$emails = unserialize($PteliteAppointment->id_users);
		//Elimino l'utente dall'array degli utenti prenotati per l'evento
		if (in_array($User->username, $emails)) {
			$indice = array_search($User->username, $emails);
			unset($emails[$indice]);
		}
		$PteliteAppointment->id_users = serialize($emails);
		$PteliteAppointment->save(false);
		
		//Inserimento nuovo appuntamento utente nella tabella "ptelite_appointments_users"
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $id])->andWhere(["id_user" => $User->id])->one() ?? new \app\models\PteliteAppointmentsUsers();
		$PteliteAppointmentsUsers->id_appointment = $id;
		$PteliteAppointmentsUsers->id_user = $User->id;
		$PteliteAppointmentsUsers->save(false);
		
		//Scalo i crediti
		$User->credits = $User->credits-$credits;
		$User->save(false);
		
		$PteliteCreditsMovements = new \app\models\PteliteCreditsMovements();
		$PteliteCreditsMovements->id_user = $User->id;
		$PteliteCreditsMovements->id_user_get = $User->id;
		$PteliteCreditsMovements->id_credit_type = 2;
		$PteliteCreditsMovements->id_action = 2;
		$PteliteCreditsMovements->info = "L'utente ha spostato la partecipazione dall'attività id=".$nowId." all'evento id(".$id.") quando mancavano ".$minuti_totali_mancanti." minuti";
		//$PteliteCreditsMovements->info_user = $PteliteAppointment->service_rel->name." del ".date("d-m-Y",$PteliteAppointmentNow->appointment_datetime_int_start)." ore ".date("H:i",$PteliteAppointmentNow->appointment_datetime_int_start)."  al ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start). " ore ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
		$PteliteCreditsMovements->info_user = Yii::t('app', "Credit Movements Message",["service" => $PteliteAppointment->service_rel->name, "data_event1" => date("d-m-Y",$PteliteAppointmentNow->appointment_datetime_int_start),"ora_event1" => date("H:i",$PteliteAppointmentNow->appointment_datetime_int_start),"data_event2" => date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start),"ora_event2" => date("H:i",$PteliteAppointment->appointment_datetime_int_start)]);
		$PteliteCreditsMovements->credits = $credits;
		//$PteliteCreditsMovements->euro_credits = $credits*\app\models\PteliteSettings::find()->where(["name" => "settingF35"])->one()->value;
		$PteliteCreditsMovements->euro_credits = $credits;
		$PteliteCreditsMovements->created_at_int = strtotime(date("Y-m-d H:i:s"));
		$PteliteCreditsMovements->save(false);
		
		#Notifica
		$PteliteNotifications = new \app\models\PteliteNotifications();
		$PteliteNotifications->id_notification_type = 1;
		$PteliteNotifications->notification = "L'utente ha spostato la partecipazione dall'attività ".$PteliteAppointment->service_rel->name." del ".date("d-m-Y",$PteliteAppointmentNow->appointment_datetime_int_start)." ore ".date("H:i",$PteliteAppointmentNow->appointment_datetime_int_start)."  al ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start). " ore ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
		$PteliteNotifications->id_sender  = $User->id;
		$PteliteNotifications->id_receiver = 125;
		$PteliteNotifications->notification_read = 0;
		$PteliteNotifications->created_at_int = strtotime(date("Y-m-d H:i:s"));
		$PteliteNotifications->save(false);
		
		$text = '<i class="fa fa-check me-3"></i>'.Yii::t('app', "Operation performed",["n" => 2]).'';
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		exit;
			
	}
	
	//Pagina Wallet
	public function actionF18()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteCreditsMovementsEntriesSum = \app\models\PteliteCreditsMovements::find()->where(["id_user" => $User->id])->andWhere(["id_action" => 1])->sum("credits");
		$PteliteCreditsMovementsExitSum = \app\models\PteliteCreditsMovements::find()->where(["id_user" => $User->id])->andWhere(["id_action" => 2])->sum("credits");
		$PteliteCreditsMovements = \app\models\PteliteCreditsMovements::find()->where(["id_user" => $User->id])->orderBy(["created_at_int" => SORT_DESC])->all();
		
		$PteliteCreditsPackages = \app\models\PteliteCreditsPackages::find()->all();
		
		// Impostazioni NEXI
		$ALIAS = 'ALIAS_WEB_00076470';
		$CHIAVESEGRETA = 'YUGO3YW931NW4GSD44N4K598J5LLHM3E';
		$requestUrl = "https://int-ecommerce.nexi.it/ecomm/ecomm/DispatcherServlet";
		$merchantServerUrl = "https://tmachine.it/web/app/";
		$codTrans = "TESTPS_" . date('YmdHis');
		$divisa = "EUR";
		//$mac = sha1('codTrans=' . $codTrans . 'divisa=' . $divisa . 'importo=' . $importo . $CHIAVESEGRETA);
		
		
		
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">'.Yii::t('app', "Your Fidelity Points",["n" => 1]).'</p>
                        <h1>'.number_format($User->credits,1,",",".").'</h1>
                    </div>
                    <div class="w-100 pt-1">
                        <h6 class="font-14 font-500">'.Yii::t('app', 'In', ['n' => 1]).'<span class="float-end color-green-dark">'.number_format(($PteliteCreditsMovementsEntriesSum?$PteliteCreditsMovementsEntriesSum:0),1,",",".").'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
                        <h6 class="font-14 font-500">'.Yii::t('app', 'Out', ['n' => 1]).'<span class="float-end color-red-dark">'.number_format(($PteliteCreditsMovementsExitSum?$PteliteCreditsMovementsExitSum:0),1,",",".").'</span></h6>
							<!--<a href="#" data-menu="menu-request" class="btn btn-full btn-sm rounded-s font-600 font-13 bg-highlight float-end mt-2 mb-2 actionF32" data-credits="50">'.Yii::t('app', "Buy Fidelity Points",["n" => 2]).'</a>-->
                    </div>
                </div>
            </div>
        </div>
	';
	
	
	$text .= ' <div class="content mb-0 row">';
	
	//$text .= '<iframe src="https://tmachine.it/web/app/f32" width="530" height="800"></iframe>';
	
	$text .= ' 
	<div class="splide packages-slider slider-no-dots splide--loop splide--ltr splide--draggable is-active " id="packages-slider" style="visibility: visible;">
		<div class="splide__track" id="packages-slider-3-track">
			<div class="splide__list" id="packages-slider-3-list" style="transform: translateX(-1075px);">
	';
			
				foreach($PteliteCreditsPackages as $PteliteCreditPackage){
				
					$importo = str_replace(".","",$PteliteCreditPackage->discounted_price);
					// Form NEXI
					$obbligatori = array(
						'alias' => $ALIAS,
						'importo' => $importo,
						'divisa' => $divisa,
						'codTrans' => $codTrans,
						'url' => $merchantServerUrl . "f34",
						'url_back' => $merchantServerUrl . "f35",
						'mac' => sha1('codTrans=' . $codTrans . 'divisa=' . $divisa . 'importo=' . $importo . $CHIAVESEGRETA),
					);
				
					$facoltativi = array(
						'urlpost' => "https://tmachine.it/web/app/f33",
					);
				
					$requestParams = array_merge($obbligatori, $facoltativi);
		
					$text .= '<form method="POST" action="'.$requestUrl.'" id="nexiForm'.$PteliteCreditPackage->id.'">';
				
					foreach ($requestParams as $name => $value) {
						$text .= '<input type="hidden" name="'.$name.'" value="'.htmlentities($value).'" />';
					}
						
					$text .= '</form>';	
					
					$text .= '
					<div class="splide__slide splide__slide--clone actionF32" style="width: 215px;" aria-hidden="true" tabindex="-1" data-id="'.$PteliteCreditPackage->id.'">
						<div class="col-12 pe-2 text-center">
							<a href="#" class="card card-style mx-0 mb-3 px-3 pt-4">
								<center>
									<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" fill="currentColor" class="bi bi-vignette color-highlight" viewBox="0 0 16 16">
									  <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"/>
									  <path d="M8.5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.683-6.281a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m-3.5 6.062a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m4.598-4.598a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866m-6.062 3.5a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866M11.5 8.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-7 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m6.281 1.683a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m-6.062-3.5a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m4.598 4.598a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5m-3.5-6.062a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5"/>
									</svg>
								</center>
								<span class="color-theme font-14 pt-1">'.$PteliteCreditPackage->name.'</span>
								<h4 class="pt-0 mb-0">'.$PteliteCreditPackage->credits.' <span class="color-theme font-14 pt-1">'.Yii::t('app', "FP",["n" => 1]).'</span></h4>
					';
					
								if($PteliteCreditPackage->percentage > 0){
									$text .= '<span><span class="color-theme font-14 opacity-50 pt-3"><del>&euro; '.number_format($PteliteCreditPackage->price,2,",",".").'</del>&nbsp;</span><span class="color-theme font-14 pt-3">&euro; '.number_format($PteliteCreditPackage->discounted_price,2,",",".").'</span></span>';
								}
								if($PteliteCreditPackage->percentage == 0){
									$text .= '<span><span class="color-theme font-14 opacity-50 pt-3"></span><span class="color-theme font-14 pt-3">&euro; '.number_format($PteliteCreditPackage->price,2,",",".").'</span></span>';
								}
								
								
					$text .= '
								<strong class="color-theme font-10 opacity-30 pt-3"></strong>
							</a>
						</div>
					</div>
					';
				}
	
	 $text .= '          
                </div>
            </div>
        </div>
		';
	
	$text .= '</div>';

	$text .= '
        <div class="card card-style">
            <div class="content mb-0">
                <p class="font-600 color-highlight mb-n1">'.Yii::t('app', "Handling Fidelity Point",["n" => 2]).'</p>
                <h2>'.Yii::t('app', "Operation performed",["n" => 2]).'</h2>
                <div class="list-group list-custom-large">
	';
				
				if($PteliteCreditsMovements){
					
					$text .= '
					<table class="table" style="border:none;">
						  <tbody>
					';
					
					foreach($PteliteCreditsMovements as $PteliteCreditsMovement){
						
						$text .= '
							<tr>
							  <td style="width:10%;"><span class="bg-highlight font-11" style="padding: 5px 8px 5px 8px;">'.substr($PteliteCreditsMovement->credit_type_rel->name,0,1).'</span></td>
							  <td style="width:65%;"><p class="font-12 font-italic line-height-s"><strong>'.$PteliteCreditsMovement->info_user.'</strong><br>
							  Effettuata il '.date("d-m-Y",$PteliteCreditsMovement->created_at_int).' alle '.date("H:i",$PteliteCreditsMovement->created_at_int).'</p>
							  </td>
							  <td class="text-end" style="width:45%;"><span class="'.($PteliteCreditsMovement->id_action==1?"bg-green-dark":"bg-red-dark").' font-11" style="padding: 5px 8px 5px 8px;">'.number_format($PteliteCreditsMovement->credits,1,",",".").' '.Yii::t('app', "FP",["n" => 1]).'</span></td>
							</tr>
						';
					
					}
					
					
					$text .= '
					</tbody>
						</table>
					';
					
				}
				
				
				
				if(!$PteliteCreditsMovements){
					$text .= '<center><em>'.Yii::t('app', "No operation",["n" => 2]).'</em></center>';
				}
					
		$text .= '
                </div>
            </div>
        </div>
		';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
	
	}
	
	//Ottengo id del dispositivo
	public function actionF19()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$device = Yii::$app->request->post('device');
		
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		if($User){
			$User->device_token = $device;
			$User->save(false);
		}
		
	}
	
	//Cron per inviare notifiche per ricordare l'appuntamento
	public function actionF20()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$PteliteAppointments = \app\models\PteliteAppointments::find()->where(["appointment_date_start" => date("Y-m-d", strtotime("+1 day"))])->all();
		foreach($PteliteAppointments as $PteliteAppointment){
			
			foreach($PteliteAppointment->users_rel as $user){
				
				
				if($PteliteAppointment->service_rel->id == 53){
					
					// PROFILAZIONE PRO - 90m
					$message = "Ciao ".$user->user_rel->name.", ti ricordiamo l’appuntamento per la profilazione PRO in data ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start)." alle ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
					$message .= "\n";
					$message .= Yii::t('app', "Profiling consists of performing:",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Metabolimetry Breezing PRO: examination to ascertain the point BMR",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Bioimpedance examination [Akern 101]: detection of anthropometric data: lean mass, fat mass, water (application of adhesive clips on hands and feet)",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Bone diameters: humerus and femur for morphotype determination",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Centimetry: measurement of arm, waist, hip, calf circumferences",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Plicometry:",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Risk Factor Questionnaire: questionnaire to determine your general health status and risk of any complications",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Physiological assessment: resting heart rate and blood pressure",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Tissue assessment: routine to check joint flexibility/mobility",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Aerobic/metabolic testing: test to check your abilities in terms of VO2Max",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Neuromuscular testing: load tests to assess your ability to express strength",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Functional tests: routines to establish cognitive/coordinative abilities",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "The duration of the tests is approximately 90min. In order to properly carry out what is described, we kindly ask you to come to our facility *on an empty stomach (no excitants of any kind e.g.: coffee)* and in normal sportswear.",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "Greetings, PT Élite Italy",["n" => 2]);
					
				} elseif ($PteliteAppointment->service_rel->id == 54) {
					
					// PROFILAZIONE BASIC - 30m
					$message = "Ciao ".$user->user_rel->name.", ti ricordiamo l’appuntamento per la profilazione BASIC in data ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start)." alle ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
					$message .= "\n";
					$message .= Yii::t('app', "Profiling consists of performing:",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Bioimpedance examination [Akern 101]: detection of anthropometric data: lean mass, fat mass, water (application of adhesive clips on hands and feet)",["n" => 2]);		
					$message .= "\n";
					$message .= Yii::t('app', "- Bone diameters: humerus and femur for morphotype determination",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Centimetry: measurement of arm, waist, hip, calf circumferences",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Plicometry:",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Risk Factor Questionnaire: questionnaire to determine your general health status and risk of any complications",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Physiological assessment: resting heart rate and blood pressure",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Tissue assessment: routine to check joint flexibility/mobility",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "The duration of the tests is approximately 45min. In order to properly carry out what is described, we kindly ask you to come to our facility *on an empty stomach (no excitants of any kind e.g.: coffee)* and in normal sportswear.",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "Greetings, PT Élite Italy",["n" => 2]);
					
				} elseif ($PteliteAppointment->service_rel->id == 56) {
					
					// PROFILAZIONE ADVANCED - 75m
					$message = "Ciao ".$user->user_rel->name.", ti ricordiamo l’appuntamento per la profilazione ADVANCED in data ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start)." alle ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
					$message .= "\n";
					$message .= Yii::t('app', "Profiling consists of performing:",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Bioimpedance examination [Akern 101]: detection of anthropometric data: lean mass, fat mass, water (application of adhesive clips on hands and feet)",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Bone diameters: humerus and femur for morphotype determination",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Centimetry: measurement of arm, waist, hip, calf circumferences",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Plicometry:",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Risk Factor Questionnaire: questionnaire to determine your general health status and risk of any complications",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Physiological assessment: resting heart rate and blood pressure",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Tissue assessment: routine to check joint flexibility/mobility",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Aerobic/metabolic testing: test to check your abilities in terms of VO2Max",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Neuromuscular testing: load tests to assess your ability to express strength",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "- Functional tests: routines to establish cognitive/coordinative abilities",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "The duration of the tests is approximately 75min. In order to properly carry out what is described, we kindly ask you to come to our facility *on an empty stomach (no excitants of any kind e.g.: coffee)* and in normal sportswear.",["n" => 2]);
					$message .= "\n";
					$message .= Yii::t('app', "Greetings, PT Élite Italy",["n" => 2]);
					
				} else {
					$message = "Ciao ".$user->user_rel->name.", ti ricordiamo l’appuntamento per la seduta di ".$PteliteAppointment->service_rel->name. " prevista per domani ".date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start)." alle ".date("H:i",$PteliteAppointment->appointment_datetime_int_start);
				}

				//\app\models\Functions::M7($user->user_rel->device_token,"Aghenda reminder",$message);
				\app\models\Functions::M7("c3GXFBj8TAe39_pPmNujUV:APA91bG6PNKep-vCHjKhT2RryjAYFT1VT8TNCfSgEOP5m8KPBGYP9CqrmxSkRvv_BOpSPmidMZPxMYrjVJPeCRF3SDcEqzk5yNJuLqcZrRarOJm5y_YwhMBtN3JKpspWhuXmwThce9WT","Aghenda reminder",$message);
				
			}
			
		}
		
	}
	
	//Menu
	public function actionF21()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$theme = Yii::$app->request->post('theme');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		Yii::error($theme);
		
		$PteliteAppointmentsUsers = \app\models\PteliteAppointmentsUsers::find()->where(["id_user" => $User->id])->all();
		$currentTime = time();
		
		//Ottengo tutti gli id degli appuntamenti dell'utente
		$id_appointment_array = array_map(function($appointmentUser) {
			return $appointmentUser->id_appointment;
		}, $PteliteAppointmentsUsers);
		
		$appointmentsFuturiCount = \app\models\PteliteAppointments::find()
		->where(['id' => $id_appointment_array])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->count();
		
		$text = '';
		
		$text .= '
		
		<div class="card rounded-0" data-card-height="300" style="background-size:cover;background-position:center;background-repeat:no-repeat;height:300px;background-image:url(https://tmachine.it/web/images/logos/'.\app\models\PteliteSettings::find()->where(["name" => "settingF38"])->one()->value.')">
			<div class="card-top">
				<a href="#" class="close-menu float-end me-2 text-center mt-3 badge bg-highlight rounded-2"><i class="fa fa-times color-white"></i></a>
			</div>
			 <div class="card-bottom">
                <h1 class="color-white ps-3 mb-n1 font-28">'.\app\models\PteliteSettings::find()->where(["name" => "settingF36"])->one()->value.'</h1>
                <p class="mb-2 ps-3 font-12 color-white">'.\app\models\PteliteSettings::find()->where(["name" => "settingF37"])->one()->value.'</p>
            </div>
			<div class="card-overlay bg-gradient"></div>
		</div>
		
        <div class="mt-4"></div>
        <div class="list-group list-custom-small list-menu">
			<a id="nav-dashboard" href="javascript:;" class="dashboardPage">
                <i class="fa fa-home fa-2x color-highlight"></i>
                <span>Aghenda</span>
            </a>
            <a id="nav-appointments" href="javascript:;" class="appointmentsPage">
                <i class="fa-solid fa-calendar fa-2x color-highlight"></i><span class="badge bg-highlight">'.$appointmentsFuturiCount.'</span>
                <span>'.Yii::t('app', "Appointment",["n" => 2]).'</span>
            </a>
             <a id="nav-calendar" href="javascript:;" class="calendarPage">
                <i class="fa-solid fa-calendar-plus fa-2x color-highlight"></i>
                <span>'.Yii::t('app', "Calendar",["n" => 1]).'</span>
            </a>
			<a id="nav-profilo" href="javascript:;" class="profiloPage">
                <i class="fa-solid fa-user fa-2x color-highlight"></i>
                <span>'.Yii::t('app', "Profile",["n" => 1]).'</span>
            </a>
			<a id="nav-wallet" href="javascript:;" class="walletPage">
                <i class="fa-solid fa-wallet fa-2x color-highlight"></i><span class="badge bg-highlight">'.number_format($User->credits,2,",",".").'</span>
                <span>Wallet</span>
            </a>
			<a id="nav-personalizza" href="#" class="">
                <i class="fa fa-brush gradient-highlight color-white"></i>
                <span>'.Yii::t('app', "Customize",["n" => 2]).'</span>
            </a>
  
			<div>
               <i class="fa fa-moon  fa-2x color-highlight" style="margin-right: 10px;margin-left: 6px;"></i>
              </button>
                <span>Dark Mode</span>
                <div class="custom-control small-switch ios-switch color-highlight">
                    <input type="checkbox" class="ios-input bg-highlight" id="toggle-dark-menu" '.($theme=="dark-mode"?"checked":"").'>
                    <label class="custom-control-label" for="toggle-dark-menu"></label>
                </div>
            </div>
			
			<a id="nav-logout" href="javascript:;" class="logout">
                <i class="fa-solid fa-right-from-bracket fa-2x color-highlight"></i>
                <span>Logout</span>
            </a>
        </div>
		
        <!--<h6 class="menu-divider font-10 mt-4">Made with <i class="fa fa-heart color-red-dark pl-1 pr-1"></i> by Enabled in <span class="copyright-year">2021</span></h6>-->
		';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	# Restituisce gli eventi del calendario di un singolo utente
	public function actionF22()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$months = ["Gen" => "Jan","Feb" => "Feb","Mar" => "Mar","Apr" => "Apr","Mag" => "May","Giu" => "Jun","Lug" => "Jul","Ago" => "Aug","Set" => "Sep","Ott" => "Oct","Nov" => "Nov","Dic" => "Dec"];
		
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$month = Yii::$app->request->post('month');
		$monthNumber = date('m', strtotime($months[$month]));
		$year = Yii::$app->request->post('year');
		
		$PteliteAppointments = \app\models\PteliteAppointments::find()
		->joinWith('users_rel')
		->andWhere(new \yii\db\Expression('MONTH(appointment_date_start) = :month', [':month' => $monthNumber]))
		->andWhere(new \yii\db\Expression('YEAR(appointment_date_start) = :year', [':year' => $year]))
		->andWhere(['ptelite_appointments_users.id_user' => $User->id])
		->all();
		
		$uniqueDays = [];
		foreach ($PteliteAppointments as $PteliteAppointment) {
			$dayNumber = date('j', strtotime($PteliteAppointment->appointment_date_start));
			
			$PteliteAppointmentsCount = \app\models\PteliteAppointments::find()
			->joinWith('users_rel')
			->andWhere(['ptelite_appointments.appointment_date_start' => $PteliteAppointment->appointment_date_start])
			->andWhere(['ptelite_appointments_users.id_user' => $User->id])
			->count();
			
			$PteliteAppointmentsToday = \app\models\PteliteAppointments::find()->joinWith('users_rel')->andWhere(['ptelite_appointments.appointment_date_start' => $PteliteAppointment->appointment_date_start])->andWhere(['ptelite_appointments_users.id_user' => $User->id])->all();
			$color1 = "transparent";
			$color2 = "transparent";
			$x = 1;
			foreach($PteliteAppointmentsToday as $PteliteAppointmentToday){
				
				if($x == 1){
					$color1 = $PteliteAppointmentToday->service_rel->color;
				}
				
				if($x > 1){
					$color2 = $PteliteAppointmentToday->service_rel->color;
				}
				
				$x++;
			}
			
			
			// Aggiungo il giorno all'array solo se non è già presente
			if (!in_array($dayNumber, $uniqueDays)) {
				$uniqueDays[] = array("dayNumber" => $dayNumber, "color1" => $color1, "color2" => $color2, "appointments" => $PteliteAppointmentsCount);
			}
		}
		
		return json_encode($uniqueDays);
		
	}
	
	//Modal elenco eventi utente singolo
	public function actionF23()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$months = ["Gen" => "Jan","Feb" => "Feb","Mar" => "Mar","Apr" => "Apr","Mag" => "May","Giu" => "Jun","Lug" => "Jul","Ago" => "Aug","Set" => "Sep","Ott" => "Oct","Nov" => "Nov","Dic" => "Dec"];
		
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$month = Yii::$app->request->post('month');
		$monthNumber = date('m', strtotime($months[$month]));
		$year = Yii::$app->request->post('year');
		$day = Yii::$app->request->post('day');
		$currentTime = time();
		
		$text = '';
		
		$PteliteAppointmentsFuturi = \app\models\PteliteAppointments::find()
		->joinWith('users_rel')
		->andWhere(["appointment_date_start" => $year.'-'.$monthNumber.'-'.$day])
		->andWhere(['ptelite_appointments_users.id_user' => $User->id])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->all();
		$PteliteAppointmentsPassati = \app\models\PteliteAppointments::find()
		->joinWith('users_rel')
		->andWhere(["appointment_date_start" => $year.'-'.$monthNumber.'-'.$day])
		->andWhere(['ptelite_appointments_users.id_user' => $User->id])
		->andWhere(['<', 'appointment_datetime_int_start', $currentTime])
		->all();
		if($PteliteAppointmentsFuturi || $PteliteAppointmentsPassati){
			
			$text .= '<div class="menu-title text-center mt-3"><h4>Attività del '.$day.'-'.$month.'-'.$year.'</h4></div>';
			$text .= '<div class="content mb-0 mt-3 scroll">';
			
			foreach($PteliteAppointmentsFuturi as $PteliteAppointment){
					$text .= $this->renderPartial('events_1', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User]);
			}
			
			if($PteliteAppointmentsPassati){
				
				foreach($PteliteAppointmentsPassati as $PteliteAppointment){
						$text .= $this->renderPartial('events_3', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User]);
				}
				
			}
			$text .= '<div class="col-12 mb-5">
							<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
						</div>';
			$text .= '</div>';
			
			
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		
		}
		if(!$PteliteAppointmentsFuturi && !$PteliteAppointmentsPassati){
			$data = [
				'error' => 1,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		}
			
	}
	
	//Notifiche
	public function actionF24()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteNotificationsNoRead = \app\models\PteliteNotifications::find()->where(["id_receiver" => $User->id])->andWhere(["notification_read" => 0])->orderBy(["created_at_int" => SORT_DESC])->all();
		$PteliteNotificationsRead = \app\models\PteliteNotifications::find()->where(["id_receiver" => $User->id])->andWhere(["notification_read" => 1])->orderBy(["created_at_int" => SORT_DESC])->all();
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">'.Yii::t('app', "Total",["n" => 2]).'</p>
                        <h1>'.\app\models\PteliteNotifications::find()->where(["id_receiver" => $User->id])->count().'</h1>
                    </div>
                    <div class="w-100 pt-1">
                        <h6 class="font-14 font-500">Lette<span class="float-end color-green-dark">'.\app\models\PteliteNotifications::find()->where(["id_receiver" => $User->id])->andWhere(["notification_read" => 1])->count().'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
                        <h6 class="font-14 font-500">Non lette<span class="float-end color-red-dark">'.\app\models\PteliteNotifications::find()->where(["id_receiver" => $User->id])->andWhere(["notification_read" => 0])->count().'</span></h6>
							<!--<a href="#" data-menu="menu-request" class="btn btn-full btn-sm rounded-s font-600 font-13 bg-highlight float-end mt-2 mb-2">'.Yii::t('app', "Buy Fidelity Points",["n" => 2]).'</a>-->
                    </div>
                </div>
            </div>
        </div>
	';
		
		$text .= '
		<div class="card card-style">
			<div class="content mt-0 mb-0" id="act">
		';
		
		foreach($PteliteNotificationsNoRead as $PteliteNotification){
		$text .= '
		<div class="list-group list-custom-large">
			<a href="#" class="actionF25" data-id="'.$PteliteNotification->id.'">
				'.$PteliteNotification->notification_type_rel->icon.'
				<span>'.$PteliteNotification->notification_type_rel->name.'</span>
				<strong>'.\app\models\Functions::truncate($PteliteNotification->notification,40).'</strong>
				<i class="fa fa-angle-right font-20"></i>
			</a>
		</div>
		';
		}
		
		foreach($PteliteNotificationsRead as $PteliteNotification){
		$text .= '
		<div class="list-group list-custom-large check-visited">
			<a href="#" class="actionF25" data-id="'.$PteliteNotification->id.'">
				'.$PteliteNotification->notification_type_rel->icon.'
				<span>'.$PteliteNotification->notification_type_rel->name.'</span>
				<strong>'.\app\models\Functions::truncate($PteliteNotification->notification,40).'</strong>
				<i class="fa fa-check-double font-20" style="color:green !important;"></i>
			</a>
		</div>
		';
		}
		
				
		$text .= '
			</div>
		</div>
		';
		
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	//Modal dettaglio notifica
	public function actionF25()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteNotification = \app\models\PteliteNotifications::findOne($id);
		$PteliteNotification->notification_read = 1;
		$PteliteNotification->save(false);
		
		$text = '';
		
			$text .= '	
			<div class="menu-title">
			'.$PteliteNotification->notification_type_rel->icon2.'
            <p class="color-highlight">'.date("d-m-Y H:i:s",$PteliteNotification->created_at_int).'</p>
            <h1 class="font-20">'.$PteliteNotification->notification_type_rel->name.'</h1>
        </div>
        <div class="content mt-0">
            <p class="pe-3">
                '.$PteliteNotification->notification.'
            </p>
            <div class="row mb-0">
                <div class="col-6">
                    <a href="#" class="btn btn-full btn-m bg-highlight font-600 rounded-s actionF26" data-id="'.$id.'">'.Yii::t('app', "Delete",["n" => 1]).'</a>
                </div>
				 <div class="col-6">
                    <a href="#" class="btn close-menu btn-full btn-m gradient-gray font-600 rounded-s closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
                </div>
            </div>
        </div>
			';
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		
	}
	
	//Elimina notifica
	public function actionF26()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteNotification = \app\models\PteliteNotifications::findOne($id);
		$PteliteNotification->delete();
		
		$data = [
            'error' => 0,
            'text' => '<i class="fa-regular fa-circle-check me-3"></i>'.Yii::t('app', "Deletion performed",["n" => 1])
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
	
	}
	
	//Modal eventi per lo spostamento
	public function actionF27()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$currentTime = time();
		
		$appointmentsFuturi = \app\models\PteliteAppointments::find()
		->where(["id_service" => $PteliteAppointment->service_rel->id])
		->andWhere(['!=', 'id', $id])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->groupBy("appointment_date_start")
		->all();
		
		$PteliteServicesSelected = \app\models\PteliteServices::find()->where(["id_category" => $PteliteAppointment->service_rel->id])->all();
		$PteliteServices = \app\models\PteliteServices::find()->where(["!=", "id_category", $PteliteAppointment->service_rel->id])->andWhere(["!=", "id_category", 0])->all();
		
		$text = '';
		
		if ($User->status != 10) {
			$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto</h1></div>-->
				<div class="content mb-0 mt-3">
					<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div class="divider mt-3 mb-2"></div>
					<div class="content mb-0 mx-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
								<span class="font-16"><center>'.Yii::t('app', "User deactive message",["n" => 1]).'</center></span>
							</div>
							<div class="col-12">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
							</div>
						</div>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
		}
		
		
		$text .= '
			<div class="splide calendar-move-slider slider-no-dots mt-3 mb-0" id="calendar-move-slider">
				<span class="menu-title text-center"><h4>Ripianifica Attività</h4></span>
				<div class="card card-style ps-2 mb-0 mt-3" style="background-color:transparent;box-shadow: none;">
					<div class="splide__track">
						<div class="splide__list">
			';
		
		foreach($PteliteServicesSelected as $PteliteServiceSelected){
		$text .= '<div class="splide__slide text-center pe-2 ps-2 actionF30" data-id="'.$id.'" data-id-service="'.$PteliteServiceSelected->id.'">';
		$text .= '
		
		<div class="card m-2 card-style rounded-s">
			<img src="https://tmachine.it/web/images/services/'.($PteliteServiceSelected->image?$PteliteServiceSelected->image:$PteliteServiceSelected->macro->image).'" class="img-fluid">
			<div class="p-2 bg-theme border-top border-5 shadow-xs" style="border-color:'.$PteliteServiceSelected->macro->color.' !important;">
				<h4 class="font-12 line-height-s pb-1">'.$PteliteServiceSelected->name.'</h4>
			</div>
		</div>
		
		<!--
		<div class="card card-style col-12 ms-0">
            <div class="card mb-0" data-card-height="100" style="width: 100px;height: 100px;background-image: url(https://tmachine.it/web/images/services/'.($PteliteServiceSelected->image?$PteliteServiceSelected->image:$PteliteServiceSelected->macro->image).');"></div>
            <div class="content mt-1">

                <p class="color-highlight font-500 mb-n1">'.$PteliteServiceSelected->macro->name.'</p>
                <p>'.$PteliteServiceSelected->name.'</p>
                
            </div>
        </div>
		-->
		
		';
		$text .= '</div>';
		}
		
		foreach($PteliteServices as $PteliteService){
		$text .= '<div class="splide__slide text-center pe-2 ps-2 actionF30" data-id="'.$id.'" data-id-service="'.$PteliteService->id.'">';
		$text .= '
		
		<div class="card m-2 card-style rounded-s">
			<img src="https://tmachine.it/web/images/services/'.($PteliteService->image?$PteliteService->image:$PteliteService->macro->image).'" class="img-fluid">
			<div class="p-2 bg-theme border-top border-5 shadow-xs" style="border-color:'.$PteliteService->macro->color.' !important;">
				<h4 class="font-12 line-height-s pb-1">'.$PteliteService->name.'</h4>
			</div>
		</div>
		
		<!--
		<div class="card card-style col-12 ms-0">
            <div class="card mb-0" data-card-height="100" style="width: 100px;height: 100px;background-image: url(https://tmachine.it/web/images/services/'.($PteliteService->image?$PteliteService->image:$PteliteService->macro->image).')"></div>
            <div class="content mt-1">

                <p class="color-highlight font-500 mb-n1">'.$PteliteService->macro->name.'</p>
                <p>'.$PteliteService->name.'</p>
                
            </div>
        </div>
		-->
		
		';
		$text .= '</div>';
		}
		
			
		$text .= '
					</div>
				</div>
			</div>
		';
		
		$text .= '<div id="actionF28Div"></div>';
		
		$text .='
		</div>
		';
		
		$text .= '<div class="pb-0 mb-4 pt-0 ps-2 me-3 ms-2" style="overflow-y:scroll;height:330px;" id="actionF27Div">';
		
		if($appointmentsFuturi){
			
			/*
			$text .= '
			<div class="splide calendar-move-slider slider-no-dots" id="calendar-move-slider">
				<div class="card card-style pb-0 mb-2 pt-3 ps-2">
					<div class="splide__track">
						<div class="splide__list">
			';
			*/
			
			
			
			foreach($appointmentsFuturi as $PteliteAppointment){
				
				/*
				//L'attività non viene visualizzata se l'utente già è presente
				if(\app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $PteliteAppointment->id])->andWhere(["id_user" => $User->id])->one()){
					continue;
				}
				//L'attività non viene visualizzata se al completo
				if($PteliteAppointment->capacity == \app\models\Functions::M1($PteliteAppointment)){
					continue;
				}
				*/
				
				$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
				->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
				->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
				->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
				->orderBy(["appointment_datetime_int_start" => SORT_ASC])
				->all();
		
					//$text .= '<div class="splide__slide text-center pe-2 ps-2">';
					$text .= $this->renderPartial('events_6', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari, 'now_id' => $id]);
					//$text .= '</div>';
			}
			
			
			
			/*
			$text .= '
						</div>
					</div>
				</div>
			</div>
			';
			*/
			
			
			
			/*
			foreach($appointmentsFuturi as $PteliteAppointment){
				//L'attività non viene visualizzata se l'utente già è presente
				if(\app\models\PteliteAppointmentsUsers::find()->where(["id_appointment" => $PteliteAppointment->id])->andWhere(["id_user" => $User->id])->one()){
					continue;
				}
				//L'attività non viene visualizzata se al completo
				if($PteliteAppointment->capacity == \app\models\Functions::M1($PteliteAppointment)){
					continue;
				}
				$text .= '<div class="splide__slide text-center pe-2 ps-2">';
				$text .= $this->renderPartial('events_4', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'now_id' => $id]);		
				$text .= '</div>';
			}
			*/
			
		}
		
		
		if(!$appointmentsFuturi){
			$text .= '
			<div class="content mb-0 mt-0 text-center">
					<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png"><br>
					<span>Al momento non sono stati programmati eventi per questa attività</span>
			</div>
			';
		}
		
		$text .= '</div>';
		
		
		
		
		$text .= ' <a href="#" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 mt-1 closeMenu mx-3">'.Yii::t('app', "Close",["n" => 1]).'</a>';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	//Ritorna la modal per confermare lo spostamento
	public function actionF28()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id'); //Id dell'evento che l'utente ha scelto 
		$nowId = Yii::$app->request->post('nowId'); //Id dell'evento che l'utente vuole spostare, alla quale non vuole più partecipare
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$PteliteAppointmentNow = \app\models\PteliteAppointments::findOne($nowId);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		// Calcolo crediti
		$appointment_datetime_startNow = new \DateTime($PteliteAppointmentNow->appointment_datetime_start);
		$nowNow = new \DateTime();
		$differenzaNow = $nowNow->diff($appointment_datetime_startNow);
		
		$appointment_datetime_start = new \DateTime($PteliteAppointment->appointment_datetime_start);
		$now = new \DateTime();
		$differenza = $now->diff($appointment_datetime_start);
		
		//$giorni = $differenza->days;
		//$ore = $differenza->h;
		//$minuti = $differenza->i;
		//$secondi = $differenza->s;
		
		//$minuti_totali_mancantiNow = ($differenzaNow->days * 24 * 60) + ($differenzaNow->h * 60) + $differenzaNow->i;
		//$minuti_totali_mancanti = ($differenza->days * 24 * 60) + ($differenza->h * 60) + $differenza->i;
		$minuti_totali_mancantiNow = $differenzaNow->days * 24 * 60 + $differenzaNow->h * 60 + $differenzaNow->i;
		$minuti_totali_mancanti = $differenza->days * 24 * 60 + $differenza->h * 60 + $differenza->i;
		
		//Se l'inizio dell'evento che sto spostando cade entro le successive 24 ore, allora prendo in considerazione tale inizio per calcolare i crediti da scalare
		if($minuti_totali_mancantiNow <= 1440){
			$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->andWhere([">=","minutes",$minuti_totali_mancantiNow])->orderBy(['minutes' => SORT_ASC])->one();
			$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 1])->orderBy(['minutes' => SORT_DESC])->one();
			$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		}
		//Se l'inizio dell'evento che sto spostando NON cade entro le successive 24 ore, allora prendo in considerazione l'inizio dell'evento scelto per calcolare i crediti da scalare
		if($minuti_totali_mancantiNow > 1440){
			$PteliteCredits = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 2])->andWhere([">=","minutes",$minuti_totali_mancanti])->orderBy(['minutes' => SORT_ASC])->one();
			$PteliteCreditsMax = \app\models\PteliteCredits::find()->where(["id_appointment_action" => 2])->orderBy(['minutes' => SORT_DESC])->one();
			$credits = $PteliteCredits?$PteliteCredits->credits:$PteliteCreditsMax->credits;
		}
		//# Calcolo crediti
		
		$text = '';
		
		//Controllo se l'abbonamento è scaduto
		$subscription_end = $User->subscription_end;
		$subscription_end = new \DateTime(date("Y-m-d",$subscription_end));
		$data_attuale = new \DateTime();
		//Controllo se l'abbonamento è scaduto
		if ($subscription_end < $data_attuale) {
			$text .= '
				<div class="card card-style pb-3 mb-2">
					<div class="content mt-2">
						<p class="mb-1">
							Il tuo abbonamento è scaduto, pertanto non puoi pianificare alcuna attività
						</p>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
		}
		//#Controllo se l'abbonamento è scaduto
		
		//Controllo sedute disponibili se l'utente ha l'abbonamento OPEN1
		if($User->subscription_type == "OPEN1"){
			if($User->subscription_sessions == 0){
				$text .= '
				<div class="card card-style pb-3 mb-2">
					<div class="content mt-2">
						<p class="mb-1">
							Non hai più sedute disponibili
						</p>
					</div>
				</div>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
			}
		}
		//#Controllo sedute disponibili se l'utente ha l'abbonamento OPEN1
		
		//Controllo prenotazioni settimanali se l'utente ha l'abbonamento diverso da OPEN1
		if($User->subscription_type != "OPEN1"){
			
			$data_dt = $PteliteAppointment->appointment_date_start;
			// Converti la data in un timestamp Unix
			$timestamp = strtotime($data_dt);
			// Calcola il giorno della settimana (1 = Lunedì, 7 = Domenica)
			$giorno_settimana = date('N', $timestamp);
			// Se la data di riferimento è già lunedì, la lasciamo invariata
			if ($giorno_settimana == 1) {
				$data_lunedì_precedente = strtotime($data_dt);
			} else {
				// Altrimenti, calcola la data del lunedì precedente
				$data_lunedì_precedente = strtotime(date('Y-m-d', strtotime('last monday', $timestamp)));
			}
			
			$date_settimana = array();
			$date_settimana[] = date("Y-m-d", $data_lunedì_precedente);

			// Aggiungi le successive 6 date all'array
			for ($i = 1; $i <= 6; $i++) {
				$date_settimana[] = date("Y-m-d", strtotime("+$i day", $data_lunedì_precedente));
			}
			
			$PteliteAppointmentsUsersCount = \app\models\PteliteAppointmentsUsers::find()
			->joinWith('appointment_rel')
			->where(["ptelite_appointments_users.id_user" => $User->id])
			->andWhere(['IN', "ptelite_appointments.appointment_date_start", $date_settimana])
			->andWhere(['not', ['ptelite_appointments.id' => $PteliteAppointmentNow->id]])
			->count();
			
			Yii::error($PteliteAppointmentsUsersCount);
			
			preg_match('/(\d+)/', $User->subscription_type, $matches);
			$numero = isset($matches[1]) ? $matches[1] : '';
			if($PteliteAppointmentsUsersCount >= $numero){
				$text .= '
				<div id="messaggio" class="card card-style pb-3 mb-2">
					<div class="content mt-2">
						<p class="mb-1">
							Non puoi fare altre prenotazioni in questa settimana
						</p>
					</div>
				</div>
				<script>setTimeout(function(){document.getElementById("messaggio").style.display="none";},5000);</script>
				';
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
			}
			
		}
		
		//Se l'utente non ha crediti sufficienti per prenotare
		if($credits > $User->credits){
			$text .= '
				<div class="card card-style pb-3 mb-2">
					<div class="content mt-2">
						<p class="mb-1">
							Non hai '.$credits.' '.Yii::t('app', "Fidelity Point",["n" => 2]).' sufficienti per effettuare l\'operazione
						</p>
					</div>
				</div>
				';
			
			$data = [
				'error' => 0,
				'text' => $text
			];
			\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
			return $data;
			
			exit;
		}
		
		$text .= '
		<div class="card card-style pb-3 mb-2">
            <div class="content mt-2">
                <p class="mb-1">
                    Vuoi spostare l\'appuntamento '.$PteliteAppointment->service_rel->name.' al '.date("d-m-Y",$PteliteAppointment->appointment_datetime_int_start).' alle ore '.date("H:i",$PteliteAppointment->appointment_datetime_int_start).'?
		';
		
		if($credits > 0){
			$text .= '<strong>Per questa operazione ti verranno addebitati '.number_format($credits,1,",",".").' '.Yii::t('app', "Fidelity Point",["n" => 2]).'</strong>';
		}
		
		$text .= '
                </p>
         ';
		 
		 $text .= '<div class="row mb-0">';
		 $text .= '<div class="col-6">';
		 $text .= '<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 mt-3 actionF17" data-id="'.$PteliteAppointment->id.'" data-now-id="'.$nowId.'">Conferma</a>';
		$text .= '</div>';
		 $text .= '<div class="col-6">';
		$text .= ' <a href="#" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 mt-3 closeMenu mx-3">Annulla</a>';
		$text .= '</div>';
		$text .= '</div>';
		 
		$text .= '		
            </div>
        </div>
		';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
			
	}
	
	//Header
	public function actionF29()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteNotificationsNoReadCount = \app\models\PteliteNotifications::find()->where(["id_receiver" => $User->id])->andWhere(["notification_read" => 0])->orderBy(["created_at_int" => SORT_DESC])->count();
		
		Yii::$app->language = "en";
		
		/*
		//Aggiorno abbonamento
		$AppToken = \app\models\Functions::M9();
		$AuthToken = $User->AuthToken;
		$TeamSystemMyStatus = \app\models\Functions::M5($AppToken,$AuthToken);
		\app\models\Functions::M8($User,$TeamSystemMyStatus['Contents'][2]['Contents'][0]['Text']);  //Aggiorno lo stato dell'abbonamento dell'utente
		if(!$User->subscription_sessions){
			if(isset($TeamSystemMyStatus['Contents'][4])){
				\app\models\Functions::M10($User,$TeamSystemMyStatus['Contents'][4]['Contents'][0]['Text']);  //Aggiorno le sedute residue solo la prima volta e solo se l'utente ha l'abbonamento OPEN1
			}
		}
		//#Aggiorno lo stato dell'abbonamento dell'utente
		*/
		
		//Yii::error($TeamSystemMyStatus);
		//Yii::error($User,$TeamSystemMyStatus['Contents'][2]['Contents'][0]['Text']);
		
		if($page == "appointmentsPage"){
			$pageTitle = Yii::t('app', "Appointment",["n" => 2]);
		}
		if($page == "notificationsPage"){
			$pageTitle = Yii::t('app', "Notification",["n" => 2]);
		}
		if($page == "calendarPage"){
			$pageTitle = Yii::t('app', "Calendar",["n" => 1]);
		}
		if($page == "dashboardPage"){
			$pageTitle = "Aghenda";
		}
		if($page == "profiloPage"){
			$pageTitle = Yii::t('app', "Profile",["n" => 1]);
		}
		if($page == "requestsPage"){
			$pageTitle = Yii::t('app', "Request",["n" => 2]);
		}
		if($page == "attivitaPage"){
			$pageTitle = Yii::t('app', "Activity",["n" => 2]);
		}
		if($page == "walletPage"){
			$pageTitle = "Wallet";
		}
		if($page == "paymentPage"){
			$pageTitle = Yii::t('app', "Payment",["n" => 2]);
		}
		
		$text = '';
		
		$text .= '
			<h1 class="color-white font-30 float-start">'.$pageTitle.'</h1>
			<a href="#" class="page-title-icon shadow-xl bg-theme color-theme float-end actionF21"><i class="fas fa-bars"></i></a>
			<a href="#" class="page-title-icon shadow-xl bg-theme color-theme float-end notificationsPage"><i class="fa fa-bell"></i><span></span><em class="badge bg-highlight border border-white">'.$PteliteNotificationsNoReadCount.'</em></a>
			<!--<a href="#" data-menu="menu-share" class="page-title-icon shadow-xl bg-theme color-theme float-end"><i class="fa fa-bell"></i></a>-->
			<!--<a href="#" data-menu="menu-cards" class="float-end color-white btn btn-xxs font-600 rounded-s border-white"><i class="fa fa-plus me-2"></i>'.Yii::t('app', "Fidelity Point",["n" => 2]).'</a>-->
			<!--<a href="#" class="page-title-icon shadow-xl bg-theme color-theme float-end" data-menu="menu-colors"><i class="fa fa-brush"></i></a>-->
			<!--<a href="#" class="page-title-icon shadow-xl bg-theme color-theme show-on-theme-light float-end" data-toggle-theme><i class="fa fa-moon"></i></a>-->
			<!--<a href="#" class="page-title-icon shadow-xl bg-theme color-theme show-on-theme-dark float-end" data-toggle-theme><i class="fa fa-lightbulb color-yellow-dark"></i></a>-->
			<div class="clearfix"></div>
		';
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
	
	}
	
	//Ritorna gli appuntamenti dell'attività selezionata nella modal dello spostamento
	public function actionF30()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$id_service = Yii::$app->request->post('id_service');
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$currentTime = time();
		
		Yii::error($id);
		Yii::error($id_service);
		Yii::error($currentTime); 
		
		$appointmentsFuturi = \app\models\PteliteAppointments::find()
		->where(["id_attivita" => $id_service])
		->andWhere(['!=', 'id', $id])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->groupBy("appointment_date_start")
		->all();
		
		$text = '';
		
		if($appointmentsFuturi){
			
			$text .= '<div class="pb-0 mb-4 pt-3 ps-2 me-3 ms-2" style="overflow-y:scroll;height:350px;" id="actionF27Div">';
			
			foreach($appointmentsFuturi as $PteliteAppointment){
				
				$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
				->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
				->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
				->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
				->orderBy(["appointment_datetime_int_start" => SORT_ASC])
				->all();
		
				$text .= $this->renderPartial('events_6', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari, 'now_id' => $id]);

			}
			
			$text .= '</div>';
			
		}
		
		
		if(!$appointmentsFuturi){
			$text .= '
			<div class="content mb-0 mt-0 text-center">
					<img src="https://studioauriti.it/appkit-ptelite/images/ptelite/bradipo-dorme.png"><br>
					<span>Al momento non sono stati programmati eventi per questa attività</span>
			</div>
			';
		}
		
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Ritorna la modal per il pagamento
	public function actionF31()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteCreditsMovementsEntriesSum = \app\models\PteliteCreditsMovements::find()->where(["id_user" => $User->id])->andWhere(["id_action" => 1])->sum("credits");
		$PteliteCreditsMovementsExitSum = \app\models\PteliteCreditsMovements::find()->where(["id_user" => $User->id])->andWhere(["id_action" => 2])->sum("credits");
		$PteliteCreditsMovements = \app\models\PteliteCreditsMovements::find()->where(["id_user" => $User->id])->orderBy(["created_at_int" => SORT_DESC])->all();
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">I tuoi '.Yii::t('app', "Fidelity Point",["n" => 2]).'</p>
                        <h1>'.number_format($User->credits,1,",",".").'</h1>
                    </div>
                    <div class="w-100 pt-1">
                        <h6 class="font-14 font-500">Entrate<span class="float-end color-green-dark">'.number_format(($PteliteCreditsMovementsEntriesSum?$PteliteCreditsMovementsEntriesSum:0),1,",",".").'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
                        <h6 class="font-14 font-500">Uscite<span class="float-end color-red-dark">'.number_format(($PteliteCreditsMovementsExitSum?$PteliteCreditsMovementsExitSum:0),1,",",".").'</span></h6>
							<!--<a href="#" data-menu="menu-request" class="btn btn-full btn-sm rounded-s font-600 font-13 bg-highlight float-end mt-2 mb-2 actionF32" data-credits="50">'.Yii::t('app', "Buy Fidelity Points",["n" => 2]).'</a>-->
                    </div>
                </div>
            </div>
        </div>
	';
	
		$data = [
            'error' => 0,
            'text' => $text
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
	}
	
	//Pagamento Nexi
	public function actionF32($id,$token)
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$PteliteCreditsPackages = \app\models\PteliteCreditsPackages::findOne($id);
		
		$token = Yii::$app->request->get('token');
		$theme = Yii::$app->request->get('theme');
		$color = Yii::$app->request->get('color');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		
		if($color == "green"){ $color = "#9ACE61"; }
		if($color == "blue"){ $color = "#5695E6"; }
		if($color == "red"){ $color = "#E64F5F"; }
		if($color == "orange"){ $color = "#F7684C"; }
		if($color == "yellow"){ $color = "#FBC64D"; }
		if($color == "dark"){ $color = "#59616B"; }
		if($color == "gray"){ $color = "#C0C2C5"; }
		if($color == "teal"){ $color = "#8EBFBD"; }
		if($color == "plum"){ $color = "#A48AE7"; }
		if($color == "brown"){ $color = "#B59B7C"; }
		
		Yii::error($theme);
		Yii::error($color);
		
		$ALIAS = 'ALIAS_WEB_00076470';
		$CHIAVESEGRETA = 'YUGO3YW931NW4GSD44N4K598J5LLHM3E';
		
		$requestUrl = "https://int-ecommerce.nexi.it/ecomm/ecomm/DispatcherServlet";
		$merchantServerUrl = "https://tmachine.it/web/app/";
		$codTrans = "TESTPS_" . date('YmdHis');
		$divisa = "EUR";
		//$importo = str_replace(".","",$PteliteCreditsPackages->discounted_price);
		$importo = 10;
		
		$mac = sha1('codTrans=' . $codTrans . 'divisa=' . $divisa . 'importo=' . $importo . $CHIAVESEGRETA);
		
		
		$obbligatori = array(
			'alias' => $ALIAS,
			'importo' => $importo,
			'divisa' => $divisa,
			'codTrans' => $codTrans,
			'url' => $merchantServerUrl . "f34",
			'url_back' => $merchantServerUrl . "f35",
			'mac' => $mac,   
		);
		
		$facoltativi = array(
			'urlpost' => "https://tmachine.it/web/app/f33",
			'Note1' =>  $token,
			'Note2' => $id,
			'Note3' => $User->id,
		);
		
		$requestParams = array_merge($obbligatori, $facoltativi);
		
		$text = '';
		
		
		$text .= '
		<!doctype html>
		<html lang="en" style="background: '.($theme=="dark-mode"?"#1b1d21;":"#eef2f1;").'">
		  <head>
			<meta charset="utf-8">
			<meta name="viewport" content="width=device-width, initial-scale=1">
			<title>Payment</title>
			<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
			<link href="'.Yii::$app->request->BaseUrl.'/css/app_style.css">
			<style>
			body {
			  display: flex;
			  justify-content: center;
			  align-items: center;
			  height: 50vh;
			  margin-right: 5px; 
			  margin-left: 5px; 
			  font-size: 13px;
			  font-family: "Roboto", sans-serif !important;
			}
		  </style>
		  </head>
		  <body class="mt-5" style="background: transparent;" id="iframe-body">
			<div class="card mt-5 w-75">
		  <div class="card-body theme-dark">
			<h5 class="card-title">
			<svg xmlns="http://www.w3.org/2000/svg" width="27" height="27" fill="currentColor" class="bi bi-vignette color-highlight" viewBox="0 0 16 16">
			  <path d="M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8"></path>
			  <path d="M8.5 4.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m0 7a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0m1.683-6.281a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m-3.5 6.062a.5.5 0 1 1-.866-.5.5.5 0 0 1 .866.5m4.598-4.598a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866m-6.062 3.5a.5.5 0 1 1-.5-.866.5.5 0 0 1 .5.866M11.5 8.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m-7 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1m6.281 1.683a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m-6.062-3.5a.5.5 0 1 1 .5-.866.5.5 0 0 1-.5.866m4.598 4.598a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5m-3.5-6.062a.5.5 0 1 1 .866-.5.5.5 0 0 1-.866.5"></path>
			</svg>
			Pacchetto '.$PteliteCreditsPackages->name.'</h5>
			<ul class="list-group">
			  <li class="list-group-item"><strong>'.Yii::t('app', "Fidelity Point",["n" => 2]).' richiesti</strong>: '.$PteliteCreditsPackages->credits.'</li>
		';
		
		if($PteliteCreditsPackages->percentage == 0){
			$text .= '<li class="list-group-item"><strong>Prezzo</strong>: '.number_format($PteliteCreditsPackages->price,2,",",".").' &euro;</li>';
		}
		
		if($PteliteCreditsPackages->percentage > 0){
			$text .= '<li class="list-group-item"><strong>Prezzo</strong>: <del>'.number_format($PteliteCreditsPackages->price,2,",",".").'</del>&nbsp;'.number_format($PteliteCreditsPackages->discounted_price,2,",",".").' &euro;</li>';
		}
			  
			  
			  
		$text .= '	</ul>';
		
		$text .= '<form method="POST" action="'.$requestUrl.'">';
		foreach ($requestParams as $name => $value) {
			$text .= '<input type="hidden" name="'.$name.'" value="'.htmlentities($value).'" />';
		}
		$text .= '
					<input class="btn btn-primary mt-4" type="submit" value="Vai al pagamento" style="background-color: '.$color.'"/>
				</form>
		';
		
	$text .= '
		  </div>
		</div>
			<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
		  </body>
		</html>
		';
		
		return $text;
		exit;
		
	}
	
	//Risposta Pagamento Nexi (_POST)
	public function actionF33()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		
		$token = Yii::$app->request->post('Note1'); //Token
		$id_package = Yii::$app->request->post('Note2'); //id_package
		
		$PteliteCreditsPackages = \app\models\PteliteCreditsPackages::findOne($id_package);
		
		//Assegno i crediti all'utente
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$User->credits += $PteliteCreditsPackages->credits;
		$User->save(false);
		
		//Movimentazione crediti
		$PteliteCreditsMovements = new \app\models\PteliteCreditsMovements();
		$PteliteCreditsMovements->id_user = $User->id;
		$PteliteCreditsMovements->id_user_get = $User->id;
		$PteliteCreditsMovements->id_credit_type = 4;
		$PteliteCreditsMovements->id_action = 1;
		$PteliteCreditsMovements->info = "L'utente ha acquistato il pacchetto ".$PteliteCreditsPackages->name;
		$PteliteCreditsMovements->info_user = "Acquisto pacchetto ".$PteliteCreditsPackages->name;;
		$PteliteCreditsMovements->credits = $PteliteCreditsPackages->credits;
		//$PteliteCreditsMovements->euro_credits = $PteliteCreditsPackages->credits*\app\models\PteliteSettings::find()->where(["name" => "settingF35"])->one()->value;
		$PteliteCreditsMovements->euro_credits = $PteliteCreditsPackages->credits;
		$PteliteCreditsMovements->created_at_int = strtotime(date("Y-m-d H:i:s"));
		$PteliteCreditsMovements->save(false);
		
		//Registro la transazione
		$PteliteNexiTransactions = new \app\models\PteliteNexiTransactions();
		$PteliteNexiTransactions->xpay__lb__token = Yii::$app->request->post('xpay__lb__token');
		$PteliteNexiTransactions->mail = Yii::$app->request->post('mail');
		$PteliteNexiTransactions->data = Yii::$app->request->post('data');
		$PteliteNexiTransactions->messaggio = Yii::$app->request->post('messaggio');
		$PteliteNexiTransactions->cognome = Yii::$app->request->post('cognome');
		$PteliteNexiTransactions->nazionalita = Yii::$app->request->post('nazionalita');
		$PteliteNexiTransactions->terminalId = Yii::$app->request->post('terminalId');
		$PteliteNexiTransactions->regione = Yii::$app->request->post('regione');
		$PteliteNexiTransactions->mac = Yii::$app->request->post('mac');
		$PteliteNexiTransactions->codAut = Yii::$app->request->post('codAut');
		$PteliteNexiTransactions->tipoProdotto = Yii::$app->request->post('tipoProdotto');
		$PteliteNexiTransactions->selectedcard = Yii::$app->request->post('selectedcard');
		$PteliteNexiTransactions->alias = Yii::$app->request->post('alias');
		$PteliteNexiTransactions->pan = Yii::$app->request->post('pan');
		$PteliteNexiTransactions->brand = Yii::$app->request->post('brand');
		$PteliteNexiTransactions->Note3 = Yii::$app->request->post('Note3');
		$PteliteNexiTransactions->Note2 = Yii::$app->request->post('Note2');
		$PteliteNexiTransactions->Note1 = Yii::$app->request->post('Note1');
		$PteliteNexiTransactions->orario = Yii::$app->request->post('orario');
		$PteliteNexiTransactions->divisa = Yii::$app->request->post('divisa');
		$PteliteNexiTransactions->scadenza_pan = Yii::$app->request->post('scadenza_pan');
		$PteliteNexiTransactions->importo = Yii::$app->request->post('importo');
		$PteliteNexiTransactions->codiceEsito = Yii::$app->request->post('codiceEsito');
		$PteliteNexiTransactions->languageId = Yii::$app->request->post('languageId');
		$PteliteNexiTransactions->nome = Yii::$app->request->post('nome');
		$PteliteNexiTransactions->check_nexi = Yii::$app->request->post('check');
		$PteliteNexiTransactions->tipoTransazione = Yii::$app->request->post('tipoTransazione');
		$PteliteNexiTransactions->codiceConvenzione = Yii::$app->request->post('codiceConvenzione');
		$PteliteNexiTransactions->codTrans = Yii::$app->request->post('codTrans');
		$PteliteNexiTransactions->esito = Yii::$app->request->post('esito');
		$PteliteNexiTransactions->aliasEffettivo = Yii::$app->request->post('aliasEffettivo');
		$PteliteNexiTransactions->OPTION_CF = Yii::$app->request->post('OPTION_CF');
		$PteliteNexiTransactions->num_contratto = Yii::$app->request->post('num_contratto');
		$PteliteNexiTransactions->save(false);
		
		Yii::error($_POST);
		
	}
	
	//Pagina dove viene reindirizzato l'utente dopo aver effettuato il pagamento (_GET)
	public function actionF34()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		Yii::error($_GET);
		
		$text = '';
		
		$text .= '
		<!doctype html>
		<html lang="en" style="background: transparent;">
		  <head>
			<meta charset="utf-8">
			<meta name="viewport" content="width=device-width, initial-scale=1">
			<title>Payment</title>
			<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
			<style>
			body {
			  display: flex;
			  justify-content: center;
			  align-items: center;
			  height: 50vh;
			  margin-right: 5px; 
			  margin-left: 5px; 
			  font-size: 18px;
			}
		  </style>
		  </head>
		  <body class="mt-5" style="background: transparent;" id="iframe-body">
			<div class="card mt-5 w-75">
		  <div class="card-body theme-dark">
			<div class="content text-center mb-0 pt-4">
            <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" fill="green" class="bi bi-check-circle" viewBox="0 0 16 16">
			  <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
			  <path d="m10.97 4.97-.02.022-3.473 4.425-2.093-2.094a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-1.071-1.05"/>
			</svg>
             <p class="boxed-text-xl font-15 mt-3">
                 Pagamento<br>andato a buon fine
             </p>
         </div>
		';
		
	$text .= '
		  </div>
		</div>
			<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
		  </body>
		</html>
		';
		
		
		return $text;
		
	}
	
	//Pagina dove viene reindirizzato l'utente dopo aver annullato il pagamento (_GET)
	public function actionF35()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		Yii::error($_GET);
		
		$text = '';
		
		$text .= '
		<!doctype html>
		<html lang="en" style="background: transparent;">
		  <head>
			<meta charset="utf-8">
			<meta name="viewport" content="width=device-width, initial-scale=1">
			<title>Payment</title>
			<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
			<style>
			body {
			  display: flex;
			  justify-content: center;
			  align-items: center;
			  height: 50vh;
			  margin-right: 5px; 
			  margin-left: 5px; 
			  font-size: 18px;
			}
		  </style>
		  </head>
		  <body class="mt-5" style="background: transparent;" id="iframe-body">
			<div class="card mt-5 w-75">
		  <div class="card-body theme-dark">
			<div class="content text-center mb-0 pt-4">
            <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" fill="red" class="bi bi-x-circle" viewBox="0 0 16 16">
			  <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
			  <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708"/>
			</svg>
             <p class="boxed-text-xl font-15 mt-3">
                 Pagamento annullato
             </p>
         </div>
		';
		
	$text .= '
		  </div>
		</div>
			<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
		  </body>
		</html>
		';
		
		
		return $text;
		
	}
	
	//Cron per NO PRENOTAZIONI NEXT WEEK (AL SABATO)
	public function actionF36()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$startDate = date("Y-m-d", strtotime("+1 day"));
		$endDate = date("Y-m-d", strtotime("+7 days"));
		
		$Users = \app\models\User::find()->all();
		//$Users = \app\models\User::find()->where(["id" => 192])->all();
		foreach($Users as $User){
				
			$PteliteAppointmentsCount = \app\models\PteliteAppointments::find()
			->joinWith('users_rel')
			->where(['between', 'ptelite_appointments.appointment_date_start', $startDate, $endDate])
			->andWhere(['ptelite_appointments_users.id_user' => $User->id])
			->count();
			
			if($PteliteAppointmentsCount == 0){
				$message = "Ciao ".$User->name.", ad oggi non ci risultano appuntamenti prenotati per la prossima settimana. Ti invitiamo a consultare la tua APP e prenotare le date idonee. \nUn saluto, \nPT Élite Italy";
				//\app\models\Functions::M7($user->user_rel->device_token,"Aghenda reminder",$message);
				\app\models\Functions::M7("c3GXFBj8TAe39_pPmNujUV:APA91bG6PNKep-vCHjKhT2RryjAYFT1VT8TNCfSgEOP5m8KPBGYP9CqrmxSkRvv_BOpSPmidMZPxMYrjVJPeCRF3SDcEqzk5yNJuLqcZrRarOJm5y_YwhMBtN3JKpspWhuXmwThce9WT","Aghenda reminder",$message);
			}
				
		}
		
	}
	
	//Cron per NO PRENOTAZIONI SETTIMANA IN CORSO (AL LUNEDI)
	public function actionF37()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$startDate = date("Y-m-d", strtotime("+0 day"));
		$endDate = date("Y-m-d", strtotime("+6 days"));
		
		$Users = \app\models\User::find()->all();
		//$Users = \app\models\User::find()->where(["id" => 192])->all();
		foreach($Users as $User){
				
			$PteliteAppointmentsCount = \app\models\PteliteAppointments::find()
			->joinWith('users_rel')
			->where(['between', 'ptelite_appointments.appointment_date_start', $startDate, $endDate])
			->andWhere(['ptelite_appointments_users.id_user' => $User->id])
			->count();
			
			if($PteliteAppointmentsCount == 0){
				$message = "Ciao ".$User->name.", ad oggi non ci risultano appuntamenti prenotati per la prossima settimana. Ti invitiamo a consultare la tua APP e prenotare le date idonee. \nUn saluto, \nPT Élite Italy";
				//\app\models\Functions::M7($user->user_rel->device_token,"Aghenda reminder",$message);
				\app\models\Functions::M7("c3GXFBj8TAe39_pPmNujUV:APA91bG6PNKep-vCHjKhT2RryjAYFT1VT8TNCfSgEOP5m8KPBGYP9CqrmxSkRvv_BOpSPmidMZPxMYrjVJPeCRF3SDcEqzk5yNJuLqcZrRarOJm5y_YwhMBtN3JKpspWhuXmwThce9WT","Aghenda reminder",$message);
			}
				
		}
		
	}
	
	//Cron per ABBONAMENTO IN SCADENZA
	public function actionF38()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$Users = \app\models\User::find()->all();
		//$Users = \app\models\User::find()->where(["id" => 192])->all();
		foreach($Users as $User){
				
			if($User->subscription_end){
				$data_scadenza = $User->subscription_end;
				// data attuale
				$data_attuale = time();
				// Calcolare quanti secondi mancano alla data specificata
				$differenza_secondi = $data_scadenza - $data_attuale;
				// Convertire i secondi in giorni
				$giorni_mancanti = ceil($differenza_secondi / (60 * 60 * 24));
				
				if($giorni_mancanti <= 7){
					$message = "Ciao ".$User->name.", ti ricordiamo che il tuo abbonamento ".$User->subscription_type." è in scadenza il giorno ".date("d-m-Y",$data_scadenza).". \nRinnova prima della scadenza comunicata per mantenere il listino a te riservato. \nUn saluto, PT Élite Italy";
					//\app\models\Functions::M7($user->user_rel->device_token,"Aghenda reminder",$message);
				\app\models\Functions::M7("c3GXFBj8TAe39_pPmNujUV:APA91bG6PNKep-vCHjKhT2RryjAYFT1VT8TNCfSgEOP5m8KPBGYP9CqrmxSkRvv_BOpSPmidMZPxMYrjVJPeCRF3SDcEqzk5yNJuLqcZrRarOJm5y_YwhMBtN3JKpspWhuXmwThce9WT","Aghenda reminder",$message,"Ti ricordiamo l'appuntamento di domani riguardo la profilazione BASIC. Clicca per maggiori dettagli","GO_TO_PAGE");
				}
				
			}
				
		}
		
	}
	
	//Cron per PROFILAZIONE SCADUTA DA 70gg
	public function actionF39()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		//Yii::error($_POST);
		
		$PteliteServices = \app\models\PteliteServices::findOne(53);
		
		$message = $PteliteServices->description;
		$short_message = "Ti ricordiamo l'appuntamento di domani riguardo la profilazione BASIC. Clicca per maggiori dettagli";
		
		//\app\models\Functions::M7("exPB99qWSkiekbCAVUoXPJ:APA91bHuHnvfCPe_9wYfq9YZIItTA_Ta-JPl7T2sA-2aCK7tr0itYlanE0d50osb-xwKk0y6orpCdLOsBXlinVoLZP3FoKXbb0snhTkZvpqWiV9Ohpe9iY1EgOaiFdhZ-3ymrG35eNGL","Aghenda reminder",$message);
		\app\models\Functions::M7("c3GXFBj8TAe39_pPmNujUV:APA91bG6PNKep-vCHjKhT2RryjAYFT1VT8TNCfSgEOP5m8KPBGYP9CqrmxSkRvv_BOpSPmidMZPxMYrjVJPeCRF3SDcEqzk5yNJuLqcZrRarOJm5y_YwhMBtN3JKpspWhuXmwThce9WT","Aghenda reminder",$message,$short_message,"GO_TO_PAGE");
		
		exit;;
		
		$Users = \app\models\User::find()->all();
		//$Users = \app\models\User::find()->where(["id" => 192])->all();
		foreach($Users as $User){
				
			$PteliteUsersCertifications = \app\models\PteliteUsersCertifications::find()->where(["id_user" => $User->id])->andWhere(["id_certifications_types" => 1])->one();
			if($PteliteUsersCertifications){
				$PteliteUsersData = \app\models\PteliteUsersData::findOne($PteliteUsersCertifications->id_users_data_starting);
				if($PteliteUsersData){
					
					$data = strtotime($PteliteUsersData->exam_date);
					// data attuale
					$data_attuale = time();
					// Calcolare quanti secondi mancano alla data specificata
					$differenza_secondi = $data - $data_attuale;
					// Convertire i secondi in giorni
					$giorni_trascorsi = floor($differenza_secondi / (60 * 60 * 24));
					
					if($giorni_trascorsi >= 70){
						$message = "Ciao ".$User->name;
						$message .= "\nla tua ultima profilazione risale al ".date("d-m-Y",strtotime($PteliteUsersData->exam_date))." per questo ti invitiamo a prendere appuntamento per monitorare i progressi che man mano stai conseguendo allenandoti con noi, ottenendo apposita certificazione in formato digitale.";
						$message .= "\nLa profilazione non è uno step obbligatorio, ma è molto utile, sia per te che per noi, in quanto ci darà contezza assoluta circa la ricomposizione corporea in atto (delta dei valori a confronto) e tutti i cambiamenti fisico-condizionali che rappresentano, nel loro insieme, il tuo stato fitness.";
						$message .= "\nPuoi scegliere tra la profilazione STANDARD (45min), ADVANCED (75m) o PRO (90m).";
						$message .= "\nRispondici a questo messaggio per fissare la data per te idonea.";
						$message .= "\nUn saluto cordiale";
						$message .= "\nPT ÉLITE ITALY";
						//\app\models\Functions::M7($user->user_rel->device_token,"Aghenda reminder",$message);
						\app\models\Functions::M7("c3GXFBj8TAe39_pPmNujUV:APA91bG6PNKep-vCHjKhT2RryjAYFT1VT8TNCfSgEOP5m8KPBGYP9CqrmxSkRvv_BOpSPmidMZPxMYrjVJPeCRF3SDcEqzk5yNJuLqcZrRarOJm5y_YwhMBtN3JKpspWhuXmwThce9WT","Aghenda reminder",$message);
					}
				
				}
				
			}
				
		}
		
	}
	
	//Modal richiesta appuntamento utente
	public function actionF40()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$currentTime = time();
		
		$appointment_datetime_start = new \DateTime($PteliteAppointment->appointment_datetime_start);
		$now = new \DateTime();
		$differenza = $now->diff($appointment_datetime_start);
		
		$giorni = $differenza->days;
		$ore = $differenza->h;
		$minuti = $differenza->i;
		$secondi = $differenza->s;
		
		/*
		$appointmentsFuturi = \app\models\PteliteAppointments::find()
		->where(["id_service" => $PteliteAppointmentNow->service_rel->id])
		//->andWhere(['!=', 'id', $id])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->groupBy("appointment_date_start")
		->limit(7)
		->all();
		*/
		
		$text = '';
		
		
		//if ($User->status != 10) {
			$text .= '
				<div class="menu-title text-center pt-4"><i class="fa-solid fa-comment-dots fa-2x"></i><h3>Richiedi appuntamento</h3></div>
				<span class="font-14 color-theme d-block pt-2 text-center"><i class="fa-solid fa-calendar-days pe-2 color-highlight"></i>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' - '.substr($PteliteAppointment->appointment_time_start,0,-3).'/'.substr($PteliteAppointment->appointment_time_finish,0,-3).'</span>
				<div class="content mb-0 mt-3">
					<!--<div class="card card-style mx-0 mb-0" data-card-height="50" style="height:270px;width:270px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>-->
					<div class="divider mt-3 mb-0"></div>
					<div class="content mb-0 mx-0 mt-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
			';
			
			
			
			$text .= '	
				<!--<div class="menu-title text-center"><h1>Evento scelto4</h1></div>-->
				<div class="content mb-0 mt-3 text-center">
					<div class="card card-style mx-auto mb-0 text-center" data-card-height="50" style="height:200px;width:200px;"><img src="https://tmachine.it/web/images/services/'.($PteliteAppointment->activity_rel->image?$PteliteAppointment->activity_rel->image:$PteliteAppointment->service_rel->image).'"></div>
					<div>
						<span class="font-14 color-theme d-block pb-2 mt-3"><i class="fa fa-map-marker pe-2 color-highlight"></i>'.$PteliteAppointment->training_room_rel->name.'</span>
						<strong class="color-theme font-20 d-block mb-2">'.$PteliteAppointment->activity_rel->name.'</strong>
						
						<span class="font-13 color-theme d-block lh-1 mt-3 mb-3">'.$PteliteAppointment->activity_rel->description.'</span>
						
						
						<div class="clearfix"></div>
						<span class="font-16 mb-2"><i class="fa fa-hourglass-half color-highlight"></i></span>
						<span class="font-14 color-theme"><strong>'.($giorni?$giorni." gg ":"").''.($ore?$ore." ore ":"").''.($minuti?$minuti." min":"").'</strong> all\'evento</span><br>
						<span class="font-16"><i class="fa-solid fa-wallet color-highlight"></i></span>
						<span class="font-14 color-theme"><strong>0 '.Yii::t('app', "Fidelity Point",["n" => 2]).'</strong> '.Yii::t('app', "requested",["n" => 2]).'</span>
					</div>
				</div>
				';
			
			/*
			$text .= '
			 <div class="accordion" id="accordion-1">
                <div class="mb-2">
                    <button class="btn accordion-btn no-effect color-theme"  data-bs-toggle="collapse" data-bs-target="#collapse2">
                        <i class="fa fa-calendar color-highlight me-2"></i>
                        Aggiungi altre date opzionali
                        <i class="fa fa-chevron-down font-10 accordion-icon"></i>
                    </button>
                    <div id="collapse2" class="collapse"  data-bs-parent="#accordion-1">
                        <div class="pt-1 pb-2 ps-3 pe-3">
			';
			
			$text .= '<div class="pb-0 mb-4 pt-0 ps-2 me-3 ms-2" style="overflow-y:scroll;height:380px;">';
			
			foreach($appointmentsFuturi as $PteliteAppointment){
				$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
					->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
					->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
					->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
					->orderBy(["appointment_datetime_int_start" => SORT_ASC])
					->all();
				
				$text .= $this->renderPartial('events_9', ['PteliteAppointment' => $PteliteAppointment, 'User' => $User, 'PteliteAppointmentsOrari' => $PteliteAppointmentsOrari, 'now_id' => $id]);
			}
			
			$text .= '</div">';
             
			$text .= '
                        </div>
                    </div>
                </div>
            </div>
			';
			*/
			
			
			$text .= '
							</div>
							<div class="divider mt-3 mb-2"></div>
							<div class="row mt-3 mx-auto">
								<div class="col-6">
									<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 actionF41" data-id="'.$PteliteAppointment->id.'">Richiedi</a>
								</div>
								<div class="col-6">
									<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Cancel",["n" => 1]).'</a>
								</div>
							</div>
						</div>
					</div>
				</div>
				';
				
				
				
			
				
				$data = [
					'error' => 0,
					'text' => $text
				];
				\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
				return $data;
				
				exit;
		//}
		
	}
	
	//Invio richiesta appuntamento utente
	public function actionF41()
    {
		
		header('Access-Control-Allow-Origin:*');

		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$dataIds = Yii::$app->request->post('dataIds');
		
		$PteliteAppointment = \app\models\PteliteAppointments::findOne($dataIds[0]);
		
		$count = \app\models\PteliteRequests::find()->count();
		$nextNumber = $count + 1;
		$request_number = str_pad($nextNumber, 9, '0', STR_PAD_LEFT);
		
		###############################
		$PteliteRequests = \app\models\PteliteRequests::find()->where(["request_number" => $request_number])->one() ?? new \app\models\PteliteRequests();
		$PteliteRequests->id_user_from = $User->id;
		$PteliteRequests->id_user_to = 0;
		$PteliteRequests->id_owner = 0;
		$PteliteRequests->id_activity = $PteliteAppointment->service_rel->id;
		$PteliteRequests->request_number = $request_number;
		$PteliteRequests->id_status = 1;
		$PteliteRequests->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequests->save(false);
		###############################
		
		###############################
		$PteliteRequestsMessages = \app\models\PteliteRequestsMessages::find()->where(["id_request" => $PteliteRequests->id])->one() ?? new \app\models\PteliteRequestsMessages();
		//$PteliteRequestsMessages->id_request = $PteliteRequests->id;
		$PteliteRequestsMessages->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessages->id_appointment = 0;
		$PteliteRequestsMessages->id_status = 1;
		$PteliteRequestsMessages->id_user_from = $User->id;
		$PteliteRequestsMessages->id_user_to = 0;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-arrow-up bg-highlight shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= 'Hai richiesto un\'appuntamento in una delle seguenti date:<br>';
		
		foreach ($dataIds as $id) {
			$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
			$message .= '<strong>';
			$message .= date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' alle ore '.$PteliteAppointment->appointment_time_start."<br>";
			$message .= '</strong>';
		}
		
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessages->message = $message;
		$PteliteRequestsMessages->request_number = $request_number;
		$PteliteRequestsMessages->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessages->save(false);
		###############################
		
		// Gli ID degli eventi proposti dall'utente
		foreach ($dataIds as $id) {
			
			$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);

			foreach($PteliteAppointment->professionals_rel as $professional){
				
				###############################
				$PteliteRequestsPro = \app\models\PteliteRequestsPro::find()->where(["request_number" => $request_number])->one() ?? new \app\models\PteliteRequestsPro();
				$PteliteRequestsPro->id_user_from = $User->id;
				$PteliteRequestsPro->id_user_to = $professional->id_user;
				$PteliteRequestsPro->id_owner = 0;
				$PteliteRequestsPro->id_activity = $PteliteAppointment->service_rel->id;
				$PteliteRequestsPro->request_number = $request_number;
				$PteliteRequestsPro->id_status = 1;
				$PteliteRequestsPro->created_at = strtotime(date("Y-m-d H:i:s"));
				$PteliteRequestsPro->save(false);
				###############################
				
				###############################
				$PteliteRequestsMessagesPro = \app\models\PteliteRequestsMessagesPro::find()->where(["id_request" => $PteliteRequests->id])->one() ?? new \app\models\PteliteRequestsMessagesPro();
				//$PteliteRequestsMessagesPro->id_request = $PteliteRequestsPro->id;
				$PteliteRequestsMessagesPro->id_appointments = implode(",",$dataIds);
				$PteliteRequestsMessagesPro->id_appointment = 0;
				$PteliteRequestsMessagesPro->id_status = 1;
				$PteliteRequestsMessagesPro->id_user_from = $User->id;
				$PteliteRequestsMessagesPro->id_user_to = $professional->id_user;
				
				$message = '<div class="timeline-item">';
				$message .= '<i class="fa-solid fa-arrow-up bg-highlight shadow-l timeline-icon color-white"></i>';
				$message .= '<div class="timeline-item-content rounded-s">';
				$message .= 'Hai ricevuto una richiesta di prenotazione in una delle seguenti date:<br>';
				
				foreach ($dataIds as $id) {
					$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
					$message .= '<div class="form-check icon-check">
                            <input class="form-check-input actionF46Radio" type="radio" name="actionF46Radio" value="" id="radio'.$id.'" data-id="'.$id.'">
                            <label class="form-check-label" for="radio'.$id.'"><strong>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' alle ore '.$PteliteAppointment->appointment_time_start.'</strong></label>
                            <i class="icon-check-1 far fa-square color-gray-dark font-16"></i>
                            <i class="icon-check-2 far fa-check-square font-16 color-highlight"></i>
                        </div>';
				}
				
				$message .= '
				<div class="row mt-4 px-2">
					<a href="#" class="btn btn-highlight bg-highlight btn-xxs mb-3 rounded-s text-uppercase font-700 shadow-s actionF46">Conferma data</a>
					<a href="#" class="btn btn-highlight bg-highlight btn-xxs mb-3 rounded-s text-uppercase font-700 shadow-s actionF47">Proponi altre date</a>
				</div>
				';
				
				$message .= '</div>';
				$message .= '</div>';
				
				$PteliteRequestsMessagesPro->message = $message;
				$PteliteRequestsMessagesPro->request_number = $request_number;
				$PteliteRequestsMessagesPro->created_at = strtotime(date("Y-m-d H:i:s"));
				$PteliteRequestsMessagesPro->save(false);
				###############################
				
			}
		
		}
		
		$data = [
            'error' => 0,
            'text' => '<i class="fa-regular fa-circle-check me-3"></i>'.Yii::t('app', "Request has been made",["n" => 1])
        ];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	//Requests user
	public function actionF42()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteRequestsMessagesStatus = \app\models\PteliteRequestsMessagesStatus::find()->all();
		$PteliteRequests = \app\models\PteliteRequests::find()->where(["id_user_from" => $User->id])->orderBy(["created_at" => SORT_DESC])->all();
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">'.Yii::t('app', "Total",["n" => 2]).'</p>
                        <h1>'.\app\models\PteliteRequests::find()->where(["id_user_from" => $User->id])->count().'</h1>
                    </div>
                    <div class="w-100 pt-1">
		';
			
					foreach($PteliteRequestsMessagesStatus as $PteliteRequestMessageStatus){
                        $text .= '
						<h6 class="font-14 font-500">'.Yii::t('app', $PteliteRequestMessageStatus->name,["n" => 2,]).'<span class="float-end color-green-dark">'.\app\models\PteliteRequests::find()->where(["id_user_from" => $User->id])->andWhere(["id_status" => $PteliteRequestMessageStatus->id])->count().'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
						';
					}

		$text .= '
                    </div>
                </div>
            </div>
        </div>
	';
		
		$text .= '
		<div class="card card-style">
			<div class="content mt-0 mb-0">
		';
		
		foreach($PteliteRequests as $PteliteRequest){
		$text .= '
		<div class="list-group list-custom-large">
			<a href="#" class="actionF43" data-id="'.$PteliteRequest->id.'">
				<span>Richiesta del '.date("d-m-Y H:i",$PteliteRequest->created_at).'</span>
				<strong><p class="font-700">Elaborazione dieta</p></strong>
				<span class="badge badge-primary bg-highlight">In corso</span>
				<i class="fa fa-angle-right font-20"></i>
			</a>
		</div>
		';
		}
		
		if(!$PteliteRequests){
			$text .= '<em>Non ci sono richieste</em>';
		}
		
				
		$text .= '
			</div>
		</div>
		';
		
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	//Pagina messaggi richiesta Utente
	public function actionF43()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteRequestsMessagesStatus = \app\models\PteliteRequestsMessagesStatus::find()->all();
		$PteliteRequest = \app\models\PteliteRequests::findOne($id);
		$PteliteRequestsMessages = \app\models\PteliteRequestsMessages::find()->where(["request_number" => $PteliteRequest->request_number])->orderBy(["id" => SORT_DESC])->all();
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">'.Yii::t('app', "Total",["n" => 2]).'</p>
                        <h1>'.\app\models\PteliteRequests::find()->where(["id_user_from" => $User->id])->count().'</h1>
                    </div>
                    <div class="w-100 pt-1">
		';
			
					foreach($PteliteRequestsMessagesStatus as $PteliteRequestMessageStatus){
                        $text .= '
						<h6 class="font-14 font-500">'.Yii::t('app', $PteliteRequestMessageStatus->name,["n" => 2,]).'<span class="float-end color-green-dark">'.\app\models\PteliteRequests::find()->where(["id_user_from" => $User->id])->count().'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
						';
					}

		$text .= '
                    </div>
                </div>
            </div>
        </div>
	';
	
			$text .= '
			<div class="card card-style mb-2 mt-4">
				<div class="content mb-2 mt-3">
					<div class="d-flex">
						<div class="w-50 pe-4">
							<p class="font-600 color-highlight mb-0">Attività</p>
						</div>
						<div class="w-100 pt-1">
							<h6 class="text-end font-12 font-500">PROFILAZIONE ADVANCED - 75m</h6>
							<div class="divider mb-2 mt-1"></div>
						</div>
					</div>
				</div>
			</div>
			';
		
		
				$text .= '
				<div class="timeline-body mt-0">
					<div class="timeline-deco"></div>
				';
				
				$counter = 0;
				foreach($PteliteRequestsMessages as $PteliteRequestMessage){	
				
					$text .= '<div style="'.($counter===0?"":"opacity: 0.5;pointer-events: none;").'">';
					$text .= $PteliteRequestMessage->message;
					$text .= '</div>';
					
					$counter++;
				}
		
		$text .= '
					</div>
				</div>
		';
			
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	//Requests professional
	public function actionF44()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		//$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$User = \app\models\User::findOne(213);
		$PteliteRequestsMessagesStatus = \app\models\PteliteRequestsMessagesStatus::find()->all();
		$PteliteRequestsPro = \app\models\PteliteRequestsPro::find()->where(["id_user_to" => $User->id])->orderBy(["created_at" => SORT_DESC])->all();
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">'.Yii::t('app', "Total",["n" => 2]).'</p>
                        <h1>'.\app\models\PteliteRequestsPro::find()->where(["id_user_to" => $User->id])->count().'</h1>
                    </div>
                    <div class="w-100 pt-1">
		';
			
					foreach($PteliteRequestsMessagesStatus as $PteliteRequestMessageStatus){
                        $text .= '
						<h6 class="font-14 font-500">'.Yii::t('app', $PteliteRequestMessageStatus->name,["n" => 2,]).'<span class="float-end color-green-dark">'.\app\models\PteliteRequestsPro::find()->where(["id_user_to" => $User->id])->count().'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
						';
					}

		$text .= '
                    </div>
                </div>
            </div>
        </div>
	';
		
		$text .= '
		<div class="card card-style">
			<div class="content mt-0 mb-0">
		';
		
		foreach($PteliteRequestsPro as $PteliteRequestPro){
			$text .= '
			<div class="list-group list-custom-large">
				<a href="#" class="actionF45" data-id="'.$PteliteRequestPro->id.'">
					<span>Richiesta del '.date("d-m-Y H:i",$PteliteRequestPro->created_at).'</span>
					<strong><p class="font-700">Elaborazione dieta</p></strong>
					<span class="badge badge-primary bg-highlight">Primary</span>
					<i class="fa fa-angle-right font-20"></i>
				</a>
			</div>
			';
		}
		
		
		if(!$PteliteRequestsPro){
			$text .= '<em>Non ci sono richieste</em>';
		}
		
				
		$text .= '
			</div>
		</div>
		';
		
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	//Pagina messaggi richiesta Professionista
	public function actionF45()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$page = Yii::$app->request->post('page');
		//$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$User = \app\models\User::findOne(213);
		$PteliteRequestsMessagesStatus = \app\models\PteliteRequestsMessagesStatus::find()->all();
		$PteliteRequestPro = \app\models\PteliteRequestsPro::findOne($id);
		$PteliteRequestsMessagesPro = \app\models\PteliteRequestsMessagesPro::find()->where(["request_number" => $PteliteRequestPro->request_number])->orderBy(["id" => SORT_DESC])->all();
		
		$text = '';
		
		$text .= '
		<div class="card card-style mt-4">
            <div class="content mb-2 mt-3">
                <div class="d-flex">
                    <div class="w-100 pe-4">
                        <p class="font-600 color-highlight mb-0">'.Yii::t('app', "Total",["n" => 2]).'</p>
                        <h1>'.\app\models\PteliteRequestsPro::find()->where(["id_user_from" => $User->id])->count().'</h1>
                    </div>
                    <div class="w-100 pt-1">
		';
			
					foreach($PteliteRequestsMessagesStatus as $PteliteRequestMessageStatus){
                        $text .= '
						<h6 class="font-14 font-500">'.Yii::t('app', $PteliteRequestMessageStatus->name,["n" => 2,]).'<span class="float-end color-green-dark">'.\app\models\PteliteRequestsPro::find()->where(["id_user_to" => $User->id])->count().'</span></h6>
                        <div class="divider mb-2 mt-1"></div>
						';
					}

		$text .= '
                    </div>
                </div>
            </div>
        </div>
	';
	
			$text .= '
			<div class="card card-style mb-2 mt-4">
				<div class="content mb-2 mt-3">
					<div class="d-flex">
						<div class="w-50 pe-4">
							<p class="font-600 color-highlight mb-0">Attività</p>
						</div>
						<div class="w-100 pt-1">
							<h6 class="text-end font-12 font-500">PROFILAZIONE ADVANCED - 75m</h6>
							<div class="divider mb-2 mt-1"></div>
						</div>
					</div>
				</div>
			</div>
			';
		
		
				$text .= '
				<div class="timeline-body mt-0">
					<div class="timeline-deco"></div>
				';
				
				$counter = 0;
				foreach($PteliteRequestsMessagesPro as $PteliteRequestMessagePro){	
				
					$text .= '<div style="'.($counter===0?"":"opacity: 0.5;pointer-events: none;").'">';
					$text .= $PteliteRequestMessagePro->message;
					$text .= '</div>';
					
					$counter++;
				}
		
		$text .= '
					</div>
				</div>
		';
			
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	// Accettazione di una delle date proposte dal cliente da parte del professionista
	public function actionF46()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$token = Yii::$app->request->post('token');
		//$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$User = \app\models\User::findOne(213);
		$id = Yii::$app->request->post('id');
		$PteliteRequestPro = \app\models\PteliteRequestsPro::findOne($id);
		$dataIds = Yii::$app->request->post('dataIds');
		$PteliteAppointment = \app\models\PteliteAppointments::findOne(implode(",",$dataIds));
		
		$client = \app\models\User::findOne($PteliteRequestPro->id_user_from);
		
		###############################
		$PteliteRequestsMessages = new \app\models\PteliteRequestsMessages();
		//$PteliteRequestsMessages->id_request = $PteliteRequestPro->id;
		$PteliteRequestsMessages->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessages->id_appointment = implode(",",$dataIds);
		$PteliteRequestsMessages->id_status = 2;
		$PteliteRequestsMessages->id_user_from = $PteliteRequestPro->id_user_from;
		$PteliteRequestsMessages->id_user_to = 0;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-check-double bg-highlight shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Il professionista <strong>'.$User->name.' '.$User->surname.'</strong> ha confermato l\'appuntamento del <strong>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).'</strong> alle ore <strong>'.$PteliteAppointment->appointment_time_start."</strong>";
		$message .= '</h5>';
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessages->message = $message;
		$PteliteRequestsMessages->request_number = $PteliteRequestPro->request_number;
		$PteliteRequestsMessages->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessages->save(false);
		###############################
		
		###############################
		$PteliteRequestsMessagesPro = new \app\models\PteliteRequestsMessagesPro();
		//$PteliteRequestsMessagesPro->id_request = $PteliteRequestPro->id_request;
		$PteliteRequestsMessagesPro->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessagesPro->id_appointment = implode(",",$dataIds);
		$PteliteRequestsMessagesPro->id_status = 2;
		$PteliteRequestsMessagesPro->id_user_from = $PteliteRequestPro->id_user_from;
		$PteliteRequestsMessagesPro->id_user_to = $PteliteRequestPro->id_user_to;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-check-double bg-highlight shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Hai confermato l\'appuntamento all\'utente <strong>'.$client->username.'</strong> del <strong>'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).'</strong> alle ore <strong>'.$PteliteAppointment->appointment_time_start."</strong>";
		$message .= '</h5>';
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessagesPro->message = $message;
		$PteliteRequestsMessagesPro->request_number = $PteliteRequestPro->request_number;
		$PteliteRequestsMessagesPro->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessagesPro->save(false);
		###############################
		
		$text = '';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	// Altre date da proporre al cliente da parte del professionista
	public function actionF47()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$PteliteRequestsPro = \app\models\PteliteRequestsPro::findOne($id);
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$currentTime = time();
		
		$appointmentsFuturi = \app\models\PteliteAppointments::find()
		->where(["id_service" => $PteliteRequestsPro->id_activity])
		->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
		->orderBy(["appointment_datetime_int_start" => SORT_ASC])
		->groupBy("appointment_date_start")
		->limit(7)
		->all();
		
		$text = '';
		
		$text .= '
				<div class="content mb-0 mt-3">
					<div class="divider mt-3 mb-2"></div>
					<div class="content mb-0 mx-0">
						<div class="row mb-0">
							<div class="col-12 mb-2">
								<span class="font-16"><center>Scegli altre date</center></span>
			';
			
			$text .= '<div class="pb-0 mb-4 pt-0 ps-2 me-3 ms-2" style="overflow-y:scroll;height:330px;">';
			
			foreach($appointmentsFuturi as $PteliteAppointment){
				$PteliteAppointmentsOrari = \app\models\PteliteAppointments::find()
					->where(["appointment_date_start" => $PteliteAppointment->appointment_date_start])
					->andWhere(['>=', 'appointment_datetime_int_start', $currentTime])
					->andWhere(["id_attivita" => $PteliteAppointment->id_attivita])
					->orderBy(["appointment_datetime_int_start" => SORT_ASC])
					->all();
					
					foreach($PteliteAppointmentsOrari as $PteliteAppointmentsOrario){
						$text .= '<div class="form-check icon-check">
                            <input class="form-check-input actionF47Radio" type="checkbox" name="actionF47Radio" value="" id="radio'.$PteliteAppointmentsOrario->id.'" data-id="'.$PteliteAppointmentsOrario->id.'">
                            <label class="form-check-label" for="radio'.$PteliteAppointmentsOrario->id.'">'.date("d-m-Y",strtotime($PteliteAppointmentsOrario->appointment_date_start)).' alle ore '.$PteliteAppointmentsOrario->appointment_time_start.'</label>
                            <i class="icon-check-1 far fa-square color-gray-dark font-16"></i>
                            <i class="icon-check-2 far fa-check-square font-16 color-highlight"></i>
                        </div>';
					}
				
			}
			
			$text .= '</div">';
			
			$text .= '
							</div>
							<div class="row">
							<div class="col-6">
								<a href="#" class="btn btn-full rounded-sm btn-m bg-highlight border-0 text-uppercase font-700 actionF48">'.Yii::t('app', "Confirm",["n" => 1]).'</a>
							</div>
							<div class="col-6">
								<a href="#" data-id="menu-join-event-3" class="btn btn-full rounded-sm btn-m gradient-gray border-0 text-uppercase font-700 closeMenu">'.Yii::t('app', "Close",["n" => 1]).'</a>
							</div>
							</div>
						</div>
					</div>
				</div>
				';
		
		$data = [
			'error' => 0,
			'text' => $text
		];
		\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
		return $data;
		
		exit;
		
	}
	
	// Invio di altre date al cliente da parte del professionista
	public function actionF48()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		//$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$User = \app\models\User::findOne(213);
		$dataIds = Yii::$app->request->post('dataIds');
		
		$PteliteRequestPro = \app\models\PteliteRequestsPro::findOne($id);
		$client = \app\models\User::findOne($PteliteRequestPro->id_user_from);
		
		###############################
		$PteliteRequestsMessages = new \app\models\PteliteRequestsMessages();
		//$PteliteRequestsMessages->id_request = $PteliteRequestPro->id;
		$PteliteRequestsMessages->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessages->id_appointment = 0;
		$PteliteRequestsMessages->id_status = 1;
		$PteliteRequestsMessages->id_user_from = $PteliteRequestPro->id_user_from;
		$PteliteRequestsMessages->id_user_to = 0;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-arrow-up bg-secondary shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Il professionista '.$User->username.' ti ha inviato altre date. Scegline solo una tra le seguenti';
		$message .= '</h5>';
		
		foreach ($dataIds as $id) {
			$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
			$message .= '
				<div class="form-check icon-check">
					<input class="form-check-input actionF48Radio" type="radio" name="actionF48Radio" value="" id="radio'.$id.'" data-id="'.$id.'">
					<label class="form-check-label" for="radio'.$id.'">'.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' alle ore '.$PteliteAppointment->appointment_time_start.'</label>
					<i class="icon-check-1 far fa-square color-gray-dark font-16"></i>
					<i class="icon-check-2 far fa-check-square font-16 color-highlight"></i>
				</div>';
		}
		
		$message .= '
		<div class="row mt-4 px-2">
			<a href="#" class="btn btn-primary btn-xxs mb-3 rounded-s text-uppercase font-700 shadow-s actionF49">Conferma data</a>
			<a href="#" class="btn btn-primary btn-xxs mb-3 rounded-s text-uppercase font-700 shadow-s actionF50">Richiedi altre date</a>
		</div>
		';
		
		$message .= '</div>';
		$message .= '</div>';
		
		
		
		$PteliteRequestsMessages->message = $message;
		$PteliteRequestsMessages->request_number = $PteliteRequestPro->request_number;
		$PteliteRequestsMessages->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessages->save(false);
		###############################
		
		###############################
		$PteliteRequestsMessagesPro = new \app\models\PteliteRequestsMessagesPro();
		//$PteliteRequestsMessagesPro->id_request = $PteliteRequestPro->id_request;
		$PteliteRequestsMessagesPro->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessagesPro->id_appointment = implode(",",$dataIds);
		$PteliteRequestsMessagesPro->id_status = 2;
		$PteliteRequestsMessagesPro->id_user_from = $PteliteRequestPro->id_user_from;
		$PteliteRequestsMessagesPro->id_user_to = $PteliteRequestPro->id_user_to;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-arrow-up bg-secondary shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Hai inviato all\'utente le seguenti date:';
		$message .= '</h5>';
		
		foreach ($dataIds as $id) {
			$PteliteAppointment = \app\models\PteliteAppointments::findOne($id);
			$message .= date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' alle ore '.$PteliteAppointment->appointment_time_start.'<br>';
		}
		
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessagesPro->message = $message;
		$PteliteRequestsMessagesPro->request_number = $PteliteRequestPro->request_number;
		$PteliteRequestsMessagesPro->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessagesPro->save(false);
		###############################
		
	}
	
	// Il cliente ha confermato una delle date proposte dal professionista
	public function actionF49()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$dataIds = Yii::$app->request->post('dataIds');
		$PteliteRequest = \app\models\PteliteRequests::findOne($id);
		$PteliteRequestPro = \app\models\PteliteRequestsPro::find()->where(["request_number" => $PteliteRequest->request_number])->one();
		$professional = \app\models\User::findOne($PteliteRequest->id_user_to);
		$PteliteAppointment = \app\models\PteliteAppointments::findOne(implode(",",$dataIds));
		
		###############################
		$PteliteRequestsMessages = new \app\models\PteliteRequestsMessages();
		//$PteliteRequestsMessages->id_request = $PteliteRequest->id;
		$PteliteRequestsMessages->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessages->id_appointment = implode(",",$dataIds);
		$PteliteRequestsMessages->id_status = 2;
		$PteliteRequestsMessages->id_user_from = $PteliteRequest->id_user_from;
		$PteliteRequestsMessages->id_user_to = 0;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-check-double bg-highlight shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Hai confermato l\'appuntamento del '.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' alle ore '.$PteliteAppointment->appointment_time_start;
		$message .= '</h5>';
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessages->message = $message;
		$PteliteRequestsMessages->request_number = $PteliteRequest->request_number;
		$PteliteRequestsMessages->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessages->save(false);
		###############################
		
		###############################
		$PteliteRequestsMessagesPro = new \app\models\PteliteRequestsMessagesPro();
		//$PteliteRequestsMessagesPro->id_request = $PteliteRequest->id_request;
		$PteliteRequestsMessagesPro->id_appointments = implode(",",$dataIds);
		$PteliteRequestsMessagesPro->id_appointment = implode(",",$dataIds);
		$PteliteRequestsMessagesPro->id_status = 2;
		$PteliteRequestsMessagesPro->id_user_from = $PteliteRequest->id_user_from;
		$PteliteRequestsMessagesPro->id_user_to = $PteliteRequest->id_user_to;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-check-double bg-highlight shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Il cliente ha confermato l\'appuntamento del '.date("d-m-Y",strtotime($PteliteAppointment->appointment_date_start)).' alle ore '.$PteliteAppointment->appointment_time_start;
		$message .= '</h5>';
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessagesPro->message = $message;
		$PteliteRequestsMessagesPro->request_number = $PteliteRequest->request_number;
		$PteliteRequestsMessagesPro->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessagesPro->save(false);
		###############################
		
		$PteliteRequest->id_status = 2;
		$PteliteRequest->save(false);
		
		$PteliteRequestPro->id_status = 2;
		$PteliteRequestPro->save(false);
		
		
	}
	
	// Il cliente non ha confermato nessuna delle date proposte dal professionista
	public function actionF50()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		$id = Yii::$app->request->post('id');
		$token = Yii::$app->request->post('token');
		$User = \app\models\User::find()->where(["access_token" => $token])->one();
		$PteliteRequest = \app\models\PteliteRequests::findOne($id);
		$PteliteRequestPro = \app\models\PteliteRequestsPro::find()->where(["request_number" => $PteliteRequest->request_number])->one();
		$professional = \app\models\User::findOne($PteliteRequestPro->id_user_to);
		
		###############################
		$PteliteRequestsMessages = new \app\models\PteliteRequestsMessages();
		//$PteliteRequestsMessages->id_request = $PteliteRequest->id;
		$PteliteRequestsMessages->id_appointments = 0;
		$PteliteRequestsMessages->id_appointment = 0;
		$PteliteRequestsMessages->id_status = 1;
		$PteliteRequestsMessages->id_user_from = $User->id;
		$PteliteRequestsMessages->id_user_to = $professional->id;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-arrow-up bg-secondary shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Hai rifiutato le date proposte nell\'ultimo messaggio. Resta in attesa di altre date';
		$message .= '</h5>';
		$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessages->message = $message;
		$PteliteRequestsMessages->request_number = $PteliteRequest->request_number;
		$PteliteRequestsMessages->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessages->save(false);
		###############################
		
		###############################
		$PteliteRequestsMessagesPro = new \app\models\PteliteRequestsMessagesPro();
		//$PteliteRequestsMessagesPro->id_request = $PteliteRequest->id_request;
		$PteliteRequestsMessagesPro->id_appointments = 0;
		$PteliteRequestsMessagesPro->id_appointment = 0;
		$PteliteRequestsMessagesPro->id_status = 1;
		$PteliteRequestsMessagesPro->id_user_from = $PteliteRequest->id_user_from;
		$PteliteRequestsMessagesPro->id_user_to = $PteliteRequest->id_user_to;
		
		$message = '<div class="timeline-item">';
		$message .= '<i class="fa-solid fa-arrow-up bg-secondary shadow-l timeline-icon color-white"></i>';
		$message .= '<div class="timeline-item-content rounded-s">';
		$message .= '<h5 class="font-400 pt-1 pb-1">';
		$message .= 'Il cliente ha rifiutato le date inviate nell\'ultimo messaggio. Proponi altre date';
		$message .= '</h5>';
		
		$message .= '
			<div class="row mt-4 px-2">
				<a href="#" class="btn btn-primary btn-xxs mb-3 rounded-s text-uppercase font-700 shadow-s actionF47">Proponi altre date</a>
			</div>
			';
			
			$message .= '</div>';
		$message .= '</div>';
		
		$PteliteRequestsMessagesPro->message = $message;
		$PteliteRequestsMessagesPro->request_number = $PteliteRequest->request_number;
		$PteliteRequestsMessagesPro->created_at = strtotime(date("Y-m-d H:i:s"));
		$PteliteRequestsMessagesPro->save(false);
		###############################
		
	}
	
	
	//Team System
	public function actionP1()
    {
		
		header('Access-Control-Allow-Origin:*');
		
		
		$apiUrl = 'http://iyes.inforyou.it/v1/token/e2a1d759-f1cc-4170-b7ca-fbb3478763a7';

		$fullUrl = $apiUrl;

		$ch = curl_init($fullUrl);

		$options = [
			CURLOPT_RETURNTRANSFER => true,
		];

		curl_setopt_array($ch, $options);

		$response = curl_exec($ch);

		if (curl_errno($ch)) {
			echo 'Errore cURL: ' . curl_error($ch);
		}

		curl_close($ch);

		$responseArray = json_decode($response, true);
		$appToken = $responseArray['Item'];
		
		#################################

		$curl = curl_init();

		curl_setopt_array($curl, array(
		  CURLOPT_URL => 'http://37.183.160.48:65432/v1/security/hello',
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => '',
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 0,
		  CURLOPT_FOLLOWLOCATION => true,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => 'GET',
		  CURLOPT_HTTPHEADER => array(
			'AppToken: '.$appToken
		  ),
		));

		$response = curl_exec($curl);

		curl_close($curl);
		
		
		
		#################################
		
		$curl = curl_init();

		curl_setopt_array($curl, array(
		  CURLOPT_URL => 'http://37.183.160.48:65432/v1/security/authenticateoperator?login=luciano&password=Ptlttl_2024',
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => '',
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 0,
		  CURLOPT_FOLLOWLOCATION => true,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => 'GET',
		  CURLOPT_HTTPHEADER => array(
			'AppToken: '.$appToken
		  ),
		));

		$response = curl_exec($curl);

		curl_close($curl);
		
		$responseArray = json_decode($response, true);
		$authToken = $responseArray['Item'];
		
		#################################
		
		$curl = curl_init();

		curl_setopt_array($curl, array(
		  CURLOPT_URL => 'http://37.183.160.48:65432/v1/user/mystatus',
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => '',
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 0,
		  CURLOPT_FOLLOWLOCATION => true,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => 'GET',
		  CURLOPT_HTTPHEADER => array(
			'AppToken: '.$appToken,
			'AuthToken: '.$authToken
		  ),
		));

		$response = curl_exec($curl);

		curl_close($curl);
		echo $response;
		
		echo $appToken;
		echo "<br>";
		echo $authToken;
		
		
		//$appToken = "401FAA05F47B5B960FE752A9FDCC81CE1EE67782651B163BC8E58790054C3E691BD2351C6DECDFF10DD64F6547A74D72EA6DC342D6D80EC218FB7A2E0931828F39F5A48EC94441229402E3B5AC068489BDB1D0B851A0C6CF323814AD348A7C335B337D30F5381F3CC1E5E30F34298B2ECC73D7117E9E3CA418FED62412F59C84215580E5FDA5D8814B268C8E5B85404A161392E2701ED0699D269BF604CAD0ED";
		//$authToken = "1B6F0AB92B23CEE6B5A1E84E48281250BFEA84EA954F94EC9DB8CF9C11C2D5E6DC63B3258FB3926E4333D22C4D6169062B7C3F1C5A03C2DD0109FF714EF235DEE5F4B19BA84E5B5AD4AFBCDF1128FD8F4DCE6C25A8E90F4EB323E25E798C12CA01B80E9DCE6EB71E3767F493BCBCC447A7851D838D7EE3DE70E167362845FDF07437664A";
	
	}
	

}