<?php
/**
 * Created by PhpStorm.
 * User: UNTREF
 * Date: 11/10/2017
 * Time: 12:41 PM
 */

namespace App\Http\Controllers;
use App\Profile;
use App\ProfileUser;
use App\Providers\ValidatorServiceProvider;
use App\SettingUser;
use App\Unit;
use App\User;
//use App\Validation;
//use Validator;
use App\Http\Requests\ChangePasswordRequest;
use App\Validation\Validator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Role;


class UserController extends Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->middleware('auth');

    }


    /**
     *redirecciona a la vista cambio de contraseña
     */


    public function solicitarcambioPass()
    {

        return view('auth.changePassword');
    }

    /**
     * @return redirecciona a la vista panel de usuario
     */
    public function panelUser()
    {

        return view('auth.panelUsuario');
    }


    /**
     * @pre busca la unidad en la tabla setting_user ,si no tiene muestra la unidad por default,
     *      también busca las unidades del usuario con teamrole diferente a 2 ,esto es para el select
     * @return retorna la unidad que eligió el usuario ó
     *         la unidad por default en el caso que no tenga una unidad seleccionada
     *          y las unidades del usuario.
     *
     */
    public function controlUnitInit(){

        $user = Auth::user();

        $settingUser = SettingUser::where('user_id',$user->id)->first();
        $unit = $user->userUnits;
        $user_unit = 0;



        if (is_countable($settingUser)
        {
            $user_unit = $settingUser->unit;
        }else{
            $user_unit = Unit::find($unit->first()->unit_id);
        }


        $aux = array(
            'user_unit' =>$user_unit,
            'allunits' =>$unit
        );
        return view('auth.panelUsuario',$aux);
    }


    /**
     * @param Request $request recibe la unidad seleccionada y cambia en la tabla en el caso que exista el usuario,
     *        si el usuario no se encuentra en la tabla setting_user =>crea una nueva fila con sus datos
     * @return  mensaje de estado del cambio de unidad
     */
    public function saveUnit(Request $request){

        if($request->all()){

            if($request->unit_id){

                $aux_settingUser = SettingUser::where('user_id',Auth::user()->id)->first();


                if (is_countable($aux_settingUser))
                {

                    $aux_settingUser->unit_id = $request->unit_id;
                    $aux_settingUser->save();

                }
                elseif (count($aux_settingUser) == 0)
                {
                    SettingUser::create([
                        'unit_id' => $request->unit_id,
                        'user_id' => Auth::user()->id,
                    ]);
                }

                return redirect()->back()->with('message', 'Unidad guardada.');

            }else{

                return redirect()->back()->with('error', 'Debe seleccionar una unidad.');
            }
        }

    }
    /**
     * @param ChangePasswordRequest $request
     * Pre:recibe datos del formulario
     * Post: cambia la contraseña del usuario ,redirecciona a 'home'
     * @return \Illuminate\Http\RedirectResponse
     */

    public function updatePass(ChangePasswordRequest $request)
    {

        if (!Hash::check($request->password, Auth::user()->password)) {
            return back()->with('message', 'La contraseña no es correcta');
        } else {
            if ($request->password_confirmation == $request->password_confirmation2) {

                User::where('email', '=', Auth::user()->email)
                    ->update(['password' => bcrypt($request->password_confirmation2)]);

                return back()->with('message', 'Se cambió con éxito la contraseña');
            }
            else {
                return back()->with('message', 'La contraseña nueva no coinciden');
            }
        }
    }

    public function assignProfileToTeamLeader(){

        $teamLeaderRole =  $teamLeaderRole = Role::where('name', 'teamleader')->first();

        $user_exist = DB::table('user_has_roles')->select('user_id')->where('role_id', $teamLeaderRole->id)->get();



        if (is_countable($user_exist)){

            foreach ($user_exist as $user){


                ProfileUser::create([
                'profile_id' => 4,
                'user_id' =>$user->user_id,
                ]);

            }
        }
    }




}