Sanitized and polished application form
This commit is contained in:
parent
a35af8989e
commit
1f862ff4cd
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -21,3 +21,4 @@ yarn-error.log
|
|||
/.nova
|
||||
/.vscode
|
||||
/.zed
|
||||
composer.local.*
|
||||
|
|
@ -8,11 +8,15 @@
|
|||
use Filament\Actions\Contracts\HasActions;
|
||||
use Filament\Forms\Components\Checkbox;
|
||||
use Filament\Forms\Components\DatePicker;
|
||||
use Filament\Forms\Components\FileUpload;
|
||||
use Filament\Forms\Components\Radio;
|
||||
use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Components\Textarea;
|
||||
use Filament\Schemas\Components\Fieldset;
|
||||
use Filament\Schemas\Components\Group;
|
||||
use Filament\Schemas\Components\Text;
|
||||
use Filament\Schemas\Components\Utilities\Get;
|
||||
use Filament\Schemas\Components\Wizard;
|
||||
use Filament\Schemas\Components\Wizard\Step;
|
||||
use Filament\Schemas\Concerns\InteractsWithSchemas;
|
||||
|
|
@ -24,7 +28,7 @@
|
|||
use Livewire\Attributes\Layout;
|
||||
|
||||
|
||||
#[Layout('layouts.app')]
|
||||
#[Layout('formkit::components.layouts.portal')]
|
||||
class ApplicantForm extends Component implements HasActions, HasSchemas
|
||||
{
|
||||
use InteractsWithActions;
|
||||
|
|
@ -48,53 +52,148 @@ public function form(Schema $schema): Schema
|
|||
->schema([
|
||||
Group::make([
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_FName'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_MName'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_MName', false),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_LName'),
|
||||
])->columns(3)
|
||||
->columnSpanFull(),
|
||||
FormQuestionBuilder::make(Textarea::class, 'APL_Address_1')
|
||||
->columnSpanFull(),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Area'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Gender'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Email'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_PPhone'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_APhone'),
|
||||
Group::make([
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Address_1'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Address_2'),
|
||||
FormQuestionBuilder::make(Select::class, 'APL_Area')
|
||||
->options([
|
||||
'Arima' => 'Arima',
|
||||
'Chaguanas' => 'Chaguanas',
|
||||
'Couva–Tabaquite–Talparo' => 'Couva–Tabaquite–Talparo',
|
||||
'Diego Martin' => 'Diego Martin',
|
||||
'Penal–Debe' => 'Penal–Debe',
|
||||
'Point Fortin' => 'Point Fortin',
|
||||
'Port of Spain City' => 'Port of Spain City',
|
||||
'Princes Town' => 'Princes Town',
|
||||
'Mayaro / Rio Claro' => 'Mayaro / Rio Claro',
|
||||
'San Fernando City' => 'San Fernando City',
|
||||
'San Juan–Laventille' => 'San Juan–Laventille',
|
||||
'Sangre Grande' => 'Sangre Grande',
|
||||
'Siparia' => 'Siparia',
|
||||
'Tunapuna–Piarco' => 'Tunapuna–Piarco',
|
||||
'Other' => 'Other',
|
||||
]),
|
||||
])->columns(2)->columnSpanFull(),
|
||||
FormQuestionBuilder::make(Select::class, 'APL_Gender')
|
||||
->options([
|
||||
'Male' => 'Male',
|
||||
'Female' => 'Female',
|
||||
]),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Email')->email(),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_PPhone')->tel()->telRegex('/^[0-9]{3}-[0-9]{4}$|^[0-9]{3}-[0-9]{3}-[0-9]{4}$/'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_APhone', false)->tel()->telRegex('/^[0-9]{3}-[0-9]{4}$|^[0-9]{3}-[0-9]{3}-[0-9]{4}$/'),
|
||||
FormQuestionBuilder::make(DatePicker::class, 'APL_DOB'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Nationality'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_BIRTH_PIN'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_ID_TYP'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_ID_Number'),
|
||||
Fieldset::make('Birth Certificate')
|
||||
->schema([
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_BIRTH_PIN'),
|
||||
FormQuestionBuilder::make(FileUpload::class, 'APL_Birth_File')->maxSize(10240)->helperText('Please upload a valid image or PDF file. Size of image should not be more than 10MB.'),
|
||||
])->columnSpanFull()->columns(1),
|
||||
Fieldset::make('National Identification Card or Trinidad and Tobago Passport')
|
||||
->schema([
|
||||
FormQuestionBuilder::make(Select::class, 'APL_ID_TYP')
|
||||
->options([
|
||||
'National ID' => 'National ID',
|
||||
'Trinidad and Tobago Passport' => 'Trinidad and Tobago Passport',
|
||||
]),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_ID_Number'),
|
||||
FormQuestionBuilder::make(FileUpload::class, 'APL_ID_File')->maxSize(10240)->helperText('Please upload a valid image or PDF file. Size of image should not be more than 10MB.'),
|
||||
])->columnSpanFull()->columns(1),
|
||||
])
|
||||
->columns(2),
|
||||
|
||||
// Step 2: Programme Details
|
||||
Step::make('Programme Details')
|
||||
->description('Education, experience and programme selection')
|
||||
// Step 2: Education & Skills Background
|
||||
Step::make('Education & Skills Background')
|
||||
->description('Education & employment status')
|
||||
->schema([
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_HLOE'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Employment_Status'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Programme'),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_Attend'),
|
||||
FormQuestionBuilder::make(Textarea::class, 'APL_Experience')
|
||||
->columnSpanFull(),
|
||||
FormQuestionBuilder::make(Select::class, 'APL_HLOE')
|
||||
->options([
|
||||
'Primary School' => 'Primary School',
|
||||
'Secondary School' => 'Secondary School',
|
||||
'Tertiary Education' => 'Tertiary Education',
|
||||
'Technical/Vocational' => 'Technical/Vocational',
|
||||
]),
|
||||
FormQuestionBuilder::make(Select::class, 'APL_Employment_Status')
|
||||
->options([
|
||||
'Employed Full Time' => 'Employed Full Time',
|
||||
'Employed Part Time' => 'Employed Part Time',
|
||||
'Self-Employed (Business Owner)' => 'Self-Employed (Business Owner)',
|
||||
'Both Employed and Business Owner' => 'Both Employed and Business Owner',
|
||||
'Student' => 'Student',
|
||||
'Unemployed' => 'Unemployed',
|
||||
]),
|
||||
|
||||
])
|
||||
->columns(2),
|
||||
|
||||
Step::make('Programme Interest')
|
||||
->description('Programme selection')
|
||||
->schema([
|
||||
\Filament\Schemas\Components\View::make('form.cohorts'),
|
||||
FormQuestionBuilder::make(Select::class, 'APL_Programme')
|
||||
->options([
|
||||
'Cohort 1' => 'Cohort 1',
|
||||
'Cohort 2' => 'Cohort 2',
|
||||
'Cohort 3' => 'Cohort 3',
|
||||
]),
|
||||
FormQuestionBuilder::make(Radio::class, 'APL_Attend')
|
||||
->options([
|
||||
'1' => 'Yes',
|
||||
'0' => 'No',
|
||||
])->inline(),
|
||||
FormQuestionBuilder::make(Radio::class, 'APL_Experience')
|
||||
->options([
|
||||
'1' => 'Yes',
|
||||
'0' => 'No',
|
||||
])->inline(),
|
||||
FormQuestionBuilder::make(Textarea::class, 'APL_Future_Plans')
|
||||
->columnSpanFull(),
|
||||
FormQuestionBuilder::make(Textarea::class, 'APL_How_Found_Programme')
|
||||
->columnSpanFull(),
|
||||
])
|
||||
->columns(2),
|
||||
|
||||
FormQuestionBuilder::make(Select::class, 'APL_How_Found_Programme')
|
||||
->options([
|
||||
// social media,
|
||||
'Social Media' => 'Social Media',
|
||||
'Television/Radio/Newspaper advertisements' => 'Television/Radio/Newspaper advertisements',
|
||||
'Website' => 'Website',
|
||||
'Friend or Family Member' => 'Friend or Family Member',
|
||||
'Other' => 'Other',
|
||||
])
|
||||
->live(),
|
||||
FormQuestionBuilder::make(TextInput::class, 'APL_How_Found_Programme_Other', false)
|
||||
->visible(fn (Get $get) => $get('APL_How_Found_Programme') === 'Other')
|
||||
->required(fn (Get $get) => $get('APL_How_Found_Programme') === 'Other'),
|
||||
]),
|
||||
|
||||
// Step 3: Consent & Submission
|
||||
Step::make('Consent & Submission')
|
||||
->description('Review and consent')
|
||||
->schema([
|
||||
FormQuestionBuilder::make(Checkbox::class, 'APL_Consent_Followup'),
|
||||
FormQuestionBuilder::make(Checkbox::class, 'APL_Subscribe_Mailing'),
|
||||
FormQuestionBuilder::make(Checkbox::class, 'APL_Photo_Consent'),
|
||||
FormQuestionBuilder::make(Radio::class, 'APL_Consent_Followup')
|
||||
->options([
|
||||
'1' => 'Yes',
|
||||
'0' => 'No',
|
||||
])->inline(),
|
||||
FormQuestionBuilder::make(Radio::class, 'APL_Subscribe_Mailing')
|
||||
->options([
|
||||
'1' => 'Yes',
|
||||
'0' => 'No',
|
||||
])->inline(),
|
||||
FormQuestionBuilder::make(Radio::class, 'APL_Photo_Consent')
|
||||
->options([
|
||||
'1' => 'Yes',
|
||||
'0' => 'No',
|
||||
])->inline(),
|
||||
Fieldset::make('NOTE')
|
||||
->schema([
|
||||
Text::make(new HtmlString('<strong>You must read and accept the following:</strong><br> I hereby declare that the information given in this application is true and correct to the best of my knowledge and belief. If any information given in this application proves to be false or incorrect, I accept the consequences of automatic rejection of the submission and that I may be liable for any breach of the applicable Laws of the Republic of Trinidad and Tobago.')),
|
||||
FormQuestionBuilder::make(Checkbox::class, 'APL_Accepts'),
|
||||
FormQuestionBuilder::make(Radio::class, 'APL_Accepts')
|
||||
->options([
|
||||
'1' => 'Yes',
|
||||
'0' => 'No',
|
||||
])->inline(),
|
||||
])->columnSpanFull()
|
||||
->columns(1),
|
||||
]),
|
||||
|
|
@ -109,11 +208,9 @@ public function create(): void
|
|||
{
|
||||
$data = $this->form->getState();
|
||||
|
||||
dd($data);
|
||||
|
||||
$record = Applicant::create($data);
|
||||
|
||||
$this->form->model($record)->saveRelationships();
|
||||
redirect()->route('application')->with('success', 'Application submitted successfully');
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
|
|
|
|||
|
|
@ -27,7 +27,9 @@ class Applicant extends Model
|
|||
'APL_DOB',
|
||||
'APL_Nationality',
|
||||
'APL_BIRTH_PIN',
|
||||
'APL_Birth_File',
|
||||
'APL_ID_TYP',
|
||||
'APL_ID_File',
|
||||
'APL_ID_Number',
|
||||
|
||||
// Education & Skills Background
|
||||
|
|
@ -40,6 +42,7 @@ class Applicant extends Model
|
|||
'APL_Experience',
|
||||
'APL_Future_Plans',
|
||||
'APL_How_Found_Programme',
|
||||
'APL_How_Found_Programme_Other',
|
||||
|
||||
// Consent
|
||||
'APL_Consent_Followup',
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
"filament/filament": "^4.0",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/tinker": "^2.10.1",
|
||||
"m21/formkit": "^1.0"
|
||||
"m21/formkit": "^1.0.6"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.23",
|
||||
|
|
|
|||
36
composer.lock
generated
36
composer.lock
generated
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "bb056d51a3ec93a627cf05b11484fff3",
|
||||
"content-hash": "1032cc655420a35a61a80800bff1fb75",
|
||||
"packages": [
|
||||
{
|
||||
"name": "anourvalar/eloquent-serialize",
|
||||
|
|
@ -3303,11 +3303,11 @@
|
|||
},
|
||||
{
|
||||
"name": "m21/formkit",
|
||||
"version": "v1.0.5",
|
||||
"version": "1.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://codebay.msya.gov.tt/DevTeam/formkit.git",
|
||||
"reference": "46b96ce6fc363b0e577d7f4d37fc09244898b3a9"
|
||||
"reference": "3208f45c42122316df81f116e476d847323834ba"
|
||||
},
|
||||
"require": {
|
||||
"filament/filament": "^4.0",
|
||||
|
|
@ -3337,7 +3337,7 @@
|
|||
}
|
||||
],
|
||||
"description": "Form components for M21 application programmes and related services",
|
||||
"time": "2025-12-11T20:55:43+00:00"
|
||||
"time": "2025-12-12T14:01:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "masterminds/html5",
|
||||
|
|
@ -5548,20 +5548,20 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
"version": "v7.4.0",
|
||||
"version": "v8.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/css-selector.git",
|
||||
"reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135"
|
||||
"reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135",
|
||||
"reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135",
|
||||
"url": "https://api.github.com/repos/symfony/css-selector/zipball/6225bd458c53ecdee056214cb4a2ffaf58bd592b",
|
||||
"reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2"
|
||||
"php": ">=8.4"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
|
|
@ -5593,7 +5593,7 @@
|
|||
"description": "Converts CSS selectors to XPath expressions",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/css-selector/tree/v7.4.0"
|
||||
"source": "https://github.com/symfony/css-selector/tree/v8.0.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -5613,7 +5613,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2025-10-30T13:39:42+00:00"
|
||||
"time": "2025-10-30T14:17:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
|
|
@ -7939,23 +7939,23 @@
|
|||
},
|
||||
{
|
||||
"name": "tijsverkoyen/css-to-inline-styles",
|
||||
"version": "v2.3.0",
|
||||
"version": "v2.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
|
||||
"reference": "0d72ac1c00084279c1816675284073c5a337c20d"
|
||||
"reference": "f0292ccf0ec75843d65027214426b6b163b48b41"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d",
|
||||
"reference": "0d72ac1c00084279c1816675284073c5a337c20d",
|
||||
"url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41",
|
||||
"reference": "f0292ccf0ec75843d65027214426b6b163b48b41",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-libxml": "*",
|
||||
"php": "^7.4 || ^8.0",
|
||||
"symfony/css-selector": "^5.4 || ^6.0 || ^7.0"
|
||||
"symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^2.0",
|
||||
|
|
@ -7988,9 +7988,9 @@
|
|||
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
|
||||
"support": {
|
||||
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
|
||||
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0"
|
||||
"source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0"
|
||||
},
|
||||
"time": "2024-12-21T16:25:41+00:00"
|
||||
"time": "2025-12-02T11:56:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ueberdosis/tiptap-php",
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Formkit Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This file contains configuration options for the M21 Formkit package.
|
||||
|
|
||||
*/
|
||||
|
||||
// Package configuration options
|
||||
'enabled' => true,
|
||||
|
||||
// Force HTTPS for reverse proxy environments
|
||||
'force_https' => true,
|
||||
|
||||
// Handle Livewire routes for reverse proxy environments
|
||||
'livewire_routes' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Trusted Proxies
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure trusted proxies for reverse proxy environments.
|
||||
| Specify IP addresses or CIDR ranges, use '*' to trust all proxies,
|
||||
| or set to [] to trust none.
|
||||
|
|
||||
*/
|
||||
'trusted_proxies' => env('FORMKIT_TRUSTED_PROXIES', '172.16.121.9'),
|
||||
];
|
||||
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
public function up()
|
||||
{
|
||||
Schema::create('applications', function (Blueprint $table) {
|
||||
$table->smallInteger('APL_ID')->primary();
|
||||
$table->smallInteger('APL_ID')->primary()->autoIncrement();
|
||||
|
||||
// Pre-requisite
|
||||
$table->string('APL_Will_Bring_Mirror', 1)->nullable();
|
||||
|
|
@ -26,7 +26,9 @@ public function up()
|
|||
$table->date('APL_DOB')->nullable();
|
||||
$table->string('APL_Nationality', 40)->nullable();
|
||||
$table->string('APL_BIRTH_PIN', 100)->nullable();
|
||||
$table->string('APL_Birth_File', 100)->nullable();
|
||||
$table->string('APL_ID_TYP', 50)->nullable();
|
||||
$table->string('APL_ID_File', 100)->nullable();
|
||||
$table->string('APL_ID_Number', 100)->nullable();
|
||||
|
||||
// Education & Skills Background
|
||||
|
|
@ -39,6 +41,7 @@ public function up()
|
|||
$table->text('APL_Experience')->nullable();
|
||||
$table->string('APL_Future_Plans')->nullable();
|
||||
$table->text('APL_How_Found_Programme')->nullable();
|
||||
$table->string('APL_How_Found_Programme_Other', 255)->nullable();
|
||||
|
||||
// Consent
|
||||
$table->string('APL_Consent_Followup', 20)->nullable();
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use M21\Formkit\Database\Seeders\FormQuestionsSeeder;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
|
|
@ -15,9 +15,13 @@ public function run(): void
|
|||
{
|
||||
// User::factory(10)->create();
|
||||
|
||||
User::factory()->create([
|
||||
'name' => 'Test User',
|
||||
'email' => 'test@example.com',
|
||||
// User::factory()->create([
|
||||
// 'name' => 'Test User',
|
||||
// 'email' => 'test@example.com',
|
||||
// ]);
|
||||
|
||||
$this->call([
|
||||
FormQuestionsSeeder::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\FormQuestion;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class FormQuestionsSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$questions = [
|
||||
// Pre-requisite
|
||||
['id' => 'APL_Will_Bring_Mirror', 'label' => 'I agree to bring my own freestanding tabletop mirror to participate in this training', 'placeholder' => 'Yes / No', 'field_type' => 'TextInput'],
|
||||
|
||||
// Personal Information
|
||||
['id' => 'APL_FName', 'label' => 'First Name', 'placeholder' => 'First Name', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_MName', 'label' => 'Middle Name', 'placeholder' => 'Middle Name', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_LName', 'label' => 'Last Name', 'placeholder' => 'Last Name', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Address_1', 'label' => 'Address Line 1', 'placeholder' => 'Street Number and Complete Street', 'field_type' => 'Textarea'],
|
||||
['id' => 'APL_Area', 'label' => 'Address Line 2', 'placeholder' => 'Area (E.g. Cove)', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Gender', 'label' => 'Gender', 'placeholder' => 'Male / Female', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Email', 'label' => 'Email Address', 'placeholder' => 'example@email.com', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_PPhone', 'label' => 'Contact Number', 'placeholder' => '868-123-4567', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_APhone', 'label' => 'Alternative Contact Number', 'placeholder' => '868-123-4567', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_DOB', 'label' => 'Date of Birth', 'placeholder' => 'mm/dd/yyyy', 'field_type' => 'DatePicker'],
|
||||
['id' => 'APL_Nationality', 'label' => 'Nationality', 'placeholder' => 'Trinidadian', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_BIRTH_PIN', 'label' => 'Birth Certificate Pin Number', 'placeholder' => 'Enter your Birth Certificate PIN', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_ID_TYP', 'label' => 'National Identification Card or Trinidad and Tobago Passport', 'placeholder' => 'National ID / Passport', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_ID_Number', 'label' => 'ID Number', 'placeholder' => 'Enter your ID Number', 'field_type' => 'TextInput'],
|
||||
|
||||
// Education & Skills Background
|
||||
['id' => 'APL_HLOE', 'label' => 'Highest Level of Education (Completed)', 'placeholder' => 'Select your education level', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Employment_Status', 'label' => 'Employment Status', 'placeholder' => 'Select your employment status', 'field_type' => 'TextInput'],
|
||||
|
||||
// Programme Interest
|
||||
['id' => 'APL_Programme', 'label' => 'I am interested in attending this course', 'placeholder' => 'Select a cohort', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Attend', 'label' => 'Are you able to attend all scheduled sessions of the course?', 'placeholder' => 'Yes / No', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Experience', 'label' => 'Do you have any experience in make up?', 'placeholder' => 'Yes / No', 'field_type' => 'Textarea'],
|
||||
['id' => 'APL_Future_Plans', 'label' => 'How do you see this course contribution to your future plans?', 'placeholder' => 'Describe your future plans...', 'field_type' => 'Textarea'],
|
||||
['id' => 'APL_How_Found_Programme', 'label' => 'How did you find out about the programme?', 'placeholder' => 'Select how you heard about us', 'field_type' => 'Textarea'],
|
||||
|
||||
// Consent
|
||||
['id' => 'APL_Consent_Followup', 'label' => 'I consent to be contacted by the Ministry of Sport and Youth Affairs Monitoring & Evaluation Unit up to two (2) years after programme completion for tracer studies.', 'placeholder' => 'Yes / No', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Subscribe_Mailing', 'label' => 'Would you like to subscribe to the Ministry\'s mailing list for updates on upcoming projects and programmes?', 'placeholder' => 'Yes / No', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Photo_Consent', 'label' => 'I agree to have my photograph or images used by the MSYA for promotion on all media pages.', 'placeholder' => 'Yes / No', 'field_type' => 'TextInput'],
|
||||
['id' => 'APL_Accepts', 'label' => 'I have read and accepted the above', 'placeholder' => 'Yes / No', 'field_type' => 'TextInput'],
|
||||
];
|
||||
|
||||
foreach ($questions as $question) {
|
||||
FormQuestion::updateOrCreate(['id' => $question['id']], $question);
|
||||
}
|
||||
}
|
||||
}
|
||||
33
resources/views/form/cohorts.blade.php
Normal file
33
resources/views/form/cohorts.blade.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<div>
|
||||
<h2 class="font-bold text-gray-900 mb-2">This course will be delivered in 3 cohorts, Tuesday and Thursdays from 3:00pm to 6:00pm.</h2>
|
||||
<table class="min-w-full bg-white border border-gray-200 rounded-lg shadow-sm">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider border-b border-gray-200">Cohort</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider border-b border-gray-200">Date</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider border-b border-gray-200">Time</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider border-b border-gray-200">Venue</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200">
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">1</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-900">Tuesday 14th October &<br>Thursday 16th October 2025</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">3:00pm – 6:00pm</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-900">Los Bajos Youth Development Centre</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">2</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-900">Wednesday 15th October &<br>Wednesday 22nd October 2025</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">3:00pm – 6:00pm</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-900">St James Youth Development Centre</td>
|
||||
</tr>
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">3</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-900">Tuesday 21st October &<br>Thursday 23rd October 2025</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">3:00pm – 6:00pm</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-900">California Youth Development Centre</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
Loading…
Reference in a new issue