<?php

namespace App\Http\Controllers;


use Illuminate\Http\Request;
use App\fireStation;
use DB;
use Illuminate\Support\Facades\View;

class fireStationController extends Controller
{
    public function create(){
        if(auth()->user() != null && auth()->user()->fireStationID != null ){
                $users = DB::table('users')
                    ->where('fireStationID', '=', auth()->user()->fireStationID)
                    ->count();
                $fireStation = fireStation::find(auth()->user()->fireStationID);
                return View::make('unit')->with(compact('fireStation', 'users'));

        } else{
            $voivodeships = DB::table('wojewodztwa')->pluck("name","id");
            return view('unit',compact('voivodeships'));
        }
    }

    public function editForm()
    {
        if(auth()->user() != null && auth()->user()->accessLevel() == 50) //prezes/naczelnik
        {
            $id = auth()->user()->fireStationID;
            $fireStation = DB::table('fireStations')->where("id", $id)->first();
            $voivodeships = DB::table('wojewodztwa')->pluck("name","id");
            return view('fireStationEdit', ["fireStation" => $fireStation], compact('voivodeships'));
        }
        else
            return redirect()->to('/jednostka');
    }

    public function store()
    {
        $this->validate(request(),[
            'fireStationName' => 'required|min:3|max:45',
            'number' => 'required|numeric',
            'voivodeship' => 'required',
            'county' => 'required',
            'community' => 'required',
            'postOffice' => 'required|min:3|max:45',
            'zipCode' => 'required|digits:5',
            'latitude' => ['required', 'regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/'],
            'longitude' => ['required', 'regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'],
            'address' => 'required|min:3|max:45',
            'KRS' => 'required|digits:10',
            'NIP' => 'required|digits:10',
            'phoneNumber' => 'required|digits:9',
            'email' => 'required|email|unique:fireStations',
            ],
        [
            'required' => ':attribute jest wymagany(e).',
            'min' => ':attribute musi mieć przynajmniej :min znaki.',
            'max' => ':attribute musi mieć nie więcej niż :max znaków.',
            'numeric' => ':attribute może zawierać tylko cyfry.',
            'digits' => ':attribute musi składać się z :digits cyfr.',
            'unique' =>':attribute jest już zajęty.',
            'email' => 'Niepoprawny adres e-mail.',
            'latitude.regex' =>':attribute ma zakres od -90.0 do 90.0',
            'longitude.regex' =>':attribute ma zakres od -180.0 do 180.0'
        ]);


        $request = request();

        $voivodeship  = DB::table('wojewodztwa')->select('name')->where('id', $request -> voivodeship)->first();
        $county  = DB::table('powiaty')->select('name')->where('id', $request -> county)->first();
        $community  = DB::table('gminy')->select('name')->where('id', $request -> community)->first();

        $jednostka  = fireStation::create([
            'name' => $request -> fireStationName,
            'number' => $request -> number,
            'voivodeship' => $voivodeship -> name,
            'county' => $county -> name,
            'community' => $community -> name,
            'postOffice' => $request -> postOffice,
            'zipCode' => $request -> zipCode,
            'address' => $request -> address,
            'latitude' => $request -> latitude,
            'longitude' => $request -> longitude,
            'KRS' => $request -> KRS,
            'NIP' => $request -> NIP,
            'phoneNumber' => $request -> phoneNumber,
            'email' => $request -> email,
            'creatorID' =>  auth()->user()->id,
            'changingID' =>  auth()->user()->id
        ]);

        $user = auth()->user();
        $user->fireStationID =  $jednostka->id;
        $user->save();

        return redirect()->to('/jednostka');
    }
    public function update(){
        $this->validate(request(),[
            'fireStationName' => 'required|min:3|max:45',
            'number' => 'required|numeric',
            'voivodeship' => 'required',
            'county' => 'required',
            'community' => 'required',
            'postOffice' => 'required|min:3|max:45',
            'zipCode' => 'required|digits:5',
            'latitude' => ['required', 'regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/'],
            'longitude' => ['required', 'regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'],
            'address' => 'required|min:3|max:45',
            'KRS' => 'required|digits:10',
            'NIP' => 'required|digits:10',
            'phoneNumber' => 'required|digits:9',
            'email' => 'required|email|unique:fireStations,email,'.auth()->user()->fireStationID,  //wymagaj unikalnego adresu email ale pozwól na zachowanie starego adresu
            ],
        [
            'required' => ':attribute jest wymagany(e).',
            'min' => ':attribute musi mieć przynajmniej :min znaki.',
            'max' => ':attribute musi mieć nie więcej niż :max znaków.',
            'numeric' => ':attribute może zawierać tylko cyfry.',
            'digits' => ':attribute musi składać się z :digits cyfr.',
            'unique' =>':attribute jest już zajęty.',
            'email' => 'Niepoprawny adres e-mail.',
            'latitude.regex' =>':attribute ma zakres od -90.0 do 90.0',
            'longitude.regex' =>':attribute ma zakres od -180.0 do 180.0'
        ]);


            $request = request();

            $voivodeship  = DB::table('wojewodztwa')->select('name')->where('id', $request -> voivodeship)->first();
            $county  = DB::table('powiaty')->select('name')->where('id', $request -> county)->first();
            $community  = DB::table('gminy')->select('name')->where('id', $request -> community)->first();

            $fireStation = fireStation::find($request->fireStationID);
            $fireStation-> name = $request-> fireStationName;
            $fireStation-> number = $request-> number;
            $fireStation-> voivodeship = $voivodeship-> name;
            $fireStation-> county = $county-> name;
            $fireStation-> community = $community-> name;
            $fireStation-> postOffice = $request-> postOffice;
            $fireStation-> zipCode = $request-> zipCode;
            $fireStation-> address = $request-> address;
            $fireStation-> latitude = $request-> latitude;
            $fireStation-> longitude = $request-> longitude;
            $fireStation-> KRS = $request-> KRS;
            $fireStation-> NIP = $request-> NIP;
            $fireStation-> phoneNumber = $request-> phoneNumber;
            $fireStation-> email = $request-> email;
            $fireStation-> changingID = auth()->user()->id;
            $fireStation->save();

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

    public function createSingleUnitPDF(){
        if (auth()->user() != null && auth()->user()->fireStationID != null) {
            $request = request();
            $test = new documentCreators();
            $test->createSingleUnitPDF2($request->fireStationID);
        }
    }
}
