<?php

namespace App\Http\Controllers;


use Illuminate\Http\Request;
use App\User;
use App\fireStation;
use App\Rules\Pesel;
use Illuminate\Support\Facades\DB;

class fireFightersController extends Controller
{
    public function create(){

        if(auth()->user() != null && auth()->user()->fireStationID != null ){
//            $users = user::where("fireStationID", auth()->user()->fireStationID)->get();
//            $users = DB::table('users')->where("fireStationID", '=', auth()->user()->fireStationID)->get();
            $users = DB::table('users')->where("fireStationID", '=', auth()->user()->fireStationID)
                    ->leftJoin('ranks', 'users.degreeID', '=', 'ranks.id')
                    ->leftJoin('unitFunctions', 'users.functionID', '=', 'unitFunctions.id')
                    ->select('users.id','users.name', 'users.surname', 'users.PESEL', 'users.email', 'users.statusID', 'ranks.rank', 'unitFunctions.unitFunction')
                ->get();
            return view("fireFighters", ["users" => $users]);
        } else{
            return view('fireFighters');
        }

    }

    public function addForm(){
        if(auth()->user() != null && auth()->user()->fireStationID != null ){
            $fireStation = fireStation::find(auth()->user()->fireStationID);
            if($fireStation-> creatorID == auth()->user()->id){
                //return view('fireFightersAdd');
                $ranks = DB::table('ranks')->pluck("rank","id");
                $unitFunctions = DB::table('unitFunctions')->pluck("unitFunction","id");
                return view('fireFightersAdd',compact('ranks'), compact('unitFunctions'));
            } else return fireFightersController::create();
        } else return view("unit");
    }

    public function editForm($id){
        if(auth()->user() != null && auth()->user()->fireStationID != null ){
            $userFireStation = auth()->user()->fireStationID;
            $fireFighterFireStation = DB::table('users')->where("id", $id)->value('fireStationID');
            $fireStationCreatorId = DB::table('fireStations')->where("id", $userFireStation)->value('creatorID');

            $fireFighter = DB::table('users')->where("id", $id)->first();
            if($userFireStation == $fireFighterFireStation && auth()->user()->id == $fireStationCreatorId) {
                return view('fireFightersEdit', ["fireFighter" => $fireFighter]);
            } else{
                return "Brak dostepu";
            }
        }else{
            return view('unit');
        }
    }

    public function store(){
        $this->validate(request(), [

            'name' => 'required|alpha|min:3|max:45',
            'surname' => 'required|alpha|min:3|max:45',
            'PESEL' => new Pesel,
            'phoneNumber' => 'required|digits:9',
            'email' => 'required|email|unique:users',
            'rank' => 'required',
            'unitFunction' => 'required',
        ],
            [
                'required' => ':attribute jest wymagany(e).',
                'min' => ':attribute musi mieć przynajmniej :min znaki.',
                'max' => ':attribute musi mieć nie więcej niż :max znaków.',
                'alpha' => ':attribute może zawierać tylko litery.',
                'alpha_num' => ':attribute może zawierać tylko litery i cyfry.',
                'digits' => ':attribute musi składać się z :digits cyfr.',
                'unique' =>':attribute jest już zajęty.',
                'confirmed' =>':attribute się nie zgadza.',
                'email' => 'Niepoprawny adres e-mail.'
            ]);


        $request = request();
        $user = User::create([
            'password' => '123',
            'email' => $request-> email,
            'name' => $request-> name,
            'surname' => $request-> surname,
            'PESEL' => $request-> PESEL,
            'phoneNumber' => $request-> phoneNumber,
            'functionID' => $request-> unitFunction,
            'degreeID' => $request-> rank,
            'number' => 'ABC123',
            'fireStationID' => auth()->user()->fireStationID,
            'creatorID' => auth()->user()-> id,
            'changingID' => auth()->user()-> id
        ]);

        return fireFightersController::create();
    }

    public function update(){
        $this->validate(request(), [
            'name' => 'required|alpha|min:3|max:45',
            'surname' => 'required|alpha|min:3|max:45',
            'PESEL' => new Pesel,
            'phoneNumber' => 'required|digits:9',
        ],
            [
                'required' => ':attribute jest wymagany(e).',
                'min' => ':attribute musi mieć przynajmniej :min znaki.',
                'max' => ':attribute musi mieć nie więcej niż :max znaków.',
                'alpha' => ':attribute może zawierać tylko litery.',
                'alpha_num' => ':attribute może zawierać tylko litery i cyfry.',
                'digits' => ':attribute musi składać się z :digits cyfr.',
                'unique' =>':attribute jest już zajęty.',
                'confirmed' =>':attribute się nie zgadza.',
                'email' => 'Niepoprawny adres e-mail.'
            ]);

        $request = request();
        $fireFighter = User::find( $request->userID);
        $fireFighter-> name = $request->name;
        $fireFighter-> surname = $request->surname;
        $fireFighter-> PESEL = $request->PESEL;
        $fireFighter-> phoneNumber = $request->phoneNumber;
        $fireFighter->save();

        return fireFightersController::create();
    }

}