Booking physical consultation , bugs fixed and Profile picture adding using firebase storage is complete. Co-authored-by: Jipson George <152465898+Jipson-cosq@users.noreply.github.com> Reviewed-on: cosqnet/telemednet#6 Co-authored-by: DhanshCOSQ <dhanshas@cosq.net> Co-committed-by: DhanshCOSQ <dhanshas@cosq.net>
82 lines
2.4 KiB
Dart
82 lines
2.4 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/data/services/patient_registration_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;
|
|
}
|
|
|
|
switch (userProfile.role.toLowerCase()) {
|
|
case 'doctor':
|
|
if (context.mounted) {
|
|
handleDoctorNavigation(context);
|
|
}
|
|
|
|
break;
|
|
case 'patient':
|
|
if (context.mounted) {
|
|
handlePatientNavigation(context);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
if (context.mounted) {
|
|
Navigator.pushReplacementNamed(context, RouteNames.launch);
|
|
}
|
|
}
|
|
} 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
static Future<void> handlePatientNavigation(BuildContext context) async {
|
|
try {
|
|
final patientProfile = await PatientProfileService.getPatientProfile();
|
|
|
|
if (context.mounted) {
|
|
if (patientProfile != null) {
|
|
Navigator.pushReplacementNamed(
|
|
context, RouteNames.patientDashboardScreen);
|
|
} else {
|
|
Navigator.pushReplacementNamed(
|
|
context, RouteNames.patientLandingScreen);
|
|
}
|
|
}
|
|
} catch (e) {
|
|
print('Error in handlePatientNavigation: $e');
|
|
if (context.mounted) {
|
|
Navigator.pushReplacementNamed(
|
|
context, RouteNames.patientLandingScreen);
|
|
}
|
|
}
|
|
}
|
|
}
|