initial commit

This commit is contained in:
Debian
2026-06-03 04:18:36 +07:00
commit a5569ce2a0
220 changed files with 30797 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
<?php
use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Auth\ConfirmablePasswordController;
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
use App\Http\Controllers\Auth\EmailVerificationPromptController;
use App\Http\Controllers\Auth\NewPasswordController;
use App\Http\Controllers\Auth\PasswordController;
use App\Http\Controllers\Auth\PasswordResetLinkController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\Auth\VerifyEmailController;
use Illuminate\Support\Facades\Route;
Route::get('login', [AuthenticatedSessionController::class, 'create'])->name('login');
Route::middleware('guest')->group(function () {
Route::get('register', [RegisteredUserController::class, 'create'])
->name('register');
Route::post('register', [RegisteredUserController::class, 'store']);
Route::get('login', [AuthenticatedSessionController::class, 'create'])
->name('login');
Route::post('login', [AuthenticatedSessionController::class, 'store'])->name('store.login');
Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
->name('password.request');
Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])
->name('password.email');
Route::get('reset-password/{token}', [NewPasswordController::class, 'create'])
->name('password.reset');
Route::post('reset-password', [NewPasswordController::class, 'store'])
->name('password.store');
});
Route::middleware('auth')->group(function () {
Route::get('verify-email', EmailVerificationPromptController::class)
->name('verification.notice');
Route::get('verify-email/{id}/{hash}', VerifyEmailController::class)
->middleware(['signed', 'throttle:6,1'])
->name('verification.verify');
Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
->middleware('throttle:6,1')
->name('verification.send');
Route::get('confirm-password', [ConfirmablePasswordController::class, 'show'])
->name('password.confirm');
Route::post('confirm-password', [ConfirmablePasswordController::class, 'store']);
Route::put('password', [PasswordController::class, 'update'])->name('password.update');
Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
->name('logout');
});
+7
View File
@@ -0,0 +1,7 @@
<?php
use Illuminate\Support\Facades\Broadcast;
Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
+75
View File
@@ -0,0 +1,75 @@
<?php
use Illuminate\Support\Facades\Route;
/**
* Authentication for pusher private channels
*/
Route::post('/chat/auth', 'MessagesController@pusherAuth')->name('api.pusher.auth');
/**
* Fetch info for specific id [user/group]
*/
Route::post('/idInfo', 'MessagesController@idFetchData')->name('api.idInfo');
/**
* Send message route
*/
Route::post('/sendMessage', 'MessagesController@send')->name('api.send.message');
/**
* Fetch messages
*/
Route::post('/fetchMessages', 'MessagesController@fetch')->name('api.fetch.messages');
/**
* Download attachments route to create a downloadable links
*/
Route::get('/download/{fileName}', 'MessagesController@download')->name('api.'.config('chatify.attachments.download_route_name'));
/**
* Make messages as seen
*/
Route::post('/makeSeen', 'MessagesController@seen')->name('api.messages.seen');
/**
* Get contacts
*/
Route::get('/getContacts', 'MessagesController@getContacts')->name('api.contacts.get');
/**
* Star in favorite list
*/
Route::post('/star', 'MessagesController@favorite')->name('api.star');
/**
* get favorites list
*/
Route::post('/favorites', 'MessagesController@getFavorites')->name('api.favorites');
/**
* Search in messenger
*/
Route::get('/search', 'MessagesController@search')->name('api.search');
/**
* Get shared photos
*/
Route::post('/shared', 'MessagesController@sharedPhotos')->name('api.shared');
/**
* Delete Conversation
*/
Route::post('/deleteConversation', 'MessagesController@deleteConversation')->name('api.conversation.delete');
/**
* Delete Conversation
*/
Route::post('/updateSettings', 'MessagesController@updateSettings')->name('api.avatar.update');
/**
* Set active status
*/
Route::post('/setActiveStatus', 'MessagesController@setActiveStatus')->name('api.activeStatus.set');
+118
View File
@@ -0,0 +1,118 @@
<?php
/**
* -----------------------------------------------------------------
* NOTE : There is two routes has a name (user & group),
* any change in these two route's name may cause an issue
* if not modified in all places that used in (e.g Chatify class,
* Controllers, chatify javascript file...).
* -----------------------------------------------------------------
*/
use Illuminate\Support\Facades\Route;
/*
* This is the main app route [Chatify Messenger]
*/
Route::get('/', 'MessagesController@index')->name(config('chatify.routes.prefix'));
/**
* Fetch info for specific id [user/group]
*/
Route::post('/idInfo', 'MessagesController@idFetchData');
/**
* Send message route
*/
Route::post('/sendMessage', 'MessagesController@send')->name('send.message');
/**
* Fetch messages
*/
Route::post('/fetchMessages', 'MessagesController@fetch')->name('fetch.messages');
/**
* Download attachments route to create a downloadable links
*/
Route::get('/download/{fileName}', 'MessagesController@download')->name(config('chatify.attachments.download_route_name'));
/**
* Authentication for pusher private channels
*/
Route::post('/chat/auth', 'MessagesController@pusherAuth')->name('pusher.auth');
/**
* Make messages as seen
*/
Route::post('/makeSeen', 'MessagesController@seen')->name('messages.seen');
/**
* Get contacts
*/
Route::get('/getContacts', 'MessagesController@getContacts')->name('contacts.get');
/**
* Update contact item data
*/
Route::post('/updateContacts', 'MessagesController@updateContactItem')->name('contacts.update');
/**
* Star in favorite list
*/
Route::post('/star', 'MessagesController@favorite')->name('star');
/**
* get favorites list
*/
Route::post('/favorites', 'MessagesController@getFavorites')->name('favorites');
/**
* Search in messenger
*/
Route::get('/search', 'MessagesController@search')->name('search');
/**
* Get shared photos
*/
Route::post('/shared', 'MessagesController@sharedPhotos')->name('shared');
/**
* Delete Conversation
*/
Route::post('/deleteConversation', 'MessagesController@deleteConversation')->name('conversation.delete');
/**
* Delete Message
*/
Route::post('/deleteMessage', 'MessagesController@deleteMessage')->name('message.delete');
/**
* Update setting
*/
Route::post('/updateSettings', 'MessagesController@updateSettings')->name('avatar.update');
/**
* Set active status
*/
Route::post('/setActiveStatus', 'MessagesController@setActiveStatus')->name('activeStatus.set');
/*
* [Group] view by id
*/
Route::get('/group/{id}', 'MessagesController@index')->name('group');
/*
* user view by id.
* Note : If you added routes after the [User] which is the below one,
* it will considered as user id.
*
* e.g. - The commented routes below :
*/
// Route::get('/route', function(){ return 'Munaf'; }); // works as a route
Route::get('/{id}', 'MessagesController@index')->name('user');
// Route::get('/route', function(){ return 'Munaf'; }); // works as a user id
+8
View File
@@ -0,0 +1,8 @@
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote')->hourly();
+116
View File
@@ -0,0 +1,116 @@
<?php
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\DoctorController;
use App\Http\Controllers\Consultation;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\PredictionController;
use App\Http\Controllers\ConsultationController;
use App\Http\Controllers\StravaController;
use App\Http\Controllers\Api\HealthDataAPIController;
use App\Http\Controllers\Api\UserAPIController;
use App\Http\Middleware\RedirectBasedOnRole;
Route::get('/', function () {
return view('home');
});
Route::get('/about', function () {
return view('about');
});
Route::get('/contact', function () {
return view('contact');
});
Route::get('/customer-result', function () {
return view('customer-result');
});
Route::post('/strava/authorize', [StravaController::class, 'authorize'])->name('strava.authorize');
Route::get('/strava/callback', [StravaController::class, 'handleCallback'])->name('strava.callback');
// 1. CLIENT PAGES
Route::group(['prefix' => 'client', 'middleware' => ['auth', 'verified']], function () {
// DASHBOARD CONTROLLER
Route::get('/dashboard', [DashboardController::class, 'dashboardClient'])->name('dashboard')->middleware('role');
Route::get('/activity-report', [DashboardController::class, 'activityReport'])->name('activity-report');
Route::get('/schedule', [DashboardController::class, 'schedule'])->name('customer.schedule');
Route::get('/notifications', [DashboardController::class, 'notifications'])->name('client.notifications');
Route::get('/results', [DashboardController::class, 'consultationResults'])->name('patient.consultation-results');
// CONSULTATION CONTROLLER
Route::get('/health-data', [ConsultationController::class, 'showHealthDataForm'])->name('health-data.show');
Route::post('/health-data', [ConsultationController::class, 'storeHealthDataForm'])->name('health-data.store');
Route::get('/jadwal', [ConsultationController::class, 'showJadwalForm'])->name('jadwal.show');
Route::post('/consultation', [ConsultationController::class, 'storeConsultation'])->name('consultation.store');
Route::get('/profile', function () {return view('customer-profile');})->name('customer.profile');
Route::get('/transaction', function () {return view('customer-transaction');})->name('customer.transaction');
Route::get('/priv-policy', function () {return view('privacy-policy-client');})->name('customer.priv-policy');
Route::get('/terms-con', function () {return view('terms-con-client');})->name('customer.terms-con');
});
// 2. ADMIN PAGES
Route::group(['middleware' => ['auth', 'verified']], function () {
Route::get('/admin/dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard')->middleware('role');
Route::get('/admin/doctor-info', [AdminController::class, 'showDoctor'])->name('showDoctor');
Route::get('/admin/patient-info', [AdminController::class, 'showPatient'])->name('showPatient');
Route::get('/delete/user/{id}', [AdminController::class, 'delete'])->name('delete-user');
Route::get('/user/{id}', [AdminController::class, 'showUserDetail'])->name('show-user');
Route::post('/update/user/{id}', [AdminController::class, 'updateData'])->name('update-user');
Route::get('/admin/profile', function () {return view('admin-profile');})->name('admin.profile');
Route::get('/admin/priv-policy', function () {return view('privacy-policy-admin');})->name('admin.priv-policy');
Route::get('/admin/terms-con', function () {return view('terms-con-admin');})->name('admin.terms-con');
});
// 3. DOCTOR PAGES
Route::group(['prefix' => 'doctor', 'middleware' => ['auth', 'verified']], function () {
Route::get('/dashboard', [DoctorController::class, 'dashboard'])->name('doctor.dashboard')->middleware('role');
Route::post('/decline-consultation/{consultationId}', [DoctorController::class, 'declineConsultation'])->name('doctor.decline-consultation');
Route::get('/patient-acceptance', [DoctorController::class, 'patientAcceptance'])->name('doctor.patient-acceptance');
Route::get('/notifications', [DoctorController::class, 'notifications'])->name('doctor.notifications');
Route::get('/schedule', function () {return view('doctor-schedule');})->name('doctor.schedule');
Route::get('/transaction', function () {return view('doctor-transaction');})->name('doctor.transaction');
Route::get('/profile', function () {return view('doctor-profile');})->name('doctor.profile');
Route::get('/doctor/priv-policy', function () {return view('privacy-policy-doctor');})->name('doctor.priv-policy');
Route::get('/doctor/terms-con', function () {return view('terms-con-doctor');})->name('doctor.terms-con');
Route::post('/approve-consultation/{consultationId}', [DoctorController::class, 'approveConsultation'])->name('doctor.approve-consultation');
Route::get('/schedule', [DoctorController::class, 'schedule'])->name('doctor.schedule');
Route::get('/consultation-result/{patientId}', [DoctorController::class, 'showConsultationResultForm'])->name('doctor.show-consultation-result-form');
Route::post('/consultation-result', [DoctorController::class, 'storeConsultationResult'])->name('doctor.store-consultation-result');
});
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
Route::middleware('auth')->get('/api/current-user-id', function () {
return response()->json(['user_id' => Auth::id()]);
});
require __DIR__.'/auth.php';