From 22c5f7bb54a46a0032ebebcd789cf6b037726837 Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Tue, 10 May 2022 12:19:58 +0200 Subject: [PATCH] wip --- .../Http/Requests/ResumeRequest.php | 2 +- .../Http/Resources/ResumeResource.php | 4 ++ database/factories/ResumeFactory.php | 1 - ...2022_05_09_103339_create_resumes_table.php | 1 - resources/js/Pages/Resumes/Create.vue | 62 +++++++++++----- resources/js/Pages/Resumes/Edit.vue | 70 ++++++++++++------- resources/js/Pages/Resumes/Index.vue | 47 ++++++++++--- resources/js/Shared/Forms/Combobox.vue | 9 +-- resources/js/Shared/Forms/DynamicSection.vue | 1 - .../js/Shared/Forms/MultipleCombobox.vue | 42 +++++++---- 10 files changed, 163 insertions(+), 76 deletions(-) diff --git a/app/Infrastructure/Http/Requests/ResumeRequest.php b/app/Infrastructure/Http/Requests/ResumeRequest.php index 4ae5920..72f3b6b 100644 --- a/app/Infrastructure/Http/Requests/ResumeRequest.php +++ b/app/Infrastructure/Http/Requests/ResumeRequest.php @@ -30,7 +30,7 @@ class ResumeRequest extends FormRequest "technologies.*.level" => ["required", Rule::in(1, 2, 3, 4, 5)], "projects.*.description" => ["required"], - "projects.*.technologies" => ["required"], + "projects.*.technologies" => ["exists:technologies,name", "distinct"], "projects.*.startDate" => ["required", "date_format:Y-m-d"], "projects.*.endDate" => ["required", "date_format:Y-m-d", "after:startDate"], "projects.*.tasks" => ["required"], diff --git a/app/Infrastructure/Http/Resources/ResumeResource.php b/app/Infrastructure/Http/Resources/ResumeResource.php index b126124..e9fcb15 100644 --- a/app/Infrastructure/Http/Resources/ResumeResource.php +++ b/app/Infrastructure/Http/Resources/ResumeResource.php @@ -17,6 +17,10 @@ class ResumeResource extends JsonResource "user" => new SimpleUserResource($this->user), "name" => $this->name, "description" => $this->description, + "educationCount" => $this->education->count(), + "languageCount" => $this->languages->count(), + "technologyCount" => $this->technologies->count(), + "projectCount" => $this->projects->count(), "createdAt" => $this->created_at->toDisplayString(), "updatedAt" => $this->updated_at->toDisplayString(), ]; diff --git a/database/factories/ResumeFactory.php b/database/factories/ResumeFactory.php index b3c6952..d633f02 100644 --- a/database/factories/ResumeFactory.php +++ b/database/factories/ResumeFactory.php @@ -17,7 +17,6 @@ class ResumeFactory extends Factory { return [ "name" => fn(array $attr) => empty($attr["user_id"]) ? $this->faker->name : null, - "description" => $this->faker->boolean(30) ? $this->faker->sentence : null, "education" => $this->generateEducation(), "languages" => $this->generateLanguages(), "technologies" => $this->generateTechnologies(), diff --git a/database/migrations/2022_05_09_103339_create_resumes_table.php b/database/migrations/2022_05_09_103339_create_resumes_table.php index 88f3869..c328c29 100644 --- a/database/migrations/2022_05_09_103339_create_resumes_table.php +++ b/database/migrations/2022_05_09_103339_create_resumes_table.php @@ -14,7 +14,6 @@ return new class() extends Migration { $table->id(); $table->foreignIdFor(User::class)->nullable()->constrained()->cascadeOnDelete(); $table->string("name")->nullable(); - $table->string("description")->nullable(); $table->json("education"); $table->json("languages"); $table->json("technologies"); diff --git a/resources/js/Pages/Resumes/Create.vue b/resources/js/Pages/Resumes/Create.vue index 577c131..a5898a6 100644 --- a/resources/js/Pages/Resumes/Create.vue +++ b/resources/js/Pages/Resumes/Create.vue @@ -263,11 +263,25 @@