|
|
- using GMCabsDriverAssistant.Messages;
- using GMCabsDriverAssistant.Models;
- using GMCabsDriverAssistant.Services;
- using GMCabsDriverAssistant.Utils;
- using GMCabsDriverAssistantSolution.ViewModels;
- using System.Diagnostics;
-
- namespace GMCabsDriverAssistantSolution.Views;
-
- public partial class NewPage1 : ContentPage
- {
-
- #region Fields
- private readonly HomeViewModel _viewModel;
- bool isLocationPermitted, isBatteryOptimizationDisabled;
- #endregion
-
- #region Properties
- public double CurrentLat { get; set; }
- public double CurrentLng { get; set; }
- #endregion
-
- #region Constructor
- public NewPage1()
- {
- //SentrySdk.CaptureMessage(nameof(HomePage));
-
- InitializeComponent();
- BindingContext = _viewModel = new HomeViewModel();
-
- MessagingCenter.Unsubscribe<App, string>(this, nameof(App));
- MessagingCenter.Subscribe<App, string>(this, nameof(App), async (sender, args) =>
- {
- Debug.WriteLine($"args: {args}");
- if (args == "DriverAlertNotification")
- {
- await _viewModel.UpdateLocation();
- }
- else
- {
- await _viewModel.OnAppearing();
- }
- });
-
-
- //handle canceling of an accepted booking
- MessagingCenter.Unsubscribe<App, CancelledBookingResponseDto>(this, nameof(App));
- MessagingCenter.Subscribe<App, CancelledBookingResponseDto>(this, nameof(App), async (sender, args) =>
- {
- await Navigation.PopToRootAsync();
- //await Shell.Current.GoToAsync($"{nameof(CancelledBookingPage)}?{nameof(CancelledBookingViewModel.PickUpAddress)}={args.PickUPAddress}&{nameof(CancelledBookingViewModel.DropUpAddress)}={args.DropUpAddress}");
- _viewModel.IsVisibleAcceptBookingView = false;
- });
- //MessagingCenter.Unsubscribe<AcceptBookingPage, AcceptBookingTimerDto>(this, nameof(AcceptBookingPage));
- //MessagingCenter.Subscribe<AcceptBookingPage, AcceptBookingTimerDto>(this, nameof(AcceptBookingPage), (sender, args) =>
- //{
- // _viewModel.seconds = args.PendingSeconds;
- // _viewModel.PickUpAddress = args.PickUPAddress;
- // _viewModel.DropUpAddress = args.DropUpAddress;
- // if (_viewModel.seconds > 0)
- // {
- // _viewModel.IsVisibleAcceptBookingView = true;
- // }
- //});
-
- // handle clearing of an accepted booking
- MessagingCenter.Unsubscribe<App, string>(this, "ClearAcceptance");
- MessagingCenter.Subscribe<App, string>(this, "ClearAcceptance", async (sender, args) =>
- {
- await Navigation.PopToRootAsync();
- _viewModel.IsVisibleAcceptBookingView = false;
- _viewModel.seconds = 0;
- });
- //MessagingCenter.Unsubscribe<AcceptBookingPage, string>(this, "ClearAcceptance");
- //MessagingCenter.Subscribe<AcceptBookingPage, string>(this, "ClearAcceptance", async (sender, args) =>
- //{
- // await Navigation.PopToRootAsync();
- // await Shell.Current.GoToAsync($"{nameof(HomePage)}");
- // _viewModel.IsVisibleAcceptBookingView = false;
- // _viewModel.seconds = 0;
- //});
-
- // Used to handle notification by using MessagingCenter same is tablet based notification system
- MessagingCenter.Subscribe<App, string>(this, nameof(App), (sender, args) =>
- {
- _viewModel.GetUnreadNotificationCount();
- });
- MessagingCenter.Subscribe<App, NotificationDto>(this, nameof(App), async (sender, notification) =>
- {
- _viewModel.GetUnreadNotificationCount();
- });
- }
- #endregion
-
- #region Events
- private void SettingsRequired_Tapped(object sender, EventArgs e)
- {
- // Navigation.ShowPopup(new AppPermissiontSetDialogPage(this, Constant.FROM_HOME_PAGE));
- }
- #endregion
-
- #region Methods
- protected override void OnAppearing()
- {
- base.OnAppearing();
- //CheckAppPermissionStatus();
- isLocationPermitted = Preferences.Get(SecureStorageData.IsLocationPermitted, false);
- isBatteryOptimizationDisabled = Preferences.Get(SecureStorageData.IsBatteryOptimizationDisabled, false);
- IsSettingRequired();
- //GoToLoginPage();
- Task.Run(async () =>
- {
- GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
- await _viewModel.OnAppearing();
- //DisplayBookingOrNotification(_viewModel.HasUnreadNotifications, _viewModel.IsBookingAvailable, _viewModel.availableBookingIDs);
- });
- }
- private async void GoToLoginPage()
- {
- ValidateTokenResponseDto validateTokenResponseDto = new ValidateTokenResponseDto();
- GMCabsDriverService gmCabsDriverService = new GMCabsDriverService();
- var token = Preferences.Get(SecureStorageData.Token, "");
- var fcmToken = Preferences.Get("FcmToken", "");
- validateTokenResponseDto = await gmCabsDriverService.ValidateAuthToken(token, fcmToken);
- if (!validateTokenResponseDto.Result)
- {
- var message = new StopServiceMessage();
- MessagingCenter.Send(message, "ServiceStopped");
- var lastLatitude = Convert.ToDouble(Preferences.Get("lastLat", "0"));
- var lastLongitude = Convert.ToDouble(Preferences.Get("lastLng", "0"));
- await gmCabsDriverService.LogoutDriverApp(token, lastLatitude, lastLongitude);
- //Navigation.ShowPopup(new LoginErrorAlertDialogPage());
- }
- }
-
- private async void CheckAppPermissionStatus()
- {
- var status = await Permissions.CheckStatusAsync<Permissions.LocationAlways>();
- if (status == PermissionStatus.Granted)
- {
- Preferences.Set(SecureStorageData.IsLocationPermitted, true);
- }
- else
- {
- Preferences.Set(SecureStorageData.IsLocationPermitted, false);
- }
- if (Device.RuntimePlatform == Device.Android)
- {
- if (DependencyService.Get<IBatteryInfo>().CheckIsIgnoringBatteryOptimizations())
- {
- Preferences.Set(SecureStorageData.IsBatteryOptimizationDisabled, true);
- }
- else
- {
- Preferences.Set(SecureStorageData.IsBatteryOptimizationDisabled, false);
- }
- }
- }
- private void IsSettingRequired()
- {
- if (isLocationPermitted && isBatteryOptimizationDisabled)
- {
- SettingsRequired.IsVisible = false;
- }
- else
- {
- if (Device.RuntimePlatform == Device.iOS && isLocationPermitted)
- {
- SettingsRequired.IsVisible = false;
- }
- else
- {
- SettingsRequired.IsVisible = true;
- }
- }
- }
- private async void OnBookingViewClicked(object sender, EventArgs e)
- {
- // await Navigation.PushAsync(new BookingsPage(_viewModel.CurrentLocation.Latitude, _viewModel.CurrentLocation.Longitude));
- await DisplayAlert("Success", "Booking view clicked","OK");
- }
- private async void OnNotificationViewClicked(object sender, EventArgs e)
- {
- // await Navigation.PushAsync(new NotificationsPage());
- await DisplayAlert("Success", "Notification view clicked", "OK");
- }
- #endregion
- }
|