Files
CVAtron/app/Models/ResumeComponentData.php
Matthias Guillitte cb242e59ba
Some checks failed
linter / quality (push) Successful in 3m37s
tests / ci (push) Failing after 13m21s
Minimal Viable Product + Refactor to pinia store + Fix PDF export
2025-09-16 16:30:37 +02:00

66 lines
1.9 KiB
PHP

<?php
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 Model
{
protected $table = 'resume_component_data';
protected $fillable = [
'resume_component_id',
];
public function component(): BelongsTo
{
return $this->belongsTo(ResumeComponent::class, 'resume_component_id');
}
public function componentPlacements(): HasMany
{
return $this->hasMany(ResumeComponentPlacement::class);
}
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();
}
}