eliteregistry/app/Http/Controllers/ShipsController.php

87 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\EliteShips;
use App\Models\Ships;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
class ShipsController extends Controller
{
public function index(){
$ships = \App\Models\Ships::sortable()->paginate(10);
$eliteShips = EliteShips::all();
$sortedEliteShips = Arr::sort($eliteShips, function($eliteShip)
{
// Sort ships by their name.
return $eliteShip->shipName;
});
return view('ships.index', ['ships'=>$ships,'eliteShips'=>$sortedEliteShips]);
}
public function add(Request $request){
$eliteShips = DB::table('elite_ships');
if($request->input('addShip')) {
try {
$ship = new Ships;
$ship->id = Str::uuid()->toString();
$ship->shipId = strtoupper(request('shipId'));
$ship->shipName = request('shipName');
$ship->shipOwner = request('shipOwner');
$ship->shipType = request('shipType');
// $ship->shipClass = $eliteShips->where('shipName', request('shipType'));
$ship->shipClass = $eliteShips->where('shipName', request('shipType'))->value('shipClass');
$ship->created_at = now();
$ship->save();
}catch(\Exception $e){
session()->flash('error', 'Failed to create record.');
Log::error($e);
return redirect('/');
}
session()->flash('success', 'Record created successfully.');
return redirect('/');
}
if($request->input('deleteShip')) {
try {
DB::table('ships')->where('id', $request->get('deleteShip'))->delete();
}catch(\Exception $e){
Log::error($e);
session()->flash('error', 'Failed to delete record.');
return redirect('/');
}
session()->flash('success', 'Record deleted successfully.');
return redirect('/');
}
if($request->input('editShip')) {
try {
DB::table('ships')->where('id', $request->get('editShip'))->update(array(
'shipId' => strtoupper(request('shipId')),
'shipName' => request('shipName'),
'shipOwner' => request('shipOwner'),
'shipType' => request('shipType'),
// 'shipClass' => $eliteShips->where('shipName', request('shipType')),
'shipClass' => $eliteShips->where('shipName', request('shipType'))->value('shipClass'),
));
}catch(\Exception $e){
Log::error($e);
session()->flash('error', 'Failed to update record. Is it possible that the ship ID is not unique?');
return redirect('/');
}
session()->flash('success', 'Record edited successfully.');
return redirect('/');
}
}
}