fix: add hidden attributes for serialization in models and update contact method in Company model

This commit is contained in:
2025-11-06 15:54:54 +01:00
parent cd7e39eccb
commit 6eadf3a944
5 changed files with 92 additions and 1 deletions

View File

@@ -23,6 +23,16 @@ class Company extends Model
'hiring' 'hiring'
]; ];
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'created_at',
'updated_at',
];
/** /**
* Get the internships for the company. * Get the internships for the company.
*/ */
@@ -34,7 +44,7 @@ class Company extends Model
/** /**
* Get the contact person (user) for the company. * Get the contact person (user) for the company.
*/ */
public function contactPerson() public function contact()
{ {
return $this->belongsTo(User::class, 'contact'); return $this->belongsTo(User::class, 'contact');
} }

View File

@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@@ -28,6 +29,16 @@ class Internship extends Model
'report_confirmed', 'report_confirmed',
]; ];
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'created_at',
'updated_at',
];
/** /**
* Get the attributes that should be cast. * Get the attributes that should be cast.
* *
@@ -49,4 +60,32 @@ class Internship extends Model
{ {
return $this->belongsTo(Company::class, 'company_id'); return $this->belongsTo(Company::class, 'company_id');
} }
public function status()
{
return $this->hasOne(InternshipStatus::class, 'internship_id')->latestOfMany();
}
/**
* Prepare the model for JSON serialization.
*
* @return array<string, mixed>
*/
public function toArray(): array
{
return [
'id' => $this->id,
'student' => $this->student,
'company' => $this->company,
'start' => Carbon::parse($this->start)->format('d.m.Y'),
'end' => Carbon::parse($this->end)->format('d.m.Y'),
'year_of_study' => $this->year_of_study,
'semester' => $this->semester,
'position_description' => $this->position_description,
'agreement' => $this->agreement !== null,
'report' => $this->report !== null,
'report_confirmed' => $this->report_confirmed,
'status' => $this->status,
];
}
} }

View File

@@ -22,4 +22,31 @@ class InternshipStatus extends Model
'note', 'note',
'modified_by' 'modified_by'
]; ];
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'created_at',
'updated_at',
];
public function modifiedBy()
{
return $this->belongsTo(User::class, 'modified_by');
}
public function toArray()
{
return [
'id' => $this->id,
'internship_id' => $this->internship_id,
'status' => $this->status,
'changed' => $this->changed,
'note' => $this->note,
'modified_by' => $this->modifiedBy,
];
}
} }

View File

@@ -21,4 +21,14 @@ class StudentData extends Model
'personal_email', 'personal_email',
'study_field', 'study_field',
]; ];
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'created_at',
'updated_at',
];
} }

View File

@@ -39,6 +39,11 @@ class User extends Authenticatable
'password', 'password',
'remember_token', 'remember_token',
'activation_token', 'activation_token',
'created_at',
'updated_at',
'email_verified_at',
'active',
'needs_password_change'
]; ];
/** /**