eOSP2/app/Http/Controllers/fireFightersController.php

163 lines
6.4 KiB
PHP
Raw Normal View History

2019-09-25 18:39:01 +02:00
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\fireStation;
use App\Rules\Pesel;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Mail;
2019-09-25 18:39:01 +02:00
class fireFightersController extends Controller
{
public function create(){
if(auth()->user() != null && auth()->user()->accessLevel() >= 20) //prezes,naczelnik,sekretarz
{
2019-10-05 22:29:46 +02:00
// $users = user::where("fireStationID", auth()->user()->fireStationID)->get();
2019-10-06 08:16:10 +02:00
// $users = DB::table('users')->where("fireStationID", '=', auth()->user()->fireStationID)->get();
$users = DB::table('users')->where("fireStationID", '=', auth()->user()->fireStationID)
2019-11-23 15:01:59 +01:00
->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')
->paginate(10);
return view("fireFighters", ["users" => $users]);
}
else
{
return redirect()->to('/userprofile');
}
2019-09-25 18:39:01 +02:00
}
public function addForm(){
if(auth()->user() != null && auth()->user()->accessLevel() == 50 ){ //prezes,naczelnik
2019-09-25 18:39:01 +02:00
$fireStation = fireStation::find(auth()->user()->fireStationID);
if($fireStation-> creatorID == auth()->user()->id){ //if do usunięcia w pzyszłości
$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 redirect()->to('/strazacy');
2019-09-25 18:39:01 +02:00
}
2019-10-05 22:29:46 +02:00
public function editForm($id){
if(auth()->user() != null && auth()->user()->accessLevel() == 50 ){ //prezes,naczelnik
2019-10-05 22:29:46 +02:00
$userFireStation = auth()->user()->fireStationID;
$fireFighterFireStation = DB::table('users')->where("id", $id)->value('fireStationID');
2019-10-06 02:15:16 +02:00
$fireStationCreatorId = DB::table('fireStations')->where("id", $userFireStation)->value('creatorID');
$fireFighter = DB::table('users')->where("id", $id)->first();
if($userFireStation == $fireFighterFireStation && auth()->user()->id == $fireStationCreatorId) { // if do usunięcia w pzyszłości
2019-10-06 02:15:16 +02:00
return view('fireFightersEdit', ["fireFighter" => $fireFighter]);
2019-10-05 22:29:46 +02:00
} else{
return "Brak dostepu";
}
}else{
return redirect()->to('/strazacy');
2019-10-05 22:29:46 +02:00
}
}
2019-09-25 18:39:01 +02:00
public function store(){
$this->validate(request(), [
2020-01-31 03:13:13 +01:00
'name' =>'required|min:2|max:45|regex:/^[\p{L}\040\x27-]+$/',
'surname' =>'required|min:2|max:45|regex:/^[\p{L}\040\x27-]+$/',
2019-09-25 18:39:01 +02:00
'PESEL' => new Pesel,
'phoneNumber' => 'required|digits:9',
'email' => 'required|email|unique:users',
'rank' => 'required',
'unitFunction' => 'required',
2019-09-25 18:39:01 +02:00
],
[
'required' => ':attribute jest wymagany(e).',
'min' => ':attribute musi mieć przynajmniej :min znaki.',
'max' => ':attribute musi mieć nie więcej niż :max znaków.',
2020-01-31 03:13:13 +01:00
'regex' => ':attribute może zawierać tylko litery, spacje, myślniki i apostrofy',
2019-09-25 18:39:01 +02:00
'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();
$confirmation_code = str_random(30);
$password = str_random(10);
2019-09-25 18:39:01 +02:00
$user = User::create([
'password' => $password,
2019-09-25 18:39:01 +02:00
'email' => $request-> email,
'name' => $request-> name,
'surname' => $request-> surname,
'PESEL' => $request-> PESEL,
'phoneNumber' => $request-> phoneNumber,
'functionID' => $request-> unitFunction,
'degreeID' => $request-> rank,
2019-09-25 18:39:01 +02:00
'number' => 'ABC123',
'fireStationID' => auth()->user()->fireStationID,
'creatorID' => auth()->user()-> id,
'changingID' => auth()->user()-> id,
'confirmation_code' => $confirmation_code,
2019-09-25 18:39:01 +02:00
]);
Mail::send('emails.newUserVerification', compact('password', 'confirmation_code'), function($message) {
$message->to(Input::get('email'), Input::get('name'))->subject('Witamy w serwisie eOSP');
});
return fireFightersController::create();
2019-09-25 18:39:01 +02:00
}
2019-10-06 02:15:16 +02:00
public function update(){
$this->validate(request(), [
2020-01-31 03:13:13 +01:00
'name' =>'required|min:2|max:45|regex:/^[\p{L}\040\x27-]+$/',
'surname' =>'required|min:2|max:45|regex:/^[\p{L}\040\x27-]+$/',
2019-10-06 02:15:16 +02:00
'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.',
2020-01-31 03:13:13 +01:00
'regex' => ':attribute może zawierać tylko litery, spacje, myślniki i apostrofy',
2019-10-06 02:15:16 +02:00
'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();
}
2020-01-31 19:07:55 +01:00
public function activate()
{
$request = request();
$user = User::find( $request-> userID);
$user-> statusID = 0;
$user->save();
return redirect()->to('/strazacy');
}
public function deactivate()
{
$request = request();
$user = User::find( $request-> userID);
$user-> statusID = 1;
$user->save();
return redirect()->to('/strazacy');
}
2019-09-25 18:39:01 +02:00
}