<?php

namespace App\Http\Controllers;

use App\UserEvent;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

class UserEventController extends Controller
{
    public function __construct()
    {
        $this->middleware(["auth"]);
        $this->middleware(["lang"]);
    }
    /**
     * Update the specified resource in storage.
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function index(Request $request)
    {
        $userevents = UserEvent::join('events', 'events.id', '=', 'user_events.event_id')->orderBY('date' , 'asc')->where('user_id', auth()->user()->id)->get();

        return Response::detect("events.yourevents", [ "userevents" => $userevents ]);
    }

    public function store() {

    }

    /**
     * Update the specified resource in storage.
     *
     * @param UserEvent $eventid
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function create(Request $request)
    {
        // Get written data from events.index
        $data = $request->validate([
            "event_id" => "required|max:255"
        ]);

        // Check the UserEvent table if there is a row that has the user_id AND the event_id
        $getTableInfo = UserEvent::where('user_id', auth()->user()->id)
                         ->where('event_id', $request->event_id)->get();

        // If the row has both, then go back and show an error - Cause you're not allowed to be on the same event twice.
        if (count($getTableInfo) > 0) {
            if (request()->cookie('languagesSetting') == "dk")
                return redirect()->route("events.index")->with('error#' . $request->event_id, '<p class="text-center"><b>Du har allerede tilmeldt dig denne Aktivitet!</b></p>');
            if (request()->cookie('languagesSetting') == "en")
                return redirect()->route("events.index")->with('error#' . $request->event_id, '<p class="text-center"><b>You are already participating in this event!</b></p>');

            return redirect()->route("events.index")->with('error#' . $request->event_id, '<p class="text-center"><b>Du har allerede tilmeldt dig denne Aktivitet!</b></p>');
        }

        // If not, then it keeps going and saves and shows a success message
        $UserEvent = new UserEvent($data);
        $UserEvent->user_id = auth()->user()->id;
        $UserEvent->save();

        if (request()->cookie('languagesSetting') == "dk")
            return redirect()->route("events.index")->with('signup#' . $request->event_id, '<p class="text-center"><b>Du er hermed tilmeldt denne aktivitet!</b></p>');
        if (request()->cookie('languagesSetting') == "en")
            return redirect()->route("events.index")->with('signup#' . $request->event_id, '<p class="text-center"><b>You are now participating in this event!</b></p>');

        return redirect()->route("events.index")->with('signup#' . $request->event_id, '<p class="text-center"><b>Du er hermed tilmeldt denne aktivitet!</b></p>');
    }

    /**
     * Update the specified resource in storage.
     *
     * @param UserEvent $id
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function destroy($id)
    {
        // Check the UserEvent table if there is a row that has the user_id AND the event_id
        //$UserEvent = UserEvent::find($eventid)

        $UserEvent = UserEvent::query()->where('user_id', "=", auth()->user()->id)->where('event_id', "=", $id);

        $UserEvent->delete();

        $JoinedEvents = UserEvent::query()->join('events', 'events.id', '=', 'user_events.event_id')->where('user_id', "=", auth()->user()->id)->get();

        if (request()->cookie('languagesSetting') == "dk")
            return redirect()->route("userevents.index", [ "userevents" => $JoinedEvents ])->with('eventunsubscribed', '<p class="text-center"><b>Du er hermed afmeldt aktiviteten!</b></p>');
        if (request()->cookie('languagesSetting') == "en")
            return redirect()->route("userevents.index", [ "userevents" => $JoinedEvents ])->with('eventunsubscribed', '<p class="text-center"><b>You are no longer participating in this event!</b></p>');

        return redirect()->route("userevents.index", [ "userevents" => $JoinedEvents ])->with('eventunsubscribed', '<p class="text-center"><b>Du er hermed afmeldt aktiviteten!</b></p>');
    }

    public function show()
    {
    }

    public function edit() {

    }

    public function update() {

    }

    public function createajax(Request $request)
    {
        // Get written data from events.index
        $data = $request->validate([
            "event_id" => "required|max:255"
        ]);

        // Check the UserEvent table if there is a row that has the user_id AND the event_id
        $getTableInfo = UserEvent::where('user_id', auth()->user()->id)
            ->where('event_id', $request->event_id)->get();

        // If the row has both, then go back and show an error - Cause you're not allowed to be on the same event twice.
        if (count($getTableInfo) > 0) {
            if (request()->cookie('languagesSetting') == "dk")
                return '<p class="text-center"><b>Du har allerede tilmeldt dig denne Aktivitet!</b></p>';
            if (request()->cookie('languagesSetting') == "en")
                return '<p class="text-center"><b>You are already participating in this event!</b></p>';

            return '<p class="text-center"><b>Du har allerede tilmeldt dig denne Aktivitet!</b></p>';
        }

        // If not, then it keeps going and saves and shows a success message
        $UserEvent = new UserEvent($data);
        $UserEvent->user_id = auth()->user()->id;
        $UserEvent->save();

        if (request()->cookie('languagesSetting') == "dk")
            return '<p class="text-center"><b>Du er hermed tilmeldt denne aktivitet!</b></p>';
        if (request()->cookie('languagesSetting') == "en")
            return '<p class="text-center"><b>You are now participating in this event!</b></p>';

        return '<p class="text-center"><b>Du er hermed tilmeldt denne aktivitet!</b></p>';
    }

    public function createajaxcancel(Request $request)
    {
        // Check the UserEvent table if there is a row that has the user_id AND the event_id
        $UserEvent = UserEvent::where('user_id', auth()->user()->id)
            ->where('event_id', $request->event_id);


        // If you are in the Event, then remove yourself.
        if (count($UserEvent->get()) > 0) {
            // If not, then it keeps going and saves and shows a success message
            $UserEvent->delete();

            if (request()->cookie('languagesSetting') == "dk")
                return '<p class="text-center"><b>Du er hermed afmeldt aktiviteten!</b></p>';
            if (request()->cookie('languagesSetting') == "en")
                return '<p class="text-center"><b>You are no longer participating in this event!</b></p>';

            return '<p class="text-center"><b>Du er hermed afmeldt aktiviteten!</b></p>';
        }
    }
}