├── public ├── favicon.ico ├── robots.txt ├── vendor │ └── telescope │ │ ├── favicon.ico │ │ └── mix-manifest.json ├── .htaccess └── index.php ├── database ├── .gitignore ├── seeders │ ├── ScheduledClassSeeder.php │ ├── DatabaseSeeder.php │ ├── ClassTypeSeeder.php │ └── UserSeeder.php ├── factories │ ├── ScheduledClassFactory.php │ └── UserFactory.php └── migrations │ ├── 2023_04_11_062016_add_role_to_users_table.php │ ├── 2023_04_12_123833_create_bookings_table.php │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ ├── 2023_04_11_060131_create_class_types_table.php │ ├── 2023_04_11_060234_create_scheduled_classes_table.php │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ ├── 2023_04_13_123103_create_jobs_table.php │ └── 2019_12_14_000001_create_personal_access_tokens_table.php ├── bootstrap ├── cache │ └── .gitignore └── app.php ├── storage ├── logs │ └── .gitignore ├── app │ ├── public │ │ └── .gitignore │ └── .gitignore └── framework │ ├── testing │ └── .gitignore │ ├── views │ └── .gitignore │ ├── cache │ ├── data │ │ └── .gitignore │ └── .gitignore │ ├── sessions │ └── .gitignore │ └── .gitignore ├── resources ├── css │ └── app.css ├── js │ ├── app.js │ └── bootstrap.js └── views │ ├── components │ ├── input-label.blade.php │ ├── auth-session-status.blade.php │ ├── text-input.blade.php │ ├── dropdown-link.blade.php │ ├── input-error.blade.php │ ├── danger-button.blade.php │ ├── secondary-button.blade.php │ ├── primary-button.blade.php │ ├── nav-link.blade.php │ ├── responsive-nav-link.blade.php │ ├── dropdown.blade.php │ ├── application-logo.blade.php │ └── modal.blade.php │ ├── emails │ └── class-canceled.blade.php │ ├── admin │ └── dashboard.blade.php │ ├── member │ ├── dashboard.blade.php │ ├── upcoming.blade.php │ └── book.blade.php │ ├── instructor │ ├── dashboard.blade.php │ ├── upcoming.blade.php │ └── schedule.blade.php │ ├── auth │ ├── confirm-password.blade.php │ ├── forgot-password.blade.php │ ├── verify-email.blade.php │ ├── reset-password.blade.php │ ├── login.blade.php │ └── register.blade.php │ ├── profile │ ├── edit.blade.php │ └── partials │ │ ├── update-password-form.blade.php │ │ ├── delete-user-form.blade.php │ │ └── update-profile-information-form.blade.php │ ├── layouts │ ├── guest.blade.php │ ├── app.blade.php │ └── navigation.blade.php │ └── welcome.blade.php ├── .DS_Store ├── postcss.config.js ├── tests ├── TestCase.php ├── Unit │ └── ExampleTest.php ├── Feature │ ├── ExampleTest.php │ ├── Auth │ │ ├── RegistrationTest.php │ │ ├── AuthenticationTest.php │ │ ├── PasswordConfirmationTest.php │ │ ├── PasswordUpdateTest.php │ │ ├── EmailVerificationTest.php │ │ └── PasswordResetTest.php │ ├── ProfileTest.php │ └── InstructorTest.php └── CreatesApplication.php ├── .gitattributes ├── .gitignore ├── .editorconfig ├── app ├── Models │ ├── ClassType.php │ ├── ScheduledClass.php │ └── User.php ├── Http │ ├── Controllers │ │ ├── Controller.php │ │ ├── Auth │ │ │ ├── EmailVerificationPromptController.php │ │ │ ├── EmailVerificationNotificationController.php │ │ │ ├── PasswordController.php │ │ │ ├── VerifyEmailController.php │ │ │ ├── ConfirmablePasswordController.php │ │ │ ├── AuthenticatedSessionController.php │ │ │ ├── PasswordResetLinkController.php │ │ │ ├── RegisteredUserController.php │ │ │ └── NewPasswordController.php │ │ ├── DashboardController.php │ │ ├── BookingController.php │ │ ├── ProfileController.php │ │ └── ScheduledClassController.php │ ├── Middleware │ │ ├── EncryptCookies.php │ │ ├── VerifyCsrfToken.php │ │ ├── PreventRequestsDuringMaintenance.php │ │ ├── TrimStrings.php │ │ ├── TrustHosts.php │ │ ├── Authenticate.php │ │ ├── ValidateSignature.php │ │ ├── CheckUserRole.php │ │ ├── TrustProxies.php │ │ └── RedirectIfAuthenticated.php │ ├── Requests │ │ ├── ProfileUpdateRequest.php │ │ └── Auth │ │ │ └── LoginRequest.php │ └── Kernel.php ├── View │ └── Components │ │ ├── AppLayout.php │ │ └── GuestLayout.php ├── Policies │ └── ScheduledClassPolicy.php ├── Providers │ ├── BroadcastServiceProvider.php │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── EventServiceProvider.php │ ├── RouteServiceProvider.php │ └── TelescopeServiceProvider.php ├── Console │ ├── Kernel.php │ └── Commands │ │ ├── IncrementDate.php │ │ └── RemindMembers.php ├── Jobs │ └── NotifyClassCanceledJob.php ├── Events │ └── ClassCanceled.php ├── Exceptions │ └── Handler.php ├── Listeners │ └── NotifyClassCanceled.php ├── Mail │ └── ClassCanceledMail.php └── Notifications │ ├── RemindMembersNotification.php │ └── ClassCanceledNotification.php ├── vite.config.js ├── package.json ├── tailwind.config.js ├── routes ├── channels.php ├── api.php ├── console.php ├── web.php └── auth.php ├── CONTRIBUTING.md ├── config ├── cors.php ├── services.php ├── view.php ├── hashing.php ├── broadcasting.php ├── sanctum.php ├── filesystems.php ├── queue.php ├── cache.php ├── mail.php ├── auth.php ├── logging.php └── database.php ├── phpunit.xml ├── .env.example ├── artisan ├── NOTICE ├── composer.json ├── docker-compose.yml └── README.md /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite* 2 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /resources/css/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinkedInLearning/advanced-laravel-4380124/HEAD/.DS_Store -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | import './bootstrap'; 2 | 3 | import Alpine from 'alpinejs'; 4 | 5 | window.Alpine = Alpine; 6 | 7 | Alpine.start(); 8 | -------------------------------------------------------------------------------- /public/vendor/telescope/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinkedInLearning/advanced-laravel-4380124/HEAD/public/vendor/telescope/favicon.ico -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | compiled.php 2 | config.php 3 | down 4 | events.scanned.php 5 | maintenance.php 6 | routes.php 7 | routes.scanned.php 8 | schedule-* 9 | services.json 10 | -------------------------------------------------------------------------------- /resources/views/components/input-label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['value']) 2 | 3 | 6 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'font-medium text-sm text-green-600']) }}> 5 | {{ $status }} 6 | 7 | @endif 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /resources/views/components/text-input.blade.php: -------------------------------------------------------------------------------- 1 | @props(['disabled' => false]) 2 | 3 | merge(['class' => 'border-gray-300 focus:border-indigo-500 focus:ring-indigo-500 rounded-md shadow-sm']) !!}> 4 | -------------------------------------------------------------------------------- /public/vendor/telescope/mix-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "/app.js": "/app.js?id=65e09ad17337bc012e95e6a52546ec50", 3 | "/app-dark.css": "/app-dark.css?id=b44bf369e5d39f6861be639ef866bf5a", 4 | "/app.css": "/app.css?id=41c5661581f2614180d6d33c17470f08" 5 | } 6 | -------------------------------------------------------------------------------- /resources/views/components/dropdown-link.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'block w-full px-4 py-2 text-left text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/emails/class-canceled.blade.php: -------------------------------------------------------------------------------- 1 |
Hey,
2 |Sorry, your {{ $details['className'] }} class on {{ $details['classDateTime']->format('jS F') }} at {{ $details['classDateTime']->format('g:i a') }} 3 | was canceled by the instructor. Check the schedule and book another. Thank you
-------------------------------------------------------------------------------- /resources/views/components/input-error.blade.php: -------------------------------------------------------------------------------- 1 | @props(['messages']) 2 | 3 | @if ($messages) 4 |{{ $class->classType->name }}
17 |{{ $class->instructor->name }}
18 |{{ $class->date_time->format('g:i a') }}
21 |{{ $class->date_time->format('jS M') }}
22 |35 | You have no upcoming bookings. 36 |
37 |{{ $class->classType->name }}
17 |{{ $class->instructor->name }}
18 |{{ $class->classType->description }}
19 | {{ $class->classType->minutes }} minutes 20 |{{ $class->date_time->format('g:i a') }}
23 |{{ $class->date_time->format('jS M') }}
24 |No classes are scheduled. Check back later.
37 | 38 |{{ $class->classType->name }}
17 | {{ $class->classType->minutes }} minutes 18 |{{ $class->date_time->format('g:i a') }}
21 |{{ $class->date_time->format('jS M') }}
22 |You don't have any upcoming classes
37 | 38 | Schedule now 39 | 40 |8 | {{ __('Ensure your account is using a long, random password to stay secure.') }} 9 |
10 |8 | {{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.') }} 9 |
10 |8 | {{ __("Update your account's profile information and email address.") }} 9 |
10 |