diff --git a/.gitignore b/.gitignore
index c7cf1fa..ad1e86b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,4 @@ yarn-error.log
/.nova
/.vscode
/.zed
+composer.local.*
\ No newline at end of file
diff --git a/app/Livewire/ApplicantForm.php b/app/Livewire/ApplicantForm.php
index 1c42f52..f07af5c 100644
--- a/app/Livewire/ApplicantForm.php
+++ b/app/Livewire/ApplicantForm.php
@@ -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('You must read and accept the following:
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
diff --git a/app/Models/Applicant.php b/app/Models/Applicant.php
index a975db5..8aa3dec 100644
--- a/app/Models/Applicant.php
+++ b/app/Models/Applicant.php
@@ -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',
diff --git a/composer.json b/composer.json
index 86d1f3d..7e20569 100644
--- a/composer.json
+++ b/composer.json
@@ -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",
diff --git a/composer.lock b/composer.lock
index 74750df..a299718 100644
--- a/composer.lock
+++ b/composer.lock
@@ -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",
diff --git a/config/formkit.php b/config/formkit.php
deleted file mode 100644
index a8a5022..0000000
--- a/config/formkit.php
+++ /dev/null
@@ -1,34 +0,0 @@
- 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'),
-];
-
diff --git a/database/migrations/2025_12_11_175523_create_applicants_table.php b/database/migrations/2025_12_11_175523_create_applicants_table.php
index e503c1f..dc0bb6a 100644
--- a/database/migrations/2025_12_11_175523_create_applicants_table.php
+++ b/database/migrations/2025_12_11_175523_create_applicants_table.php
@@ -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();
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index d01a0ef..6ade86b 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -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,
]);
}
}
diff --git a/database/seeders/FormQuestionsSeeder.php b/database/seeders/FormQuestionsSeeder.php
deleted file mode 100644
index ec34759..0000000
--- a/database/seeders/FormQuestionsSeeder.php
+++ /dev/null
@@ -1,58 +0,0 @@
- '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);
- }
- }
-}
diff --git a/resources/views/form/cohorts.blade.php b/resources/views/form/cohorts.blade.php
new file mode 100644
index 0000000..542801c
--- /dev/null
+++ b/resources/views/form/cohorts.blade.php
@@ -0,0 +1,33 @@
+
| Cohort | +Date | +Time | +Venue | +
|---|---|---|---|
| 1 | +Tuesday 14th October & Thursday 16th October 2025 |
+ 3:00pm – 6:00pm | +Los Bajos Youth Development Centre | +
| 2 | +Wednesday 15th October & Wednesday 22nd October 2025 |
+ 3:00pm – 6:00pm | +St James Youth Development Centre | +
| 3 | +Tuesday 21st October & Thursday 23rd October 2025 |
+ 3:00pm – 6:00pm | +California Youth Development Centre | +