Compare commits

...

1 Commits

Author SHA1 Message Date
ShuriZma bdf8824487
update for use with our vehicle.ts 2024-10-02 16:39:29 +02:00
516 changed files with 63868 additions and 1978 deletions

View File

@ -10,6 +10,10 @@ FOOTER_IMAGE=img/header.png # can be any image type. path should start from publ
LANDING_PAGE=false # if set to true a landing page will be added, if false the vehicle list is the landing page
ACCENT_COLOR=red-400 # https://tailwindcss.com/docs/background-color
ADMIN_NAME=Admin
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=superSecureDefaultPassword
KEYBIND_SEPERATOR=; # seperator for keybind combos, thats being used on the db to seperate multiple keys
# VEHICLE LIST

209
_ide_helper_models.php Normal file
View File

@ -0,0 +1,209 @@
<?php
// @formatter:off
/**
* A helper file for your Eloquent Models
* Copy the phpDocs from this file to the correct Model,
* And remove them from this file, to prevent double declarations.
*
* @author Barry vd. Heuvel <barryvdh@gmail.com>
*/
namespace App\Models{
/**
* App\Models\Brand
*
* @property int $brand_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $brand_name
* @property string|null $brand_description
* @method static BrandFactory factory($count = null, $state = [])
* @method static Builder|Manufacturer newModelQuery()
* @method static Builder|Manufacturer newQuery()
* @method static Builder|Manufacturer query()
* @method static Builder|Manufacturer whereBrandDescription($value)
* @method static Builder|Manufacturer whereBrandId($value)
* @method static Builder|Manufacturer whereBrandName($value)
* @method static Builder|Manufacturer whereCreatedAt($value)
* @method static Builder|Manufacturer whereUpdatedAt($value)
* @mixin Eloquent
*/
class Brand extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\FuelType
*
* @property int $fuel_type_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $fuel_type_name
* @property string|null $fuel_type_description
* @property float|null $fuel_type_price
* @method static FuelTypeFactory factory($count = null, $state = [])
* @method static Builder|FuelType newModelQuery()
* @method static Builder|FuelType newQuery()
* @method static Builder|FuelType query()
* @method static Builder|FuelType whereCreatedAt($value)
* @method static Builder|FuelType whereFuelTypeDescription($value)
* @method static Builder|FuelType whereFuelTypeId($value)
* @method static Builder|FuelType whereFuelTypeName($value)
* @method static Builder|FuelType whereFuelTypePrice($value)
* @method static Builder|FuelType whereUpdatedAt($value)
* @mixin Eloquent
*/
class FuelType extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Keybind
*
* @property int $keybind_id
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string $keybind_keys
* @property string $keybind_description
* @method static \Database\Factories\KeybindFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Keybind newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Keybind newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Keybind query()
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereKeybindDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereKeybindId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereKeybindKeys($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereUpdatedAt($value)
*/
class Keybind extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\User
*
* @property int $id
* @property string $name
* @property string $email
* @property Carbon|null $email_verified_at
* @property mixed $password
* @property string|null $remember_token
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read DatabaseNotificationCollection<int, DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read Collection<int, PersonalAccessToken> $tokens
* @property-read int|null $tokens_count
* @method static UserFactory factory($count = null, $state = [])
* @method static Builder|User newModelQuery()
* @method static Builder|User newQuery()
* @method static Builder|User query()
* @method static Builder|User whereCreatedAt($value)
* @method static Builder|User whereEmail($value)
* @method static Builder|User whereEmailVerifiedAt($value)
* @method static Builder|User whereId($value)
* @method static Builder|User whereName($value)
* @method static Builder|User wherePassword($value)
* @method static Builder|User whereRememberToken($value)
* @method static Builder|User whereUpdatedAt($value)
* @mixin Eloquent
*/
class User extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Vehicle
*
* @property int $vehicle_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $name
* @property int $vehicle_storage
* @property int $vehicle_fuel_volume
* @property int $vehicle_seats
* @property float|null $vehicle_price
* @property float|null $vehicle_top_speed
* @property int $vehicle_class_id
* @property int $fuel_type_id
* @property int $brand_id
* @property int $vendor_id
* @method static VehicleFactory factory($count = null, $state = [])
* @method static Builder|Vehicle filter(array $filters)
* @method static Builder|Vehicle newModelQuery()
* @method static Builder|Vehicle newQuery()
* @method static Builder|Vehicle query()
* @method static Builder|Vehicle whereBrandId($value)
* @method static Builder|Vehicle whereCreatedAt($value)
* @method static Builder|Vehicle whereFuelTypeId($value)
* @method static Builder|Vehicle whereName($value)
* @method static Builder|Vehicle whereUpdatedAt($value)
* @method static Builder|Vehicle whereVehicleClassId($value)
* @method static Builder|Vehicle whereVehicleFuelVolume($value)
* @method static Builder|Vehicle whereVehicleId($value)
* @method static Builder|Vehicle whereVehiclePrice($value)
* @method static Builder|Vehicle whereVehicleSeats($value)
* @method static Builder|Vehicle whereVehicleStorage($value)
* @method static Builder|Vehicle whereVehicleTopSpeed($value)
* @method static Builder|Vehicle whereVendorId($value)
* @property string $vehicle_name
* @method static Builder|Vehicle whereVehicleName($value)
* @mixin Eloquent
*/
class Vehicle extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\VehicleClass
*
* @property int $vehicle_class_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vehicle_class_name
* @property string|null $vehicle_class_description
* @method static VehicleClassFactory factory($count = null, $state = [])
* @method static Builder|VehicleClass newModelQuery()
* @method static Builder|VehicleClass newQuery()
* @method static Builder|VehicleClass query()
* @method static Builder|VehicleClass whereCreatedAt($value)
* @method static Builder|VehicleClass whereUpdatedAt($value)
* @method static Builder|VehicleClass whereVehicleClassDescription($value)
* @method static Builder|VehicleClass whereVehicleClassId($value)
* @method static Builder|VehicleClass whereVehicleClassName($value)
* @mixin Eloquent
*/
class VehicleClass extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Vendor
*
* @property int $vendor_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vendor_name
* @property string|null $vendor_description
* @property string|null $vendor_position
* @property float|null $vendor_x
* @property float|null $vendor_y
* @method static VendorFactory factory($count = null, $state = [])
* @method static Builder|Vendor newModelQuery()
* @method static Builder|Vendor newQuery()
* @method static Builder|Vendor query()
* @method static Builder|Vendor whereCreatedAt($value)
* @method static Builder|Vendor whereUpdatedAt($value)
* @method static Builder|Vendor whereVendorDescription($value)
* @method static Builder|Vendor whereVendorId($value)
* @method static Builder|Vendor whereVendorName($value)
* @method static Builder|Vendor whereVendorPosition($value)
* @method static Builder|Vendor whereVendorX($value)
* @method static Builder|Vendor whereVendorY($value)
* @mixin Eloquent
*/
class Vendor extends \Eloquent {}
}

View File

@ -2,11 +2,11 @@
namespace App\Http\Controllers;
use App\Models\Brand;
use App\Http\Requests\StoreBrandRequest;
use App\Http\Requests\UpdateBrandRequest;
use App\Models\DriveTrain;
use App\Http\Requests\StoreDriveTrainRequest;
use App\Http\Requests\UpdateDriveTrainRequest;
class BrandController extends Controller
class DriveTrainController extends Controller
{
/**
* Display a listing of the resource.
@ -27,7 +27,7 @@ class BrandController extends Controller
/**
* Store a newly created resource in storage.
*/
public function store(StoreBrandRequest $request)
public function store(StoreDriveTrainRequest $request)
{
//
}
@ -35,7 +35,7 @@ class BrandController extends Controller
/**
* Display the specified resource.
*/
public function show(Brand $brand)
public function show(DriveTrain $driveTrain)
{
//
}
@ -43,7 +43,7 @@ class BrandController extends Controller
/**
* Show the form for editing the specified resource.
*/
public function edit(Brand $brand)
public function edit(DriveTrain $driveTrain)
{
//
}
@ -51,7 +51,7 @@ class BrandController extends Controller
/**
* Update the specified resource in storage.
*/
public function update(UpdateBrandRequest $request, Brand $brand)
public function update(UpdateDriveTrainRequest $request, DriveTrain $driveTrain)
{
//
}
@ -59,7 +59,7 @@ class BrandController extends Controller
/**
* Remove the specified resource from storage.
*/
public function destroy(Brand $brand)
public function destroy(DriveTrain $driveTrain)
{
//
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use App\Models\Manufacturer;
use App\Http\Requests\StoreManufacturerRequest;
use App\Http\Requests\UpdateManufacturerRequest;
class ManufacturerController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreManufacturerRequest $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(Manufacturer $brand)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Manufacturer $brand)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateManufacturerRequest $request, Manufacturer $brand)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Manufacturer $brand)
{
//
}
}

View File

