<?php
/**
 * Created by PhpStorm.
 * User: UNTREF
 * Date: 25/8/2017
 * Time: 12:25 PM
 */

namespace App\Http\Controllers;
use App\Events\CreateUnTag;
use App\Tasktag;
use App\Events\CreateTags;
use App\User;
use function GuzzleHttp\Promise\task;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Response;


class TagController extends Controller
{

    public function __construct()
    {
        parent::__construct();

        $this->middleware('auth');

    }


    /**
     * @param Request $request
     * pre:recibe arreglo con datos a que seran almacenados  en tabla task_tag
     *
     */
    public function store(Request $request)
    {
//        dd($request->all());
        $usersEtiquetados =array();
        
        if($request->all() != null && $request->userId != null) {

            foreach ($request->userId as $user) {

//                if ($user != Auth::user()->id) {//es diferente user a usuario logueado

                    $tasktagExists = Tasktag::where('user_id', '=', $user)  //verifico si existe usuario etiquetado en el mismo tipo y id de tarea
                        ->where('relation_id', '=', $request->taskId)
                        ->where('type', '=', $request->type)
                        ->where('unit_id','=',$request->unit)->first();


                    if($user != null && $tasktagExists != null ){

                        if($tasktagExists->active == 0) {
//                            dd($tasktagExists);
                            $tasktagExists->active = 1;
                            $tasktagExists->save();

                            $userInTags = User::select('name')->where('id', '=', $user)->first()->name;//busco el nombre de $user(usuario a etiquetar)


                            array_push($usersEtiquetados,[ $userInTags,$tasktagExists->id]);//inserta elementos en el arreglo $userEtiquetados

                            event(new CreateTags($tasktagExists));

                        }

                    }elseif($user != null && $tasktagExists == null ) { //si existe user y usuario no esta en query($usuario)

                        $tasktag = new Tasktag(); //creo un nuevo Tasktag
                        $tasktag->relation_id = $request->taskId; //id de tarea
                        $tasktag->user_id = $user; //id usuario etiquetado
                        $tasktag->unit_id = $request->unit;
                        $tasktag->type = $request->type;
                        $tasktag->save();

                        $userInTags = User::select('name')->where('id', '=', $user)->first()->name;//busco el nombre de $user(usuario a etiquetar)


                        array_push($usersEtiquetados,[ $userInTags,$tasktag->id]);//inserta elementos en el arreglo $userEtiquetados

                        event(new CreateTags($tasktag));

                    }

//                }
            }


            return  $usersEtiquetados;
        }


    }   //fin store

    /**
     * @param Request $request ,recibe el id de la etiqueta
     * @return en formato json el id de la etiqueta(Task_tag)
     */
    public  function  unTagUser(Request $request)
    {

        if($request->id_tag){

            $task_tag =Tasktag::find($request->id_tag);
            $task_tag->active = 0;
            $task_tag->save();

            event(new CreateUnTag($task_tag));
        }

        return response()->json([
            'tag_id' => $request->id_tag,
        ]);

    }


}