feat: implement internship journal entry system with printable reports and approval workflow

This commit is contained in:
Ümit Tunç
2026-07-01 17:16:41 +03:00
parent 5b46b4ac9e
commit 4c5cf1d355
10 changed files with 984 additions and 262 deletions
@@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('internship_journal_entries', function (Blueprint $table) {
$table->id();
$table->foreignId('career_application_id')
->constrained('career_applications')
->onDelete('cascade');
$table->integer('day_number');
$table->date('date');
$table->text('content')->nullable();
$table->timestamps();
$table->unique(['career_application_id', 'day_number'], 'journal_app_day_unique');
$table->unique(['career_application_id', 'date'], 'journal_app_date_unique');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('internship_journal_entries');
}
};
@@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('career_applications', function (Blueprint $table) {
$table->boolean('notebook_supervisor_signed')->default(false);
$table->string('notebook_supervisor_name')->nullable();
$table->boolean('notebook_unit_signed')->default(false);
$table->string('notebook_unit_name')->nullable();
$table->boolean('notebook_approved')->default(false);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('career_applications', function (Blueprint $table) {
$table->dropColumn([
'notebook_supervisor_signed',
'notebook_supervisor_name',
'notebook_unit_signed',
'notebook_unit_name',
'notebook_approved'
]);
});
}
};