<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\vehicle;
use DB;
use Carbon\Carbon;	// formatowanie daty

function formatDate($date)
{
    if ($date == null)
        return $date;
    else
        $fdate =  Carbon::parse($date);
        return $fdate;
}

class VehiclesController extends Controller
{
	public function create(){

        if(auth()->user() != null && auth()->user()->fireStationID != null ){
            $vehicles = DB::table('vehicles')->where("fireStationID", '=', auth()->user()->fireStationID)
                ->whereNull('deleted_at')->get();
            return view("vehicles", ["vehicles" => $vehicles]);
        } else{
            return view('vehicles');
        }

    }

    public function addForm(){
        if(auth()->user() != null && auth()->user()->fireStationID != null ){
                return view('vehiclesAdd');
        } else return view("login");
    }

    public function editForm($id)
    {
        if(auth()->user() != null && auth()->user()->fireStationID != null )
        {

            $vehicle = DB::table('vehicles')->where("id", $id)->first();           
                return view('vehiclesEdit', ["vehicle" => $vehicle]);
        } 
        else
            return "Brak dostepu";            
    }

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

            'name' => 'required',
            'codename' => 'required',
            'productionYear' => 'digits:4|nullable',
            'foamAgent' => 'numeric|nullable',
            'enginePower' => 'numeric|nullable',
            'crewNumber' => 'numeric|nullable',
            'mass' => 'numeric|nullable',
            'chassisPoductionYear' => 'numeric|nullable',
        ],
            [
                'required' => ':attribute jest wymagany(e).',
                'numeric' => ':attribute zawiera tylko cyfry.',
                'digits' => ':attribute musi składać się z :digits cyfr.',
            ]);


        $request = request();
        $vehicle = vehicle::create([
            'fireStationID' => auth()->user()->fireStationID,
            'name' => $request-> name,
            'codename' => $request-> codename,
            'brand' => $request-> brand,
            'registrationNumber' => $request-> registrationNumber,
            'productionYear' => $request-> productionYear,
            'examExpirationDate' => formatDate($request-> examExpirationDate),
            'insuranceExpirationDate' => formatDate($request-> insuranceExpirationDate),
            'driveType' => $request-> driveType,
            'chassisType' => $request-> chassisType,
            'bodyProducer' => $request-> bodyProducer,
            'crewNumber' => $request-> crewNumber,
            'foamAgent' => $request-> foamAgent,
            'enginePower' => $request-> enginePower,
            'mass' => $request-> mass,
            'chassisNumber' => $request-> chassisNumber,
            'engineNumber' => $request-> engineNumber,
            'fuelType' => $request-> fuelType,
            'chassisPoductionYear' => $request-> chassisPoductionYear,
            'entryIntoServiceDate' => formatDate($request-> entryIntoServiceDate),
            'fireEnginePumpDescription' => $request-> fireEnginePumpDescription,
            'status' => $request-> status
        ]);

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


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

            'name' => 'required',
            'codename' => 'required',
            'productionYear' => 'digits:4|nullable',
            'foamAgent' => 'numeric|nullable',
            'enginePower' => 'numeric|nullable',
            'crewNumber' => 'numeric|nullable',
            'mass' => 'numeric|nullable',
            'chassisPoductionYear' => 'numeric|nullable',
        ],
            [
                'required' => ':attribute jest wymagany(e).',
                'numeric' => ':attribute zawiera tylko cyfry.',
                'digits' => ':attribute musi składać się z :digits cyfr.',
            ]);


            $request = request();
            $vehicle = vehicle::find( $request->vehicleID);
            $vehicle-> name = $request-> name;
            $vehicle-> codename = $request-> codename;
            $vehicle-> brand = $request-> brand;
            $vehicle-> registrationNumber = $request-> registrationNumber;
            $vehicle-> productionYear = $request-> productionYear;
            $vehicle-> examExpirationDate = formatDate($request-> examExpirationDate);
            $vehicle-> insuranceExpirationDate = formatDate($request-> insuranceExpirationDate);
            $vehicle-> driveType = $request-> driveType;
            $vehicle-> chassisType = $request-> chassisType;
            $vehicle-> bodyProducer = $request-> bodyProducer;
            $vehicle-> crewNumber = $request-> crewNumber;
            $vehicle-> foamAgent = $request-> foamAgent;
            $vehicle-> enginePower = $request-> enginePower;
            $vehicle-> mass = $request-> mass;
            $vehicle-> chassisNumber = $request-> chassisNumber;
            $vehicle-> engineNumber = $request-> engineNumber;
            $vehicle-> fuelType = $request-> fuelType;
            $vehicle-> chassisPoductionYear = $request-> chassisPoductionYear;
            $vehicle-> entryIntoServiceDate = formatDate($request-> entryIntoServiceDate);
            $vehicle-> fireEnginePumpDescription = $request-> fireEnginePumpDescription;
            $vehicle-> status = $request-> status;
            $vehicle->save();

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

    public function destroy($id)
    {
        vehicle::where('id',$id)->delete();
        return redirect()->to('/pojazdy');
    }

    public function activate()
    {
        $request = request();
        $vehicle = vehicle::find( $request-> vehicleID);
        $vehicle-> status = 1;
        $vehicle->save();
        return redirect()->to('/pojazdy');
    }

    public function deactivate()
    {
        $request = request();
        $vehicle = vehicle::find( $request-> vehicleID);
        $vehicle-> status = 0;
        $vehicle->save();
        return redirect()->to('/pojazdy');
    }
}