@ -2,12 +2,13 @@
namespace App\Http\Controllers;
use App\Models\Brand;
use App\Models\Manufacturer;
use App\Models\FuelType;
use App\Models\Vehicle;
use App\Http\Requests\StoreVehicleRequest;
use App\Http\Requests\UpdateVehicleRequest;
use App\Models\VehicleClass;
use App\Models\VehicleType;
use App\Models\Vendor;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@ -20,22 +21,22 @@ class VehicleController extends Controller
public function index()
{
$vehicles = Vehicle::filter(
request(['search', 'vehicle_class_id', 'brand_id', 'fuel_type_id', 'vendor_id'])
request(['search', 'class', 'manufacturer', 'fuelType', 'type'])
)
->paginate(24)->withQueryString();
$brands = Brand::all();
$manufacturers = Manufacturer::all();
$fuelTypes = FuelType::all();
$vehicleClasses = VehicleClass::all();
$vendors = Vendor::all();
$classes = VehicleClass::all();
$types = VehicleType::all();
return response(
view('vehicles.index', [
'vehicles' => $vehicles,
'brands' => $brands,
'manufacturers' => $manufacturers,
'fuelTypes' => $fuelTypes,
'vehicleClasses' => $vehicleClasses,
'vendors' => $vendors,
'vehicleClasses' => $classes,
'types' => $types,
])
);
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use App\Models\VehicleType;
use App\Http\Requests\StoreVehicleTypeRequest;
use App\Http\Requests\UpdateVehicleTypeRequest;
class VehicleTypeController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreVehicleTypeRequest $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(VehicleType $vehicleType)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(VehicleType $vehicleType)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateVehicleTypeRequest $request, VehicleType $vehicleType)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(VehicleType $vehicleType)
{
//
}
}

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreBrandRequest extends FormRequest
class StoreDriveTrainRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreManufacturerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateBrandRequest extends FormRequest
class StoreVehicleTypeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateDriveTrainRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateManufacturerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateVehicleTypeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -1,94 +0,0 @@
<?php
namespace App\Models;
use Database\Factories\BrandFactory;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
/**
* App\Models\Brand
*
* @property int $brand_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $brand_name
* @property string|null $brand_description
* @method static BrandFactory factory($count = null, $state = [])
* @method static Builder|Brand newModelQuery()
* @method static Builder|Brand newQuery()
* @method static Builder|Brand query()
* @method static Builder|Brand whereBrandDescription($value)
* @method static Builder|Brand whereBrandId($value)
* @method static Builder|Brand whereBrandName($value)
* @method static Builder|Brand whereCreatedAt($value)
* @method static Builder|Brand whereUpdatedAt($value)
* @mixin Eloquent
*/
class Brand extends Model
{
use HasFactory;
/**
* @return int
*/
public function getBrandId(): int
{
return $this->brand_id;
}
/**
* @param int $brand_id
*
* @return Brand
*/
public function setBrandId(int $brand_id): Brand
{
$this->brand_id = $brand_id;
return $this;
}
/**
* @return string
*/
public function getBrandName(): string
{
return $this->brand_name;
}
/**
* @param string $brand_name
*
* @return Brand
*/
public function setBrandName(string $brand_name): Brand
{
$this->brand_name = $brand_name;
return $this;
}
/**
* @return string|null
*/
public function getBrandDescription(): ?string
{
return $this->brand_description;
}
/**
* @param string|null $brand_description
*
* @return Brand
*/
public function setBrandDescription(?string $brand_description): Brand
{
$this->brand_description = $brand_description;
return $this;
}
}

43
app/Models/DriveTrain.php Normal file
View File

@ -0,0 +1,43 @@
<?php
namespace App\Models;
use Database\Factories\DriveTrainFactory;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\DriveTrain
*
* @property string $name
* @method static DriveTrainFactory factory($count = null, $state = [])
* @method static Builder|FuelType newModelQuery()
* @method static Builder|FuelType newQuery()
* @method static Builder|FuelType query()
* @method static Builder|FuelType whereName($value)
* @mixin Eloquent
*/
class DriveTrain extends Model
{
use HasFactory;
protected $primaryKey = 'name';
protected $table = 'drive_trains';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function geteName(): string
{
return $this->name;
}
public function setName(string $name): DriveTrain
{
$this->name = $name;
return $this;
}
}

View File

@ -7,110 +7,56 @@ use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
/**
* App\Models\FuelType
*
* @property int $fuel_type_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $fuel_type_name
* @property string|null $fuel_type_description
* @property float|null $fuel_type_price
* @property string $name
* @property float|null $price
* @method static FuelTypeFactory factory($count = null, $state = [])
* @method static Builder|FuelType newModelQuery()
* @method static Builder|FuelType newQuery()
* @method static Builder|FuelType query()
* @method static Builder|FuelType whereCreatedAt($value)
* @method static Builder|FuelType whereFuelTypeDescription($value)
* @method static Builder|FuelType whereFuelTypeId($value)
* @method static Builder|FuelType whereFuelTypeName($value)
* @method static Builder|FuelType whereFuelTypePrice($value)
* @method static Builder|FuelType whereUpdatedAt($value)
* @method static Builder|FuelType whereName($value)
* @method static Builder|FuelType wherePrice($value)
* @mixin Eloquent
*/
class FuelType extends Model
{
use HasFactory;
/**
* @return int
*/
public function getFuelTypeId(): int
protected $primaryKey = 'name';
protected $table = 'fuel_types';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->fuel_type_id;
return $this->name;
}
/**
* @param int $fuel_type_id
*
* @return FuelType
*/
public function setFuelTypeId(int $fuel_type_id): FuelType
public function setName(string $name): FuelType
{
$this->fuel_type_id = $fuel_type_id;
$this->name = $name;
return $this;
}
/**
* @return string
*/
public function getFuelTypeName(): string
public function getPrice(): ?float
{
return $this->fuel_type_name;
return $this->price;
}
/**
* @param string $fuel_type_name
*
* @return FuelType
*/
public function setFuelTypeName(string $fuel_type_name): FuelType
public function setPrice(?float $price): FuelType
{
$this->fuel_type_name = $fuel_type_name;
$this->price = $price;
return $this;
}
/**
* @return string|null
*/
public function getFuelTypeDescription(): ?string
public function getDisplayName(): string
{
return $this->fuel_type_description;
}
/**
* @param string|null $fuel_type_description
*
* @return FuelType
*/
public function setFuelTypeDescription(?string $fuel_type_description): FuelType
{
$this->fuel_type_description = $fuel_type_description;
return $this;
}
/**
* @return float|null
*/
public function getFuelTypePrice(): ?float
{
return $this->fuel_type_price;
}
/**
* @param float|null $fuel_type_price
*
* @return FuelType
*/
public function setFuelTypePrice(?float $fuel_type_price): FuelType
{
$this->fuel_type_price = $fuel_type_price;
return $this;
return ucwords(str_replace('_', ' ', $this->name));
}
}

View File

@ -11,19 +11,19 @@ use Illuminate\Support\Carbon;
/**
* App\Models\Keybind
*
* @property int $keybind_id
* @property int $id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $keybind_keys
* @property string $keybind_description
* @property string $keys
* @property string $description
* @method static KeybindFactory factory($count = null, $state = [])
* @method static Builder|Keybind newModelQuery()
* @method static Builder|Keybind newQuery()
* @method static Builder|Keybind query()
* @method static Builder|Keybind whereCreatedAt($value)
* @method static Builder|Keybind whereKeybindDescription($value)
* @method static Builder|Keybind whereKeybindId($value)
* @method static Builder|Keybind whereKeybindKeys($value)
* @method static Builder|Keybind whereDescription($value)
* @method static Builder|Keybind whereId($value)
* @method static Builder|Keybind whereKeys($value)
* @method static Builder|Keybind whereUpdatedAt($value)
* @mixin \Eloquent
*/
@ -31,62 +31,43 @@ class Keybind extends Model
{
use HasFactory;
/**
* @return int
*/
public function getKeybindId(): int
protected $primaryKey = 'id';
protected $table = 'keybinds';
public $incrementing = false;
protected $guarded = [];
public function getId(): int
{
return $this->keybind_id;
return $this->id;
}
/**
* @param int $keybind_id
*
* @return Keybind
*/
public function setKeybindId(int $keybind_id): Keybind
public function setId(int $id): Keybind
{
$this->keybind_id = $keybind_id;
$this->id = $id;
return $this;
}
/**
* @return string
*/
public function getKeybindKeys(): string
public function getKeys(): string
{
return $this->keybind_keys;
return $this->keys;
}
/**
* @param string $keybind_keys
*
* @return Keybind
*/
public function setKeybindKeys(string $keybind_keys): Keybind
public function setKeys(string $keys): Keybind
{
$this->keybind_keys = $keybind_keys;
$this->keys = $keys;
return $this;
}
/**
* @return string
*/
public function getKeybindDescription(): string
public function getDescription(): string
{
return $this->keybind_description;
return $this->description;
}
/**
* @param string $keybind_description
*
* @return Keybind
*/
public function setKeybindDescription(string $keybind_description): Keybind
public function setDescription(string $description): Keybind
{
$this->keybind_description = $keybind_description;
$this->description = $description;
return $this;
}

View File

@ -0,0 +1,58 @@
<?php
namespace App\Models;
use Database\Factories\ManufacturerFactory;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
/**
* App\Models\Manufacturer
*
* @property string $name
* @property string $displayName
* @method static ManufacturerFactory factory($count = null, $state = [])
* @method static Builder|Manufacturer newModelQuery()
* @method static Builder|Manufacturer newQuery()
* @method static Builder|Manufacturer query()
* @method static Builder|Manufacturer whereName($value)
* @method static Builder|Manufacturer whereDisplayName($value)
* @mixin Eloquent
*/
class Manufacturer extends Model
{
use HasFactory;
protected $primaryKey = 'name';
protected $table = 'manufacturers';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->name;
}
public function setName(string $name): Manufacturer
{
$this->name = $name;
return $this;
}
public function getDisplayName(): string
{
return $this->displayName;
}
public function setDisplayName(string $displayName): Manufacturer
{
$this->displayName = $displayName;
return $this;
}
}

