51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter/material.dart';
 | |
| import 'package:medora/data/models/telemed_user.dart';
 | |
| import 'package:medora/data/services/data_service.dart';
 | |
| import 'package:medora/data/services/doctor_profile_service.dart';
 | |
| import 'package:medora/route/route_names.dart';
 | |
| 
 | |
| class NavigationService {
 | |
|   static Future<void> handleUserNavigation(BuildContext context) async {
 | |
|     try {
 | |
|       final TelemedUser? userProfile = await DataService.getProfile();
 | |
| 
 | |
|       if (userProfile == null) {
 | |
|         if (context.mounted) {
 | |
|           Navigator.pushReplacementNamed(context, RouteNames.launch);
 | |
|         }
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       if (userProfile.role.toLowerCase() != 'doctor') {
 | |
|         if (context.mounted) {
 | |
|           Navigator.pushReplacementNamed(context, RouteNames.launch);
 | |
|           return;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       if (context.mounted) {
 | |
|         await handleDoctorNavigation(context);
 | |
|       }
 | |
|     } catch (e) {
 | |
|       print('Error in handleUserNavigation: $e');
 | |
|       if (context.mounted) {
 | |
|         Navigator.pushReplacementNamed(context, RouteNames.launch);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   static Future<void> handleDoctorNavigation(BuildContext context) async {
 | |
|     final doctorProfile = await DoctorProfileService.getDoctorProfile();
 | |
|     if (context.mounted) {
 | |
|       if (doctorProfile != null) {
 | |
|         Navigator.pushReplacementNamed(
 | |
|           context,
 | |
|           RouteNames.doctorDashbordScreen,
 | |
|         );
 | |
|       } else {
 | |
|         Navigator.pushReplacementNamed(context, RouteNames.profileUpload);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 |