File: D:/HostingSpaces/MdnDirecteur/hours.komma.cloud/app/Komma/Settings/Kinds/KindController.php
<?php
namespace App\Komma\Settings\Kinds;
use App\Http\Controllers\Controller;
use App\Komma\Messages\MessageController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class KindController extends Controller
{
private $messageController;
public function __construct(MessageController $messageController)
{
$this->middleware('auth');
// $this->middleware('permission:view_settings');
$this->messageController = $messageController;
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
//get all kinds
$kinds = Kind::where('id', '!=', 0)->get();
//return
return view('settings.kind.index', compact('kinds'));
}
/**
*
*/
public function create()
{
//get reference
$ref = \Request::filled('ref') ? \Request::get('ref') : '';
//return
return view('settings.kind.create', compact('ref'));
}
/**
*
*/
public function edit($kind)
{
//find kind
$kind = Kind::find($kind);
//get reference
$ref = \Request::filled('ref') ? \Request::get('ref') : '';
//make sure to update the kind
$update = true;
//return
return view('settings.kind.edit', compact('kind', 'ref', 'update'));
}
/**
*
*/
public function store(Request $request)
{
//check if deleted exist then restore
if (!empty(Kind::withTrashed()->where('name', $request->name)->get()->first()->deleted_at)) return $this->update($request, Kind::withTrashed()->where('name', $request->name)->get()->first()->id);
$this->validate($request, [
'name' => 'required|unique:kinds',
]);
//store kind
$kind = new Kind();
$kind->name = $request->name;
$kind->save();
//make message + activity
$this->messageController->create("Nieuwe soort", $kind);
// Find redirect route
$redirectRoute = 'instellingen/soorten';
if ($request->filled('ref')) {
$ref = $request->get('ref');
$redirectRoute = str_replace('-', '/', $ref);
}
//redirect
return redirect('/' . $redirectRoute);
}
/**
* @param Request $request
*/
public function update(Request $request, $id)
{
$this->validate($request, [
'name' => 'required',
]);
//update expense unit
$kind = Kind::withTrashed()->find($id);
$kind->name = $request->name;
$kind->deleted_at = null;
$kind->save();
//make message
$this->messageController->changed("soort", $kind);
// Find redirect route
$redirectRoute = 'instellingen/soorten';
if ($request->filled('ref')) {
$ref = $request->get('ref');
$redirectRoute = str_replace('-', '/', $ref);
}
//redirect
return redirect('/' . $redirectRoute);
}
/**
* @param $id
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function destroy($id)
{
//find kind
$kind = Kind::find($id);
//if kind has related items
if (count($kind->Companies)) {
//message
$this->messageController->failed("soort", "klanten");
//return
return redirect('/instellingen/soorten');
} else {
//delete
$kind->delete();
//message + activity
$this->messageController->destroyed("soort", $kind);
}
//return
return redirect('/instellingen/soorten');
}
/**
* @param $kind
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function restore($kind)
{
\DB::transaction(function () use ($kind) {
//restore
$kind = Kind::withTrashed()->find($kind);
$kind->restore();
//message + activity
$this->messageController->recovered("soort", $kind);
});
//return
return redirect('/instellingen/soorten');
}
}