View File

@ -7,58 +7,93 @@ use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
use Schema;
/**
* App\Models\Vehicle
*
* @property int $vehicle_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $name
* @property int $vehicle_storage
* @property int $vehicle_fuel_volume
* @property int $vehicle_seats
* @property float|null $vehicle_price
* @property float|null $vehicle_top_speed
* @property int $vehicle_class_id
* @property int $fuel_type_id
* @property int $brand_id
* @property int $vendor_id
* @property string $model
* @property string $displayName
* @property string $manufacturer
* @property string $description
* @property string $type
* @property string $class
* @property int $isSold
* @property float $price
* @property int $storage
* @property string $fuelType
* @property int $seats
* @property string $hash
* @property string|null $signedHash
* @property string|null $hexHash
* @property float $speed
* @property float $acceleration
* @property float $braking
* @property float $traction
* @property float $length
* @property float $width
* @property float $height
* @property float $topSpeed
* @property int $gears
* @property int $mass
* @property string $driveTrain
* @property float $consumption
* @property int $fuelTankVolume
* @property int $oilTankVolume
* @property string $inspiredBy
* @method static VehicleFactory factory($count = null, $state = [])
* @method static Builder|Vehicle filter(array $filters)
* @method static Builder|Vehicle newModelQuery()
* @method static Builder|Vehicle newQuery()
* @method static Builder|Vehicle query()
* @method static Builder|Vehicle whereBrandId($value)
* @method static Builder|Vehicle whereCreatedAt($value)
* @method static Builder|Vehicle whereFuelTypeId($value)
* @method static Builder|Vehicle whereName($value)
* @method static Builder|Vehicle whereUpdatedAt($value)
* @method static Builder|Vehicle whereVehicleClassId($value)
* @method static Builder|Vehicle whereVehicleFuelVolume($value)
* @method static Builder|Vehicle whereVehicleId($value)
* @method static Builder|Vehicle whereVehiclePrice($value)
* @method static Builder|Vehicle whereVehicleSeats($value)
* @method static Builder|Vehicle whereVehicleStorage($value)
* @method static Builder|Vehicle whereVehicleTopSpeed($value)
* @method static Builder|Vehicle whereVendorId($value)
* @property string $vehicle_name
* @method static Builder|Vehicle whereVehicleName($value)
* @method static Builder|Vehicle whereAcceleration($value)
* @method static Builder|Vehicle whereBraking($value)
* @method static Builder|Vehicle whereClass($value)
* @method static Builder|Vehicle whereConsumption($value)
* @method static Builder|Vehicle whereDescription($value)
* @method static Builder|Vehicle whereDisplayName($value)
* @method static Builder|Vehicle whereDriveTrain($value)
* @method static Builder|Vehicle whereFuelTankVolume($value)
* @method static Builder|Vehicle whereFuelType($value)
* @method static Builder|Vehicle whereGears($value)
* @method static Builder|Vehicle whereHash($value)
* @method static Builder|Vehicle whereHeight($value)
* @method static Builder|Vehicle whereHexHash($value)
* @method static Builder|Vehicle whereInspiredBy($value)
* @method static Builder|Vehicle whereIsSold($value)
* @method static Builder|Vehicle whereLength($value)
* @method static Builder|Vehicle whereManufacturer($value)
* @method static Builder|Vehicle whereMass($value)
* @method static Builder|Vehicle whereModel($value)
* @method static Builder|Vehicle whereOilTankVolume($value)
* @method static Builder|Vehicle wherePrice($value)
* @method static Builder|Vehicle whereSeats($value)
* @method static Builder|Vehicle whereSignedHash($value)
* @method static Builder|Vehicle whereSpeed($value)
* @method static Builder|Vehicle whereStorage($value)
* @method static Builder|Vehicle whereTopSpeed($value)
* @method static Builder|Vehicle whereTraction($value)
* @method static Builder|Vehicle whereType($value)
* @method static Builder|Vehicle whereWidth($value)
* @mixin Eloquent
*/
class Vehicle extends Model
{
use HasFactory;
protected $primaryKey = 'model';
protected $table = 'vehicles';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function scopeFilter(
$query,
array $filters
): void {
$search = $filters['search'] ?? false;
if ($search) {
$query->where('vehicle_name', 'like', '%' . $search . '%');
$query->where('displayName', 'like', '%' . $search . '%');
}
unset($filters['search']);
@ -84,21 +119,17 @@ class Vehicle extends Model
}
switch ($field) {
case 'vehicle_class_id':
$query->join('vehicle_classes', 'vehicles.vehicle_class_id', '=', 'vehicle_classes.vehicle_class_id');
$query->where('vehicle_class_name', '=', $filter);
case 'class':
$query->join('classes', 'vehicles.class', '=', 'classes.name');
$query->where('classes.name', '=', $filter);
break;
case 'brand_id':
$query->join('brands', 'vehicles.brand_id', '=', 'brands.brand_id');
$query->where('brand_name', '=', $filter);
case 'manufacturer':
$query->join('manufacturers', 'vehicles.manufacturer', '=', 'manufacturers.name');
$query->where('manufacturers.name', '=', $filter);
break;
case 'fuel_type_id':
$query->join('fuel_types', 'vehicles.fuel_type_id', '=', 'fuel_types.fuel_type_id');
$query->where('fuel_type_name', '=', $filter);
break;
case 'vendor_id':
$query->join('vendors', 'vehicles.vendor_id', '=', 'vendors.vendor_id');
$query->where('vendor_name', '=', $filter);
case 'fuelType':
$query->join('fuel_types', 'vehicles.fuelType', '=', 'fuel_types.name');
$query->where('fuel_types.name', '=', $filter);
break;
default:
Schema::hasColumn('vehicles', $field);
@ -107,222 +138,350 @@ class Vehicle extends Model
}
}
/**
* @return int
*/
public function getVehicleId(): int
public function getModel(): string
{
return $this->vehicle_id;
return $this->model;
}
/**
* @param int $vehicle_id
*
* @return Vehicle
*/
public function setVehicleId(int $vehicle_id): Vehicle
public function setModel(string $model): Vehicle
{
$this->vehicle_id = $vehicle_id;
$this->model = $model;
return $this;
}
/**
* @return string
*/
public function getVehicleName(): string
public function getDisplayName(): string
{
return $this->vehicle_name;
return $this->displayName;
}
/**
* @param string $vehicle_name
*
* @return Vehicle
*/
public function setVehicleName(string $vehicle_name): Vehicle
public function setDisplayName(string $displayName): Vehicle
{
$this->vehicle_name = $vehicle_name;
$this->displayName = $displayName;
return $this;
}
/**
* @return int
*/
public function getVehicleStorage(): int
public function getManufacturer(): string
{
return $this->vehicle_storage;
return $this->manufacturer;
}
/**
* @param int $vehicle_storage
*
* @return Vehicle
*/
public function setVehicleStorage(int $vehicle_storage): Vehicle
public function setManufacturer(string $manufacturer): Vehicle
{
$this->vehicle_storage = $vehicle_storage;
$this->manufacturer = $manufacturer;
return $this;
}
/**
* @return int
*/
public function getVehicleFuelVolume(): int
public function getDescription(): string
{
return $this->vehicle_fuel_volume;
return $this->description;
}
/**
* @param int $vehicle_fuel_volume
*
* @return Vehicle
*/
public function setVehicleFuelVolume(int $vehicle_fuel_volume): Vehicle
public function setDescription(string $description): Vehicle
{
$this->vehicle_fuel_volume = $vehicle_fuel_volume;
$this->description = $description;
return $this;
}
/**
* @return int
*/
public function getVehicleSeats(): int
public function getType(): string
{
return $this->vehicle_seats;
return $this->type;
}
/**
* @param int $vehicle_seats
*
* @return Vehicle
*/
public function setVehicleSeats(int $vehicle_seats): Vehicle
public function setType(string $type): Vehicle
{
$this->vehicle_seats = $vehicle_seats;
$this->type = $type;
return $this;
}
/**
* @return float|null
*/
public function getVehiclePrice(): ?float
public function getClass(): string
{
return $this->vehicle_price;
return $this->class;
}
/**
* @param float|null $vehicle_price
*
* @return Vehicle
*/
public function setVehiclePrice(?float $vehicle_price): Vehicle
public function setClass(string $class): Vehicle
{
$this->vehicle_price = $vehicle_price;
$this->class = $class;
return $this;
}
/**
* @return float|null
*/
public function getVehicleTopSpeed(): ?float
public function getIsSold(): int
{
return $this->vehicle_top_speed;
return $this->isSold;
}
/**
* @param float|null $vehicle_top_speed
*
* @return Vehicle
*/
public function setVehicleTopSpeed(?float $vehicle_top_speed): Vehicle
public function setIsSold(int $isSold): Vehicle
{
$this->vehicle_top_speed = $vehicle_top_speed;
$this->isSold = $isSold;
return $this;
}
/**
* @return int
*/
public function getVehicleClassId(): int
public function getPrice(): float
{
return $this->vehicle_class_id;
return $this->price;
}
/**
* @param int $vehicle_class_id
*
* @return Vehicle
*/
public function setVehicleClassId(int $vehicle_class_id): Vehicle
public function setPrice(float $price): Vehicle
{
$this->vehicle_class_id = $vehicle_class_id;
$this->price = $price;
return $this;
}
/**
* @return int
*/
public function getFuelTypeId(): int
public function getStorage(): int
{
return $this->fuel_type_id;
return $this->storage;
}
/**
* @param int $fuel_type_id
*
* @return Vehicle
*/
public function setFuelTypeId(int $fuel_type_id): Vehicle
public function setStorage(int $storage): Vehicle
{
$this->fuel_type_id = $fuel_type_id;
$this->storage = $storage;
return $this;
}
/**
* @return int
*/
public function getBrandId(): int
public function getFuelType(): string
{
return $this->brand_id;
return $this->fuelType;
}
/**
* @param int $brand_id
*
* @return Vehicle
*/
public function setBrandId(int $brand_id): Vehicle
public function setFuelType(string $fuelType): Vehicle
{
$this->brand_id = $brand_id;
$this->fuelType = $fuelType;
return $this;
}
/**
* @return int
*/
public function getVendorId(): int
public function getSeats(): int
{
return $this->vendor_id;
return $this->seats;
}
/**
* @param int $vendor_id
*
* @return Vehicle
*/
public function setVendorId(int $vendor_id): Vehicle
public function setSeats(int $seats): Vehicle
{
$this->vendor_id = $vendor_id;
$this->seats = $seats;
return $this;
}
public function getHash(): string
{
return $this->hash;
}
public function setHash(string $hash): Vehicle
{
$this->hash = $hash;
return $this;
}
public function getSignedHash(): ?string
{
return $this->signedHash;
}
public function setSignedHash(?string $signedHash): Vehicle
{
$this->signedHash = $signedHash;
return $this;
}
public function getHexHash(): ?string
{
return $this->hexHash;
}
public function setHexHash(?string $hexHash): Vehicle
{
$this->hexHash = $hexHash;
return $this;
}
public function getSpeed(): float
{
return $this->speed;
}
public function setSpeed(float $speed): Vehicle
{
$this->speed = $speed;
return $this;
}
public function getAcceleration(): float
{
return $this->acceleration;
}
public function setAcceleration(float $acceleration): Vehicle
{
$this->acceleration = $acceleration;
return $this;
}
public function getBraking(): float
{
return $this->braking;
}
public function setBraking(float $braking): Vehicle
{
$this->braking = $braking;
return $this;
}
public function getTraction(): float
{
return $this->traction;
}
public function setTraction(float $traction): Vehicle
{
$this->traction = $traction;
return $this;
}
public function getLength(): float
{
return $this->length;
}
public function setLength(float $length): Vehicle
{
$this->length = $length;
return $this;
}
public function getWidth(): float
{
return $this->width;
}
public function setWidth(float $width): Vehicle
{
$this->width = $width;
return $this;
}
public function getHeight(): float
{
return $this->height;
}
public function setHeight(float $height): Vehicle
{
$this->height = $height;
return $this;
}
public function getTopSpeed(): float
{
return $this->topSpeed;
}
public function setTopSpeed(float $topSpeed): Vehicle
{
$this->topSpeed = $topSpeed;
return $this;
}
public function getGears(): int
{
return $this->gears;
}
public function setGears(int $gears): Vehicle
{
$this->gears = $gears;
return $this;
}
public function getMass(): int
{
return $this->mass;
}
public function setMass(int $mass): Vehicle
{
$this->mass = $mass;
return $this;
}
public function getDriveTrain(): string
{
return $this->driveTrain;
}
public function setDriveTrain(string $driveTrain): Vehicle
{
$this->driveTrain = $driveTrain;
return $this;
}
public function getConsumption(): float
{
return $this->consumption;
}
public function setConsumption(float $consumption): Vehicle
{
$this->consumption = $consumption;
return $this;
}
public function getFuelTankVolume(): int
{
return $this->fuelTankVolume;
}
public function setFuelTankVolume(int $fuelTankVolume): Vehicle
{
$this->fuelTankVolume = $fuelTankVolume;
return $this;
}
public function getOilTankVolume(): int
{
return $this->oilTankVolume;
}
public function setOilTankVolume(int $oilTankVolume): Vehicle
{
$this->oilTankVolume = $oilTankVolume;
return $this;
}
public function getInspiredBy(): string
{
return $this->inspiredBy;
}
public function setInspiredBy(string $inspiredBy): Vehicle
{
$this->inspiredBy = $inspiredBy;
return $this;
}

