From 34becd64a00bb360b10fc394e7ba7a00745fdf94 Mon Sep 17 00:00:00 2001 From: "p.belezov" Date: Sat, 2 Nov 2024 14:12:24 +0800 Subject: [PATCH] =?UTF-8?q?=D0=9C=D1=83=D1=82=D0=B8=D0=BC=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/ComputerController.php | 7 ++- app/Http/Controllers/JobController.php | 11 +++++ app/Models/Computer.php | 2 +- ...24_10_31_091008_create_computers_table.php | 1 + resources/App.vue | 6 ++- resources/store/computers.js | 21 +++++++- resources/views/Computers/CreateForm.vue | 10 +++- resources/views/ComputersList.vue | 48 +++++++++++++++++-- 8 files changed, 94 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/ComputerController.php b/app/Http/Controllers/ComputerController.php index 133e1d6..fd780f7 100644 --- a/app/Http/Controllers/ComputerController.php +++ b/app/Http/Controllers/ComputerController.php @@ -26,6 +26,7 @@ class ComputerController extends Controller 'user_id' => 'required|exists:users,id', 'name' => 'required|string|max:256', 'cpu' => 'nullable|string|max:256', + 'ram' => 'nullable|string|max:256', 'motherboard' => 'nullable|string|max:256', 'gpu' => 'nullable|string|max:256', 'additional_info' => 'nullable|string|max:256', @@ -41,6 +42,7 @@ class ComputerController extends Controller 'id' => 'required|exists:computers,id', 'name' => 'required|string|max:256', 'cpu' => 'nullable|string|max:256', + 'ram' => 'nullable|string|max:256', 'motherboard' => 'nullable|string|max:256', 'gpu' => 'nullable|string|max:256', 'additional_info' => 'nullable|string|max:256', @@ -60,10 +62,11 @@ class ComputerController extends Controller public function destroy(Request $request) { $request->validate([ - 'id' => 'required|exists:wishes,id', + 'id' => 'required|exists:computers,id', ]); + $computer = Computer::find($request->get('id')); + JobController::destroyByComputerId($computer); $destroyed = Computer::destroy($request->get('id')); return response()->json($destroyed, 204); - } } diff --git a/app/Http/Controllers/JobController.php b/app/Http/Controllers/JobController.php index 245260a..647e6d7 100644 --- a/app/Http/Controllers/JobController.php +++ b/app/Http/Controllers/JobController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Job; +use App\Models\Computer; use Illuminate\Http\Request; class JobController extends Controller @@ -53,4 +54,14 @@ class JobController extends Controller $destroyed = Job::destroy($request->get('id')); return response()->json($destroyed, 204); } + + public static function destroyByComputerId(Computer $computer) + { + $computerId = $computer->id; + $jobs = Job::select()->where('computer_id', '=', $computerId)->get(); + foreach ($jobs as $job){ + Job::destroy($job->id); + } + return true; + } } diff --git a/app/Models/Computer.php b/app/Models/Computer.php index 50fbd4e..1a724f5 100644 --- a/app/Models/Computer.php +++ b/app/Models/Computer.php @@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Model; class Computer extends Model { use HasFactory; - protected $fillable = ['user_id', 'name', 'cpu', 'motherboard', 'gpu', 'additional_info']; + protected $fillable = ['user_id', 'name', 'cpu', 'ram', 'motherboard', 'gpu', 'additional_info']; public function user(){ return $this->belongsTo(User::class); diff --git a/database/migrations/2024_10_31_091008_create_computers_table.php b/database/migrations/2024_10_31_091008_create_computers_table.php index 8d1e133..92e6244 100644 --- a/database/migrations/2024_10_31_091008_create_computers_table.php +++ b/database/migrations/2024_10_31_091008_create_computers_table.php @@ -17,6 +17,7 @@ return new class extends Migration $table->foreign('user_id')->references('id')->on('users'); $table->string('name', length: 256); $table->string('cpu', length: 256)->nullable(); + $table->string('ram', length: 256)->nullable(); $table->string('motherboard', length: 256)->nullable(); $table->string('gpu', length: 256)->nullable(); $table->string('additional_info', length: 256)->nullable(); diff --git a/resources/App.vue b/resources/App.vue index 27502af..fb92bfe 100644 --- a/resources/App.vue +++ b/resources/App.vue @@ -44,7 +44,6 @@ @@ -93,6 +92,11 @@ export default { this.userStore.checkUser(); watch(this.userStore, (newStore)=>{ this.authenticated = newStore.user !== null && newStore.user !== undefined; + if (!this.authenticated){ + this.$router.push('/login'); + } else { + this.$router.push('/'); + } }); } } diff --git a/resources/store/computers.js b/resources/store/computers.js index a7f6828..ab7cd9e 100644 --- a/resources/store/computers.js +++ b/resources/store/computers.js @@ -34,7 +34,7 @@ export const useComputersStore = defineStore('computers', { this.computers = response.data; }) }, - async create(name, cpu, motherboard, gpu, additional_info){ + async create(name, cpu, ram, motherboard, gpu, additional_info){ if (this.token === null){ this.checkToken(); } @@ -42,6 +42,7 @@ export const useComputersStore = defineStore('computers', { user_id: useUserStore().user['id'], name: name, cpu: cpu, + ram: ram, motherboard: motherboard, gpu: gpu, additional_info: additional_info, @@ -56,6 +57,24 @@ export const useComputersStore = defineStore('computers', { }).catch(()=>{ return false; }); + }, + async delete(id){ + if (this.token === null){ + this.checkToken(); + } + await axios.post('/api/data/computers/delete', { + id: id, + }, { + headers: { + Authorization: `Bearer ${this.token}`, + token: this.token + }, + }).then(()=>{ + this.getComputerList(useUserStore().user['id']); + return true; + }).catch(()=>{ + return false; + }); } }, }) diff --git a/resources/views/Computers/CreateForm.vue b/resources/views/Computers/CreateForm.vue index 8978d83..78e6fc0 100644 --- a/resources/views/Computers/CreateForm.vue +++ b/resources/views/Computers/CreateForm.vue @@ -16,6 +16,7 @@ export default { return { computerName: null, computerCpu: null, + computerRam: null, computerMotherboard: null, computerGpu: null, computerAdditional: null, @@ -34,6 +35,7 @@ export default { this.computersStore.create( this.computerName, this.computerCpu, + this.computerRam, this.computerMotherboard, this.computerGpu, this.computerAdditional @@ -48,15 +50,19 @@ export default {