From 0bc78164f7a4ecfe35aa8a0063093be7307f4f78 Mon Sep 17 00:00:00 2001 From: Nadim Salloum Date: Mon, 2 Aug 2021 11:52:09 +0200 Subject: [PATCH] fixing mistakes --- app/Http/Controllers/CarController.php | 54 +++++++++++-------- app/Http/Controllers/ContactController.php | 2 +- app/Http/Controllers/ContractController.php | 4 +- ...021_05_10_135156_create_contacts_table.php | 2 +- .../2021_05_10_135957_create_cars_table.php | 2 +- database/seeders/DatabaseSeeder.php | 2 +- resources/lang/de_CH/validation.php | 2 + 7 files changed, 40 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/CarController.php b/app/Http/Controllers/CarController.php index d3d47c8..6ea6a64 100644 --- a/app/Http/Controllers/CarController.php +++ b/app/Http/Controllers/CarController.php @@ -304,6 +304,18 @@ class CarController extends Controller public function store(Request $request) { + $car = $this->createCar($request); + + session()->flash('flash.banner', 'Auto erstellt.'); + return Redirect::route('cars.show', $car); + } + + private function createCar($request): Car + { + $request->merge([ + 'vin' => mb_strtoupper($request->get('vin')), + ]); + $request->validate($this->getValidationRules()); $request->merge([ @@ -311,22 +323,12 @@ class CarController extends Controller 'last_check_date' => Carbon::parse($request->get('last_check_date'))->format('Y-m-d'), ]); - $car = Car::create($request->all()); - - session()->flash('flash.banner', 'Auto erstellt.'); - return Redirect::route('cars.show', $car); + return Car::create($request->all()); } public function storeForContract(Request $request) { - $request->validate($this->getValidationRules()); - - $request->merge([ - 'initial_date' => Carbon::parse($request->get('initial_date'))->format('Y-m-d'), - 'last_check_date' => Carbon::parse($request->get('last_check_date'))->format('Y-m-d'), - ]); - - $car = Car::create($request->all()); + $car = $this->createCar($request); return response()->json([ 'id' => $car->id, @@ -344,10 +346,10 @@ class CarController extends Controller private function getValidationRules() { return [ - 'stammnummer' => ['required', 'unique:cars', 'string', 'size:11', 'regex:/[0-9]{3}[.][0-9]{3}[.][0-9]{3}/i'], - 'vin' => ['required', 'unique:cars', 'string', 'size:17'], + 'stammnummer' => ['required', 'unique:cars,stammnummer,NULL,id,deleted_at,NULL', 'string', 'size:11', 'regex:/[0-9]{3}[.][0-9]{3}[.][0-9]{3}/i'], + 'vin' => ['required', 'unique:cars,vin,NULL,id,deleted_at,NULL', 'string', 'size:17'], 'initial_date' => ['required', 'date_format:"d.m.Y"'], - 'last_check_date' => ['date_format:"d.m.Y"'], + 'last_check_date' => ['nullable', 'date_format:"d.m.Y"'], 'colour' => ['nullable', 'max:75'], 'car_model_id' => ['required', 'exists:App\Models\CarModel,id'], 'kilometers' => ['required', 'max:75'], @@ -434,11 +436,22 @@ class CarController extends Controller public function update(Request $request, Car $car) { + $this->updateCar($request, $car); + session()->flash('flash.banner', 'Auto geändert.'); + return Redirect::route('cars.show', $car); + } + + private function updateCar(Request $request, Car $car): bool + { + $request->merge([ + 'vin' => mb_strtoupper($request->get('vin')), + ]); + $request->validate([ - 'stammnummer' => ['required', 'unique:cars,stammnummer,' . $car->id, 'string', 'size:11', 'regex:/[0-9]{3}[.][0-9]{3}[.][0-9]{3}/i'], - 'vin' => ['required', 'unique:cars,vin,' . $car->id, 'string', 'size:17'], + 'stammnummer' => ['required', 'unique:cars,stammnummer,' . $car->id . ',id,deleted_at,NULL', 'string', 'size:11', 'regex:/[0-9]{3}[.][0-9]{3}[.][0-9]{3}/i'], + 'vin' => ['required', 'unique:cars,vin,' . $car->id . ',id,deleted_at,NULL', 'string', 'size:17'], 'initial_date' => ['required', 'date_format:"d.m.Y"'], - 'last_check_date' => ['date_format:"d.m.Y"'], + 'last_check_date' => ['nullable', 'date_format:"d.m.Y"'], 'colour' => ['nullable', 'max:75'], 'car_model_id' => ['required', 'exists:App\Models\CarModel,id'], 'kilometers' => ['required', 'max:75'], @@ -451,10 +464,7 @@ class CarController extends Controller 'last_check_date' => Carbon::parse($request->get('last_check_date'))->format('Y-m-d'), ]); - $car->update($request->all()); - - session()->flash('flash.banner', 'Auto geändert.'); - return Redirect::route('cars.show', $car); + return $car->update($request->all()); } public function destroy(Car $car) diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index 4c49331..19f1526 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -271,7 +271,7 @@ class ContactController extends Controller 'address' => ['nullable', 'max:150'], 'zip' => ['nullable', 'max:6'], 'city' => ['nullable', 'max:75'], - 'country' => ['nullable', 'max:2'], + 'country' => ['nullable', 'max:3'], 'company' => ['nullable', 'max:75'], 'notes' => ['nullable'], ]; diff --git a/app/Http/Controllers/ContractController.php b/app/Http/Controllers/ContractController.php index ffc3d4c..95da4db 100644 --- a/app/Http/Controllers/ContractController.php +++ b/app/Http/Controllers/ContractController.php @@ -149,7 +149,7 @@ class ContractController extends Controller $request->validate([ 'type' => ['required', 'string', Rule::in(ContractType::getValues())], 'date' => ['required', 'date_format:"d.m.Y"'], - 'delivery_date' => ['date_format:"d.m.Y"'], + 'delivery_date' => ['nullable', 'date_format:"d.m.Y"'], 'price' => ['required', 'integer'], 'car_id' => ['required', 'exists:App\Models\Car,id'], 'contact_id' => ['required', 'exists:App\Models\Contact,id'], @@ -216,7 +216,7 @@ class ContractController extends Controller $request->validate([ 'date' => ['required', 'date_format:"d.m.Y"'], - 'delivery_date' => ['date_format:"d.m.Y"'], + 'delivery_date' => ['nullable', 'date_format:"d.m.Y"'], 'price' => ['required', 'integer'], 'insurance_type' => ['nullable', 'string', Rule::in(InsuranceType::getValues())], 'notes' => ['nullable'], diff --git a/database/migrations/2021_05_10_135156_create_contacts_table.php b/database/migrations/2021_05_10_135156_create_contacts_table.php index cc6c8fd..dc21689 100644 --- a/database/migrations/2021_05_10_135156_create_contacts_table.php +++ b/database/migrations/2021_05_10_135156_create_contacts_table.php @@ -21,7 +21,7 @@ class CreateContactsTable extends Migration $table->string('address', 150)->nullable(); $table->string('zip', 6)->nullable(); $table->string('city', 75)->nullable(); - $table->string('country', 2)->nullable(); + $table->string('country', 3)->nullable(); $table->string('company', 75)->nullable(); $table->string('email', 75)->nullable(); $table->text('notes')->nullable(); diff --git a/database/migrations/2021_05_10_135957_create_cars_table.php b/database/migrations/2021_05_10_135957_create_cars_table.php index dde9009..27cbc4e 100644 --- a/database/migrations/2021_05_10_135957_create_cars_table.php +++ b/database/migrations/2021_05_10_135957_create_cars_table.php @@ -15,7 +15,7 @@ class CreateCarsTable extends Migration { Schema::create('cars', function (Blueprint $table) { $table->id(); - $table->string('stammnummer', 11)->unique(); + $table->string('stammnummer', 11); $table->string('vin', 17); $table->string('colour')->nullable(); $table->text('notes')->nullable(); diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 925a0e2..3116f73 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -282,7 +282,7 @@ class DatabaseSeeder extends Seeder ], ], 7 => [ - 'brand' => 'Škoda', + 'brand' => 'Skoda', 'models' => [ 0 => 'Favorit', 1 => 'Felicia', diff --git a/resources/lang/de_CH/validation.php b/resources/lang/de_CH/validation.php index 9ff1d37..ae7337d 100644 --- a/resources/lang/de_CH/validation.php +++ b/resources/lang/de_CH/validation.php @@ -162,7 +162,9 @@ return [ 'vin' => 'Chassisnummer', 'initial_date' => 'Inverkehrssetzung', 'last_check_date' => 'Letzte Prüfung', + 'car_model_id' => 'Automodell', 'kilometers' => 'Kilometerstand', 'price' => 'Preis', + 'delivery_date' => 'Lieferdatum', ], ];