Minimal Viable Product + Refactor to pinia store + Fix PDF export
Some checks failed
linter / quality (push) Successful in 3m37s
tests / ci (push) Failing after 13m21s

This commit is contained in:
2025-09-16 16:30:37 +02:00
parent f3ff6fd6ac
commit cb242e59ba
39 changed files with 1055 additions and 137 deletions

View File

@@ -36,4 +36,9 @@ class ResumeComponent extends Model
return $this->belongsToMany(ResumeComponentPlacement::class)
->using(ResumeComponentData::class);
}
public function inputs(): HasMany
{
return $this->hasMany(ResumeComponentInput::class, 'resume_component_id');
}
}

View File

@@ -2,24 +2,64 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\Pivot;
class ResumeComponentData extends Pivot
class ResumeComponentData extends Model
{
protected $table = 'resume_component_data';
public function component()
protected $fillable = [
'resume_component_id',
];
public function component(): BelongsTo
{
return $this->belongsTo(ResumeComponent::class, 'resume_component_id');
}
public function componentPlacements()
public function componentPlacements(): HasMany
{
return $this->hasMany(ResumeComponentPlacement::class);
}
public function inputData()
public function inputData(): HasMany
{
return $this->hasMany(ResumeComponentInputData::class, 'resume_component_data_id');
}
public static function createWithInputs(ResumeComponent $component): ResumeComponentData
{
$componentData = ResumeComponentData::create([
'resume_component_id' => $component->id,
]);
foreach ($component->inputs()->get() as $input) {
$componentData->inputData()->create([
'resume_component_data_id' => $componentData->id,
'resume_component_input_id' => $input->id,
]);
}
return $componentData->refresh();
}
public static function copyFrom(ResumeComponentData $existingData): ResumeComponentData
{
$componentData = ResumeComponentData::create([
'resume_component_id' => $existingData->resume_component_id,
]);
foreach ($existingData->inputData()->get() as $inputDatum) {
$componentData->inputData()->create([
'resume_component_data_id' => $componentData->id,
'resume_component_input_id' => $inputDatum->resume_component_input_id,
'value' => $inputDatum->value,
]);
}
return $componentData->refresh();
}
}

View File

@@ -24,11 +24,6 @@ class ResumeComponentInput extends Pivot
'placeholder'
];
public function resumes()
{
return ;
}
public function component(): BelongsTo
{
return $this->belongsTo(ResumeComponent::class);

View File

@@ -8,6 +8,12 @@ class ResumeComponentInputData extends Pivot
{
protected $table = 'resume_component_input_data';
protected $fillable = [
'resume_component_data_id',
'resume_component_input_id',
'value',
];
public function componentData()
{

View File

@@ -4,14 +4,21 @@ namespace App\Models;
use App\Policies\ResumeComponentPlacementPolicy;
use Illuminate\Database\Eloquent\Attributes\UsePolicy;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\Pivot;
#[UsePolicy(ResumeComponentPlacementPolicy::class)]
class ResumeComponentPlacement extends Pivot
class ResumeComponentPlacement extends Model
{
protected $table = 'resume_component_placements';
protected $fillable = [
'resume_component_data_id',
'resume_id',
'order',
];
public function componentData(): BelongsTo
{
return $this->belongsTo(ResumeComponentData::class, 'resume_component_data_id');