View File

@ -12,83 +12,38 @@ use Illuminate\Support\Carbon;
/**
* App\Models\VehicleClass
*
* @property int $vehicle_class_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vehicle_class_name
* @property string|null $vehicle_class_description
* @property string $name
* @method static VehicleClassFactory factory($count = null, $state = [])
* @method static Builder|VehicleClass newModelQuery()
* @method static Builder|VehicleClass newQuery()
* @method static Builder|VehicleClass query()
* @method static Builder|VehicleClass whereCreatedAt($value)
* @method static Builder|VehicleClass whereUpdatedAt($value)
* @method static Builder|VehicleClass whereVehicleClassDescription($value)
* @method static Builder|VehicleClass whereVehicleClassId($value)
* @method static Builder|VehicleClass whereVehicleClassName($value)
* @method static Builder|VehicleClass whereName($value)
* @mixin Eloquent
*/
class VehicleClass extends Model
{
use HasFactory;
/**
* @return int
*/
public function getVehicleClassId(): int
protected $primaryKey = 'name';
protected $table = 'classes';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->vehicle_class_id;
return $this->name;
}
/**
* @param int $vehicle_class_id
*
* @return VehicleClass
*/
public function setVehicleClassId(int $vehicle_class_id): VehicleClass
public function setName(string $name): VehicleClass
{
$this->vehicle_class_id = $vehicle_class_id;
$this->name = $name;
return $this;
}
/**
* @return string
*/
public function getVehicleClassName(): string
public function getDisplayName(): string
{
return $this->vehicle_class_name;
}
/**
* @param string $vehicle_class_name
*
* @return VehicleClass
*/
public function setVehicleClassName(string $vehicle_class_name): VehicleClass
{
$this->vehicle_class_name = $vehicle_class_name;
return $this;
}
/**
* @return string|null
*/
public function getVehicleClassDescription(): ?string
{
return $this->vehicle_class_description;
}
/**
* @param string|null $vehicle_class_description
*
* @return VehicleClass
*/
public function setVehicleClassDescription(?string $vehicle_class_description): VehicleClass
{
$this->vehicle_class_description = $vehicle_class_description;
return $this;
return ucwords(str_replace('_', ' ', $this->name));
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Models;
use Database\Factories\VehicleTypeFactory;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\VehicleType
*
* @method static VehicleTypeFactory factory($count = null, $state = [])
* @method static Builder|VehicleType newModelQuery()
* @method static Builder|VehicleType newQuery()
* @method static Builder|VehicleType query()
* @mixin \Eloquent
*/
class VehicleType extends Model
{
use HasFactory;
protected $primaryKey = 'name';
protected $table = 'types';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->name;
}
public function setName(string $name): VehicleType
{
$this->name = $name;
return $this;
}
public function getDisplayName(): string
{
return ucwords(str_replace('_', ' ', $this->name));
}
}

View File

