From bb52d0f9c539b9e82c128ce4b8de7fa69473d372 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Wed, 29 May 2024 12:13:06 -0500 Subject: [PATCH] Student listing for directors complete --- app/Http/Controllers/StudentController.php | 2 +- app/Models/Student.php | 6 ++++ app/Models/User.php | 5 ++-- .../views/components/badge_pill.blade.php | 2 ++ .../views/components/table/body.blade.php | 3 ++ .../components/table/container.blade.php | 3 ++ .../views/components/table/table.blade.php | 11 +++++++ .../table/table_header_row.blade.php | 5 ++++ resources/views/components/table/td.blade.php | 7 +++++ .../components/table/td_right_link.blade.php | 17 +++++++++++ resources/views/components/table/th.blade.php | 8 +++++ .../table/title_above_table.blade.php | 17 +++++++++++ resources/views/students/index.blade.php | 30 ++++++++++++++++++- 13 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 resources/views/components/badge_pill.blade.php create mode 100644 resources/views/components/table/body.blade.php create mode 100644 resources/views/components/table/container.blade.php create mode 100644 resources/views/components/table/table.blade.php create mode 100644 resources/views/components/table/table_header_row.blade.php create mode 100644 resources/views/components/table/td.blade.php create mode 100644 resources/views/components/table/td_right_link.blade.php create mode 100644 resources/views/components/table/th.blade.php create mode 100644 resources/views/components/table/title_above_table.blade.php diff --git a/app/Http/Controllers/StudentController.php b/app/Http/Controllers/StudentController.php index 4c21b21..90faf62 100644 --- a/app/Http/Controllers/StudentController.php +++ b/app/Http/Controllers/StudentController.php @@ -13,7 +13,7 @@ class StudentController extends Controller */ public function index() { - $students = Auth::user()->students(); + $students = Auth::user()->students; return view('students.index',['students' => $students]); } diff --git a/app/Models/Student.php b/app/Models/Student.php index 03fabf4..51ce1ec 100644 --- a/app/Models/Student.php +++ b/app/Models/Student.php @@ -21,4 +21,10 @@ class Student extends Model return $this->hasManyThrough(User::class, School::class); } + public function full_name(Bool $last_name_first = false): String + { + if ($last_name_first) return $this->last_name . ', ' . $this->first_name; + return $this->first_name . ' ' . $this->last_name; + } + } diff --git a/app/Models/User.php b/app/Models/User.php index 20dcae4..faf010d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -53,8 +53,9 @@ class User extends Authenticatable implements MustVerifyEmail ]; } - public function full_name(): string + public function full_name(Bool $last_name_first = false): String { + if ($last_name_first) return $this->last_name . ', ' . $this->first_name; return $this->first_name . ' ' . $this->last_name; } @@ -71,7 +72,7 @@ class User extends Authenticatable implements MustVerifyEmail public function students(): HasManyThrough { - return $this->hasManyThrough(Student::class, School::class); + return $this->hasManyThrough(Student::class, School::class, 'id','school_id','school_id','id'); } diff --git a/resources/views/components/badge_pill.blade.php b/resources/views/components/badge_pill.blade.php new file mode 100644 index 0000000..b4b528d --- /dev/null +++ b/resources/views/components/badge_pill.blade.php @@ -0,0 +1,2 @@ +@php($classes = "inline-flex items-center rounded-full bg-indigo-50 px-2 py-1 text-xs font-medium text-indigo-700 ring-1 ring-inset ring-indigo-700/10") +merge(['class' => $classes]) }}>{{ $slot }} diff --git a/resources/views/components/table/body.blade.php b/resources/views/components/table/body.blade.php new file mode 100644 index 0000000..4bbe5f6 --- /dev/null +++ b/resources/views/components/table/body.blade.php @@ -0,0 +1,3 @@ +merge(['class' => "divide-y divide-gray-200 bg-white" ]) }}> + {{ $slot }} + diff --git a/resources/views/components/table/container.blade.php b/resources/views/components/table/container.blade.php new file mode 100644 index 0000000..7b9b06a --- /dev/null +++ b/resources/views/components/table/container.blade.php @@ -0,0 +1,3 @@ +
merge(['class' => 'px-4 sm:px-6 lg:px-8']) }}> + {{ $slot }} +
diff --git a/resources/views/components/table/table.blade.php b/resources/views/components/table/table.blade.php new file mode 100644 index 0000000..20f89c9 --- /dev/null +++ b/resources/views/components/table/table.blade.php @@ -0,0 +1,11 @@ +
+
+
+
+ + {{ $slot }} +
+
+
+
+
diff --git a/resources/views/components/table/table_header_row.blade.php b/resources/views/components/table/table_header_row.blade.php new file mode 100644 index 0000000..7620fb1 --- /dev/null +++ b/resources/views/components/table/table_header_row.blade.php @@ -0,0 +1,5 @@ + + + {{ $slot }} + + diff --git a/resources/views/components/table/td.blade.php b/resources/views/components/table/td.blade.php new file mode 100644 index 0000000..21c05ee --- /dev/null +++ b/resources/views/components/table/td.blade.php @@ -0,0 +1,7 @@ +@props(['first' => false, 'emphasis'=> false]) +@php + $td_classes = "whitespace-nowrap py-4 text-sm"; + $td_classes .= $first ? ' pl-4 pr-3 sm:pl-6':' px-3'; + $td_classes .= $emphasis ? ' text-gray-900 font-medium':' text-gray-500'; +@endphp +merge(['class'=>$td_classes]) }}>{{ $slot }} diff --git a/resources/views/components/table/td_right_link.blade.php b/resources/views/components/table/td_right_link.blade.php new file mode 100644 index 0000000..f9d2fd9 --- /dev/null +++ b/resources/views/components/table/td_right_link.blade.php @@ -0,0 +1,17 @@ +@props(['sr_text' => false,'button' => false,'a' => false]) +@php $td_class = "relative whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-6"; @endphp +@php $link_class = "text-indigo-600 hover:text-indigo-900"; @endphp +merge(['class' => $td_class]) }}> + @if($a) + attributes->merge(['class' => $link_class]) }}> + {{ $a }}@if($sr_text){{ $sr_text }}@endif + + @elseif($button) + @php($aria_label = $button . $sr_text) + + @else + {{ $slot }}{{ $sr_text ? '' . $sr_text . '' : '' }} + @endif + diff --git a/resources/views/components/table/th.blade.php b/resources/views/components/table/th.blade.php new file mode 100644 index 0000000..1cf001a --- /dev/null +++ b/resources/views/components/table/th.blade.php @@ -0,0 +1,8 @@ +@props(['first' => false, 'placeholder' => false]) +@php + $th_classes = "py-3.5 text-left text-sm font-semibold text-gray-900"; + $th_classes .= $first ? ' pl-4 pr-3 sm:pl-6':' px-3'; + if($placeholder) $th_classes = "relative py-3.5 pl-3 pr-4 sm:pr-6"; +@endphp + +merge(['scope' =>'col','class' => $th_classes]) }}>{{ $slot }} diff --git a/resources/views/components/table/title_above_table.blade.php b/resources/views/components/table/title_above_table.blade.php new file mode 100644 index 0000000..6825f8a --- /dev/null +++ b/resources/views/components/table/title_above_table.blade.php @@ -0,0 +1,17 @@ +@props(['title' => false,'subtitle' => false, 'button' => false]) +
+
+ @if($title) +

attributes->merge(['class' => 'text-base font-semibold leading-6 text-gray-900']) }}>{{ $title }}

+ @endif + @if($subtitle) +

attributes->merge(['class' => 'mt-2 text-sm text-gray-700']) }}>{{ $subtitle }}

+ @endif +
+
+ @if($button) + @php $button_classes = 'block rounded-md bg-indigo-600 px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600'; @endphp + + @endif +
+
diff --git a/resources/views/students/index.blade.php b/resources/views/students/index.blade.php index c807e7c..b22e414 100644 --- a/resources/views/students/index.blade.php +++ b/resources/views/students/index.blade.php @@ -1,5 +1,33 @@ @php use Illuminate\Support\Facades\Auth; @endphp Students - {{ dd(Auth::user()->students) }} + + + + Students {{ $students->count() }} + Before submitting entries, you must enter your students + Add Student + + + + + Name + Grade + + Edit + + + @foreach($students as $student) + + {{ $student->full_name(true) }} + {{ $student->grade }} + + Edit + + + @endforeach + + + +