<?php

namespace App\Http\Controllers;

use App\trainings;
use App\trainingsFirefighters;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Validator;

class trainingsController extends Controller
{
    public function create(){

        if(auth()->user() != null && auth()->user()->fireStationID != null ){
            $trainings = DB::table('trainings')->where("fireStationID", '=', auth()->user()->fireStationID)
                ->whereNull('deleted_at')->get();

            $fireFighters = array();
            foreach($trainings as $training) {
                $id = $training->id;
                $fireFighters[$id] = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID)
                    ->leftJoin('trainingsFirefighters', function ($join) use ($id) {
                        $join->on('users.id', '=', 'trainingsFirefighters.firefighterID');
                        $join->where('trainingsFirefighters.trainingID', '=', $id);
                    })
                    ->select('trainingsFirefighters.*', 'users.name', 'users.surname', 'users.id as userID')
                    ->get();
            }
            return View::make("trainings")->with(compact( "trainings", "fireFighters"));
        } else{
            return view('trainings');
        }
    }

    public function addForm(){

    }

    public function addTrainingsFireFighters($id){

        if(auth()->user() != null && auth()->user()->fireStationID != null ){
            $fireFighters = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )
                ->leftJoin('trainingsFirefighters', function ($join) use($id){
                    $join->on('users.id', '=', 'trainingsFirefighters.firefighterID');
                    $join->where('trainingsFirefighters.trainingID', '=', $id);
                })
                ->select('trainingsFirefighters.*', 'users.name', 'users.surname', 'users.id as userID')
                ->get();

            $training = DB::table('trainings')->where("id", '=', $id)
                ->whereNull('deleted_at')->first();
            return View::make("trainingsAddFireFighters")->with(compact( "training", "fireFighters"));
        } else{
            return view('trainings');
        }
    }

    public function ajaxRequest(Request $request){
        $validator = Validator::make($request->all(), [
            'firefighterID' => 'required',
            'trainingID' => 'required',
            'dateOfComplete' => 'required|date',
            'dateOfExpiry' => 'required|date',
        ],
            [
                'required' => ':attribute jest wymagany(a).',
                'dateOfComplete.required' => 'Data wystawienia szkolenia/badania jest wymagana.',
                'dateOfExpiry.required' => 'Data ważności szkolenia/badania jest wymagana.'
            ]);


        // WALIDACJA
        if ($validator->fails()) {

            if($request->ajax())
            {
                return response()->json(array(
                    'success' => false,
                    'message' => 'There are incorect values in the form!',
                    'errors' => $validator->getMessageBag()->toArray()
                ), 422);
            }

            $this->throwValidationException(

                $request, $validator

            );

        // WYKONANIE ZAPYTAŃ PO POPRAWNEJ WALIDACJI
        } else{

            $trainingFirefighter = trainingsFirefighters::where([
                ['firefighterID', '=', $request->firefighterID],
                ['trainingID', '=', $request-> trainingID]
            ])->first();

            if($trainingFirefighter == null){
                // CREATE
                $trainings = trainingsFirefighters::create([
                    'firefighterID' => $request-> firefighterID,
                    'trainingID' => $request-> trainingID,
                    'dateOfComplete' => $request-> dateOfComplete,
                    'dateOfExpiry' => $request-> dateOfExpiry,
                    'lifetime' => 1,
                ]);
            }else{
                // UPDATE
                $trainingFirefighter->update([
                    'dateOfComplete' => $request-> dateOfComplete,
                    'dateOfExpiry' => $request-> dateOfExpiry,
                ]);
            }

        }



    }

    public function deleteFireFighterTrainings(Request $request){
        $validator = Validator::make($request->all(), [
            'firefighterID' => 'required',
            'trainingID' => 'required',
        ]);

        trainingsFirefighters::where([
            ['fireFighterID', '=', $request->firefighterID],
            ['trainingID', '=', $request->trainingID],
        ])->delete();

    }

    public function update(){

    }

    public function destroy($id)
    {
        trainings::where('id',$id)->delete();

        return redirect()->to('/szkolenia');
    }
}