@ -12,148 +12,172 @@ use Illuminate\Support\Carbon;
/**
* App\Models\Vendor
*
* @property int $vendor_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vendor_name
* @property string|null $vendor_description
* @property string|null $vendor_position
* @property float|null $vendor_x
* @property float|null $vendor_y
* @property string $name
* @property string $description
* @property string $manufacturers
* @property string $types
* @property string $classes
* @property string $fuelTypes
* @property float $maxPrice
* @property float $minPrice
* @property float $x
* @property float $y
* @property float $z
* @method static VendorFactory factory($count = null, $state = [])
* @method static Builder|Vendor newModelQuery()
* @method static Builder|Vendor newQuery()
* @method static Builder|Vendor query()
* @method static Builder|Vendor whereCreatedAt($value)
* @method static Builder|Vendor whereUpdatedAt($value)
* @method static Builder|Vendor whereVendorDescription($value)
* @method static Builder|Vendor whereVendorId($value)
* @method static Builder|Vendor whereVendorName($value)
* @method static Builder|Vendor whereVendorPosition($value)
* @method static Builder|Vendor whereVendorX($value)
* @method static Builder|Vendor whereVendorY($value)
* @method static Builder|Vendor whereClasses($value)
* @method static Builder|Vendor whereDescription($value)
* @method static Builder|Vendor whereFuelTypes($value)
* @method static Builder|Vendor whereManufacturers($value)
* @method static Builder|Vendor whereMaxPrice($value)
* @method static Builder|Vendor whereMinPrice($value)
* @method static Builder|Vendor whereName($value)
* @method static Builder|Vendor whereTypes($value)
* @method static Builder|Vendor whereX($value)
* @method static Builder|Vendor whereY($value)
* @method static Builder|Vendor whereZ($value)
* @mixin Eloquent
*/
class Vendor extends Model
{
use HasFactory;
/**
* @return int
*/
public function getVendorId(): int
protected $primaryKey = 'name';
protected $table = 'vendors';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->vendor_id;
return $this->name;
}
/**
* @param int $vendor_id
*
* @return Vendor
*/
public function setVendorId(int $vendor_id): Vendor
public function setName(string $name): Vendor
{
$this->vendor_id = $vendor_id;
$this->name = $name;
return $this;
}
/**
* @return string
*/
public function getVendorName(): string
public function getDescription(): string
{
return $this->vendor_name;
return $this->description;
}
/**
* @param string $vendor_name
*
* @return Vendor
*/
public function setVendorName(string $vendor_name): Vendor
public function setDescription(string $description): Vendor
{
$this->vendor_name = $vendor_name;
$this->description = $description;
return $this;
}
/**
* @return string|null
*/
public function getVendorDescription(): ?string
public function getManufacturers(): string
{
return $this->vendor_description;
return $this->manufacturers;
}
/**
* @param string|null $vendor_description
*
* @return Vendor
*/
public function setVendorDescription(?string $vendor_description): Vendor
public function setManufacturers(string $manufacturers): Vendor
{
$this->vendor_description = $vendor_description;
$this->manufacturers = $manufacturers;
return $this;
}
/**
* @return string|null
*/
public function getVendorPosition(): ?string
public function getTypes(): string
{
return $this->vendor_position;
return $this->types;
}
/**
* @param string|null $vendor_position
*
* @return Vendor
*/
public function setVendorPosition(?string $vendor_position): Vendor
public function setTypes(string $types): Vendor
{
$this->vendor_position = $vendor_position;
$this->types = $types;
return $this;
}
/**
* @return float|null
*/
public function getVendorX(): ?float
public function getClasses(): string
{
return $this->vendor_x;
return $this->classes;
}
/**
* @param float|null $vendor_x
*
* @return Vendor
*/
public function setVendorX(?float $vendor_x): Vendor
public function setClasses(string $classes): Vendor
{
$this->vendor_x = $vendor_x;
$this->classes = $classes;
return $this;
}
/**
* @return float|null
*/
public function getVendorY(): ?float
public function getFuelTypes(): string
{
return $this->vendor_y;
return $this->fuelTypes;
}
/**
* @param float|null $vendor_y
*
* @return Vendor
*/
public function setVendorY(?float $vendor_y): Vendor
public function setFuelTypes(string $fuel_types): Vendor
{
$this->vendor_y = $vendor_y;
$this->fuelTypes = $fuel_types;
return $this;
}
public function getMaxPrice(): float
{
return $this->maxPrice;
}
public function setMaxPrice(float $max_price): Vendor
{
$this->maxPrice = $max_price;
return $this;
}
public function getMinPrice(): float
{
return $this->minPrice;
}
public function setMinPrice(float $min_price): Vendor
{
$this->minPrice = $min_price;
return $this;
}
public function getX(): float
{
return $this->x;
}
public function setX(float $x): Vendor
{
$this->x = $x;
return $this;
}
public function getY(): float
{
return $this->y;
}
public function setY(float $y): Vendor
{
$this->y = $y;
return $this;
}
public function getZ(): float
{
return $this->z;
}
public function setZ(float $z): Vendor
{
$this->z = $z;
return $this;
}

View File

@ -0,0 +1,61 @@
<?php
namespace App\Modules\Vehicles;
use App\Models\Vehicle;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
class VehicleScraper
{
private FilesystemAdapter $filesystem;
public function getVehicles()
{
$this->filesystem = Storage::disk('pubFiles');
if (!$this->filesystem->exists('vehicles.json')) {
dump('File does not exist');
return;
}
$vehicles = json_decode($this->filesystem->get('vehicles.json'));
foreach ($vehicles as $vehicle) {
Vehicle::updateOrCreate(
[
'model' => $vehicle->model,
],
[
'displayName' => $vehicle->displayName,
'manufacturer' => $vehicle->manufacturer,
'description' => $vehicle->description ?? '',
'type' => $vehicle->type,
'class' => $vehicle->class,
'isSold' => $vehicle->isSold,
'price' => $vehicle->price,
'storage' => $vehicle->storage ?? -1,
'fuelType' => $vehicle->fuelType,
'seats' => $vehicle->seats,
'hash' => $vehicle->hash,
'signedHash' => $vehicle->signedHash,
'hexHash' => $vehicle->hexHash,
'speed' => $vehicle->stats->speed,
'acceleration' => $vehicle->stats->acceleration,
'braking' => $vehicle->stats->braking,
'traction' => $vehicle->stats->traction,
'length' => $vehicle->dimensions->length,
'width' => $vehicle->dimensions->width,
'height' => $vehicle->dimensions->height,
'topSpeed' => $vehicle->topSpeed,
'gears' => $vehicle->gears,
'mass' => $vehicle->mass,
'driveTrain' => $vehicle->driveTrain,
'consumption' => $vehicle->consumption,
'fuelTankVolume' => $vehicle->fuelTankVolume,
'oilTankVolume' => $vehicle->oilTankVolume,
'inspiredBy' => $vehicle->inspiredBy,
]
);
}
}
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\DriveTrain;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class DriveTrainPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, DriveTrain $driveTrain): bool
{
//
}
}

View File

@ -2,11 +2,11 @@
namespace App\Policies;
use App\Models\Brand;
use App\Models\Manufacturer;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class BrandPolicy
class ManufacturerPolicy
{
/**
* Determine whether the user can view any models.
@ -19,7 +19,7 @@ class BrandPolicy
/**
* Determine whether the user can view the model.
*/
public function view(User $user, Brand $brand): bool
public function view(User $user, Manufacturer $brand): bool
{
//
}
@ -35,7 +35,7 @@ class BrandPolicy
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Brand $brand): bool
public function update(User $user, Manufacturer $brand): bool
{
//
}
@ -43,7 +43,7 @@ class BrandPolicy
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Brand $brand): bool
public function delete(User $user, Manufacturer $brand): bool
{
//
}
@ -51,7 +51,7 @@ class BrandPolicy
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, Brand $brand): bool
public function restore(User $user, Manufacturer $brand): bool
{
//
}
@ -59,7 +59,7 @@ class BrandPolicy
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, Brand $brand): bool
public function forceDelete(User $user, Manufacturer $brand): bool
{
//
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\User;
use App\Models\VehicleType;
use Illuminate\Auth\Access\Response;
class VehicleTypePolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, VehicleType $vehicleType): bool
{
//
}
}

View File

@ -56,18 +56,17 @@ return [
'throw' => false,
],
'yugiohCards' => [
'driver' => 'local',
'root' =>'public/img/cards/yu-gi-oh/',
'throw' => false,
],
'vehicles' => [
'driver' => 'local',
'root' => 'public/img/vehicles/',
'throw' => false,
],
'pubFiles' => [
'driver' => 'local',
'root' => 'public/',
'throw' => false,
],
],
/*

View File

@ -5,9 +5,9 @@ namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Brand>
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\DriveTrain>
*/
class BrandFactory extends Factory
class DriveTrainFactory extends Factory
{
/**
* Define the model's default state.

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Manufacturer>
*/
class ManufacturerFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\VehicleType>
*/
class VehicleTypeFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -12,15 +12,35 @@ return new class extends Migration
public function up(): void
{
Schema::create('vehicles', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->string('image_path');
$table->integer('storage');
$table->integer('fuel_volume');
$table->integer('seats');
$table->double('price');
$table->double('top_speed');
$table->string('model')->primary();
$table->string('displayName');
$table->string('manufacturer');
$table->text('description');
$table->string('type')->default('unknown');
$table->string('class')->default('unknown');
$table->boolean('isSold')->default(false);
$table->double('price')->default(-1);
$table->integer('storage')->default(-1);
$table->string('fuelType')->default('Unknown');
$table->integer('seats')->default(-1);
$table->string('hash')->unique();
$table->string('signedHash')->nullable()->default(null);
$table->string('hexHash')->nullable()->default(null);
$table->double('speed')->default(-1);
$table->double('acceleration')->default(-1);
$table->double('braking')->default(-1);
$table->double('traction')->default(-1);
$table->double('length')->default(-1);
$table->double('width')->default(-1);
$table->double('height')->default(-1);
$table->double('topSpeed')->default(-1);
$table->integer('gears')->default(-1);
$table->integer('mass')->default(-1);
$table->string('driveTrain');
$table->double('consumption')->default(-1);
$table->integer('fuelTankVolume')->default(-1);
$table->integer('oilTankVolume')->default(-1);
$table->string('inspiredBy')->default('unknown');
});
}

