<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Yajra\DataTables\DataTables;
use Illuminate\Support\Facades\Http;
use App\Models\Azienda;
use App\Models\User;
use Session;

class LoginController extends Controller
{
  public function index(){
    $redmineUser = session('redmine_user');
    if($redmineUser != null){
      // Tento l'autenticazione
      $response = Http::get(session('azienda')->redmine_url.'/my/account.json', [
        'key' => $redmineUser->api_key
      ]);

      if(!$response->ok()){
        return view('login.index');
      }
    }else{
      return view('login.index');
    }


    return redirect('home');
  }

  public function login(Request $request){
    try{
      // cerco azienda
      $azienda = Azienda::find($request->azienda_id);
      $response = Http::get("https://".$request->username.":".$request->password."@".$azienda->redmine_url.'/my/account.json');

      if($response->ok()){
        // Creo l'utente nel db per gestire il profilo
        $redmineUser = $response->object()->user;
        $user = User::where('redmine_id', $redmineUser->id)->first();
        if($user == null){
          $user = new User;
          $user->redmine_id = $redmineUser->id;
          $user->azienda()->associate($azienda);
          $user->save();
        }

        // Salvo i parametri nella sessione
        $request->session()->put('redmine_user', $redmineUser);
        $request->session()->put('azienda', $azienda);
        return redirect('home');
      }else{
        Session::flash('status', "Credenziali non valide");
        return redirect('login');
      }
    }catch(\Exception $e){
      Session::flash('status', "Credenziali non valide o Redmine URL non valido");
      return redirect('login');
    }



  }

  public function logout(Request $request){
    $request->session()->forget('redmine_user');
    return redirect('home');
  }
}
