280 lines
12 KiB
PHP
280 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
use App\User;
|
|
use App\operations;
|
|
use App\operationsMembers;
|
|
use App\vehicle;
|
|
use App\operationsDrivers;
|
|
use App\operationsTrucks;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\View;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class operationsController extends Controller
|
|
{
|
|
//
|
|
public function create(){
|
|
if(auth()->user() != null && auth()->user()->fireStationID != null ){
|
|
$operations = DB::table('operations')->where('operations.fireStationID', "=", auth()->user()->fireStationID)
|
|
->whereNull('deleted_at')
|
|
->leftJoin('users', 'operations.commanderID', '=', 'users.id')
|
|
->select('operations.id', 'operations.operationDate', 'operations.location', 'operations.target', 'operations.dangerType', 'operations.description', 'operations.commanderID', 'operations.fireStationID', 'users.name', 'users.surname')
|
|
->paginate(10);
|
|
$fireFighters = array();
|
|
$trucks = array();
|
|
foreach($operations as $operation){
|
|
$id =$operation->id;
|
|
$fireFighters[$id] = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )
|
|
->leftJoin('operationsMembers', function ($join) use($id){
|
|
$join->on('users.id', '=', 'operationsMembers.memberID');
|
|
$join->where('operationsMembers.operationID', '=', $id);
|
|
})
|
|
->select('users.*', 'operationsMembers.memberID', 'operationsMembers.privateTransport')
|
|
->get();
|
|
|
|
$trucks[$id] = DB::table('vehicles')->where([
|
|
["vehicles.fireStationID", "=", auth()->user()->fireStationID ],
|
|
])
|
|
->leftJoin('operationsTrucks', function ($join) use($id){
|
|
$join->on('vehicles.id', '=', 'operationsTrucks.truckID');
|
|
$join->where('operationsTrucks.operationID', '=', $id);
|
|
})
|
|
->leftJoin('users', 'operationsTrucks.driverID', '=', 'users.id')
|
|
->select('vehicles.*', 'operationsTrucks.truckID', 'operationsTrucks.driverID', 'users.name as driverName', 'users.surname as driverSurname')
|
|
->get();
|
|
}
|
|
|
|
|
|
|
|
// return view('operation', ["operations" => $operations], ["fireFighters" => $fireFighters], ["trucks" => $trucks]);
|
|
return View::make('/operation')->with(compact('operations', 'fireFighters', 'trucks'));
|
|
} else{
|
|
return view('operation');
|
|
}
|
|
}
|
|
|
|
public function addForm(){
|
|
if(auth()->user() != null && auth()->user()->fireStationID != null ){
|
|
$fireFighters = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )->get();
|
|
$vehicles = DB::table('vehicles')->where([
|
|
["fireStationID", '=', auth()->user()->fireStationID],
|
|
["vehicles.status", "=", 1],
|
|
["vehicles.deleted_at", "=", null],
|
|
])
|
|
->get();
|
|
return view("operationAdd", ["fireFighters" => $fireFighters], ["vehicles" => $vehicles]);
|
|
} else return view("unit");
|
|
}
|
|
|
|
|
|
|
|
public function editForm($id){
|
|
if(auth()->user() != null && auth()->user()->fireStationID != null ){
|
|
|
|
// $fireFighters = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )->get();
|
|
$vehicles = DB::table('vehicles')->where([
|
|
["fireStationID", '=', auth()->user()->fireStationID],
|
|
["vehicles.deleted_at", "=", null]
|
|
])
|
|
->get();
|
|
$operation = DB::table('operations')->where('operations.id', '=', $id)->first();
|
|
$operationMembers = DB::table('operationsMembers')->where('operationID', '=', $id)->get();
|
|
// $operation = DB::table('operations')->where('operations.id', '=', $id)
|
|
// ->leftJoin('users', 'operations.commanderID', '=', 'users.id')
|
|
// ->select('operations.id', 'operations.operationDate', 'operations.location', 'operations.target', 'operations.dangerType', 'operations.description', 'operations.commanderID', 'operations.fireStationID', 'users.id', 'users.name', 'users.surname')
|
|
// ->get();
|
|
$fireFighters = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )
|
|
->leftJoin('operationsMembers', function ($join) use($id){
|
|
$join->on('users.id', '=', 'operationsMembers.memberID');
|
|
$join->where('operationsMembers.operationID', '=', $id);
|
|
})
|
|
->select('users.*', 'operationsMembers.memberID', 'operationsMembers.privateTransport')
|
|
->get();
|
|
|
|
|
|
// $operationsTrucks = DB::table('vehicles')->where("vehicles.fireStationID", "=", auth()->user()->fireStationID )
|
|
// ->leftJoin('operationsTrucks', function ($join) use($id){
|
|
// $join->on('vehicles.id', '=', 'operationsTrucks.truckID');
|
|
// $join->where('operationsTrucks.operationID', '=', $id);
|
|
// })
|
|
// ->leftJoin('users', 'operationsTrucks.driverID', '=', 'users.id')
|
|
// ->select('vehicles.*', 'operationsTrucks.truckID', 'operationsTrucks.driverID', 'users.name as driverName', 'users.surname as driverSurname')
|
|
// ->get();
|
|
|
|
$operationsTrucks = DB::table('operationsTrucks')->where("operationsTrucks.operationID", "=", $id)
|
|
->join('users', 'operationsTrucks.driverID', '=', 'users.ID')
|
|
->join('vehicles', 'operationsTrucks.truckID', '=', 'vehicles.ID')
|
|
->select('vehicles.*', 'operationsTrucks.truckID', 'operationsTrucks.driverID', 'users.name as driverName', 'users.surname as driverSurname')
|
|
->get();
|
|
|
|
// if($userFireStation == $fireFighterFireStation && auth()->user()->id == $fireStationCreatorId) {
|
|
// return view('operationEdit', ["operation" => $operation], ["fireFighters" => $fireFighters], ["operationMembers" => $operationMembers] );
|
|
return View::make('/operationEdit')->with(compact('fireFighters','operation', 'operationMembers', 'vehicles', 'operationsTrucks'));
|
|
// } else{
|
|
// return "Brak dostepu";
|
|
// }
|
|
} else{
|
|
return view('unit');
|
|
}
|
|
}
|
|
|
|
public function store(){
|
|
$this->validate(request(),[
|
|
'operationDate' => 'required',
|
|
'operationLocation' => 'required|max:100',
|
|
'operationTarget' => 'required|max:100',
|
|
'operationDangerType' => 'required|max:100',
|
|
'operationDescription' => 'required|max:250',
|
|
'operationLeader' => 'required',
|
|
'operationDriver.*' => 'required',
|
|
'operationVehicle.*' => 'required',
|
|
'attendance.*' => 'required',
|
|
'transport.*' => 'required',
|
|
],
|
|
[
|
|
'required' => ':attribute jest wymagany(e)',
|
|
'max' => ':attribute musi mieć nie więcej niż :max znaków.'
|
|
]);
|
|
|
|
//
|
|
$request = request();
|
|
$operations = operations::create([
|
|
'operationDate' => $request-> operationDate,
|
|
'location' => $request-> operationLocation,
|
|
'target' => $request-> operationTarget,
|
|
'dangerType' => $request-> operationDangerType,
|
|
'description' => $request-> operationDescription,
|
|
'commanderID' => $request-> operationLeader,
|
|
'fireStationID' => auth()->user()->fireStationID,
|
|
]);
|
|
|
|
// Add trucks
|
|
$operationDriver = $request ->operationDriver;
|
|
$operationVehicle = $request -> operationVehicle;
|
|
for($count = 0; $count < count($operationDriver); $count++){
|
|
$operationsTrucks = operationsTrucks::create([
|
|
'operationID' => $operations->id,
|
|
'truckID' => $operationDriver[$count],
|
|
'driverID' => $operationVehicle[$count]
|
|
]);
|
|
}
|
|
|
|
|
|
|
|
// Add members
|
|
$attendance = $request-> attendance;
|
|
$transport = $request-> transport;
|
|
|
|
// Count of firefighters (need for length of array)
|
|
$fireFightersCount = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )->count();
|
|
for($count = 0; $count < $fireFightersCount; $count++){
|
|
|
|
// Check privateTransport checklist
|
|
$privateTransport = 2;
|
|
if(isset($transport[$count])){
|
|
$privateTransport = 1;
|
|
} else{
|
|
$privateTransport = 0;
|
|
}
|
|
|
|
if(isset($attendance[$count])){
|
|
$operationsMembers = operationsMembers::create([
|
|
'operationID' => $operations->id,
|
|
'memberID' => $attendance[$count],
|
|
'privateTransport' => $privateTransport,
|
|
]);
|
|
};
|
|
}
|
|
|
|
return operationsController::create();
|
|
}
|
|
|
|
public function update(){
|
|
$this->validate(request(),[
|
|
'operationDate' => 'required',
|
|
'operationLocation' => 'required|max:100',
|
|
'operationTarget' => 'required|max:100',
|
|
'operationDangerType' => 'required|max:100',
|
|
'operationDescription' => 'required|max:250',
|
|
'operationLeader' => 'required',
|
|
'operationDriver.*' => 'required',
|
|
'operationVehicle.*' => 'required',
|
|
'attendance.*' => 'required',
|
|
'transport.*' => 'required',
|
|
],
|
|
[
|
|
'required' => ':attribute jest wymagany(e)',
|
|
'max' => ':attribute musi mieć nie więcej niż :max znaków.'
|
|
]);
|
|
|
|
|
|
$request = request();
|
|
$operation = operations::where('id', $request->operationID)->update(array(
|
|
'operationDate' => $request-> operationDate,
|
|
'location' => $request-> operationLocation,
|
|
'target' => $request-> operationTarget,
|
|
'dangerType' => $request-> operationDangerType,
|
|
'description' => $request-> operationDescription,
|
|
'commanderID' => $request-> operationLeader,
|
|
'fireStationID' => auth()->user()->fireStationID
|
|
));
|
|
|
|
|
|
operationsTrucks::where('operationID', $request->operationID)->delete();
|
|
|
|
// Add trucks
|
|
$operationDriver = $request ->operationDriver;
|
|
$operationVehicle = $request -> operationVehicle;
|
|
for($count = 0; $count < count($operationDriver); $count++){
|
|
$operationsTrucks = operationsTrucks::create([
|
|
'operationID' => $request->operationID,
|
|
'truckID' => $operationVehicle[$count],
|
|
'driverID' => $operationDriver[$count]
|
|
]);
|
|
}
|
|
|
|
operationsMembers::where('operationID', $request->operationID)->delete();
|
|
|
|
|
|
// Add members
|
|
$attendance = $request-> attendance;
|
|
$transport = $request-> transport;
|
|
|
|
// Count of firefighters (need for length of array)
|
|
$fireFightersCount = DB::table('users')->where("fireStationID", "=", auth()->user()->fireStationID )->count();
|
|
for($count = 0; $count < $fireFightersCount; $count++){
|
|
|
|
// Check privateTransport checklist
|
|
$privateTransport = 2;
|
|
if(isset($transport[$count])){
|
|
$privateTransport = 1;
|
|
} else{
|
|
$privateTransport = 0;
|
|
}
|
|
|
|
if(isset($attendance[$count])){
|
|
$operationsMembers = operationsMembers::create([
|
|
'operationID' => $request->operationID,
|
|
'memberID' => $attendance[$count],
|
|
'privateTransport' => $privateTransport,
|
|
]);
|
|
};
|
|
}
|
|
|
|
return operationsController::create();
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
operations::find($id)->delete($id);
|
|
|
|
return response()->json([
|
|
'success' => 'Record deleted successfully!'
|
|
]);
|
|
}
|
|
}
|