View File

@ -12,13 +12,17 @@ return new class extends Migration
public function up(): void
{
Schema::create('vendors', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->text('description');
$table->string('position');
$table->double('x');
$table->double('y');
$table->string('name')->primary();
$table->text('description')->default('');
$table->string('manufacturers')->default('');
$table->string('types')->default('');
$table->string('classes')->default('');
$table->string('fuel_types')->default('');
$table->double('max_price')->default(0);
$table->double('min_price')->default(0);
$table->double('x')->default(0);
$table->double('y')->default(0);
$table->double('z')->default(0);
});
}

View File

@ -11,11 +11,9 @@ return new class extends Migration
*/
public function up(): void
{
Schema::create('brands', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->text('description');
Schema::create('manufacturers', function (Blueprint $table) {
$table->string('name')->primary();
$table->text('displayName');
});
}
@ -24,6 +22,6 @@ return new class extends Migration
*/
public function down(): void
{
Schema::dropIfExists('brands');
Schema::dropIfExists('manufacturers');
}
};

View File

@ -12,11 +12,8 @@ return new class extends Migration
public function up(): void
{
Schema::create('fuel_types', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->text('description');
$table->double('price');
$table->string('name')->primary();
$table->double('price')->default(0);
});
}

View File

@ -11,11 +11,8 @@ return new class extends Migration
*/
public function up(): void
{
Schema::create('vehicle_classes', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('name');
$table->text('description');
Schema::create('classes', function (Blueprint $table) {
$table->string('name')->primary();
});
}
@ -24,6 +21,6 @@ return new class extends Migration
*/
public function down(): void
{
Schema::dropIfExists('vehicle_classes');
Schema::dropIfExists('classes');
}
};

View File

@ -1,34 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->foreignId('vehicle_class_id')->references('id')->on('vehicle_classes');
$table->foreignId('fuel_type_id')->references('id')->on('fuel_types');
$table->foreignId('brand_id')->references('id')->on('brands');
$table->foreignId('vendor_id')->references('id')->on('vendors');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->dropConstrainedForeignId('vehicle_class_id');
$table->dropConstrainedForeignId('fuel_type_id');
$table->dropConstrainedForeignId('brand_id');
$table->dropConstrainedForeignId('vendor_id');
});
}
};

View File

@ -1,52 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('brands', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
});
Schema::table('fuel_types', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
$table->double('price')->nullable(true)->change();
});
Schema::table('vehicle_classes', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
});
Schema::table('vendors', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
$table->string('position')->nullable(true)->change();
$table->double('x')->nullable(true)->change();
$table->double('y')->nullable(true)->change();
});
Schema::table('vehicles', function (Blueprint $table) {
$table->string('image_path')->nullable(true)->change();
$table->double('price')->nullable(true)->change();
$table->double('top_speed')->nullable(true)->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};

View File

@ -1,97 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->renameColumn('id', 'vehicle_id');
$table->renameColumn('name', 'vehicle_name');
$table->dropColumn('image_path');
$table->renameColumn('storage', 'vehicle_storage');
$table->renameColumn('fuel_volume', 'vehicle_fuel_volume');
$table->renameColumn('seats', 'vehicle_seats');
$table->renameColumn('price', 'vehicle_price');
$table->renameColumn('top_speed', 'vehicle_top_speed');
});
Schema::table('vendors', function (Blueprint $table) {
$table->renameColumn('id', 'vendor_id');
$table->renameColumn('name', 'vendor_name');
$table->renameColumn('description', 'vendor_description');
$table->renameColumn('position', 'vendor_position');
$table->renameColumn('x', 'vendor_x');
$table->renameColumn('y', 'vendor_y');
});
Schema::table('brands', function (Blueprint $table) {
$table->renameColumn('id', 'brand_id');
$table->renameColumn('name', 'brand_name');
$table->renameColumn('description', 'brand_description');
});
Schema::table('vehicle_classes', function (Blueprint $table) {
$table->renameColumn('id', 'vehicle_class_id');
$table->renameColumn('name', 'vehicle_class_name');
$table->renameColumn('description', 'vehicle_class_description');
});
Schema::table('fuel_types', function (Blueprint $table) {
$table->renameColumn('id', 'fuel_type_id');
$table->renameColumn('name', 'fuel_type_name');
$table->renameColumn('description', 'fuel_type_description');
$table->renameColumn('price', 'fuel_type_price');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->renameColumn('vehicle_id', 'id');
$table->string('image_path')->nullable(true);
$table->renameColumn('vehicle_storage', 'storage');
$table->renameColumn('vehicle_fuel_volume', 'fuel_volume');
$table->renameColumn('vehicle_seats', 'seats');
$table->renameColumn('vehicle_price', 'price');
$table->renameColumn('vehicle_top_speed', 'top_speed');
});
Schema::table('vendors', function (Blueprint $table) {
$table->renameColumn('vendor_id', 'id');
$table->renameColumn('vendor_name', 'name');
$table->renameColumn('vendor_description', 'description');
$table->renameColumn('vendor_position', 'position');
$table->renameColumn('vendor_x', 'x');
$table->renameColumn('vendor_y', 'y');
});
Schema::table('brands', function (Blueprint $table) {
$table->renameColumn('brand_id', 'id');
$table->renameColumn('brand_name', 'name');
$table->renameColumn('brand_description', 'description');
});
Schema::table('vehicle_classes', function (Blueprint $table) {
$table->renameColumn('vehicle_class_id', 'id');
$table->renameColumn('vehicle_class_name', 'name');
$table->renameColumn('vehicle_class_description', 'description');
});
Schema::table('fuel_types', function (Blueprint $table) {
$table->renameColumn('fuel_type_id', 'id');
$table->renameColumn('fuel_type_name', 'name');
$table->renameColumn('fuel_type_description', 'description');
$table->renameColumn('fuel_type_price', 'price');
});
}
};

View File

@ -12,10 +12,10 @@ return new class extends Migration
public function up(): void
{
Schema::create('keybinds', function (Blueprint $table) {
$table->id('keybind_id');
$table->id();
$table->timestamps();
$table->string('keybind_keys');
$table->text('keybind_description');
$table->string('keys');
$table->text('description');
});
}

View File

@ -0,0 +1,26 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('drive_trains', function (Blueprint $table) {
$table->string('name')->primary();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('drive_trains');
}
};

View File

@ -0,0 +1,26 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('types', function (Blueprint $table) {
$table->string('name')->primary();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('types');
}
};

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->foreign('manufacturer')->references('name')->on('manufacturers');
$table->foreign('type')->references('name')->on('types');
$table->foreign('class')->references('name')->on('classes');
$table->foreign('fuelType')->references('name')->on('fuel_types');
$table->foreign('driveTrain')->references('name')->on('drive_trains');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->dropForeign('manufacturer');
$table->dropForeign('type');
$table->dropForeign('class');
$table->dropForeign('fuelType');
$table->dropForeign('driveTrain');
});
}
};

View File

