diff --git a/app/Http/Controllers/DocumentDownloadController.php b/app/Http/Controllers/DocumentDownloadController.php new file mode 100644 index 0000000..f29b410 --- /dev/null +++ b/app/Http/Controllers/DocumentDownloadController.php @@ -0,0 +1,333 @@ +session()->has('student_id') || + $request->session()->has('student_log_id') || + auth()->check(); + } + + /** + * Academic Calendar PDF Download + */ + public function downloadAcademicCalendar(Request $request) + { + if (!$this->isAuthenticated($request)) { + return redirect()->route('students')->with('error', 'Please login first to download official academic documents!'); + } + + $title = "Official Academic Calendar 2026"; + $subtitle = "Semester Schedules, Lecture Weeks, Holidays & Important Deadlines"; + $refNo = "REF: AC-2026-CAL"; + + $tables = [ + [ + 'title' => '1. SEMESTER DATES & LECTURE WEEKS', + 'headers' => ['Academic Event / Phase', 'Start Date', 'End Date', 'Status'], + 'rows' => [ + ['Semester 1 Commencement', 'January 15, 2026', 'March 20, 2026', 'Active'], + ['Mid-Semester Recess', 'March 21, 2026', 'March 29, 2026', 'Scheduled'], + ['Practical Lab Intensive Weeks', 'March 30, 2026', 'May 15, 2026', 'Scheduled'], + ['Semester 1 Final Examinations', 'June 01, 2026', 'June 20, 2026', 'Scheduled'], + ['Semester 2 Commencement', 'July 15, 2026', 'November 30, 2026', 'Upcoming'] + ] + ], + [ + 'title' => '2. INSTITUTIONAL & PUBLIC HOLIDAYS', + 'headers' => ['Holiday / Event Name', 'Date(s)', 'Impact on Classes'], + 'rows' => [ + ['National Independence Day', 'February 04, 2026', 'Campus Closed'], + ['Sinhala & Tamil New Year Vacation', 'April 12 - April 18, 2026', 'No Lectures / Workshops'], + ['Vesak Festival Holiday', 'May 23 - May 25, 2026', 'Campus Closed'], + ['Annual Automotive Tech Symposium', 'August 20, 2026', 'Special Event (Mandatory Attendance)'] + ] + ], + [ + 'title' => '3. CRITICAL ACADEMIC DEADLINES', + 'headers' => ['Deadline Description', 'Cut-off Date', 'Action Required'], + 'rows' => [ + ['Course Module Drop / Add Period', 'February 10, 2026', 'Submit online form'], + ['Mid-Term Assignment 1 Submission', 'March 18, 2026', 'Upload via Portal'], + ['Examination Fee Clearance', 'May 15, 2026', 'Settle at Finance Office'] + ] + ] + ]; + + return $this->renderPdf($title, $subtitle, $refNo, $tables, "Academic_Calendar_2026.pdf"); + } + + /** + * Student Handbook PDF Download + */ + public function downloadStudentHandbook(Request $request) + { + if (!$this->isAuthenticated($request)) { + return redirect()->route('students')->with('error', 'Please login first to download official academic documents!'); + } + + $title = "Student Handbook & Code of Conduct"; + $subtitle = "Academic Regulations, Workshop Safety Rules & Grading Policies"; + $refNo = "REF: HB-2026-REG"; + + $tables = [ + [ + 'title' => '1. ATTENDANCE & ACADEMIC INTEGRITY POLICIES', + 'headers' => ['Regulation Category', 'Requirement / Policy Detail', 'Penalty for Violation'], + 'rows' => [ + ['Class Attendance', 'Minimum 80% attendance required for practical labs and lectures.', 'Barred from Final Exams'], + ['Academic Honesty', 'Zero tolerance for plagiarism, cheating, or proxy attendance.', 'Disciplinary Hearing & Grade F'], + ['Enrollment Status', 'Students must maintain continuous registration every term.', 'De-registration after 30 days'] + ] + ], + [ + 'title' => '2. WORKSHOP & HIGH-VOLTAGE LAB SAFETY RULES', + 'headers' => ['Safety Protocol', 'Required Equipment / PPE', 'Compliance Rule'], + 'rows' => [ + ['General Workshop PPE', 'Safety boots (steel toe), protective eyewear, lab coats', 'Mandatory at all times'], + ['Hybrid / EV High Voltage Labs', 'Class 0 rated insulated safety gloves (1000V rated)', 'Strict supervision required'], + ['Vehicle Lift Operation', 'Hydraulic lift locks must be verified before underbody work', 'Never operate alone'] + ] + ], + [ + 'title' => '3. ACADEMIC GRADING SCHEME', + 'headers' => ['Grade', 'Percentage Range', 'GPA Value', 'Classification'], + 'rows' => [ + ['A+', '90% - 100%', '4.00', 'High Distinction'], + ['A', '80% - 89%', '3.70', 'Distinction'], + ['B', '70% - 79%', '3.00', 'Credit Pass'], + ['C', '55% - 69%', '2.00', 'Pass'], + ['F', 'Below 50%', '0.00', 'Fail (Re-sit Required)'] + ] + ] + ]; + + return $this->renderPdf($title, $subtitle, $refNo, $tables, "Student_Handbook_2026.pdf"); + } + + /** + * Exam Code of Conduct PDF Download + */ + public function downloadExamCode(Request $request) + { + if (!$this->isAuthenticated($request)) { + return redirect()->route('students')->with('error', 'Please login first to download official academic documents!'); + } + + $title = "Exam Code of Conduct & Rules"; + $subtitle = "Examination Hall Admission, Practical Station Rules & Disciplinary Code"; + $refNo = "REF: EX-2026-RULES"; + + $tables = [ + [ + 'title' => '1. EXAMINATION HALL ADMISSION RULES', + 'headers' => ['Rule Item', 'Requirement Detail', 'Enforcement'], + 'rows' => [ + ['Student Identification', 'Valid Student ID Card & Exam Admission Ticket required.', 'Strictly Enforced'], + ['Entry Time Limit', 'Candidates admitted up to 30 minutes after commencement.', 'No extra time given'], + ['Prohibited Items', 'Mobile phones, smartwatches, programmable notes, bags.', 'Immediate Confiscation'] + ] + ], + [ + 'title' => '2. PRACTICAL DIAGNOSTIC EXAMINATIONS', + 'headers' => ['Station Requirement', 'Procedure Standard', 'Evaluator Note'], + 'rows' => [ + ['Station Attire', 'Clean workshop overall and non-slip safety shoes required.', 'Visual inspection at entry'], + ['Tool Calibration', 'Verify diagnostic scan tools before beginning fault-finding.', 'Instructor verification'], + ['Safety Shutoff', 'Always disengage high-voltage battery service plug first.', 'Immediate disqualification if missed'] + ] + ] + ]; + + return $this->renderPdf($title, $subtitle, $refNo, $tables, "Exam_Code_of_Conduct_2026.pdf"); + } + + /** + * Student Helpdesk Guide PDF Download + */ + public function downloadHelpdeskGuide(Request $request) + { + if (!$this->isAuthenticated($request)) { + return redirect()->route('students')->with('error', 'Please login first to download official academic documents!'); + } + + $title = "Student Helpdesk & Support Directory"; + $subtitle = "Portal Assistance, Technical Enquiries & Department Contact List"; + $refNo = "REF: HD-2026-SUPP"; + + $tables = [ + [ + 'title' => '1. PORTAL & IT SUPPORT CHANNELS', + 'headers' => ['Support Issue', 'Resolution Method', 'Response Time'], + 'rows' => [ + ['Password & PIN Reset', 'Self-service PIN reset or visit IT Help Desk (Level 2)', 'Instant / 15 Mins'], + ['Module Material Access', 'Email portal-support@autoedu.lk with Student ID', 'Within 2 Hours'], + ['Wi-Fi & Email Setup', 'Visit Student IT Counter with Student ID Card', 'Immediate'] + ] + ], + [ + 'title' => '2. DEPARTMENT CONTACT DIRECTORY', + 'headers' => ['Department Name', 'Location', 'Extension', 'Official Email'], + 'rows' => [ + ['Student Affairs & Registration', 'Admin Block - Ground Floor', 'Ext. 101', 'students@autoedu.lk'], + ['Finance & Tuition Payments', 'Admin Block - Room 104', 'Ext. 104', 'finance@autoedu.lk'], + ['Examinations & Results Branch', 'Academic Wing - Room 202', 'Ext. 108', 'exams@autoedu.lk'], + ['Automotive Workshop Office', 'Lab Complex - Block B', 'Ext. 112', 'workshop@autoedu.lk'] + ] + ] + ]; + + return $this->renderPdf($title, $subtitle, $refNo, $tables, "Student_Helpdesk_Support_Guide.pdf"); + } + + /** + * Render HTML to DomPDF output + */ + private function renderPdf($title, $subtitle, $refNo, $tables, $filename) + { + $studentName = session('student_name', 'Authenticated Student'); + $studentId = session('student_id', 'STU-2026-0042'); + $dateStr = date('F d, Y'); + + $tablesHtml = ''; + foreach ($tables as $table) { + $tablesHtml .= '
' . htmlspecialchars($table['title']) . '
'; + $tablesHtml .= ''; + foreach ($table['headers'] as $th) { + $tablesHtml .= ''; + } + $tablesHtml .= ''; + foreach ($table['rows'] as $row) { + $tablesHtml .= ''; + foreach ($row as $cell) { + $tablesHtml .= ''; + } + $tablesHtml .= ''; + } + $tablesHtml .= 'tbody>
' . htmlspecialchars($th) . '
' . htmlspecialchars($cell) . '
'; + } + + $html = ' + + + + + ' . htmlspecialchars($title) . ' + + + + + + + + + + +
+
AutoEdu Automotive Academy
+
Department of Automotive Engineering & Applied Research | ISO 9001 Certified
+
+
' . htmlspecialchars($refNo) . '
+
+ + +
+

' . htmlspecialchars($title) . '

+

' . htmlspecialchars($subtitle) . '

+
+ + + + + + + + +
Issued To: ' . htmlspecialchars($studentName) . 'Student ID: ' . htmlspecialchars($studentId) . 'Issue Date: ' . htmlspecialchars($dateStr) . '
+ + + ' . $tablesHtml . ' + + + + + + + + + + + + '; + + try { + $options = new Options(); + $options->set('isHtml5ParserEnabled', true); + $options->set('isRemoteEnabled', true); + + $dompdf = new Dompdf($options); + $dompdf->loadHtml($html); + $dompdf->setPaper('A4', 'portrait'); + $dompdf->render(); + + return response($dompdf->output(), 200, [ + 'Content-Type' => 'application/pdf', + 'Content-Disposition' => 'attachment; filename="' . $filename . '"', + 'Cache-Control' => 'private, max-age=0, must-revalidate', + 'Pragma' => 'public' + ]); + } catch (\Exception $e) { + // Fallback response if rendering fails + return response($html, 200, [ + 'Content-Type' => 'text/html', + ]); + } + } +} diff --git a/composer.json b/composer.json index b17af3e..738fbfc 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "license": "MIT", "require": { "php": "^8.2", + "barryvdh/laravel-dompdf": "^3.1", "laravel/framework": "^12.0", "laravel/tinker": "^2.10.1" }, diff --git a/composer.lock b/composer.lock index efe53ff..0343d62 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,85 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "53b5d56b3b7e3cbac1713e68c8850f6c", + "content-hash": "bf969a713724ba1caaf90ec885c262c2", "packages": [ + { + "name": "barryvdh/laravel-dompdf", + "version": "v3.1.2", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-dompdf.git", + "reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/ee3b72b19ccdf57d0243116ecb2b90261344dedc", + "reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc", + "shasum": "" + }, + "require": { + "dompdf/dompdf": "^3.0", + "illuminate/support": "^9|^10|^11|^12|^13.0", + "php": "^8.1" + }, + "require-dev": { + "larastan/larastan": "^2.7|^3.0", + "orchestra/testbench": "^7|^8|^9.16|^10|^11.0", + "phpro/grumphp": "^2.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "PDF": "Barryvdh\\DomPDF\\Facade\\Pdf", + "Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf" + }, + "providers": [ + "Barryvdh\\DomPDF\\ServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\DomPDF\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "A DOMPDF Wrapper for Laravel", + "keywords": [ + "dompdf", + "laravel", + "pdf" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-dompdf/issues", + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.2" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2026-02-21T08:51:10+00:00" + }, { "name": "brick/math", "version": "0.14.8", @@ -377,6 +454,161 @@ ], "time": "2024-02-05T11:56:58+00:00" }, + { + "name": "dompdf/dompdf", + "version": "v3.1.6", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6d4b4eb8500f7a786da8868ba463a71b725a4005", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005", + "shasum": "" + }, + "require": { + "dompdf/php-font-lib": "^1.0.0", + "dompdf/php-svg-lib": "^1.0.0", + "ext-dom": "*", + "ext-mbstring": "*", + "masterminds/html5": "^2.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ext-gd": "*", + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.4 || ^5.4 || ^6.2 || ^7.0" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v3.1.6" + }, + "time": "2026-07-20T12:29:38+00:00" + }, + { + "name": "dompdf/php-font-lib", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11 || ^12" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "The FontLib Community", + "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/dompdf/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/1.0.2" + }, + "time": "2026-01-20T14:10:26+00:00" + }, + { + "name": "dompdf/php-svg-lib", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4 || ^9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "The SvgLib Community", + "homepage": "https://github.com/dompdf/php-svg-lib/blob/master/AUTHORS.md" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/dompdf/php-svg-lib", + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/1.0.2" + }, + "time": "2026-01-02T16:01:13+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.6.0", @@ -2025,6 +2257,73 @@ ], "time": "2026-03-08T20:05:35+00:00" }, + { + "name": "masterminds/html5", + "version": "2.10.1", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "fd5018f6815fff903946d0564977b44ce8010e29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fd5018f6815fff903946d0564977b44ce8010e29", + "reference": "fd5018f6815fff903946d0564977b44ce8010e29", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9 || ^10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.10.1" + }, + "time": "2026-06-23T18:43:15+00:00" + }, { "name": "monolog/monolog", "version": "3.10.0", @@ -3299,6 +3598,86 @@ }, "time": "2026-06-18T03:57:49+00:00" }, + { + "name": "sabberworm/php-css-parser", + "version": "v9.4.0", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f", + "reference": "fd3bf9fb173e0df649bc4e3e0d088a1b2417c08f", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "thecodingmachine/safe": "^1.3 || ^2.5 || ^3.4" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.33 || 2.2.2", + "phpstan/phpstan-phpunit": "1.4.2 || 2.0.16", + "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.11", + "phpunit/phpunit": "8.5.52", + "rawr/phpunit-data-provider": "3.3.1", + "rector/rector": "1.2.10 || 2.4.6", + "rector/type-perfect": "1.0.0 || 2.1.3", + "squizlabs/php_codesniffer": "4.0.1", + "thecodingmachine/phpstan-safe-rule": "1.2.0 || 1.4.3" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.5.x-dev" + } + }, + "autoload": { + "files": [ + "src/Rule/Rule.php", + "src/RuleSet/RuleContainer.php" + ], + "psr-4": { + "Sabberworm\\CSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.4.0" + }, + "time": "2026-06-18T15:10:53+00:00" + }, { "name": "symfony/clock", "version": "v7.4.8", @@ -5808,6 +6187,149 @@ ], "time": "2026-06-08T20:24:16+00:00" }, + { + "name": "thecodingmachine/safe", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/thecodingmachine/safe.git", + "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/705683a25bacf0d4860c7dea4d7947bfd09eea19", + "reference": "705683a25bacf0d4860c7dea4d7947bfd09eea19", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10", + "squizlabs/php_codesniffer": "^3.2" + }, + "type": "library", + "autoload": { + "files": [ + "lib/special_cases.php", + "generated/apache.php", + "generated/apcu.php", + "generated/array.php", + "generated/bzip2.php", + "generated/calendar.php", + "generated/classobj.php", + "generated/com.php", + "generated/cubrid.php", + "generated/curl.php", + "generated/datetime.php", + "generated/dir.php", + "generated/eio.php", + "generated/errorfunc.php", + "generated/exec.php", + "generated/fileinfo.php", + "generated/filesystem.php", + "generated/filter.php", + "generated/fpm.php", + "generated/ftp.php", + "generated/funchand.php", + "generated/gettext.php", + "generated/gmp.php", + "generated/gnupg.php", + "generated/hash.php", + "generated/ibase.php", + "generated/ibmDb2.php", + "generated/iconv.php", + "generated/image.php", + "generated/imap.php", + "generated/info.php", + "generated/inotify.php", + "generated/json.php", + "generated/ldap.php", + "generated/libxml.php", + "generated/lzf.php", + "generated/mailparse.php", + "generated/mbstring.php", + "generated/misc.php", + "generated/mysql.php", + "generated/mysqli.php", + "generated/network.php", + "generated/oci8.php", + "generated/opcache.php", + "generated/openssl.php", + "generated/outcontrol.php", + "generated/pcntl.php", + "generated/pcre.php", + "generated/pgsql.php", + "generated/posix.php", + "generated/ps.php", + "generated/pspell.php", + "generated/readline.php", + "generated/rnp.php", + "generated/rpminfo.php", + "generated/rrd.php", + "generated/sem.php", + "generated/session.php", + "generated/shmop.php", + "generated/sockets.php", + "generated/sodium.php", + "generated/solr.php", + "generated/spl.php", + "generated/sqlsrv.php", + "generated/ssdeep.php", + "generated/ssh2.php", + "generated/stream.php", + "generated/strings.php", + "generated/swoole.php", + "generated/uodbc.php", + "generated/uopz.php", + "generated/url.php", + "generated/var.php", + "generated/xdiff.php", + "generated/xml.php", + "generated/xmlrpc.php", + "generated/yaml.php", + "generated/yaz.php", + "generated/zip.php", + "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "generated/Exceptions/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "support": { + "issues": "https://github.com/thecodingmachine/safe/issues", + "source": "https://github.com/thecodingmachine/safe/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/OskarStark", + "type": "github" + }, + { + "url": "https://github.com/shish", + "type": "github" + }, + { + "url": "https://github.com/silasjoisten", + "type": "github" + }, + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2026-02-04T18:08:13+00:00" + }, { "name": "tijsverkoyen/css-to-inline-styles", "version": "v2.4.0", diff --git a/resources/views/StudentPortal.blade.php b/resources/views/StudentPortal.blade.php index 199fd6c..2a4f236 100644 --- a/resources/views/StudentPortal.blade.php +++ b/resources/views/StudentPortal.blade.php @@ -291,6 +291,57 @@ body { + +
+ Official Document Downloads (PDF) +
+ +
+
+ +
+ +
Academic Calendar
+ Semester dates & holidays + Download PDF +
+
+
+ +
+ +
+ +
Student Handbook
+ Rules & academic policies + Download PDF +
+
+
+ +
+ +
+ +
Exam Code of Conduct
+ Rules & exam guidelines + Download PDF +
+
+
+ +
+ +
+ +
Helpdesk Support Guide
+ Technical assistance guide + Download PDF +
+
+
+
+ @endsection \ No newline at end of file diff --git a/resources/views/students.blade.php b/resources/views/students.blade.php index 77388b1..da6d1cb 100644 --- a/resources/views/students.blade.php +++ b/resources/views/students.blade.php @@ -6,40 +6,43 @@ @@ -500,28 +649,29 @@ h1, h2, h3, h4, h5, h6 { @endforeach -
+
- Your Academic Hub -

Student Portal

-

- Access your courses, timetable, assignments, examination results, - payments and profile from one place. + Student Academic Portal +

Student Portal & Learning Hub

+

+ Your central gateway to enrolled courses, lecture timetables, assignment submissions, + examination results, and academic services.

- - Browse Services + Explore Services
- 24/7 Access - Secure Login - 6 Portal Services + 24/7 Portal Access + Encrypted SSL Auth + 6 Core Services + Real-Time Notices
@@ -529,187 +679,277 @@ h1, h2, h3, h4, h5, h6 {
-
-
-

Student Services

-

- Everything you need during your academic journey. +

+ + +
+ Academic Gateway +

Student Services

+

+ Everything you need to navigate your studies, track progress, and manage academic records.

+ +
+ + + + +
-
-
-
-
- + +
+ + +
+
+ Academic +
+
-

My Courses

-

View enrolled courses and learning materials.

- Access Portal +

My Courses

+

Access enrolled course modules, lecture slides, video tutorials, and study resources.

+ Open Course Dashboard
-
-
-
- + +
+
+ Schedule +
+
-

Class Timetable

-

Check your weekly lecture schedule.

- Access Portal +

Class Timetable

+

Check weekly lecture schedules, lab practical sessions, and room allocation updates.

+ View Weekly Schedule
-
-
-
- + +
+
+ Tasks +
+
-

Assignments

-

Submit assignments and download resources.

- Access Portal +

Assignments

+

Submit coursework online, check upcoming submission deadlines, and review lecturer feedback.

+ Manage Submissions
-
-
-
- + +
+
+ Grades +
+
-

Exam Results

-

View semester and final examination results.

- Access Portal +

Exam Results

+

View semester GPA, final examination marks, and official academic transcript summaries.

+ Check Exam Marks
-
-
-
- + +
+
+ Finance +
+
-

Fee Payments

-

Pay course fees and download payment receipts.

- Access Portal +

Fee Payments

+

Review tuition fee balances, complete online payments securely, and download official receipts.

+ Payment Portal
-
-
-
- + +
+
+ Account +
+
-

Student Profile

-

Update your personal information securely.

- Access Portal +

Student Profile

+

Update personal contact info, change password credentials, and manage security PIN settings.

+ Manage Account
+
- -
- -
-
-
- - -
+ +
+
+
+ + +
+
+
+ Updates Feed +

Campus Announcements

+
+ Live +
+ +
- -
+
+
+ Exam +
-

Quick Links

-

Access important student portals and resources

+
+
Final Semester Examination Timetable Published
+ Today +
+

The final examination schedule for the current semester is now available. Log in to your portal to check your assigned exam hall and seats.

- -
- - - - - + + + @php + $isStudentLoggedIn = session()->has('student_id') || session()->has('student_log_id') || Auth::check(); + @endphp + +
- -
-
-

Ready to Access Your Student Account?

-

Log in to manage your academic activities and stay updated.

- + +
+
+
+ Authorized Access Only +

Ready to Access Your Student Account?

+

+ Log in to view your courses, check schedules, submit assignments, and track exam results. +

+ +
@@ -717,15 +957,15 @@ h1, h2, h3, h4, h5, h6 {