<?php

namespace app\controllers;

use Yii;
use DateTime;
use app\models\User;
use app\models\UserSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;

/**
 * UserController implements the CRUD actions for User model.
 */
class UserController extends Controller
{

  public $enableCsrfValidation = false;

    /**
     * @inheritDoc
     */
    public function behaviors()
    {
        return array_merge(
            parent::behaviors(),
            [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'delete' => ['POST'],
                        'update_email' => ['POST'],
                        'update_password' => ['POST'],
                        'update_role' => ['POST'],
                        'update_profile' => ['POST'],
                        'add_user' => ['POST'],
                        'delete_user' => ['POST'],
                        'upload_image' => ['POST'],
                    ],
                ],
            ]
        );
    }

    /**
     * Lists all User models.
     * @return mixed
     */
    public function actionIndex()
    {
		
		if (Yii::$app->user->isGuest) {
            return $this->goHome();
        }
		
        $searchModel = new UserSearch();
        $dataProvider = $searchModel->search($this->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

    /**
     * Displays a single User model.
     * @param int $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionView($id)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }

    /**
     * Creates a new User model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     * @return mixed
     */
    public function actionCreate()
    {
        $model = new User();

        if ($this->request->isPost) {
            if ($model->load($this->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->id]);
            }
        } else {
            $model->loadDefaultValues();
        }

        return $this->render('create', [
            'model' => $model,
        ]);
    }

    /**
     * Updates an existing User model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param int $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionUpdate($id)
    {
		
		if (Yii::$app->user->isGuest) {
            return $this->goHome();
        }
		
        $model = $this->findModel($id);

        if ($this->request->isPost && $model->load($this->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('update', [
            'model' => $model,
        ]);
    }

    /**
     * Deletes an existing User model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     * @param int $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionDelete($id)
    {
        $this->findModel($id)->delete();

        return $this->redirect(['index']);
    }

    /**
     * Finds the User model based on its primary key value.
     * If the model is not found, a 404 HTTP exception will be thrown.
     * @param int $id
     * @return User the loaded model
     * @throws NotFoundHttpException if the model cannot be found
     */
    protected function findModel($id)
    {
        if (($model = User::findOne($id)) !== null) {
            return $model;
        }

        throw new NotFoundHttpException('The requested page does not exist.');
    }

    public function actionUpdate_email()
    {

      $user_id = $_POST["user_id"];
      $email = $_POST["email"];

      $errors = 0;
      $email_message = "";

      //Il campo "Email Address" è obbligatorio
      if (!$email) {
        $email_message = Yii::t('app', 'required_field',["field" => "Email Address"]);
        $errors++;
      }

      if($email){
        //L'email deve essere nel formato corretto
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $email_message = Yii::t('app', 'not_valid_email',["email" => $email]);
          $errors++;
        }

        //L'email deve essere univoca
        if(\app\models\User::find()->where(["email" => $email])->one()){
          $email_message = Yii::t('app', 'used_email');
          $errors++;
        }
      }

      if($errors == 0){
        $user = \app\models\User::findOne($user_id);
        $user->email = $email;
        $user->save(false);

        echo json_encode(array(
          "error" => 0,
          "text" => 'Email modificata con successo'
        ));
      }

      if($errors > 0){
        echo json_encode(array(
          "error" => 1,
          "email_message" => $email_message
        ));
        exit;
      }

    }

    public function actionUpdate_password()
    {

      $user_id = $_POST["user_id"];
      $current_password = $_POST["current_password"];
      $new_password = $_POST["new_password"];
      $confirm_password = $_POST["confirm_password"];

      $user = \app\models\User::findOne($user_id);

      $errors = 0;
      $current_password_message = "";
      $new_password_message = "";
      $confirm_password_message = "";

      //Il campo "Current Password" è obbligatorio
      if (!$current_password) {
        $current_password_message = Yii::t('app', 'required_field',["field" => "Current Password"]);
        $errors++;
      }
      //Il campo "New Password" è obbligatorio
      if (!$new_password) {
        $new_password_message = Yii::t('app', 'required_field',["field" => "New Password"]);
        $errors++;
      }
      //Il campo "Confirm Password" è obbligatorio
      if (!$confirm_password) {
        $confirm_password_message = Yii::t('app', 'required_field',["field" => "Confirm Password"]);
        $errors++;
      }

      if($current_password){
        //La password inserita nel campo "Current Password" deve essere uguale a quella attualmente salvata
        if (!Yii::$app->getSecurity()->validatePassword($current_password, $user->password_hash)) {
          $current_password_message = "The password does not match the current one";
          $errors++;
        }
      }

      if($new_password && $confirm_password){
        //Le password inserite nei campi "New Password" e "Confirm New Password devono coincidere"
        if($new_password != $confirm_password){
          $confirm_password_message = "The password and its confirm are not the same";
          $errors++;
        }
      }

      if($errors > 0){
        echo json_encode(array(
          "error" => 1,
          "current_password_message" => $current_password_message,
          "new_password_message" => $new_password_message,
          "confirm_password_message" => $confirm_password_message
        ));
        exit;
      }

      if($errors == 0){

        $user->password_hash = Yii::$app->security->generatePasswordHash($new_password);
        $user->save(false);

        echo json_encode(array(
          "error" => 0,
          "text" => Yii::t('app', 'password has been saved',["n" => 1])
        ));
      }
    }

    public function actionUpdate_role()
    {

      $user_id = $_POST["user_id"];
      $role_id = $_POST["role_id"];

      $user = \app\models\User::findOne($user_id);

      $errors = 0;
      $update_role_message = "";

      if($errors == 0){

        $user->role = $role_id;
        //$user->save(false);

        echo json_encode(array(
          "error" => 0,
          "text" => Yii::t('app', 'role has been changed')
        ));
        exit;
      }

      if($errors > 0){
        echo json_encode(array(
          "error" => 1,
          "update_role_message" => $update_role_message
        ));
        exit;
      }

    }

    public function actionUpdate_profile()
    {

      $user_id = $_POST["user_id"];
      $details = json_encode($_POST["details"]);
	  $details = json_decode($details);

      $user = \app\models\User::findOne($user_id);
      $user->name = $details->name;
      $user->email = $details->email;
      $user->description = $details->description;
      $user->language = intval($details->language);
      $user->address_line_1 = $details->address1;
      $user->address_line_2 = $details->address2;
      $user->town = $details->town;
      $user->state_province = $details->state_province;
      $user->post_code = $details->post_code;
      $user->country = intval($details->country);
      $user->save(false);

      echo json_encode(array(
        "error" => 0,
        "text" => Yii::t('app', 'profile has been changed')
      ));

    }

    public function actionAdd_user()
    {

		$user = json_encode($_POST["user"]);
		$user = json_decode($user);
		
		if(!$user->name){
			return json_encode(array(
				"error" => 1,
				"text" => "Inserire il nome"
			));
		}
		
		if(!$user->surname){
			return json_encode(array(
				"error" => 1,
				"text" => "Inserire il cognome"
			));
		}
		
		/*
		if(!$user->username){
			return json_encode(array(
				"error" => 1,
				"text" => "Inserire la username"
			));
		}
		*/
		
		if(!$user->email){
			return json_encode(array(
				"error" => 1,
				"text" => "Inserire l'email"
			));
		}
		
		/*
		if(!$user->password){
			return json_encode(array(
				"error" => 1,
				"text" => "Inserire la password"
			));
		}
		*/
		
		if(!filter_var($user->email, FILTER_VALIDATE_EMAIL)){
			return json_encode(array(
				"error" => 1,
				"text" => "Inserire la un indirizzo email valido"
			));
		}
		
		
		if(\app\models\User::find()->where(["email" => $user->email])->one()){
			return json_encode(array(
				"error" => 1,
				"text" => "L'email inserita è gia associata ad un'altro utente"
			));
		}
		
		/*
		$uppercase = preg_match('@[A-Z]@', $user->password);
		$lowercase = preg_match('@[a-z]@', $user->password);
		$number    = preg_match('@[0-9]@', $user->password);
		$specialChars = preg_match('@[^\w]@', $user->password);
		if(!$uppercase || !$lowercase || !$number || !$specialChars || strlen($user->password) < 8) {
			return json_encode(array(
				"error" => 1,
				"text" => "La password deve avere una lunghezza minima di 8 caratteri e deve includere almeno una lettera maiuscola, un numero e un carattere speciale."
			));
		}
		*/
		
		$newuser = new \app\models\User();
		$newuser->username = $user->email;
		$newuser->email = $user->email;
		$newuser->status = 10;
		$newuser->role = 2;
		$newuser->google_auth_code = "";
		$newuser->name = $user->name;
		$newuser->surname = $user->surname;							 
		$newuser->language = 222;
		$newuser->country = 106;
		$newuser->account_id = "ID-".rand(10000000,99999999);
		$newuser->setPassword("PtelitE");
		$newuser->generateAuthKey();
		$newuser->save(false);
	  
		return json_encode(array(
			"error" => 0,
			"text" => "Utente inserito con successo"
		));

    }

    public function actionDelete_user()
    {

        $id_user = $_POST["id_user"];

        $user = \app\models\User::findOne($id_user);
		
		Yii::$app->db->createCommand("DELETE FROM crm_projects_operators WHERE id_operator = {$id_user}")->execute();

          $user->delete();

          echo json_encode(array(
            "error" => 0,
            "text" => Yii::t('app', 'user was successfully deleted')
          ));
          exit;

    }

    public function actionUpload_image(){

      $id_user = $_POST["id_user"];

      $filenameArray = explode(".",$_FILES['file']['name']);
      $ext = $filenameArray[count($filenameArray)-1];
      $temp_file = $_FILES['file']['tmp_name'];
      $target_file =  "images/users/".$id_user.".jpg";
      move_uploaded_file($temp_file, $target_file);

    }
	
	public function actionSearch_user(){
		
		$search = $_POST["search"];
		$field = isset($_POST["field"])?$_POST["field"]:0;
		$order = isset($_POST["order"])?$_POST["order"]:0;
		
		$users = \app\models\User::find();
		
		if($field == 4){
			$users->select(['user.*', 'COUNT(ptelite_users_certifications.id_user) AS occurrence_count']);
		}
		
		if($field == 3){
			$users->select(['user.*', 'MAX(ptelite_users_data.exam_date) AS recent_exam_date']);
			$users->leftJoin('ptelite_users_data', 'user.id = ptelite_users_data.id_user');
		}
		
		if($field == 2){
			$users->select(['user.*', 'COUNT(ptelite_users_data.id_user) AS occurrence_count']);
		}
		
		if($field == 2){
			$users->leftJoin('ptelite_users_data', 'user.id = ptelite_users_data.id_user');
		}
		
		if($field == 4){
			$users->leftJoin('ptelite_users_certifications', 'user.id = ptelite_users_certifications.id_user');
		}
		
		$users->where(['user.role' => 2]);
		$users->groupBy('user.id');
		
		if($search){
			$users->where(["like","user.name",$search]);
			$users->orWhere(["like","user.surname",$search]);	
		}
		
		if($field == 1){
			if($order == "ASC"){
				$users->orderBy(['user.surname' => SORT_ASC]);
			}
			if($order == "DESC"){
				$users->orderBy(['user.surname' => SORT_DESC]);
			}
		}
		
		if($field == 2){
			if($order == "ASC"){
				$users->orderBy(['occurrence_count' => SORT_ASC]);
			}
			if($order == "DESC"){
				$users->orderBy(['occurrence_count' => SORT_DESC]);
			}
		}
		
		if($field == 3){
			if($order == "ASC"){
				$users->orderBy(["recent_exam_date" => SORT_ASC]);
			}
			if($order == "DESC"){
				$users->orderBy(["recent_exam_date" => SORT_DESC]);
			}
		}
		
		if($field == 4){
			if($order == "ASC"){
				$users->orderBy(['occurrence_count' => SORT_ASC]);
			}
			if($order == "DESC"){
				$users->orderBy(['occurrence_count' => SORT_DESC]);
			}
		}
		
		$users = $users->all();
		
		/*
		$users = \app\models\User::find();
		
		if($field == 3){
		$users->select(['user.*', 'MAX(ptelite_users_data.exam_date) AS recent_exam_date']);
		}
		
		if($search){
			$users->where(["like","user.name",$search]);
			$users->orWhere(["like","user.surname",$search]);	
		}
		
		$users->andWhere(["user.role" => 2]);
		$users->joinWith(['user_data','user_certifications']);
		
		
		if($field == 1){
			if($order == "ASC"){
				$users->orderBy(["user.surname" => SORT_ASC]);
			}
			if($order == "DESC"){
				$users->orderBy(["user.surname" => SORT_DESC]);
			}
		}
		
		if($field == 2){
			if($order == "ASC"){
				$users->select(['user.*', 'COUNT(ptelite_users_data.id_user) AS occurrence_count'])
			  ->orderBy(['occurrence_count' => SORT_ASC])
			  ->groupBy('user.id');
			}
			if($order == "DESC"){
				$users->select(['user.*', 'COUNT(ptelite_users_data.id_user) AS occurrence_count'])
			  ->orderBy(['occurrence_count' => SORT_DESC])
			  ->groupBy('user.id');
			}
		}
		
		if($field == 3){
			if($order == "ASC"){
				$users->groupBy('user.id');
				$users->orderBy(["recent_exam_date" => SORT_ASC]);
			}
			if($order == "DESC"){
				$users->groupBy('user.id');
				$users->orderBy(["recent_exam_date" => SORT_DESC]);
			}
		}
		
		if($field == 4){
			if($order == "ASC"){
				$users->select(['user.*', 'COUNT(ptelite_users_certifications.id_user) AS occurrence_count'])
			  ->orderBy(['occurrence_count' => SORT_ASC])
			  ->groupBy('user.id');
			}
			if($order == "DESC"){
				$users->select(['user.*', 'COUNT(ptelite_users_certifications.id_user) AS occurrence_count'])
			  ->orderBy(['occurrence_count' => SORT_DESC])
			  ->groupBy('user.id');
			}
		}
		
		$users = $users->all();
		*/
		
		
		
		
		
		//$users->orderBy(["ptelite_users_data.exam_date" => SORT_DESC,"user.surname" => SORT_ASC]);
		
		
		$response = '';
		
		$response .= '
				<div class="d-flex flex-stack">
			';
			
				
				$response .= '
						<div class="symbol symbol-50px symbol-circle me-5">
							<div style="width:50px;height:50px;">&nbsp;</div>
						</div>
				';
	
			
			
			$response .= '
					<div class="d-flex align-items-center flex-row-fluid flex-wrap">
						
						<div class="flex-grow-1 text-primary fs-5 fw-bold" style="width:0">
							UTENTI&nbsp;
			';
			
			if($field==1 && $order=="ASC"){
				$response .= '<i data-field="1" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i class="bi bi-caret-down-fill" style="font-size: 18px;"></i>';
			} elseif
			($field==1 && $order=="DESC"){
				$response .= '<i class="bi bi-caret-up-fill" style="font-size: 18px;"></i>';
				$response .= '<i data-field="1" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			} else {
				$response .= '<i data-field="1" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i data-field="1" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			}
			
			$response .= '
						</div>
						
						<div class="flex-grow-1 text-primary fs-5 fw-bold" style="width:0">
							BIA TOTALI&nbsp;
			';
			
			if($field==2 && $order=="ASC"){
				$response .= '<i data-field="2" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i class="bi bi-caret-down-fill" style="font-size: 18px;"></i>';
			} elseif
			($field==2 && $order=="DESC"){
				$response .= '<i class="bi bi-caret-up-fill" style="font-size: 18px;"></i>';
				$response .= '<i data-field="2" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			} else {
				$response .= '<i data-field="2" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i data-field="2" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			}
			
			$response .= '
						</div>
						
						<div class="flex-grow-1 text-primary fs-5 fw-bold" style="width:0">
							ULTIMA BIA&nbsp;
			';
			
			if($field==3 && $order=="ASC"){
				$response .= '<i data-field="3" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i class="bi bi-caret-down-fill" style="font-size: 18px;"></i>';
			} elseif
			($field==3 && $order=="DESC"){
				$response .= '<i class="bi bi-caret-up-fill" style="font-size: 18px;"></i>';
				$response .= '<i data-field="3" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			} else {
				$response .= '<i data-field="3" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i data-field="3" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			}
			
			$response .= '
						</div>
			';
			
			$response .= '			
						<div class="flex-grow-1 text-primary fs-5 fw-bold" style="width:0">
							CERTIFICATI EMESSI&nbsp;
			';
			
			if($field==4 && $order=="ASC"){
				$response .= '<i data-field="4" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i class="bi bi-caret-down-fill" style="font-size: 18px;"></i>';
			} elseif
			($field==4 && $order=="DESC"){
				$response .= '<i class="bi bi-caret-up-fill" style="font-size: 18px;"></i>';
				$response .= '<i data-field="4" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			} else {
				$response .= '<i data-field="4" class="bi bi-caret-up user_table_up" style="font-size: 18px;"></i>';
				$response .= '<i data-field="4" class="bi bi-caret-down user_table_down" style="font-size: 18px;"></i>';
			}
			
			$response .= '
						</div>
			';
			
			$response .= '			
						<div class="flex-grow-1 text-primary fs-5 fw-bold me-15" style="width:0">
							ULTIMO INVIO&nbsp;
			';
			
			$response .= '
						</div>
			';
			
			$response .= '
					</div>
				</div>
				<div class="separator separator-dashed my-4"></div>
			';
		

		
		foreach($users as $user){
			
			
			$PteliteUsersData_bia_iniziale = \app\models\PteliteUsersData::find()->where(["id_user" => $user->id])->orderBy(["exam_date" => SORT_ASC])->one();
			$PteliteUsersData_bia_finale = \app\models\PteliteUsersData::find()->where(["id_user" => $user->id])->orderBy(["exam_date" => SORT_DESC])->one();
			$PteliteSentEmail = \app\models\PteliteSentEmails::find()->where(["id_user" => $user->id])->orderBy(["id" => SORT_DESC])->one();
			
			$PteliteExerciseUsersCount = \app\models\PteliteExerciseUsers::find()
			->where(["id_user" => $user->id])
			->count();
			
			$PteliteUsersDataCount = \app\models\PteliteUsersData::find()
			->where(["id_user" => $user->id])
			->count();
			
			$PteliteUsersCertificationsCount = \app\models\PteliteUsersCertifications::find()
			->where(["id_user" => $user->id])
			->count();
			
			if($user->user_data){
				$date1 = new DateTime($PteliteUsersData_bia_finale->exam_date);
				$date2 = new DateTime(date("Y-m-d"));
				$diff = $date2->diff($date1);
				
				if($diff->days > 50){
					$badge = '<span class="bullet bullet-dot bg-danger h-10px w-10px me-5" data-bs-toggle="tooltip" data-bs-placement="top" title="Ultima BIA effettuata da più di 50 giorni"></span>';
				} else {
					$badge = '';
				}
				
			} else {
				$badge = '';
			}
			
			$response .= '
				<div class="d-flex flex-stack">
			';
			
			if(!$user->avatar){
			
				$acr = substr($user->surname,0,1).substr($user->name,0,1);
				
				$response .= '
						<div class="symbol symbol-50px symbol-circle me-5">
							<div class="symbol-label fs-2 fw-semibold text-primary">'.$acr.'</div>
						</div>
				';
			}
			
			if($user->avatar){
				$response .= '
						<div class="symbol symbol-50px me-5">
							<img src="'.Yii::$app->request->BaseUrl.'/'.$user->avatar.'" class="h-50 align-self-center" alt="" />
						</div>
				';
			}
			
			
			$response .= '
					<div class="d-flex align-items-center flex-row-fluid flex-wrap">
						<div class="flex-grow-1 me-2" style="width:0">
							<a href="javascript:;" class="text-gray-800 text-hover-primary fs-6 fw-bold">'.$user->surname.' '.$user->name.'</a>
							<span class="text-muted fw-semibold d-block fs-7">'.$user->email.'</span>
						</div>
						
						<div class="flex-grow-1" style="width:0">
							<a href="javascript:;" class="text-gray-800 text-hover-primary fs-6 fw-bold">BIA Totali</a>
							<span class="text-muted fw-semibold d-block fs-7">'.$PteliteUsersDataCount.'</span>
						</div>
						
						<div class="flex-grow-1" style="width:0">
							<a href="javascript:;" class="text-gray-800 text-hover-primary fs-6 fw-bold">'.($PteliteUsersData_bia_finale?"Ultima BIA":"n.d.").'</a>
							<span class="text-muted fw-semibold d-block fs-7">'.($PteliteUsersData_bia_finale?date("d-m-Y",strtotime($PteliteUsersData_bia_finale->exam_date)):"").' '.$badge.'</span>
						</div>
						
						<div class="flex-grow-1" style="width:0">
							<a href="javascript:;" class="text-gray-800 text-hover-primary fs-6 fw-bold">Certificati Emessi</a>
							<span class="text-muted fw-semibold d-block fs-7">'.$PteliteUsersCertificationsCount.'</span>
						</div>
			';
			
			$response .= '
						<div class="flex-grow-1" style="width:0">
			';
			
			if($PteliteSentEmail){
				$PteliteUsersCertification = \app\models\PteliteUsersCertifications::findOne($PteliteSentEmail->id_certification);
				$response .= '<a href="javascript:;" class="text-gray-800 text-hover-primary fs-6 fw-bold">'.($PteliteUsersCertification?$PteliteSentEmail->certification->certification_type->name:"nd").'</a>';		
				$response .= '<span class="text-muted fw-semibold d-block fs-7">'.($PteliteUsersCertification?date("d-m-Y H:i:s",strtotime($PteliteSentEmail->created_at)):"nd").'</span>';
			}
			if(!$PteliteSentEmail){
				$response .= '<a href="javascript:;" class="text-gray-800 text-hover-primary fs-6 fw-bold">nd</a>';		
				$response .= '<span class="text-muted fw-semibold d-block fs-7">nd</span>';
			}
			
			$response .= '
						</div>
			';
			
			$response .= '
						<button type="button" class="btn btn-sm btn-primary"
							data-kt-menu-trigger="click"
							data-kt-menu-placement="bottom-end">
							<i class="bi bi-three-dots fs-1x"></i>
						</button>

						<div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary fw-bold fs-7 w-200px py-4"
							data-kt-menu="true" id="kt_menu_item">
							
							<div class="menu-item px-3">
								<span class="menu-link px-3 new_training" data-id-user="'.$user->id.'">
									<i class="fa-solid fa-plus me-2"></i>
									<span>Nuovo allenamento</span>
								</span>
							</div>
							
							<div class="menu-item px-3">
								<span class="menu-link px-3 previous_training" data-id-user="'.$user->id.'" data-exercises="'.$PteliteExerciseUsersCount.'">
									<i class="fa-solid fa-paste me-2"></i>
									<span>Archivio allenamenti</span>
								</span>
							</div>
							
							<div class="menu-item px-3">
								<span class="menu-link px-3 antropometric_values" data-id-user="'.$user->id.'">
									<i class="fa-solid fa-circle-user me-2"></i>
									<span>Valori antropometrici</span>
								</span>
							</div>
							
							<div class="menu-item px-3">
								<span class="menu-link px-3 certification_user" data-id-user="'.$user->id.'">
									<i class="fa-solid fa-paste me-2"></i>
									<span>Archivio Certificati</span>
								</span>
							</div>
							
							<div class="menu-item px-3">
								<span class="menu-link px-3 profile_user" data-id-user="'.$user->id.'">
									<i class="fa-solid fa-circle-user me-2"></i>
									<span>Modifica Profilo</span>
								</span>
							</div>

						</div>


					</div>
				</div>
				<div class="separator separator-dashed my-4"></div>
			';
		}
		
		return $response;
		
	}
	
	public function actionGet_certification_user_drawer()
    {
		
		$id_user = $_POST["id_user"];
		$user = \app\models\User::findOne($id_user);
		
		$response = '';
		$response .= '
			<div class="card shadow-none rounded-0 w-100">
				<div class="card-header" id="kt_help_header">
					<h5 class="card-title fw-semibold text-gray-600">Certificazioni di '.$user->name.'</h5>
		';
		
		if(!file_exists("images/users/".$user->id.".jpg")){
		
		$acr = substr($user->name,0,1).substr($user->surname,0,1);
		
		$response .= '
				<div class="symbol symbol-50px symbol-circle">
					<div class="symbol-label fs-2 fw-semibold text-success">'.$acr.'</div>
				</div>
		';
		}
		
		if(file_exists("images/users/".$user->id.".jpg")){
		$response .= '
				<div class="symbol symbol-40px">
					<img src="'.Yii::$app->request->BaseUrl.'/images/users/'.$user->id.'.jpg" class="h-50 align-self-center" alt="" />
				</div>
		';
		}
		
		
		$response .= '
				</div>
		';
		
		/*
		$response .= '
			<div class="card-body" id="kt_help_body">
				<div id="kt_help_scroll" class="hover-scroll-overlay-y" data-kt-scroll="true" data-kt-scroll-height="auto" data-kt-scroll-wrappers="#kt_help_body" data-kt-scroll-dependencies="#kt_help_header" data-kt-scroll-offset="5px">
					
					<div class="row">
					
						<div class="col-md-6">
							<label class="form-label">Bia iniziale</label>
							<input class="form-control form-control-solid" placeholder="Scegli.." id="certification_user_drawer_range_1"/>
						</div>
						
						<div class="col-md-6">
							<label class="form-label">Bia finale</label>
							<input class="form-control form-control-solid" placeholder="Scegli..." id="certification_user_drawer_range_2"/>
						</div>
					
					</div>
					
					<div class="row mt-3">
					
						<div class="col-md-12">
							<label class="form-label">Presenze</label>
							<input type="text" class="form-control" placeholder="Presenze..." id="certification_user_drawer_presences"/>
						</div>
						
					</div>
					
					<div class="row mt-3 mb-5">
					
						<div class="col-md-12">
							<button class="btn btn-primary create-certificate" data-id-user="'.$id_user.'">Crea certificato</button>
						</div>
						
					</div>
		';
		*/
		
		
		$response .= '		
					<!--<div class="separator my-10"></div>-->
					
					<div class="row mt-3 mb-5">
						<div class="col-md-12">
							
							<div class="accordion accordion-icon-toggle mb-10" id="kt_accordion_'.$id_user.'">
		';
		
		
		$response .= '
							
							</div>
							
						</div>
					</div>
					

				</div>
			</div>
		';
		
		$response .= '
			</div>
		';
		
		$date_attive = [];
		$PteliteUsersData = \app\models\PteliteUsersData::find()->all();
		foreach($PteliteUsersData as $PteliteUserData){
			array_push($date_attive,$PteliteUserData->exam_date);
		}
		
		
		
		return json_encode(array(
			"response" => $response,
			"date_attive" => $date_attive
		));
		
	}
	
	public function actionUser_data_upload()
    {
		
		
		$name = $_FILES['file']['name'];
		$type = $_FILES['file']['type'];
		$tmp_name = $_FILES['file']['tmp_name'];
		$error = $_FILES['file']['error'];
		$size = $_FILES['file']['size'];
		
		$filename = rand(100000000,999999999);
		
		move_uploaded_file($tmp_name,"uploads/users_data/".$filename.".csv");
		@chmod("uploads/users_data/".$filename.".csv", 0777);
		
		# CONTROLLO COLONNE CSV
		$inserimento_csv = \app\models\Functions::inserimento_csv($filename);
		if($inserimento_csv == 1){
			return json_encode([
				"error" => 1,
				"title" => "Non è stato possibile caricare i dati!",
				"body" => "Le colonne del csv caricato non corrispondono allo schema originale"
			]);
			exit;
		}
		
		# CONTROLLO SE CI SONO DEI DATI DI PROFILAZIONE INCOMPLETI
		$controllo_csv = \app\models\Functions::controllo_csv();
		if($controllo_csv > 0){
			return json_encode([
				"error" => 1,
				"title" => "Non è stato possibile caricare i dati!",
				"body" => "Alcuni dati di profilazione sono incompleti"
			]);
			exit;
		}
		
		$file = fopen("uploads/users_data/".$filename.".csv", "r");
		
		# INSERIMENTO DEI DATI NELLA TABELLA  PteliteUsersData
		$count = 0;
		$user_count = 0;
		$contr = 0;
		while (($data = fgetcsv($file, 1000, ";")) !== FALSE) {
			$count++;
			
			if($count > 1){
				
				for ($i = 0; $i <= 57; $i++) {
					$col[$i] = $data[$i];
				}
				
				//exam_date
				if(!strpos($col[11],"-")){
					$data_array = explode("/",$col[11]);
					if(strlen($data_array[0]) == 2){
						$exam_date = $data_array[2]."-".$data_array[1]."-".$data_array[0];
					}
					if(strlen($data_array[0]) == 4){
						$exam_date = $data_array[0]."-".$data_array[1]."-".$data_array[2];
					}
				}

				if(strpos($col[11],"-")){
					$data_array = explode("-",$col[11]);
					if(strlen($data_array[0]) == 2){
						$exam_date = $data_array[2]."-".$data_array[1]."-".$data_array[0];
					}
					if(strlen($data_array[0]) == 4){
						$exam_date = $data_array[0]."-".$data_array[1]."-".$data_array[2];
					}
				}
				
				//birth_date
				if(!strpos($col[44],"-")){
					$birth_date_array = explode("/",$col[44]);
					if(strlen($birth_date_array[0]) == 2){
						$birth_date = $birth_date_array[2]."-".$birth_date_array[1]."-".$birth_date_array[0];
					}
					if(strlen($birth_date_array[0]) == 4){
						$birth_date = $birth_date_array[0]."-".$birth_date_array[1]."-".$birth_date_array[2];
					}
				}

				if(strpos($col[44],"-")){
					$birth_date_array = explode("-",$col[44]);
					if(strlen($birth_date_array[0]) == 2){
						$birth_date = $birth_date_array[2]."-".$birth_date_array[1]."-".$birth_date_array[0];
					}
					if(strlen($birth_date_array[0]) == 4){
						$birth_date = $birth_date_array[0]."-".$birth_date_array[1]."-".$birth_date_array[2];
					}
				}
				
			
				
				$User = \app\models\User::find()
				->where(["email" => $col[10]])
				->one();
				if(!$User){
					continue;
				}
				
				/*
				$PteliteUsersData = \app\models\PteliteUsersData::find()
				->where(["id_user" => $User->id])
				->andWhere(["exam_date" => $exam_date])
				->andWhere(["exam_hour" => $col[12]])
				->one();
				if($PteliteUsersData){
					continue;
				}
				*/
				
				$user_count++;
				
				$PteliteUsersData = \app\models\PteliteUsersData::find()->where(["id_user" => $User->id])->andWhere(["exam_date" => $exam_date])->andWhere(["exam_hour" => $col[12]])->one() ?? new \app\models\PteliteUsersData();
				$PteliteUsersData->id_user = $User->id;
				$PteliteUsersData->user_group = $col[0];
				$PteliteUsersData->surname = $col[1];
				$PteliteUsersData->name = $col[2];
				$PteliteUsersData->gender = $col[3];
				$PteliteUsersData->height = $col[4];
				$PteliteUsersData->address = $col[5]?$col[5]:NULL;
				$PteliteUsersData->city = $col[6]?$col[6]:NULL;
				$PteliteUsersData->phone = $col[7]?$col[7]:NULL;
				$PteliteUsersData->cellphone = $col[8]?\app\models\Functions::clean_number($col[8]):NULL;
				$PteliteUsersData->mqi = $col[9]?\app\models\Functions::clean_number($col[9]):NULL;
				$PteliteUsersData->email = $col[10];
				$PteliteUsersData->exam_date = $exam_date;
				$PteliteUsersData->exam_hour = $col[12];
				$PteliteUsersData->age = $col[13];
				$PteliteUsersData->weight = \app\models\Functions::clean_number($col[14]);
				$PteliteUsersData->rz = \app\models\Functions::clean_number($col[15]);
				$PteliteUsersData->xc = \app\models\Functions::clean_number($col[16]);
				$PteliteUsersData->ffm = \app\models\Functions::clean_number($col[17]);
				$PteliteUsersData->tbw = \app\models\Functions::clean_number($col[18]);
				$PteliteUsersData->ecw = \app\models\Functions::clean_number($col[19]);
				$PteliteUsersData->bcm = \app\models\Functions::clean_number($col[20]);
				$PteliteUsersData->fm = \app\models\Functions::clean_number($col[21]);
				$PteliteUsersData->pa = \app\models\Functions::clean_number($col[22]);
				$PteliteUsersData->nak = \app\models\Functions::clean_number($col[23]);
				$PteliteUsersData->fm_perc = \app\models\Functions::clean_number($col[24]);
				$PteliteUsersData->ffm_perc = \app\models\Functions::clean_number($col[25]);
				$PteliteUsersData->tbw_perc = \app\models\Functions::clean_number($col[26]);
				$PteliteUsersData->ecw_perc = \app\models\Functions::clean_number($col[27]);
				$PteliteUsersData->icw_perc = \app\models\Functions::clean_number($col[28]);
				$PteliteUsersData->mm = \app\models\Functions::clean_number($col[29]);
				$PteliteUsersData->mm_perc = \app\models\Functions::clean_number($col[30]);
				$PteliteUsersData->bmr = \app\models\Functions::clean_number($col[31]);
				$PteliteUsersData->bmi = \app\models\Functions::clean_number($col[32]);
				$PteliteUsersData->bcmi = \app\models\Functions::clean_number($col[33]);
				$PteliteUsersData->ideal_weight = \app\models\Functions::clean_number($col[34]);
				$PteliteUsersData->ecm = \app\models\Functions::clean_number($col[35]);
				$PteliteUsersData->patient_code = $col[36];
				$PteliteUsersData->hydration = \app\models\Functions::clean_number($col[37]);
				$PteliteUsersData->nutrition = \app\models\Functions::clean_number($col[38]);
				$PteliteUsersData->smi = \app\models\Functions::clean_number($col[39]);
				$PteliteUsersData->smm = \app\models\Functions::clean_number($col[40]);
				$PteliteUsersData->asmm = \app\models\Functions::clean_number($col[41]);
				$PteliteUsersData->fmi = \app\models\Functions::clean_number($col[42]);
				$PteliteUsersData->ffmi = \app\models\Functions::clean_number($col[43]);
				$PteliteUsersData->birth_date = $birth_date;
				$PteliteUsersData->spa = \app\models\Functions::clean_number($col[45]);
				$PteliteUsersData->antropometric_date = $col[46];
				$PteliteUsersData->waist_line = $col[47];
				$PteliteUsersData->hip_measurement = $col[48];
				$PteliteUsersData->waist_hip_relation = $col[49];
				$PteliteUsersData->waist_height_relation = $col[50];
				$PteliteUsersData->arm_circumference = $col[51];
				$PteliteUsersData->breast_circumference = $col[52];
				$PteliteUsersData->leg_circumference = $col[53];
				$PteliteUsersData->abdominal_fat = $col[54];
				$PteliteUsersData->abdominal_circumference = $col[55];
				$PteliteUsersData->wrist_circumference = $col[56];
				$PteliteUsersData->calf_circumference = $col[57];
				$PteliteUsersData->save(false);

			}

		}
		
		fclose($file);
		
		
		/*
		$PteliteUsersDataCheck = \app\models\PteliteUsersDataCheck::find()
		->select('*')
		->groupBy('email')
		->all();
		foreach($PteliteUsersDataCheck as $PteliteUserDataCheck){
			
			$PteliteUsersData = \app\models\PteliteUsersData::find()
			->select('*')
			->where('exam_date = (SELECT MIN(exam_date) FROM ptelite_users_data p2 WHERE p2.email = ptelite_users_data.email)')
			->andWhere('(address IS NOT NULL AND city IS NOT NULL AND phone IS NOT NULL AND cellphone IS NOT NULL AND mqi IS NOT NULL)')
			->andWhere(["email" => $PteliteUserDataCheck->email])
			->all();
		
			foreach($PteliteUsersData as $PteliteUserData){
				$PteliteUsersCertifications = \app\models\PteliteUsersCertifications::find()->where(["id_user" => $PteliteUserData->id_user])->andWhere(["id_certifications_types" => 1])->one() ?? new \app\models\PteliteUsersCertifications();
				$PteliteUsersCertifications->id_user = $PteliteUserData->id_user;
				$PteliteUsersCertifications->id_owner = Yii::$app->getUser()->identity->id;
				$PteliteUsersCertifications->id_certifications_types = 1;
				$PteliteUsersCertifications->email = $PteliteUserData->email;
				$PteliteUsersCertifications->starting_bmi = $PteliteUserData->exam_date;
				$PteliteUsersCertifications->id_users_data_starting = $PteliteUserData->id;
				$PteliteUsersCertifications->final_bmi = NULL;
				$PteliteUsersCertifications->presences = 0;
				$PteliteUsersCertifications->ecw = $PteliteUserData->ecw;
				$PteliteUsersCertifications->fm = $PteliteUserData->fm;
				$PteliteUsersCertifications->mm = $PteliteUserData->mm;
				$PteliteUsersCertifications->bmr = $PteliteUserData->bmr;
				$PteliteUsersCertifications->bcm = $PteliteUserData->bcm;
				$PteliteUsersCertifications->fso = $PteliteUserData->address;
				$PteliteUsersCertifications->fcf = $PteliteUserData->city;
				$PteliteUsersCertifications->ftpa = $PteliteUserData->phone;
				$PteliteUsersCertifications->vmax = $PteliteUserData->cellphone;
				$PteliteUsersCertifications->str = $PteliteUserData->mqi;
				$PteliteUsersCertifications->created_at = date("Y-m-d H:i:s");
				$PteliteUsersCertifications->save(false);
			}
		
		}
		*/
		
		return json_encode([
			"error" => 0,
			"title" => "Il caricamento è andato a buon fine",
			"body" => "Record caricati: ".$user_count." di ".($count-1)
		]);
		
	}
	
	public function actionCreate_user_certification()
    {
		
		$range1 = $_POST["range1"];
		$range1Obj = DateTime::createFromFormat('d/m/Y', $range1);
		$range1 = $range1Obj->format('Y-m-d');
		
		$range2 = $_POST["range2"];
		$range2Obj = DateTime::createFromFormat('d/m/Y', $range2);
		$range2 = $range2Obj->format('Y-m-d');
		
		$presences = $_POST["presences"];
		$id_user = $_POST["id_user"];
		
		$PteliteUsersDataStart = \app\models\PteliteUsersData::find()
		->where(["id_user" => $id_user])
		->andWhere(["exam_date" => $range1])
		->one();
		
		$PteliteUsersDataFinal = \app\models\PteliteUsersData::find()
		->where(["id_user" => $id_user])
		->andWhere(["exam_date" => $range2])
		->one();
		
		$ecw = $PteliteUsersDataFinal->ecw-$PteliteUsersDataStart->ecw;
		$fm = $PteliteUsersDataFinal->fm-$PteliteUsersDataStart->fm;
		$mm = $PteliteUsersDataFinal->mm-$PteliteUsersDataStart->mm;
		$bmr = $PteliteUsersDataFinal->bmr-$PteliteUsersDataStart->bmr;
		
		$PteliteUsersCertifications = new \app\models\PteliteUsersCertifications();
		$PteliteUsersCertifications->id_user = $id_user;
		$PteliteUsersCertifications->email = "";
		$PteliteUsersCertifications->presences = $presences;
		$PteliteUsersCertifications->starting_bmi = $range1;
		$PteliteUsersCertifications->final_bmi = $range2;
		$PteliteUsersCertifications->ecw = $ecw;
		$PteliteUsersCertifications->fm = $fm;
		$PteliteUsersCertifications->mm = $mm;
		$PteliteUsersCertifications->bmr = $bmr;
		$PteliteUsersCertifications->created_at = date("Y-m-d");
		$PteliteUsersCertifications->save(false);
		
	}
	
	public function actionGet_user_certification()
    {
		
		$id_user = $_POST["id_user"];
		$user = \app\models\User::findOne($id_user);
		
		$response = '';
		
		if($user->user_certifications){
			foreach($user->user_certifications as $certification){
				
				$PteliteSentEmails = \app\models\PteliteSentEmails::find()->where(["id_certification" => $certification->id])->orderBy(["id" => SORT_DESC])->all();
				
				$bcm_starting = ($certification->user_data_starting->bcm*100)/$certification->user_data_starting->weight;
				
				if($certification->id_certifications_types == 2){
					$bcm_final = ($certification->user_data_final->bcm*100)/$certification->user_data_final->weight;
				}
				
			$response .= '
			<div class="accordion-item">
				<h2 class="accordion-header" id="kt_accordion_'.$id_user.'_header_'.$certification->id.'">
					<button class="accordion-button fs-4 fw-bold collapsed accordion-button-certification" type="button" data-bs-toggle="collapse" data-bs-target="#kt_accordion_'.$id_user.'_body_'.$certification->id.'" aria-expanded="false" aria-controls="kt_accordion_'.$id_user.'_body_'.$certification->id.'">
			';
			
			if($certification->id_certifications_types == 1){
				$response .= 'Profilazione';
			}
			if($certification->id_certifications_types == 2){
				$response .= 'Certificato';
			}
			
			$response .= '
					del '.date("d-m-Y H:i:s",strtotime($certification->created_at)).'
					</button>
				</h2>
				<div id="kt_accordion_'.$id_user.'_body_'.$certification->id.'" class="accordion-collapse collapse" aria-labelledby="kt_accordion_'.$id_user.'_header_'.$certification->id.'" data-bs-parent="#kt_accordion_'.$id_user.'">
					<div class="accordion-body" id="accordion-body-certification-'.$certification->id.'">
						
						<table style="width:100%;">
							<tbody>
				
									<tr>
									<td>
			';
			
			if($certification->id_certifications_types == 1){
				$response .= '
										<a href="'.Yii::$app->request->BaseUrl.'/site/profilazione/'.$certification->id.'" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-2" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Scarica certificato" data-bs-original-title="Scarica certificato" target="_blank">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-primary text-inverse-primary">
												<img src="assets/media/icons/duotune/files/fil003.svg">
											</div>
										</div>
										</a>
				';
				
				$response .= '
										<a href="javascript:;" data-certification-type="1" data-id-certification="'.$certification->id.'" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 send_user_certification_confirm" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Invia certificato" data-bs-original-title="Invia certificato a '.$certification->user->name.' '.$certification->user->surname.'">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-primary text-inverse-primary">
												<img src="assets/media/icons/duotune/communication/com002.svg"/>
											</div>
										</div>
										</a>
				';
				
				/*
				$response .= '
										<span class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-2 bia_iniziale" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Imposta i dati di profilazione" data-bs-original-title="Imposta i dati di profilazione" target="_blank" data-id-user="'.$id_user.'">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-secondary text-inverse-primary">
												<img src="assets/media/icons/duotune/general/gen055.svg">
											</div>
										</div>
										</span>
				';
				*/
			}
			
			if($certification->id_certifications_types == 2){
				
				$response .= '
										<a href="'.Yii::$app->request->BaseUrl.'/site/provvisoria/'.$certification->id.'" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-2" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Provvisoria" data-bs-original-title="Provvisoria" target="_blank">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-warning text-inverse-primary">
												<img src="assets/media/icons/duotune/files/fil003.svg">
											</div>
										</div>
										</a>
				';
				
				$response .= '
										<a href="javascript:;" data-certification-type="2" data-id-certification="'.$certification->id.'" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 send_user_certification_confirm" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Invia Provvisoria" data-bs-original-title="Invia Provvisoria a '.$certification->user->name.' '.$certification->user->surname.'">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-warning text-inverse-primary">
												<img src="assets/media/icons/duotune/communication/com002.svg"/>
											</div>
										</div>
										</a>
				';
				
				$response .= '
										<a href="'.Yii::$app->request->BaseUrl.'/site/definitiva/'.$certification->id.'" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-2" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Definitiva" data-bs-original-title="Definitiva" target="_blank">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-success text-inverse-primary">
												<img src="assets/media/icons/duotune/files/fil025.svg">
											</div>
										</div>
										</a>
				';
				
				$response .= '
										<a href="javascript:;" data-certification-type="3" data-id-certification="'.$certification->id.'" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 send_user_certification_confirm" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Invia Definitiva" data-bs-original-title="Invia Definitiva a '.$certification->user->name.' '.$certification->user->surname.'">
										<div class="symbol symbol-40px">
											<div class="symbol-label fs-2 fw-semibold bg-success text-inverse-primary">
												<img src="assets/media/icons/duotune/communication/com002.svg"/>
											</div>
										</div>
										</a>
				';
				
			}
			
			
			
			$response .= '
									<a href="javascript:;" class="btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-2 delete_user_certification_confirm" data-id-certification="'.$certification->id.'" data-bs-toggle="tooltip" data-bs-placement="top" aria-label="Elimina certificato" data-bs-original-title="Elimina certificato">
									<div class="symbol symbol-40px">
										<div class="symbol-label fs-2 fw-semibold bg-secondary text-inverse-danger">
											<img src="assets/media/icons/duotune/general/gen040.svg">
										</div>
									</div>
									</a>
			';
			
			
				
			$response .= '
									</td>
									</tr>
			
								
								<tr>
								<td><div class="separator separator-dotted border-dark my-3"></div></td>
								</tr>
								
								<tr>
									<td>
										<span class="text-primary fs-6 fw-semibold mt-1">Inizio</span>: '.date("d-m-Y",strtotime($certification->starting_bmi)).'&nbsp;
			';
			
			if($certification->id_certifications_types == 2){
					$response .= '<span class="text-primary fs-6 fw-semibold mt-1">Fine</span>: '.date("d-m-Y",strtotime($certification->final_bmi));
			}
			
			$response .= '
									</td>
								</tr>
			';
			
			if($certification->id_certifications_types == 2){
				$response .= '
								<tr>
									<td><span class="text-primary fs-6 fw-semibold mt-1">Presenze</span>: '.$certification->presences.'</td>
								</tr>
				';
			}
								
			$response .= '					
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">ECW</span>: '.number_format($certification->user_data_starting->ecw_perc,2,",",".").' %
			';
			
			if($certification->id_certifications_types == 2){
				$response .= ' -> '.number_format($certification->user_data_final->ecw_perc,2,",",".").' %';
			}
			
			$response .= '
									</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">FM</span>: '.number_format($certification->user_data_starting->fm_perc,2,",",".").' %
			';
			
			if($certification->id_certifications_types == 2){
				$response .= ' -> '.number_format($certification->user_data_final->fm_perc,2,",",".").' %';
			}
			
			$response .= '
									</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">MM</span>: '.number_format($certification->user_data_starting->mm_perc,2,",",".").' %
			';
			
			if($certification->id_certifications_types == 2){
				$response .= ' -> '.number_format($certification->user_data_final->mm_perc,2,",",".").' %';
			}
			
			$response .= '
									</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">BCM</span>: '.number_format($bcm_starting,2,",",".").' %
			';
			
			if($certification->id_certifications_types == 2){
				$response .= ' -> '.number_format($bcm_final,2,",",".").' %';
			}
			
			$response .= '
									</td>
								</tr>
			';
			
			if($certification->id_certifications_types == 2){
				$response .= '					
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">Flex S.O</span>: '.number_format($certification->fso,2,",",".").'
				';
				
				$response .= ' -> '.number_format($certification->fso_2,2,",",".");
			
				$response .= '
				</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">Flex C.F</span>: '.number_format($certification->fcf,2,",",".").'
				';
				
				$response .= ' -> '.number_format($certification->fcf_2,2,",",".");
				
				$response .= '
									</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">Flex T.P.A</span>: '.number_format($certification->ftpa,2,",",".").'
				';
				
				$response .= ' -> '.number_format($certification->ftpa_2,2,",",".");
				
				$response .= '
									</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">Vo2 Max</span>: '.number_format($certification->vmax,2,",",".").'
				';
				
				$response .= ' -> '.number_format($certification->vmax_2,2,",",".");
				
				$response .= '	
					</td>
								</tr>
								<tr>
									<td>
									<span class="text-primary fs-6 fw-semibold mt-1">Strenght</span>: '.number_format($certification->str,2,",",".").'
				';
				
				$response .= ' -> '.number_format($certification->str_2,2,",",".");
				
				$response .= '
									</td>
								</tr>
				';
			}
			
			$response .= '
							</tbody>
						</table>
			';
			
			if($PteliteSentEmails){
				$response .= '<div class="separator separator-dotted border-dark my-3"></div>';
				$response .= '<label><strong>Cronologia invii certificato</strong></label>';
				foreach($PteliteSentEmails as $PteliteSentEmail){
				$response .= '<br>'.date("d-m-Y",strtotime($PteliteSentEmail->created_at)).' alle '.date("H:i:s",strtotime($PteliteSentEmail->created_at));
				}
			}
			
			$response .= '
					</div>
				</div>
			</div>
			';
			}
		}
		
		if(!$user->user_certifications){
			$response .= '
			<center><img class="w-300px" src="'.Yii::$app->request->BaseUrl.'/assets/media/illustrations/sketchy-1/9.png"></center>
			';
		}
		
		return $response;
		
	}
	
	public function actionDelete_user_certification_confirm()
    {
		
		$id_certification = $_POST["id_certification"];
		$PteliteUsersCertifications = \app\models\PteliteUsersCertifications::findOne($id_certification);
		
		$response = '';
		
		$response .= '
		<div class="modal-dialog">
			<div class="modal-content">
				<div class="modal-header">
					<h5 class="modal-title">Conferma eliminazione</h5>
				</div>

				<div class="modal-body">
					<p>Vuoi davvero eliminare il certificato del "'.date("d-m-Y",strtotime($PteliteUsersCertifications->created_at)).'"?</p>
				</div>

				<div class="modal-footer">
					<button type="button" class="btn btn-light" data-bs-dismiss="modal">Annulla</button>
					<button type="button" class="btn btn-primary delete_user_certification_btn" data-id-certification="'.$id_certification.'" data-id-user="'.$PteliteUsersCertifications->id_user.'">Elimina</button>
				</div>
			</div>
		</div>
		';
		
		return $response;
		
	}
	
	public function actionDelete_user_certification()
    {
		
		$id_certification = $_POST["id_certification"];
		\app\models\PteliteUsersCertifications::findOne($id_certification)->delete();
		
	}
	
	public function actionGet_profile_user_modal()
    {
		
		$id_user = $_POST["id_user"];
		$User = \app\models\User::findOne($id_user);
		
		$response = '';
		
		$response .= '
		<div class="modal-dialog modal-lg">
			<div class="modal-content">
				<form class="form" action="#" id="kt_modal_update_user_form">
					<div class="modal-header" id="kt_modal_update_user_header">
						<h3 class="fw-bold">Profilo utente</h2>
						<span class="text-gray-400">User id: '.$User->account_id.'</span>
					</div>
					<!--end::Modal header-->
					<!--begin::Modal body-->
					<div class="modal-body py-10 px-lg-7">
						<!--begin::Scroll-->
						<div class="d-flex flex-column scroll-y me-n7 pe-7" id="kt_modal_update_user_scroll" data-kt-scroll="true" data-kt-scroll-activate="{default: false, lg: true}" data-kt-scroll-max-height="auto" data-kt-scroll-dependencies="#kt_modal_update_user_header" data-kt-scroll-wrappers="#kt_modal_update_user_scroll" data-kt-scroll-offset="300px">
							<!--begin::User toggle-->
							<div class="fw-bolder fs-3 rotate collapsible mb-7" data-bs-toggle="collapse" href="#kt_modal_update_user_user_info" role="button" aria-expanded="false" aria-controls="kt_modal_update_user_user_info">Dati personali
								<span class="ms-2 rotate-180">
									<!--begin::Svg Icon | path: icons/duotune/arrows/arr072.svg-->
									<span class="svg-icon svg-icon-3">
										<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
											<path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="currentColor" />
										</svg>
									</span>
									<!--end::Svg Icon-->
								</span>
							</div>
							<!--end::User toggle-->
							<!--begin::User form-->
							<div id="kt_modal_update_user_user_info" class="collapse show">
								<div class="row g-9 mb-7">
									<div class="col-md-3 fv-row">
										<label class="fs-6 fw-semibold mb-2">
											<span>Aggiorna</span>
											<i class="fas fa-exclamation-circle ms-1 fs-7" data-bs-toggle="tooltip" title="Tipi di file consentiti: png, jpg, jpeg."></i>
										</label>
										<div class="mt-1">
											<style>.image-input-placeholder { background-image: url(\'assets/media/svg/avatars/blank.svg\'); } [data-theme="dark"] .image-input-placeholder { background-image: url(\'assets/media/svg/avatars/blank-dark.svg\'); }</style>
											<div class="image-input image-input-outline image-input-placeholder" data-kt-image-input="true">
		';
		
		if($User->avatar){
		$response .= '
												<div class="image-input-wrapper w-150px h-200px" style="background-image: url('.$User->avatar.')"></div>
		';
		}
		
		if(!$User->avatar){
		$response .= '
												<div class="image-input-wrapper w-150px h-200px" style="background-image: url(assets/media/ptelite/no-photo.png)"></div>
		';
		}
		
		$response .= '
												<label class="btn btn-icon btn-circle btn-active-color-primary w-25px h-25px bg-body shadow" data-kt-image-input-action="change" data-bs-toggle="tooltip" title="Cambia avatar">
													<i class="bi bi-pencil-fill fs-7"></i>
													<input type="file" name="avatar" accept=".png, .jpg, .jpeg" />
													<input type="hidden" name="avatar_remove" />
												</label>

												<span class="btn btn-icon btn-circle btn-active-color-primary w-25px h-25px bg-body shadow" data-kt-image-input-action="cancel" data-bs-toggle="tooltip" title="Cancella l\'avatar">
													<i class="bi bi-x fs-2"></i>
												</span>
												<span class="btn btn-icon btn-circle btn-active-color-primary w-25px h-25px bg-body shadow" data-kt-image-input-action="remove" data-bs-toggle="tooltip" title="Rimuovi l\'avatar">
													<i class="bi bi-x fs-2"></i>
												</span>
											</div>
										</div>
									</div>
									<div class="col-md-9 fv-row">
										<div style="float:left;" class="col-md-6 fv-row px-2 mb-5">
											<label class="fs-6 fw-semibold mb-2">Nome</label>
											<input type="text" class="form-control form-control-solid" placeholder="" id="user_name" name="name" value="'.$User->name.'" />
										</div>
										<div style="float:left;" class="col-md-6 fv-row px-2 mb-5">
											<label class="fs-6 fw-semibold mb-2">Cognome</label>
											<input type="text" class="form-control form-control-solid" placeholder="" id="user_surname" name="surname" value="'.$User->surname.'" />
										</div>
										<div class="col-md-12 fv-row px-2">
											<label class="fs-6 fw-semibold mb-2">
												<span>Email</span>
												<!--<i class="fas fa-exclamation-circle ms-1 fs-7" data-bs-toggle="tooltip" title="Email address must be active"></i>-->
											</label>
											<input type="email" class="form-control form-control-solid" placeholder="" id="user_email" name="email" value="'.$User->email.'" />
										</div>
									</div>
								</div>											
							</div>

							<div class="fw-bolder fs-3 rotate collapsible mb-7" data-bs-toggle="collapse" href="#kt_modal_update_user_user_password" role="button" aria-expanded="false" aria-controls="kt_modal_update_user_user_password">Cambia password
								<span class="ms-2 rotate-180">
									<span class="svg-icon svg-icon-3">
										<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
											<path d="M11.4343 12.7344L7.25 8.55005C6.83579 8.13583 6.16421 8.13584 5.75 8.55005C5.33579 8.96426 5.33579 9.63583 5.75 10.05L11.2929 15.5929C11.6834 15.9835 12.3166 15.9835 12.7071 15.5929L18.25 10.05C18.6642 9.63584 18.6642 8.96426 18.25 8.55005C17.8358 8.13584 17.1642 8.13584 16.75 8.55005L12.5657 12.7344C12.2533 13.0468 11.7467 13.0468 11.4343 12.7344Z" fill="currentColor" />
										</svg>
									</span>
								</span>
							</div>
							<div id="kt_modal_update_user_user_password" class="collapse">										
								<div class="fv-row mb-5">
									<label class="fs-6 fw-semibold mb-2">Nuova Password</label>
									<input type="password" class="form-control form-control-solid" placeholder="" id="user_password" name="user_password" value="" />
								</div>
								<div class="fv-row mb-5">
									<label class="fs-6 fw-semibold mb-2">Conferma Password</label>
									<input type="password" class="form-control form-control-solid" placeholder="" id="user_repeat_password" name="user_repeat_password" value="" />
								</div>
							</div>	

						</div>
						<!--end::Scroll-->
					</div>
					<!--end::Modal body-->
					<!--begin::Modal footer-->
					<div class="modal-footer flex-center">
						<!--begin::Button-->
						<button type="button" class="btn btn-light" data-bs-dismiss="modal">Annulla</button>
						<!--end::Button-->
						<!--begin::Button-->
						<button type="button" data-id-user="'.$id_user.'" class="btn btn-primary kt_modal_update_user_form_save">Salva</button>
						<!--end::Button-->
						<button type="button" data-id-user="'.$id_user.'" class="btn btn-danger kt_modal_update_user_form_confirm_delete">Elimina utente</button>
					</div>
					<!--end::Modal footer-->
				</form>
				<!--end::Form-->
			</div>
		</div>
		';
		
		return $response;
		
	}
	
	public function actionUpdate_user_profile()
    {
		
		$id_user = $_POST["id_user"];
		$name = $_POST["name"];
		$surname = $_POST["surname"];
		$email = $_POST["email"];
		$avatar_remove = $_POST["avatar_remove"];
		
		$user_password = $_POST["user_password"];
		$user_repeat_password = $_POST["user_repeat_password"];
		
		if(\app\models\User::find()->where(["email" => $email])->andWhere(["!=","id",$id_user])->one()){
			return json_encode(array(
				"error" => 1,
				"text" => "L'email inserita è gia associata ad un'altro utente"
			));
			exit;
		}
		
		if($user_password != $user_repeat_password){
			return json_encode(array(
				"error" => 1,
				"text" => "Le password non coincidono"
			));
			exit;
		}
		
		$User = \app\models\User::findOne($id_user);
		$User->name = $name;
		$User->surname = $surname;
		$User->email = $email;
		$User->password_hash = Yii::$app->security->generatePasswordHash($user_password);
		
		if($_FILES['avatar']['name']){

			$type = $_FILES['avatar']['type'];
			$tmp_name = $_FILES['avatar']['tmp_name'];
			$size = $_FILES['avatar']['size'];
			
			if($type == "image/jpeg"){
				$ext = "jpg";
			}
			
			if($type == "image/gif"){
				$ext = "gif";
			}
			
			if($type == "image/png"){
				$ext = "png";
			}
			
			$filename = rand(100000000,999999999);
			
			$User->avatar = "images/users/".$filename.".".$ext;
		
			move_uploaded_file($tmp_name,"images/users/".$filename.".".$ext);
			@chmod("images/users/".$filename.".".$ext, 0777);
			
		}
		
		$User->save(false);
		
		return json_encode(array(
			"error" => 0,
			"msg" => "Il profilo è stato modificato"
		));
		
	}
	
	public function actionGet_profile_user_modal_confirm_delete()
    {
		
		$id_user = $_POST["id_user"];
		$User = \app\models\User::findOne($id_user);
		
		$response = '';
		
		$response .= '
		<div class="modal-dialog modal-lg">
			<div class="modal-content">
				<form class="form" action="#" id="kt_modal_update_user_form">
					<div class="modal-header" id="kt_modal_update_user_header">
						<h3 class="fw-bold">Conferma eliminazione utente</h2>
						<span class="text-gray-400">User id: '.$User->account_id.'</span>
					</div>
					<!--end::Modal header-->
					<!--begin::Modal body-->
					<div class="modal-body py-10 px-lg-7">
					
					Confermando tutti i dati relativi all\'utente <strong>'.$User->name.' '.$User->surname.'</strong> verranno eliminati definitivamente senza possibilità di poterli recuperare.
						
					</div>
					<!--end::Modal body-->
					<!--begin::Modal footer-->
					<div class="modal-footer flex-center">
						<!--begin::Button-->
						<button type="button" class="btn btn-light" data-bs-dismiss="modal">Annulla</button>
						<!--end::Button-->
						<!--begin::Button-->
						<button type="button" data-id-user="'.$id_user.'" class="btn btn-primary kt_modal_update_user_form_delete">Conferma</button>
						<!--end::Button-->
					</div>
					<!--end::Modal footer-->
				</form>
				<!--end::Form-->
			</div>
		</div>
		';
		
		return $response;
		
	}
	
	public function actionGet_profile_user_modal_delete()
    {
		
		$id_user = $_POST["id_user"];
		$User = \app\models\User::findOne($id_user);
		
		\app\models\PteliteExerciseUsers::deleteAll(["id_user" => $id_user]);
		\app\models\PteliteUsersCertifications::deleteAll(["id_user" => $id_user]);
		\app\models\PteliteUsersData::deleteAll(["id_user" => $id_user]);
		\app\models\PteliteUsersDataSaving::deleteAll(["id_user" => $id_user]);
		$User->delete();
	
	}

}