@ -5,7 +5,7 @@ namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class BrandSeeder extends Seeder
class DriveTrainSeeder extends Seeder
{
/**
* Run the database seeds.

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class ManufacturerSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class VehicleTypeSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -1,5 +1,5 @@
/*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@ -8228,7 +8228,7 @@ readers do not read off random characters that represent icons */
}
/*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@ -8242,7 +8242,7 @@ readers do not read off random characters that represent icons */
font-style: normal;
font-weight: 400;
font-display: block;
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2?b041b1fa4fe241b234458a565482c4c6) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf?50701fbb8177c2dde530fc83add388ef) format("truetype");
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2?3223dc79c1adee56370b19dca985aa17) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf?d87474231f419288480274125e0e9767) format("truetype");
}
.far,
.fa-regular {
@ -8250,7 +8250,7 @@ readers do not read off random characters that represent icons */
}
/*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@ -8264,7 +8264,7 @@ readers do not read off random characters that represent icons */
font-style: normal;
font-weight: 900;
font-display: block;
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2?b6879d41b0852f01ed5b0216c4c72e11) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf?d75e3fd1eb12e9bd66550e304bdd1ec7) format("truetype");
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2?bb975c966c37455a1bc3c7e29971386c) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf?4a2cd718d7031b732e7610fba99ecf74) format("truetype");
}
.fas,
.fa-solid {
@ -8272,7 +8272,7 @@ readers do not read off random characters that represent icons */
}
/*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
* Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc.
*/
@ -8286,7 +8286,7 @@ readers do not read off random characters that represent icons */
font-style: normal;
font-weight: 400;
font-display: block;
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2?878f31251d960bd6266f20ccdc4d738f) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf?016b4a6cdced82ab3aa1907e3855cfd2) format("truetype");
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2?e033a13ee751afc1860c3bc31ede1065) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf?150de8eaa454d669c405d810c8dbbf14) format("truetype");
}
.fab,
.fa-brands {
@ -8513,10 +8513,6 @@ readers do not read off random characters that represent icons */
content: "\f282";
}
.fa-threads:before {
content: "\e618";
}
.fa-napster:before {
content: "\f3d2";
}
@ -8741,10 +8737,6 @@ readers do not read off random characters that represent icons */
content: "\f28a";
}
.fa-debian:before {
content: "\e60b";
}
.fa-openid:before {
content: "\f19b";
}
@ -9065,10 +9057,6 @@ readers do not read off random characters that represent icons */
content: "\f612";
}
.fa-square-threads:before {
content: "\e619";
}
.fa-hackerrank:before {
content: "\f5f7";
}
@ -9525,10 +9513,6 @@ readers do not read off random characters that represent icons */
content: "\f39d";
}
.fa-x-twitter:before {
content: "\e61b";
}
.fa-cotton-bureau:before {
content: "\f89e";
}
@ -10189,10 +10173,6 @@ readers do not read off random characters that represent icons */
content: "\f2c4";
}
.fa-square-x-twitter:before {
content: "\e61a";
}
.fa-reacteurope:before {
content: "\f75d";
}
@ -10976,7 +10956,7 @@ readers do not read off random characters that represent icons */
border-color: rgb(63 63 70 / var(--tw-bg-opacity))
}
/*
! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com
! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com
*/
/*
@ -11146,8 +11126,6 @@ optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-feature-settings: inherit; /* 1 */
font-variation-settings: inherit; /* 1 */
font-size: 100%; /* 1 */
font-weight: inherit; /* 1 */
line-height: inherit; /* 1 */
@ -11285,14 +11263,6 @@ menu {
padding: 0;
}
/*
Reset default styling for dialogs.
*/
dialog {
padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
@ -11368,7 +11338,7 @@ video {
display: none;
}
[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{
[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
@ -11385,7 +11355,7 @@ video {
--tw-shadow: 0 0 #0000;
}
[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{
[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{
outline: 2px solid transparent;
outline-offset: 2px;
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
@ -11414,11 +11384,6 @@ input::placeholder,textarea::placeholder{
::-webkit-date-and-time-value{
min-height: 1.5em;
text-align: inherit;
}
::-webkit-datetime-edit{
display: inline-flex;
}
::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{
@ -11436,7 +11401,7 @@ select{
print-color-adjust: exact;
}
[multiple],[size]:where(select:not([size="1"])){
[multiple]{
background-image: initial;
background-position: initial;
background-repeat: unset;
@ -13336,6 +13301,18 @@ html{
.select[multiple]{
height: auto;
}
.stats{
display: inline-grid;
--tw-bg-opacity: 1;
background-color: hsl(var(--b1) / var(--tw-bg-opacity));
--tw-text-opacity: 1;
color: hsl(var(--bc) / var(--tw-text-opacity));
border-radius: var(--rounded-box, 1rem);
}
:where(.stats){
grid-auto-flow: column;
overflow-x: auto;
}
.tab{
position: relative;
display: inline-flex;
@ -13609,6 +13586,13 @@ html{
outline: 2px solid hsla(var(--bc) / 0.2);
outline-offset: 2px;
}
.input-error{
--tw-border-opacity: 1;
border-color: hsl(var(--er) / var(--tw-border-opacity));
}
.input-error:focus{
outline: 2px solid hsl(var(--er));
}
.input-disabled,
.input[disabled]{
cursor: not-allowed;
@ -13888,6 +13872,14 @@ html{
[dir="rtl"] .select{
background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%);
}
:where(.stats) > :not([hidden]) ~ :not([hidden]){
--tw-divide-x-reverse: 0;
border-right-width: calc(1px * var(--tw-divide-x-reverse));
border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
--tw-divide-y-reverse: 0;
border-top-width: calc(0px * calc(1 - var(--tw-divide-y-reverse)));
border-bottom-width: calc(0px * var(--tw-divide-y-reverse));
}
.tab:hover{
--tw-text-opacity: 1;
}
@ -14101,6 +14093,9 @@ html{
white-space: nowrap;
border-width: 0;
}
.visible{
visibility: visible;
}
.fixed{
position: fixed;
}
@ -14145,6 +14140,10 @@ html{
margin-left: 0.5rem;
margin-right: 0.5rem;
}
.mx-8{
margin-left: 2rem;
margin-right: 2rem;
}
.mx-auto{
margin-left: auto;
margin-right: auto;
@ -14157,6 +14156,10 @@ html{
margin-top: 0.75rem;
margin-bottom: 0.75rem;
}
.my-5{
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.my-\[1rem\]{
margin-top: 1rem;
margin-bottom: 1rem;
@ -14171,9 +14174,15 @@ html{
.-ml-px{
margin-left: -1px;
}
.-mt-px{
margin-top: -1px;
}
.mb-0{
margin-bottom: 0px;
}
.mb-1{
margin-bottom: 0.25rem;
}
.mb-2{
margin-bottom: 0.5rem;
}
@ -14192,12 +14201,21 @@ html{
.mb-8{
margin-bottom: 2rem;
}
.ml-1{
margin-left: 0.25rem;
}
.ml-12{
margin-left: 3rem;
}
.ml-2{
margin-left: 0.5rem;
}
.ml-3{
margin-left: 0.75rem;
}
.ml-4{
margin-left: 1rem;
}
.ml-\[1rem\]{
margin-left: 1rem;
}
@ -14210,12 +14228,18 @@ html{
.ml-\[4rem\]{
margin-left: 4rem;
}
.mr-1{
margin-right: 0.25rem;
}
.mr-2{
margin-right: 0.5rem;
}
.mr-3{
margin-right: 0.75rem;
}
.mr-4{
margin-right: 1rem;
}
.mr-\[\.5rem\]{
margin-right: .5rem;
}
@ -14264,15 +14288,36 @@ html{
.hidden{
display: none;
}
.h-12{
height: 3rem;
}
.h-14{
height: 3.5rem;
}
.h-16{
height: 4rem;
}
.h-4{
height: 1rem;
}
.h-5{
height: 1.25rem;
}
.h-6{
height: 1.5rem;
}
.h-7{
height: 1.75rem;
}
.h-8{
height: 2rem;
}
.h-\[150px\]{
height: 150px;
}
.h-\[220px\]{
height: 220px;
}
.h-\[2rem\]{
height: 2rem;
}
@ -14315,6 +14360,21 @@ html{
.max-h-\[90vh\]{
max-height: 90vh;
}
.min-h-\[15rem\]{
min-height: 15rem;
}
.min-h-\[25rem\]{
min-height: 25rem;
}
.min-h-\[30rem\]{
min-height: 30rem;
}
.min-h-\[4\.5rem\]{
min-height: 4.5rem;
}
.min-h-\[40\.2rem\]{
min-height: 40.2rem;
}
.min-h-\[40rem\]{
min-height: 40rem;
}
@ -14324,6 +14384,9 @@ html{
.min-h-screen{
min-height: 100vh;
}
.w-1\/5{
width: 20%;
}
.w-14{
width: 3.5rem;
}
@ -14339,6 +14402,12 @@ html{
.w-60{
width: 15rem;
}
.w-8{
width: 2rem;
}
.w-\[1\.5rem\]{
width: 1.5rem;
}
.w-\[11rem\]{
width: 11rem;
}
@ -14375,12 +14444,27 @@ html{
.w-\[5\.2rem\]{
width: 5.2rem;
}
.w-\[560px\]{
width: 560px;
}
.w-\[6\.5rem\]{
width: 6.5rem;
}
.w-auto{
width: auto;
}
.w-full{
width: 100%;
}
.min-w-\[1\.5rem\]{
min-width: 1.5rem;
}
.min-w-\[10rem\]{
min-width: 10rem;
}
.min-w-\[20rem\]{
min-width: 20rem;
}
.min-w-\[6rem\]{
min-width: 6rem;
}
@ -14394,12 +14478,21 @@ html{
min-width: -moz-max-content;
min-width: max-content;
}
.max-w-6xl{
max-width: 72rem;
}
.max-w-7xl{
max-width: 80rem;
}
.max-w-\[25rem\]{
max-width: 25rem;
}
.max-w-\[2rem\]{
max-width: 2rem;
}
.max-w-\[32rem\]{
max-width: 32rem;
}
.max-w-\[40rem\]{
max-width: 40rem;
}
@ -14422,6 +14515,9 @@ html{
.flex-1{
flex: 1 1 0%;
}
.flex-shrink-0{
flex-shrink: 0;
}
.grow{
flex-grow: 1;
}
@ -14464,6 +14560,9 @@ html{
.cursor-pointer{
cursor: pointer;
}
.grid-cols-1{
grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2{
grid-template-columns: repeat(2, minmax(0, 1fr));
}
@ -14568,12 +14667,18 @@ html{
.overflow-y-hidden{
overflow-y: hidden;
}
.whitespace-nowrap{
white-space: nowrap;
}
.rounded{
border-radius: 0.25rem;
}
.rounded-\[1rem\]{
border-radius: 1rem;
}
.rounded-full{
border-radius: 9999px;
}
.rounded-lg{
border-radius: 0.5rem;
}
@ -14613,6 +14718,10 @@ html{
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
.rounded-t-\[1rem\]{
border-top-left-radius: 1rem;
border-top-right-radius: 1rem;
}
.border{
border-width: 1px;
}
@ -14622,6 +14731,9 @@ html{
.border-b-2{
border-bottom-width: 2px;
}
.border-b-4{
border-bottom-width: 4px;
}
.border-l{
border-left-width: 1px;
}
@ -14634,28 +14746,39 @@ html{
.border-t{
border-top-width: 1px;
}
.border-none{
border-style: none;
}
.border-gray-200{
--tw-border-opacity: 1;
border-color: rgb(229 231 235 / var(--tw-border-opacity));
}
.border-gray-300{
--tw-border-opacity: 1;
border-color: rgb(209 213 219 / var(--tw-border-opacity));
}
.border-gray-400{
--tw-border-opacity: 1;
border-color: rgb(156 163 175 / var(--tw-border-opacity));
}
.border-indigo-400{
--tw-border-opacity: 1;
border-color: rgb(129 140 248 / var(--tw-border-opacity));
}
.border-transparent{
border-color: transparent;
}
.border-cyan-600{
--tw-border-opacity: 1;
border-color: rgb(8 145 178 / var(--tw-border-opacity));
}
.border-red-400{
--tw-border-opacity: 1;
border-color: rgb(248 113 113 / var(--tw-border-opacity));
}
.border-transparent{
border-color: transparent;
}
.border-opacity-40{
--tw-border-opacity: 0.4;
}
.bg-gray-100{
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
}
.bg-gray-500{
--tw-bg-opacity: 1;
background-color: rgb(107 114 128 / var(--tw-bg-opacity));
@ -14664,6 +14787,10 @@ html{
--tw-bg-opacity: 1;
background-color: rgb(238 242 255 / var(--tw-bg-opacity));
}
.bg-red-400{
--tw-bg-opacity: 1;
background-color: rgb(248 113 113 / var(--tw-bg-opacity));
}
.bg-red-500{
--tw-bg-opacity: 1;
background-color: rgb(239 68 68 / var(--tw-bg-opacity));
@ -14687,13 +14814,12 @@ html{
--tw-bg-opacity: 1;
background-color: rgb(39 39 42 / var(--tw-bg-opacity));
}
.bg-cyan-600{
--tw-bg-opacity: 1;
background-color: rgb(8 145 178 / var(--tw-bg-opacity));
.fill-red-400{
fill: #f87171;
}
.bg-red-400{
--tw-bg-opacity: 1;
background-color: rgb(248 113 113 / var(--tw-bg-opacity));
.object-cover{
-o-object-fit: cover;
object-fit: cover;
}
.p-2{
padding: 0.5rem;
@ -14727,6 +14853,10 @@ html{
padding-left: 1.25rem;
padding-right: 1.25rem;
}
.px-6{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.px-8{
padding-left: 2rem;
padding-right: 2rem;
@ -14751,6 +14881,10 @@ html{
padding-top: 0.75rem;
padding-bottom: 0.75rem;
}
.py-4{
padding-top: 1rem;
padding-bottom: 1rem;
}
.py-6{
padding-top: 1.5rem;
padding-bottom: 1.5rem;
@ -14758,6 +14892,9 @@ html{
.pb-4{
padding-bottom: 1rem;
}
.pb-6{
padding-bottom: 1.5rem;
}
.pl-3{
padding-left: 0.75rem;
}
@ -14770,6 +14907,9 @@ html{
.pt-2{
padding-top: 0.5rem;
}
.pt-8{
padding-top: 2rem;
}
.text-left{
text-align: left;
}
@ -14782,6 +14922,10 @@ html{
.align-middle{
vertical-align: middle;
}
.text-2xl{
font-size: 1.5rem;
line-height: 2rem;
}
.text-3xl{
font-size: 1.875rem;
line-height: 2.25rem;
@ -14802,6 +14946,10 @@ html{
font-size: 0.875rem;
line-height: 1.25rem;
}
.text-xl{
font-size: 1.25rem;
line-height: 1.75rem;
}
.text-xs{
font-size: 0.75rem;
line-height: 1rem;
@ -14830,6 +14978,12 @@ html{
.leading-5{
line-height: 1.25rem;
}
.leading-7{
line-height: 1.75rem;
}
.tracking-wider{
letter-spacing: 0.05em;
}
.tracking-widest{
letter-spacing: 0.1em;
}
@ -14837,6 +14991,10 @@ html{
--tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity));
}
.text-gray-300{
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity));
}
.text-gray-400{
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity));
@ -14873,6 +15031,10 @@ html{
--tw-text-opacity: 1;
color: rgb(254 202 202 / var(--tw-text-opacity));
}
.text-red-400{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.text-red-600{
--tw-text-opacity: 1;
color: rgb(220 38 38 / var(--tw-text-opacity));
@ -14885,14 +15047,6 @@ html{
--tw-text-opacity: 1;
color: rgb(161 161 170 / var(--tw-text-opacity));
}
.text-cyan-600{
--tw-text-opacity: 1;
color: rgb(8 145 178 / var(--tw-text-opacity));
}
.text-red-400{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.underline{
text-decoration-line: underline;
}
@ -14973,6 +15127,11 @@ html{
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.transition-colors{
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.duration-150{
transition-duration: 150ms;
}
@ -15038,9 +15197,6 @@ html{
.scrollbar-track-zinc-700{
--scrollbar-track: #3f3f46 !important;
}
.scrollbar-thumb-cyan-600{
--scrollbar-thumb: #0891b2 !important;
}
.scrollbar-thumb-red-400{
--scrollbar-thumb: #f87171 !important;
}
@ -15084,6 +15240,10 @@ html{
--tw-bg-opacity: 1;
background-color: rgb(153 27 27 / var(--tw-bg-opacity));
}
.hover\:bg-zinc-600:hover{
--tw-bg-opacity: 1;
background-color: rgb(82 82 91 / var(--tw-bg-opacity));
}
.hover\:bg-zinc-700:hover{
--tw-bg-opacity: 1;
background-color: rgb(63 63 70 / var(--tw-bg-opacity));
@ -15112,6 +15272,10 @@ html{
--tw-text-opacity: 1;
color: rgb(17 24 39 / var(--tw-text-opacity));
}
.hover\:text-red-400:hover{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.hover\:underline:hover{
text-decoration-line: underline;
}
@ -15236,6 +15400,10 @@ html{
--tw-text-opacity: 1;
color: rgb(55 65 81 / var(--tw-text-opacity));
}
.active\:text-red-400:active{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.active\:text-zinc-700:active{
--tw-text-opacity: 1;
color: rgb(63 63 70 / var(--tw-text-opacity));
@ -15245,6 +15413,11 @@ html{
}
@media (prefers-color-scheme: dark){
.dark\:bg-gray-900{
--tw-bg-opacity: 1;
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
}
.dark\:text-gray-400{
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity));
@ -15331,6 +15504,10 @@ html{
align-items: center;
}
.sm\:justify-start{
justify-content: flex-start;
}
.sm\:justify-between{
justify-content: space-between;
}
@ -15352,6 +15529,10 @@ html{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.sm\:pt-0{
padding-top: 0px;
}
}
@media (min-width: 768px){

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,20 @@
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="apple-touch-icon-152x152.png" />
<link rel="icon" type="image/png" href="favicon-196x196.png" sizes="196x196" />
<link rel="icon" type="image/png" href="favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/png" href="favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="favicon-16x16.png" sizes="16x16" />
<link rel="icon" type="image/png" href="favicon-128.png" sizes="128x128" />
<meta name="application-name" content="&nbsp;"/>
<meta name="msapplication-TileColor" content="#FFFFFF" />
<meta name="msapplication-TileImage" content="mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="mstile-70x70.png" />
<meta name="msapplication-square150x150logo" content="mstile-150x150.png" />
<meta name="msapplication-wide310x150logo" content="mstile-310x150.png" />
<meta name="msapplication-square310x310logo" content="mstile-310x310.png" />

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/img/header.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
public/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

BIN
public/img/vehicles/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
public/img/vehicles/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/img/vehicles/100.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/101.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/img/vehicles/102.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
public/img/vehicles/103.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/img/vehicles/104.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/img/vehicles/105.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/106.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
public/img/vehicles/107.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/img/vehicles/108.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/img/vehicles/109.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/img/vehicles/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/110.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/img/vehicles/111.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/img/vehicles/112.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/113.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/114.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/img/vehicles/115.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/img/vehicles/116.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/img/vehicles/117.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/img/vehicles/118.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/img/vehicles/119.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
public/img/vehicles/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/img/vehicles/120.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/img/vehicles/121.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Some files were not shown because too many files have changed in this diff Show More